summaryrefslogtreecommitdiff
path: root/shared-module/displayio/Group.c
diff options
context:
space:
mode:
Diffstat (limited to 'shared-module/displayio/Group.c')
-rw-r--r--shared-module/displayio/Group.c26
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
}
}