From 3ce9b36582da12e2853399fa57ca121cc873ab75 Mon Sep 17 00:00:00 2001 From: andreamah Date: Mon, 13 Apr 2020 16:04:56 -0700 Subject: [PATCH 1/2] fixed group max_size and clue text scaling --- src/base_circuitpython/displayio/constants.py | 1 + src/base_circuitpython/displayio/group.py | 16 +++++++++++++++- .../displayio/test/test_group.py | 5 +++++ src/clue/adafruit_clue.py | 8 ++++---- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/base_circuitpython/displayio/constants.py b/src/base_circuitpython/displayio/constants.py index e683684b9..bca672472 100644 --- a/src/base_circuitpython/displayio/constants.py +++ b/src/base_circuitpython/displayio/constants.py @@ -4,6 +4,7 @@ INCORR_SUBCLASS = "Layer must be a Group or TileGrid subclass." LAYER_ALREADY_IN_GROUP = "Layer already in a group." GROUP_FULL = "Group Full" +SCALE_TOO_SMALL = "scale must be >= 1" SCREEN_HEIGHT_WIDTH = 240 diff --git a/src/base_circuitpython/displayio/group.py b/src/base_circuitpython/displayio/group.py index 4704c67cf..c5dccf90a 100644 --- a/src/base_circuitpython/displayio/group.py +++ b/src/base_circuitpython/displayio/group.py @@ -8,6 +8,7 @@ import common import board +import sys # Group implementation loosely based on the # displayio.Group class in Adafruit CircuitPython @@ -33,12 +34,22 @@ class Group: """ def __init__( - self, max_size, scale=1, x=0, y=0, check_active_group_ref=True, auto_write=True + self, + max_size=sys.maxsize, + scale=1, + x=0, + y=0, + check_active_group_ref=True, + auto_write=True, ): self.__check_active_group_ref = check_active_group_ref self.__auto_write = auto_write self.__contents = [] self.__max_size = max_size + + if scale < 1: + raise ValueError(CONSTANTS.SCALE_TOO_SMALL) + self.__scale = scale """ .. attribute:: scale @@ -89,6 +100,9 @@ def scale(self): @scale.setter def scale(self, val): + if val < 1: + raise ValueError(CONSTANTS.SCALE_TOO_SMALL) + if self.__scale != val: self.__scale = val self.__elem_changed() diff --git a/src/base_circuitpython/displayio/test/test_group.py b/src/base_circuitpython/displayio/test/test_group.py index 7eee71159..4d943ffc8 100644 --- a/src/base_circuitpython/displayio/test/test_group.py +++ b/src/base_circuitpython/displayio/test/test_group.py @@ -53,6 +53,11 @@ def test_incorr_subclass(self, group_item): with pytest.raises(ValueError, match=CONSTANTS.INCORR_SUBCLASS): g1.append(group_item) + @pytest.mark.parametrize("scale", [(0), (-2)]) + def test_invalid_scale(self, scale): + with pytest.raises(ValueError, match=CONSTANTS.SCALE_TOO_SMALL): + g1 = Group(scale=scale) + def test_layer_already_in_group(self): g1 = Group(max_size=4) diff --git a/src/clue/adafruit_clue.py b/src/clue/adafruit_clue.py index 932ca9c34..c4d8b659e 100644 --- a/src/clue/adafruit_clue.py +++ b/src/clue/adafruit_clue.py @@ -115,8 +115,8 @@ def __init__( self._font = terminalio.FONT if font: self._font = font - self.text_group = displayio.Group(max_size=20, scale=text_scale) self.text_scale = text_scale + self.text_group = displayio.Group(max_size=20, scale=self.text_scale) if title: # Fail gracefully if title is longer than 60 characters. if len(title) > 60: @@ -130,12 +130,12 @@ def __init__( scale=title_scale, ) title.x = 0 - title.y = 8 - self._y = title.y + 18 * text_scale + title.y = 8 * self.text_scale + self._y = title.y + 18 * self.text_scale self.text_group.append(title) else: - self._y = 3 + self._y = 3 * self.text_scale self._lines = [] for num in range(1): From b8ce0098a7eb65fbd86fe39e77f3890173fe280d Mon Sep 17 00:00:00 2001 From: andreamah Date: Mon, 13 Apr 2020 17:09:13 -0700 Subject: [PATCH 2/2] changed display_text to auto_update --- ...n-display-text-DSX_CUSTOM_MAR172020.tar.gz | Bin 126485 -> 126492 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/adafruit-circuitpython-display-text-DSX_CUSTOM_MAR172020.tar.gz b/adafruit-circuitpython-display-text-DSX_CUSTOM_MAR172020.tar.gz index 85b10a468cf9ee20f2f94ad5348619c699710970..9911fbccb2dc0f58656deb18358f356c8cb88da8 100644 GIT binary patch delta 16880 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