summaryrefslogtreecommitdiff
path: root/shared-module/displayio/Group.c
diff options
context:
space:
mode:
authorDan Halbert <halbert@adafruit.com>2019-09-04 15:48:00 -0400
committerGitHub <noreply@github.com>2019-09-04 15:48:00 -0400
commitfca440fb66aff746b0a2c752df15c445ba421fdf (patch)
tree1d6ede88cbfb246cdb8a14afa263c2c9e2bded95 /shared-module/displayio/Group.c
parent321b57a5d2a85f56ba198c8ff678e123dfe08c4c (diff)
parent7951646b9afbb333048730ad7660ee34685e8add (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.c41
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;
}