Skip to content

Commit 5c3cce6

Browse files
committed
add is_transparent getter to displayio.Palette
1 parent 75ba26e commit 5c3cce6

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

shared-bindings/displayio/Palette.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ STATIC mp_obj_t group_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
8484
}
8585

8686
//| def __getitem__(self, index: int) -> Optional[int]:
87-
//| r"""Return the pixel color at the given index as an integer."""
87+
//| """Return the pixel color at the given index as an integer."""
8888
//| ...
8989
//|
9090
//| def __setitem__(self, index: int, value: Union[int, ReadableBuffer, Tuple[int, int, int]]) -> None:
@@ -180,9 +180,25 @@ STATIC mp_obj_t displayio_palette_obj_make_opaque(mp_obj_t self_in, mp_obj_t pal
180180
}
181181
MP_DEFINE_CONST_FUN_OBJ_2(displayio_palette_make_opaque_obj, displayio_palette_obj_make_opaque);
182182

183+
//| def is_transparent(self, palette_index: int) -> bool:
184+
//| """Returns `True` if the palette index is transparent. Returns `False` if opaque."""
185+
//| ...
186+
//|
187+
STATIC mp_obj_t displayio_palette_obj_is_transparent(mp_obj_t self_in, mp_obj_t palette_index_obj) {
188+
displayio_palette_t *self = MP_OBJ_TO_PTR(self_in);
189+
190+
mp_int_t palette_index;
191+
if (!mp_obj_get_int_maybe(palette_index_obj, &palette_index)) {
192+
mp_raise_ValueError(translate("palette_index should be an int"));
193+
}
194+
return mp_obj_new_bool(common_hal_displayio_palette_is_transparent(self, palette_index));
195+
}
196+
MP_DEFINE_CONST_FUN_OBJ_2(displayio_palette_is_transparent_obj, displayio_palette_obj_is_transparent);
197+
183198
STATIC const mp_rom_map_elem_t displayio_palette_locals_dict_table[] = {
184199
{ MP_ROM_QSTR(MP_QSTR_make_transparent), MP_ROM_PTR(&displayio_palette_make_transparent_obj) },
185200
{ MP_ROM_QSTR(MP_QSTR_make_opaque), MP_ROM_PTR(&displayio_palette_make_opaque_obj) },
201+
{ MP_ROM_QSTR(MP_QSTR_is_transparent), MP_ROM_PTR(&displayio_palette_is_transparent_obj) },
186202
};
187203
STATIC MP_DEFINE_CONST_DICT(displayio_palette_locals_dict, displayio_palette_locals_dict_table);
188204

shared-bindings/displayio/Palette.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,6 @@ uint32_t common_hal_displayio_palette_get_len(displayio_palette_t *self);
3838

3939
void common_hal_displayio_palette_make_opaque(displayio_palette_t *self, uint32_t palette_index);
4040
void common_hal_displayio_palette_make_transparent(displayio_palette_t *self, uint32_t palette_index);
41+
bool common_hal_displayio_palette_is_transparent(displayio_palette_t *self, uint32_t palette_index);
4142

4243
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_PALETTE_H

shared-module/displayio/Palette.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ void common_hal_displayio_palette_make_transparent(displayio_palette_t *self, ui
4343
self->needs_refresh = true;
4444
}
4545

46+
bool common_hal_displayio_palette_is_transparent(displayio_palette_t *self, uint32_t palette_index) {
47+
return self->colors[palette_index].transparent;
48+
}
49+
4650
uint32_t common_hal_displayio_palette_get_len(displayio_palette_t *self) {
4751
return self->color_count;
4852
}

0 commit comments

Comments
 (0)