Skip to content

Commit 16b81c8

Browse files
committed
adding bitmap property to TileGrid
1 parent 1f57443 commit 16b81c8

File tree

4 files changed

+50
-1
lines changed

4 files changed

+50
-1
lines changed

locale/circuitpython.pot

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2717,6 +2717,11 @@ msgstr ""
27172717
msgid "binary op %q not implemented"
27182718
msgstr ""
27192719

2720+
#: shared-bindings/displayio/TileGrid.c
2721+
msgid ""
2722+
"bitmap must be displayio.Bitmap, displayio.Shape, or displayio.OnDiskBitmap"
2723+
msgstr ""
2724+
27202725
#: shared-bindings/bitmaptools/__init__.c
27212726
msgid "bitmap sizes must match"
27222727
msgstr ""

shared-bindings/displayio/TileGrid.c

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,37 @@ const mp_obj_property_t displayio_tilegrid_pixel_shader_obj = {
379379
MP_ROM_NONE},
380380
};
381381

382+
//| bitmap: Union[Bitmap,OnDiskBitmap,Shape]
383+
//| """The bitmap of the tilegrid."""
384+
//|
385+
STATIC mp_obj_t displayio_tilegrid_obj_get_bitmap(mp_obj_t self_in) {
386+
displayio_tilegrid_t *self = native_tilegrid(self_in);
387+
return common_hal_displayio_tilegrid_get_bitmap(self);
388+
}
389+
MP_DEFINE_CONST_FUN_OBJ_1(displayio_tilegrid_get_bitmap_obj, displayio_tilegrid_obj_get_bitmap);
390+
391+
STATIC mp_obj_t displayio_tilegrid_obj_set_bitmap(mp_obj_t self_in, mp_obj_t bitmap) {
392+
displayio_tilegrid_t *self = native_tilegrid(self_in);
393+
if (!mp_obj_is_type(bitmap, &displayio_bitmap_type) &&
394+
!mp_obj_is_type(bitmap, &displayio_ondiskbitmap_type) &&
395+
!mp_obj_is_type(bitmap, &displayio_shape_type)) {
396+
397+
mp_raise_TypeError(translate("bitmap must be displayio.Bitmap, displayio.Shape, or displayio.OnDiskBitmap"));
398+
}
399+
400+
common_hal_displayio_tilegrid_set_bitmap(self, bitmap);
401+
402+
return mp_const_none;
403+
}
404+
MP_DEFINE_CONST_FUN_OBJ_2(displayio_tilegrid_set_bitmap_obj, displayio_tilegrid_obj_set_bitmap);
405+
406+
const mp_obj_property_t displayio_tilegrid_bitmap_obj = {
407+
.base.type = &mp_type_property,
408+
.proxy = {(mp_obj_t)&displayio_tilegrid_get_bitmap_obj,
409+
(mp_obj_t)&displayio_tilegrid_set_bitmap_obj,
410+
MP_ROM_NONE},
411+
};
412+
382413
//| def __getitem__(self, index: Union[Tuple[int, int], int]) -> int:
383414
//| """Returns the tile index at the given index. The index can either be an x,y tuple or an int equal
384415
//| to ``y * width + x``.
@@ -454,7 +485,8 @@ STATIC const mp_rom_map_elem_t displayio_tilegrid_locals_dict_table[] = {
454485
{ MP_ROM_QSTR(MP_QSTR_flip_x), MP_ROM_PTR(&displayio_tilegrid_flip_x_obj) },
455486
{ MP_ROM_QSTR(MP_QSTR_flip_y), MP_ROM_PTR(&displayio_tilegrid_flip_y_obj) },
456487
{ MP_ROM_QSTR(MP_QSTR_transpose_xy), MP_ROM_PTR(&displayio_tilegrid_transpose_xy_obj) },
457-
{ MP_ROM_QSTR(MP_QSTR_pixel_shader), MP_ROM_PTR(&displayio_tilegrid_pixel_shader_obj) },
488+
{ MP_ROM_QSTR(MP_QSTR_pixel_shader), MP_ROM_PTR(&displayio_tilegrid_pixel_shader_obj) },
489+
{ MP_ROM_QSTR(MP_QSTR_bitmap), MP_ROM_PTR(&displayio_tilegrid_bitmap_obj) },
458490
};
459491
STATIC MP_DEFINE_CONST_DICT(displayio_tilegrid_locals_dict, displayio_tilegrid_locals_dict_table);
460492

shared-bindings/displayio/TileGrid.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ void common_hal_displayio_tilegrid_set_y(displayio_tilegrid_t *self, mp_int_t y)
4545
mp_obj_t common_hal_displayio_tilegrid_get_pixel_shader(displayio_tilegrid_t *self);
4646
void common_hal_displayio_tilegrid_set_pixel_shader(displayio_tilegrid_t *self, mp_obj_t pixel_shader);
4747

48+
mp_obj_t common_hal_displayio_tilegrid_get_bitmap(displayio_tilegrid_t *self);
49+
void common_hal_displayio_tilegrid_set_bitmap(displayio_tilegrid_t *self, mp_obj_t bitmap);
50+
4851

4952
bool common_hal_displayio_tilegrid_get_flip_x(displayio_tilegrid_t *self);
5053
void common_hal_displayio_tilegrid_set_flip_x(displayio_tilegrid_t *self, bool flip_x);

shared-module/displayio/TileGrid.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,15 @@ void common_hal_displayio_tilegrid_set_pixel_shader(displayio_tilegrid_t *self,
221221
self->full_change = true;
222222
}
223223

224+
mp_obj_t common_hal_displayio_tilegrid_get_bitmap(displayio_tilegrid_t *self) {
225+
return self->bitmap;
226+
}
227+
228+
void common_hal_displayio_tilegrid_set_bitmap(displayio_tilegrid_t *self, mp_obj_t bitmap) {
229+
self->bitmap = bitmap;
230+
self->full_change = true;
231+
}
232+
224233
uint16_t common_hal_displayio_tilegrid_get_width(displayio_tilegrid_t *self) {
225234
return self->width_in_tiles;
226235
}

0 commit comments

Comments
 (0)