Skip to content

Commit 2517e4b

Browse files
committed
displayio: ColorConverter handle if opaque color is black
1 parent 3370196 commit 2517e4b

File tree

3 files changed

+9
-17
lines changed

3 files changed

+9
-17
lines changed

shared-bindings/displayio/ColorConverter.c

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,28 +117,23 @@ STATIC mp_obj_t displayio_colorconverter_make_transparent(mp_obj_t self_in, mp_o
117117
displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in);
118118

119119
mp_int_t transparent_color;
120-
if (!mp_obj_get_int_maybe(transparent_color_obj, &transparent_color)) {
120+
if (!mp_obj_get_int(&transparent_color)) {
121121
mp_raise_ValueError(translate("transparent_color should be an int"));
122122
}
123123
common_hal_displayio_colorconverter_make_transparent(self, transparent_color);
124124
return mp_const_none;
125125
}
126126
MP_DEFINE_CONST_FUN_OBJ_2(displayio_colorconverter_make_transparent_obj, displayio_colorconverter_make_transparent);
127127

128-
//| def make_opaque(self, pixel: int) -> None:
128+
//| def make_opaque(self) -> None:
129129
//| """Sets a pixel to opaque."""
130130
//|
131-
STATIC mp_obj_t displayio_colorconverter_make_opaque(mp_obj_t self_in, mp_obj_t transparent_color_obj) {
131+
STATIC mp_obj_t displayio_colorconverter_make_opaque(mp_obj_t self_in) {
132132
displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in);
133-
134-
mp_int_t transparent_color;
135-
if (!mp_obj_get_int_maybe(transparent_color_obj, &transparent_color)) {
136-
mp_raise_ValueError(translate("transparent_color should be an int"));
137-
}
138-
common_hal_displayio_colorconverter_make_opaque(self, transparent_color);
133+
common_hal_displayio_colorconverter_make_opaque(self);
139134
return mp_const_none;
140135
}
141-
MP_DEFINE_CONST_FUN_OBJ_2(displayio_colorconverter_make_opaque_obj, displayio_colorconverter_make_opaque);
136+
MP_DEFINE_CONST_FUN_OBJ_1(displayio_colorconverter_make_opaque_obj, displayio_colorconverter_make_opaque);
142137

143138
STATIC const mp_rom_map_elem_t displayio_colorconverter_locals_dict_table[] = {
144139
{ MP_ROM_QSTR(MP_QSTR_convert), MP_ROM_PTR(&displayio_colorconverter_convert_obj) },

shared-bindings/displayio/ColorConverter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@ void common_hal_displayio_colorconverter_set_dither(displayio_colorconverter_t*
4040
bool common_hal_displayio_colorconverter_get_dither(displayio_colorconverter_t* self);
4141

4242
void common_hal_displayio_colorconverter_make_transparent(displayio_colorconverter_t* self, uint32_t transparent_color);
43-
void common_hal_displayio_colorconverter_make_opaque(displayio_colorconverter_t* self, uint32_t transparent_color);
43+
void common_hal_displayio_colorconverter_make_opaque(displayio_colorconverter_t* self);
4444

4545
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_COLORCONVERTER_H

shared-module/displayio/ColorConverter.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,16 +130,13 @@ bool common_hal_displayio_colorconverter_get_dither(displayio_colorconverter_t*
130130
}
131131

132132
void common_hal_displayio_colorconverter_make_transparent(displayio_colorconverter_t* self, uint32_t transparent_color) {
133-
if (self->transparent_color) {
134-
mp_raise_RuntimeError(translate("transparent_color value is already set"));
133+
if (self->transparent_color >= 0x1000000) {
134+
mp_raise_RuntimeError(translate("Only one color can be transparent at a time"));
135135
}
136136
self->transparent_color = transparent_color;
137137
}
138138

139-
void common_hal_displayio_colorconverter_make_opaque(displayio_colorconverter_t* self, uint32_t transparent_color) {
140-
if (self->transparent_color != transparent_color) {
141-
mp_raise_RuntimeError(translate("transparent_color value is not transparent"));
142-
}
139+
void common_hal_displayio_colorconverter_make_opaque(displayio_colorconverter_t* self) {
143140
// 0x1000000 will never equal a valid color
144141
self->transparent_color = 0x1000000;
145142
}

0 commit comments

Comments
 (0)