X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka_Displayio.git/blobdiff_plain/eb647bde5537c8a811581baf7c342475b937362d..e3c50c29dff1fef1f2499917d7d985d77be1f42d:/displayio/group.py diff --git a/displayio/group.py b/displayio/group.py index d28d83b..9842b9f 100644 --- a/displayio/group.py +++ b/displayio/group.py @@ -1,24 +1,6 @@ -# The MIT License (MIT) +# SPDX-FileCopyrightText: 2020 Melissa LeBlanc-Williams for Adafruit Industries # -# Copyright (c) 2020 Melissa LeBlanc-Williams for Adafruit Industries -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT """ `displayio.group` @@ -59,21 +41,23 @@ class Group: if not isinstance(scale, int) or scale < 1: raise ValueError("Scale must be >= 1") self._scale = scale - self._x = x - self._y = y - self._hidden = False + self._group_x = x + self._group_y = y + self._hidden_group = False self._layers = [] self._supported_types = (TileGrid, Group) self._absolute_transform = None self.in_group = False - self._absolute_transform = Transform(0, 0, 1, 1, 1, False, False, False) + self._absolute_transform = Transform( + 0, 0, 1, 1, self._scale, False, False, False + ) def update_transform(self, parent_transform): """Update the parent transform and child transforms""" self.in_group = parent_transform is not None if self.in_group: - x = self._x - y = self._y + x = self._group_x + y = self._group_y if parent_transform.transpose_xy: x, y = y, x self._absolute_transform.x = parent_transform.x + parent_transform.dx * x @@ -152,7 +136,7 @@ class Group: del self._layers[index] def _fill_area(self, buffer): - if self._hidden: + if self._hidden_group: return for layer in self._layers: @@ -164,13 +148,13 @@ class Group: """True when the Group and all of it’s layers are not visible. When False, the Group’s layers are visible if they haven’t been hidden. """ - return self._hidden + return self._hidden_group @hidden.setter def hidden(self, value): if not isinstance(value, (bool, int)): raise ValueError("Expecting a boolean or integer value") - self._hidden = bool(value) + self._hidden_group = bool(value) @property def scale(self): @@ -199,37 +183,37 @@ class Group: @property def x(self): """X position of the Group in the parent.""" - return self._x + return self._group_x @x.setter def x(self, value): if not isinstance(value, int): raise ValueError("x must be an integer") - if self._x != value: + if self._group_x != value: if self._absolute_transform.transpose_xy: dy_value = self._absolute_transform.dy / self._scale - self._absolute_transform.y += dy_value * (value - self._x) + self._absolute_transform.y += dy_value * (value - self._group_x) else: dx_value = self._absolute_transform.dx / self._scale - self._absolute_transform.x += dx_value * (value - self._x) - self._x = value + self._absolute_transform.x += dx_value * (value - self._group_x) + self._group_x = value self._update_child_transforms() @property def y(self): """Y position of the Group in the parent.""" - return self._y + return self._group_y @y.setter def y(self, value): if not isinstance(value, int): raise ValueError("y must be an integer") - if self._y != value: + if self._group_y != value: if self._absolute_transform.transpose_xy: dx_value = self._absolute_transform.dx / self._scale - self._absolute_transform.x += dx_value * (value - self._y) + self._absolute_transform.x += dx_value * (value - self._group_y) else: dy_value = self._absolute_transform.dy / self._scale - self._absolute_transform.y += dy_value * (value - self._y) - self._y = value + self._absolute_transform.y += dy_value * (value - self._group_y) + self._group_y = value self._update_child_transforms()