Complete
over 2 years ago

WERETECH-12048

Fix will be applied to next SDK release.

Devices affected will have firmware updates in a future firmware build.

No more transparency for font background on bufferd bitmap since SDK 4.0

Hi, 

I use a bufferedBitmap with color palette and custom bitmap fonts without antialiasing.

Since SDK 4.0 the font background  is not more transparent. The color is defined before:

dc.setColor(CustomColor, gfx.COLOR_TRANSPARENT);
   

The code is running many years without problem.

I don't understand, what's going wrong with new SDK

Parents
  • Analyze my case:
    I am making an analog watch face with hands.
    On older devices there is not much memory and I draw hands, inscriptions, icons in a 4-color BufferedBitmap.
    In addition, the clock face has an inscription with a heart rate - it also needs to be updated in real time - once every few seconds.
    To do this, I will select a BufferedBitmap the size of the inscription and draw hands in it too.
    When I need to update the inscription with the heart rate, I display the second, small, auxiliary BufferedBitmap with hands on the first, main, large BufferedBitmap - I restore the original background. Then, in the first, basically, large BufferedBitmap, I print an inscription with a heart rate with a transparent background. In older devices, this works as it should. However, on newer devices with CIQ4, solid rectangles are printed instead of the expected text.

    These watch faces have been on the Garmin Connect IQ App Store for a few years now and didn't cause any problems until the CIQ4 came out.

    I found a way out: devices with CIQ4 have more memory, so I started using BufferedBitmap without a palette for them. But this still has a negative side: 4-color BufferedBitmaps are much faster displayed on the screen, thereby saving energy.

    What is the difficulty in bringing the behavior of the system back to the habitual one?

Comment
  • Analyze my case:
    I am making an analog watch face with hands.
    On older devices there is not much memory and I draw hands, inscriptions, icons in a 4-color BufferedBitmap.
    In addition, the clock face has an inscription with a heart rate - it also needs to be updated in real time - once every few seconds.
    To do this, I will select a BufferedBitmap the size of the inscription and draw hands in it too.
    When I need to update the inscription with the heart rate, I display the second, small, auxiliary BufferedBitmap with hands on the first, main, large BufferedBitmap - I restore the original background. Then, in the first, basically, large BufferedBitmap, I print an inscription with a heart rate with a transparent background. In older devices, this works as it should. However, on newer devices with CIQ4, solid rectangles are printed instead of the expected text.

    These watch faces have been on the Garmin Connect IQ App Store for a few years now and didn't cause any problems until the CIQ4 came out.

    I found a way out: devices with CIQ4 have more memory, so I started using BufferedBitmap without a palette for them. But this still has a negative side: 4-color BufferedBitmaps are much faster displayed on the screen, thereby saving energy.

    What is the difficulty in bringing the behavior of the system back to the habitual one?

Children
No Data