|
So I ran into a bit of a conundrum.
Because of the way my user interface library works, it might draw half your control to a bitmap send that bitmap to the screen, and then repeat the process with the other half.
A canvas is bound to a bitmap, and while I can change the bounds after the canvas is created, it will try to write to areas where the bitmap isn't present. When using callbacks, this is simply a performance issue. When using directing binding to the bitmap, this is an access violation.
One option is to create a new canvas the size of the bitmap in UIX (my user interface lib) every time i refresh that control on the screen, but there are so many problems with this, starting with the size of that backing bitmap being an implementation detail, and that's not counting the performance issue of creating and destroying canvases all the time, when I should just be able to rebind it to a new bitmap.
And the performance issue I mentioned in passing above is a real problem in UIX's case because maybe half the control will be drawn at once and the callbacks will be fired for ALL of it, half of it in vain as they get clipped from the final output.
What I needed was a way to clip the drawing in my vector library, such that I could specify a clipping rectangle that perfectly overlays the backing bitmap. If I do that, the rasterizer never has to touch those "out of bounds" areas, saving time and potentially crashes.
Well, I'm halfway there, but a bit overwhelmed and sort of procrastinating the rest of it.
There's something I want to do after I complete this portion - and that is I want to support direct binds to an RGB565 bitmap. However, it gets a bit weird because there's no alpha channel in that color model. Currently I can only bind directly to an RGBA8888 bitmap, which isn't very practical on embedded in most situations. Situations where I can't bind directly use callbacks to do the final pixel reads/writes.
I'm excited about that part. I want the challenge, but I'm stuck with the clipping problem first.
Pizza incoming. That should fix it.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
Pizza can fix a lot of things. So can a rubber duck. It seems like you should invest in one.
|
|
|
|
|
Greg Utas wrote: So can a rubber duck. Aye!
/ravi
|
|
|
|
|
I am staying with my dad in hospital and I will be getting to bed sometime in the mid morning.
|
|
|
|
|
I've got one ready.
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|
|
Update 2: I can't support TinyVG without tearing apart my rasterizer. It uses even-odd rule even when elements overlap. My rasterizer doesn't. Mine is more compatible with the way SVG and Truetype do things. TinyVGs method is one off, but I'm not inclined to try to hack it apart to support both.
Update: I've got TVG partially working. It's rendering some documents but not others. I think it's funny that my much more complicated SVG code works better than the one that renders the simple TVG format.
_________________________________________________________________________
TVG is a compact, simplified vector graphics file format.
After speaking with the author of TinyVG[^] it's not as vaporwarey as I thought.
You can turn SVGs into TVGs by first running the SVG through a 3rd party tool called SVGO.
I've got an initial render (imperfect) in TVG now, so my code is working somewhat.
Currently the reference implementation provided by the author is in Zig, which is unfortunate, since it's a reference implementation and Zig is still a boutique language.
I intend to provide the author a couple of things.
1. A reference implementation, probably in C
2. A better SVG->TVG conversion tool that doesn't require running things though SVGO first.
But first I need to perfect my TVG support and wrap up my htcw_gfx 2.0 release.
I'm feeling pretty good about this.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
modified 10hrs 20mins ago.
|
|
|
|
|
honey the codewitch wrote: But first I need to
"... crush your my enemies, see them driven before you me, and hear the lamentations of their women"
|
|
|
|
|
That'll be old Genghis
In a closed society where everybody's guilty, the only crime is getting caught. In a world of thieves, the only final sin is stupidity. - Hunter S Thompson - RIP
|
|
|
|
|
|
Wordle 1,205 4/6*
๐จโฌโฌโฌ๐จ
โฌโฌ๐จ๐จ๐ฉ
โฌ๐ฉ๐ฉ๐ฉ๐ฉ
๐ฉ๐ฉ๐ฉ๐ฉ๐ฉ
|
|
|
|
|
Wordle 1,205 4/6*
๐จ๐จโฌโฌ๐จ
โฌ๐ฉโฌ๐ฉ๐ฉ
โฌ๐ฉ๐ฉ๐ฉ๐ฉ
๐ฉ๐ฉ๐ฉ๐ฉ๐ฉ
Loads of possibles for that last one ...
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Wordle 1,205 5/6
โฌโฌโฌ๐ฉโฌ
๐ฉโฌโฌ๐ฉ๐ฉ
๐ฉ๐ฉโฌ๐ฉ๐ฉ
๐ฉ๐ฉโฌ๐ฉ๐ฉ
๐ฉ๐ฉ๐ฉ๐ฉ๐ฉ
Within you lies the power for good - Use it!
|
|
|
|
|
Wordle 1,205 6/6
โฌ๐จ๐จโฌ๐จ
โฌโฌ๐จ๐จ๐ฉ
โฌ๐ฉโฌ๐ฉ๐ฉ
โฌ๐ฉโฌ๐ฉ๐ฉ
โฌ๐ฉ๐ฉ๐ฉ๐ฉ
๐ฉ๐ฉ๐ฉ๐ฉ๐ฉ
thought I was going to lose
In a closed society where everybody's guilty, the only crime is getting caught. In a world of thieves, the only final sin is stupidity. - Hunter S Thompson - RIP
|
|
|
|
|
Wordle 1,205 6/6
๐จ๐ฉโฌ๐ฉโฌ
โฌ๐ฉ๐จ๐ฉโฌ
โฌ๐ฉโฌ๐ฉ๐ฉ
โฌ๐ฉ๐จ๐ฉ๐ฉ
๐ฉ๐ฉโฌ๐ฉ๐ฉ
๐ฉ๐ฉ๐ฉ๐ฉ๐ฉ
Likewise!
|
|
|
|
|
Wordle 1,205 5/6
๐จโฌโฌ๐จ๐จ
๐จ๐จ๐จโฌโฌ
๐จ๐ฉ๐จ๐จโฌ
๐ฉ๐ฉโฌ๐ฉ๐ฉ
๐ฉ๐ฉ๐ฉ๐ฉ๐ฉ
Ok, I have had my coffee, so you can all come out now!
|
|
|
|
|
For the past few years, I didn't have a version of Visual Studio on my main PC (desktop).
When I have had a bit of personal C# to write -- as for a challenge or similar here -- I used an old Win 8 thingy. Which has Visual Studio 2010 Express installed.
And it was good.
Now I have a proper laptop (Win 11) and I installed Visual Studio 2022 Pro.
Today I was copying projects over to the new system and I tested a few to determine whether or not they still compile. They do, but they had to be upgraded from .net 4 to 4.8 -- which is OK. BUT I had forgotten that some of these have an old Installer project which is no longer supported.
Installers just aren't important enough to me to get me all excited about learning a new tool for creating them. I guess I just won't provide installers anymore.
Or maybe -- just because I probably can -- compile with one version and create installers with the other...
I suppose I can put Visual Studio 2010 Express on here for that.
|
|
|
|
|
I've used NSIS for installers for years now. I don't particularly like it but it does its job and I've used the same template script for so long that I don't feel like changing it.
In the end is just like you said:
PIEBALDconsult wrote: Installers just aren't important enough to me to get me all excited about learning a new tool for creating them.
Oh BTW: lately I've got into shipping one EXE applications just like in the days of good old DOS. They are fancy C++ thingies with an embedded HTTP server and all the UI done through a browser. All nicely packed in a single EXE that contains HTML, CSS, SQL, etc. It would probably make for a nice (and long) article but I don't see many people following on this path, so why bother!
Mircea
|
|
|
|
|
Mircea Neacsu wrote: shipping one EXE applications
Yeah, that was supposed to be one of the major selling points of .net -- "install by copy" or whatever.
|
|
|
|
|
DOS, .NET, whatever... plus รงa change[^]
PS Believe it or not, I've survived 20+ years without touching .NET and I don't plan to start now
|
|
|
|
|
Mircea Neacsu wrote: Oh BTW: lately I've got into shipping one EXE applications just like in the days of good old DOS. That's one thing that Apple does right. When you "install" an app on a Mac, you're litteally just copying a single file over that's really an archive of executables, libraries, and settings. No registry edits. No worrying about what goes where. You just copy a single file over to your app folder... done.
Now, some Mac apps will have an "installer" but you don't need it since that's all it's doing... just copying over a single file.
Jeremy Falcon
|
|
|
|
|
Most of the time I make my apps self-installing - even my services.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
They have to get onto the system somehow.
|
|
|
|
|
Generally what I do (whenever possible) is a I ship a single executable. It contains the install code in it that runs on first launch.
Obviously that doesn't work if you need to ship a bunch of dependencies with it.
I made a thing called CSBrick that will take C# projects and turn them into a single large C# file so you can effectively wedge it into a project statically instead of linking to it as a DLL.
It's here on codeproject if you want to use that to cut down on external dependencies.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
i toyed with ILMerge a few times. It puts all of the project assemblies into a single exe. I stopped using it when I started writing WPF apps because it doesn't work with those.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|