X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka_Displayio.git/blobdiff_plain/dbb3f437583e0078826f9b6ba17d15555b0c8300..9ee43e414fe1f380e2c6fda77b3ae346a7f22a3f:/displayio/group.py diff --git a/displayio/group.py b/displayio/group.py index 3fd6809..e84a487 100644 --- a/displayio/group.py +++ b/displayio/group.py @@ -28,16 +28,28 @@ 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 = 1 # Use the setter below to actually set the scale @@ -46,10 +58,9 @@ class Group: 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.scale = scale # Set the scale via the setter + self._set_scale(scale) # Set the scale via the setter def update_transform(self, parent_transform): """Update the parent transform and child transforms""" @@ -94,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) @@ -164,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: