diff options
Diffstat (limited to 'shared-module/displayio/Group.c')
| -rw-r--r-- | shared-module/displayio/Group.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/shared-module/displayio/Group.c b/shared-module/displayio/Group.c index 255349d7c..95043e4f3 100644 --- a/shared-module/displayio/Group.c +++ b/shared-module/displayio/Group.c @@ -27,7 +27,7 @@ #include "shared-bindings/displayio/Group.h" #include "py/runtime.h" -#include "shared-bindings/displayio/Sprite.h" +#include "shared-bindings/displayio/TileGrid.h" void common_hal_displayio_group_construct(displayio_group_t* self, uint32_t max_size) { mp_obj_t* children = m_new(mp_obj_t, max_size); @@ -40,10 +40,10 @@ void common_hal_displayio_group_append(displayio_group_t* self, mp_obj_t layer) } mp_obj_t native_layer = mp_instance_cast_to_native_base(layer, &displayio_group_type); if (native_layer == MP_OBJ_NULL) { - native_layer = mp_instance_cast_to_native_base(layer, &displayio_sprite_type); + native_layer = mp_instance_cast_to_native_base(layer, &displayio_tilegrid_type); } if (native_layer == MP_OBJ_NULL) { - mp_raise_ValueError(translate("Layer must be a Group or Sprite subclass.")); + mp_raise_ValueError(translate("Layer must be a Group or TileGrid subclass.")); } self->children[self->size] = layer; self->size++; @@ -77,8 +77,8 @@ bool displayio_group_get_pixel(displayio_group_t *self, int16_t x, int16_t y, ui y /= self->scale; for (int32_t i = self->size - 1; i >= 0 ; i--) { mp_obj_t layer = self->children[i]; - if (MP_OBJ_IS_TYPE(layer, &displayio_sprite_type)) { - if (displayio_sprite_get_pixel(layer, x, y, pixel)) { + if (MP_OBJ_IS_TYPE(layer, &displayio_tilegrid_type)) { + if (displayio_tilegrid_get_pixel(layer, x, y, pixel)) { return true; } } else if (MP_OBJ_IS_TYPE(layer, &displayio_group_type)) { @@ -97,12 +97,15 @@ bool displayio_group_needs_refresh(displayio_group_t *self) { } for (int32_t i = self->size - 1; i >= 0 ; i--) { mp_obj_t layer = self->children[i]; - if (MP_OBJ_IS_TYPE(layer, &displayio_sprite_type)) { - if (displayio_sprite_needs_refresh(layer)) { + if (MP_OBJ_IS_TYPE(layer, &displayio_tilegrid_type)) { + if (displayio_tilegrid_needs_refresh(layer)) { + return true; + } + } else if (MP_OBJ_IS_TYPE(layer, &displayio_group_type)) { + if (displayio_group_needs_refresh(layer)) { return true; } } - // TODO: Tiled layer } return false; } @@ -111,9 +114,10 @@ void displayio_group_finish_refresh(displayio_group_t *self) { self->needs_refresh = false; for (int32_t i = self->size - 1; i >= 0 ; i--) { mp_obj_t layer = self->children[i]; - if (MP_OBJ_IS_TYPE(layer, &displayio_sprite_type)) { - displayio_sprite_finish_refresh(layer); + if (MP_OBJ_IS_TYPE(layer, &displayio_tilegrid_type)) { + displayio_tilegrid_finish_refresh(layer); + } else if (MP_OBJ_IS_TYPE(layer, &displayio_group_type)) { + displayio_group_finish_refresh(layer); } - // TODO: Tiled layer } } |
