Hi,
I definitely need help from the community to figure out a few things.
First, some initial data.
There is a watchface I created. Its key feature is graphics with anti-aliasing, I use anti-aliasing fonts, font characters are pieces of a picture, from these characters I assemble a watchface like a puzzle from pieces. This works well enough until I wanted to add ALWAYS ON mode.
I studied the technology that Garmin offers and tried to put it into practice. At first glance, the technology is simple and logical - we draw everything except the second hand in the BufferedBitmap, use the OnPartialUpdate() event, display the prepared background (the same BufferedBitmap), draw the second hand. This is where the problems begin.
1. It is impossible to create a Bufferbitmap in full screen size - there is not enough memory. You can forget about the hands up to the edge of the screen. It is impossible to reduce the memory size of the BufferedBitmap - you need to use the palette, which means you can forget about graphics anti-aliasing. Guys, I don't want to give up anti-aliasing, I like the anti-aliased picture, without it the watchface in 2020 looks like a relic of the past.
2. Power budget in the OnpartialUpdate() event. 30ms. Ok, I no longer have memory (all are occupied by BufferedBitmap), load my font for drawing the hand, 1kb of memory remains free.
We look at the "View watchface diagnostics" in the simulator - 26ms to the output of the BufferedBitmap to fill the background image? And this with a setClip() for the second hand at 12 o'clock? Wait, I haven't even started drawing the second hand yet, and I'm already left with 4ms of budget? Going further, I want to draw a second hand. No memory? Ok, use the LoadResource() to load resources for the second hand into memory. 142ms. That's it, there is no further way.
Guys, I don't understand. I want hands the size of a dial, not tiny half-radius hands just because there is no memory for more. I want smoother graphics, without using tricks known only to the most experienced programmers, because tricks are tricks, they are not for everyone. I have read, it seems, everything that was on the forum on the creation of ALWAYS ON watches, and all that I understood is that there is no information.
How to create resources correctly in order not to use LoadResource() in the OnPartialUpdate() event (after all, all available memory has already been taken up by His Majesty BufferedBitmap)? Information is zero.
What operations do it cost to calculate the power budget in order to write efficient code in the OnPartialUpdate() event? Information is zero.
How to combine graphics anti-aliasing and ALWAYS ON mode without spending hours debugging the code trying to save another 1ms? Information is zero.
Maybe this is the way it should be, information should be obtained by yourself, by endless experiments in the simulator? I cannot take this thought seriously in 2020.
I don’t want to think that creating a watch with the ALWAYS ON mode is such a quest for the elite.
I ask the community to just show me the way. The official documentation has led me to a dead end, and I see no way out to achieve the result - to make the ALWAYS ON mode work using anti-aliased graphics.