diff options
| author | Dan Halbert <halbert@adafruit.com> | 2019-09-04 15:48:00 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-09-04 15:48:00 -0400 |
| commit | fca440fb66aff746b0a2c752df15c445ba421fdf (patch) | |
| tree | 1d6ede88cbfb246cdb8a14afa263c2c9e2bded95 /shared-module/displayio/Group.c | |
| parent | 321b57a5d2a85f56ba198c8ff678e123dfe08c4c (diff) | |
| parent | 7951646b9afbb333048730ad7660ee34685e8add (diff) | |
Merge pull request #2113 from tannewt/displayio_hidden5.0.0-alpha.2
Add .hidden to TileGrid and Group
Diffstat (limited to 'shared-module/displayio/Group.c')
| -rw-r--r-- | shared-module/displayio/Group.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/shared-module/displayio/Group.c b/shared-module/displayio/Group.c index 38418a029..d69e9f585 100644 --- a/shared-module/displayio/Group.c +++ b/shared-module/displayio/Group.c @@ -34,6 +34,47 @@ void common_hal_displayio_group_construct(displayio_group_t* self, uint32_t max_ displayio_group_construct(self, children, max_size, scale, x, y); } +bool common_hal_displayio_group_get_hidden(displayio_group_t* self) { + return self->hidden; +} + +void common_hal_displayio_group_set_hidden(displayio_group_t* self, bool hidden) { + if (self->hidden == hidden) { + return; + } + self->hidden = hidden; + if (self->hidden_by_parent) { + return; + } + for (size_t i = 0; i < self->size; i++) { + mp_obj_t layer = self->children[i].native; + if (MP_OBJ_IS_TYPE(layer, &displayio_tilegrid_type)) { + displayio_tilegrid_set_hidden_by_parent(layer, hidden); + } else if (MP_OBJ_IS_TYPE(layer, &displayio_group_type)) { + displayio_group_set_hidden_by_parent(layer, hidden); + } + } +} + +void displayio_group_set_hidden_by_parent(displayio_group_t *self, bool hidden) { + if (self->hidden_by_parent == hidden) { + return; + } + self->hidden_by_parent = hidden; + // If we're already hidden, then we're done. + if (self->hidden) { + return; + } + for (size_t i = 0; i < self->size; i++) { + mp_obj_t layer = self->children[i].native; + if (MP_OBJ_IS_TYPE(layer, &displayio_tilegrid_type)) { + displayio_tilegrid_set_hidden_by_parent(layer, hidden); + } else if (MP_OBJ_IS_TYPE(layer, &displayio_group_type)) { + displayio_group_set_hidden_by_parent(layer, hidden); + } + } +} + uint32_t common_hal_displayio_group_get_scale(displayio_group_t* self) { return self->scale; } |
