X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka_Displayio.git/blobdiff_plain/c2aa591d359e74f073f5e9cf7e1730ba41f24c01..9ee43e414fe1f380e2c6fda77b3ae346a7f22a3f:/displayio/group.py diff --git a/displayio/group.py b/displayio/group.py index 3d8324f..e84a487 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` @@ -46,29 +28,39 @@ Transform = recordclass("Transform", "x y dx dy scale transpose_xy mirror_x mirr class Group: - """Manage a group of sprites and groups and how they are inter-related.""" + """ + Manage a group of sprites and groups and how they are inter-related. - def __init__(self, *, max_size=4, scale=1, x=0, y=0): - """Create a Group of a given size and scale. Scale is in - one dimension. For example, scale=2 leads to a layer’s - pixel being 2x2 pixels when in the group. + Create a Group of a given scale. Scale is in one dimension. For example, scale=2 + leads to a layer's pixel being 2x2 pixels when in the group. + """ + + def __init__(self, *, max_size=None, scale=1, x=0, y=0): + """ + :param Optional(int) max_size: *DEPRECATED* This has been removed in CircuitPython 7 and + will be removed in a future version of ``Adafruit_Blinka_Displayio`` + :param int scale: Scale of layer pixels in one dimension. + :param int x: Initial x position within the parent. + :param int y: Initial y position within the parent. """ - if not isinstance(max_size, int) or max_size < 1: - raise ValueError("Max Size must be >= 1") - self._max_size = max_size + + if max_size is not None: + print( + "The max_size parameter displayio.Group() has been deprecated. " + "Please remove max_size from your code." + ) + if not isinstance(scale, int) or scale < 1: raise ValueError("Scale must be >= 1") - self._scale = scale + self._scale = 1 # Use the setter below to actually set the scale 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, self._scale, False, False, False - ) + self._absolute_transform = Transform(0, 0, 1, 1, 1, False, False, False) + self._set_scale(scale) # Set the scale via the setter def update_transform(self, parent_transform): """Update the parent transform and child transforms""" @@ -113,8 +105,6 @@ class Group: raise ValueError("Invalid Group Member") if layer.in_group: raise ValueError("Layer already in a group.") - if len(self._layers) == self._max_size: - raise RuntimeError("Group full") self._layers.insert(index, layer) self._layer_update(index) @@ -183,6 +173,11 @@ class Group: @scale.setter def scale(self, value): + self._set_scale(value) + + def _set_scale(self, value): + # This is method allows the scale to be set by this class even when + # the scale property is over-ridden by a subclass. if not isinstance(value, int) or value < 1: raise ValueError("Scale must be >= 1") if self._scale != value: