@@ -39,8 +39,9 @@ uint32_t displayio_colorconverter_dither_noise_2(uint32_t x, uint32_t y) {
3939 return displayio_colorconverter_dither_noise_1 (x + y * 0xFFFF );
4040}
4141
42- void common_hal_displayio_colorconverter_construct (displayio_colorconverter_t * self , bool dither ) {
42+ void common_hal_displayio_colorconverter_construct (displayio_colorconverter_t * self , bool dither , uint32_t transparent_color ) {
4343 self -> dither = dither ;
44+ self -> transparent_color = transparent_color ;
4445}
4546
4647uint16_t displayio_colorconverter_compute_rgb565 (uint32_t color_rgb888 ) {
@@ -161,6 +162,9 @@ void displayio_colorconverter_convert(displayio_colorconverter_t *self, const _d
161162 }
162163 output_color -> pixel = packed ;
163164 output_color -> opaque = true;
165+ if (self -> transparent_color == pixel ) {
166+ output_color -> opaque = false;
167+ }
164168 return ;
165169 } else if (colorspace -> tricolor ) {
166170 uint8_t luma = displayio_colorconverter_compute_luma (pixel );
@@ -170,6 +174,9 @@ void displayio_colorconverter_convert(displayio_colorconverter_t *self, const _d
170174 output_color -> pixel = 0 ;
171175 }
172176 output_color -> opaque = true;
177+ if (self -> transparent_color == pixel ) {
178+ output_color -> opaque = false;
179+ }
173180 return ;
174181 }
175182 uint8_t pixel_hue = displayio_colorconverter_compute_hue (pixel );
@@ -179,6 +186,9 @@ void displayio_colorconverter_convert(displayio_colorconverter_t *self, const _d
179186 uint8_t luma = displayio_colorconverter_compute_luma (pixel );
180187 output_color -> pixel = luma >> (8 - colorspace -> depth );
181188 output_color -> opaque = true;
189+ if (self -> transparent_color == pixel ) {
190+ output_color -> opaque = false;
191+ }
182192 return ;
183193 }
184194 output_color -> opaque = false;
0 commit comments