Finishing a hobby project
-
On one hand, it's satisfying to have brought something from conceptualization to fruition and be able to use the finished product. On the other, I get tired of it quickly and want to move on to the next thing. Only finding that next thing isn't easy for me - the illusive inspiration necessary to find something engaging without being overwhelming. I'm the type that has to spin a lot of plates and keep myself occupied. I'm always creating something or other or I get bored. Between projects is a hard place for me to be. Right now work is sparse too, and while I welcome the break, the timing of it could be better. I wish I had 3 side projects right now. I don't even have one now that Winduino has a bow on it. Meh.
Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
-
On one hand, it's satisfying to have brought something from conceptualization to fruition and be able to use the finished product. On the other, I get tired of it quickly and want to move on to the next thing. Only finding that next thing isn't easy for me - the illusive inspiration necessary to find something engaging without being overwhelming. I'm the type that has to spin a lot of plates and keep myself occupied. I'm always creating something or other or I get bored. Between projects is a hard place for me to be. Right now work is sparse too, and while I welcome the break, the timing of it could be better. I wish I had 3 side projects right now. I don't even have one now that Winduino has a bow on it. Meh.
Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
You need a Magnus Opus to keep going back to ... but you'd probably need more memory.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
-
You need a Magnus Opus to keep going back to ... but you'd probably need more memory.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
I sort of have that. I've got my graphics and UI libraries. Issue is I'm stuck. I'm missing a major feature, and that is anti-aliased draws (excepting TrueType and SVG which are). The issue is that when combined with alpha blending (semi transparent draws) it becomes really tricky because you can't draw the same pixel in the same place twice - ever or it leads to artifacts as the pixel effectively gets blended with itself thus halving the transparency. I can't find algorithms to do it properly+efficiently, outside of LVGL and I don't understand the LVGL code to do it, even looking at the documentation and pouring over the source. It uses some kind of masking technique that I don't understand at all. Without that feature, it makes little sense for me to provide a full suite of controls for my UI library, since I will have to rewrite them all to use anti-aliased draws, and without it they look pretty ugly. The whole thing is a bit overwhelming so I've been avoiding it.
Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
-
I sort of have that. I've got my graphics and UI libraries. Issue is I'm stuck. I'm missing a major feature, and that is anti-aliased draws (excepting TrueType and SVG which are). The issue is that when combined with alpha blending (semi transparent draws) it becomes really tricky because you can't draw the same pixel in the same place twice - ever or it leads to artifacts as the pixel effectively gets blended with itself thus halving the transparency. I can't find algorithms to do it properly+efficiently, outside of LVGL and I don't understand the LVGL code to do it, even looking at the documentation and pouring over the source. It uses some kind of masking technique that I don't understand at all. Without that feature, it makes little sense for me to provide a full suite of controls for my UI library, since I will have to rewrite them all to use anti-aliased draws, and without it they look pretty ugly. The whole thing is a bit overwhelming so I've been avoiding it.
Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
I'm working with pixel buffers and "writeable bitmaps" which totally abstract me from the hardware. My productivity is what keeps me going when things get to be a slog ... while new ideas / enhancements are purcolating. And I remind myself it's (partly) the journey.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
-
I'm working with pixel buffers and "writeable bitmaps" which totally abstract me from the hardware. My productivity is what keeps me going when things get to be a slog ... while new ideas / enhancements are purcolating. And I remind myself it's (partly) the journey.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
That was the first thing I did in htcw_gfx (GFX) I wrote a pixel template that allows you to define its binary footprint and color model using a series of "channel_trait" template instantiations that define the channel properties. Many pixels have R G and B channels, but it's not limited to that. Defining each channel individually to make up a pixel allows me to support virtually any binary footprint and color model. I made a brief pixel declaration in my Winduino example for my GFX lib to write out in DirectX native 32bit BGRx format. From there I wrote a bitmap template class, which is basically a variable that holds pixel data. It can be written to as it itself is a draw target (both draw destination and draw source) or read from and applied to other draw targets. It's templated by the type of pixel (as above, for example RGB565) and the type of palette (if any) It's so abstract I can support other formats and screen styles by changing barely anything. All my draw routines take pixels in any format and do behind the scenes conversion transparently (w/ alpha blending as available and called for) I've written whole applications, only to have the screen hardware changed on me last minute. Takes me minutes to update, if I already wrote it to be resolution agnostic (which I typically do) Here's a series of pixel declaration templates for color models of various types (including grayscale and indexed/palleted pixels) non-exaustive, just so you can see what it looks like:
// creates an RGB pixel by making each channel
// one third of the whole. Any remainder bits
// are added to the green channel
template
using rgb_pixel = pixel<
channel_traits,
channel_traits,
channel_traits;
// creates an RGBA pixel by making each channel
// one quarter of the whole. Any remainder bits
// are added to the green channel
template
using rgba_pixel = pixel<
channel_traits,
channel_traits,
channel_traits,
channel_traits
;
// creates a grayscale or monochome pixel
template
using gsc_pixel = pixel<
channel_traits
;
// creates a Y'UV pixel by making each channel
// one third of the whole. Any