From: foamyguy Date: Mon, 5 May 2025 23:28:14 +0000 (-0500) Subject: Merge pull request #162 from FoamyGuy/bitmaptools X-Git-Tag: 2.2.0 X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka_Displayio.git/commitdiff_plain/f376dced2e0f071fce859440d5575e10f167a354?hp=119d2cfce6dc0338a3085f62e3d8fdb52759f3d6 Merge pull request #162 from FoamyGuy/bitmaptools add bitmaptools module --- diff --git a/README.rst b/README.rst index 8007209..4338cae 100644 --- a/README.rst +++ b/README.rst @@ -58,6 +58,8 @@ Contributions are welcome! Please read our `Code of Conduct `_ before contributing to help this project stay welcoming. +To make sure your pull request will pass the commit checks, use pre-commit to check your code formatting. Please see the guide page here for more details: https://learn.adafruit.com/contribute-to-circuitpython-with-git-and-github/check-your-code + Documentation ============= diff --git a/displayio/_area.py b/displayio/_area.py index f7272dd..0b3dd80 100644 --- a/displayio/_area.py +++ b/displayio/_area.py @@ -87,10 +87,10 @@ class Area: def union(self, other, union): """Combine this area along with another into union""" if self.empty(): - self.copy_into(union) + other.copy_into(union) return if other.empty(): - other.copy_into(union) + self.copy_into(union) return union.x1 = min(self.x1, other.x1) diff --git a/vectorio/_circle.py b/vectorio/_circle.py index cc87351..339b154 100644 --- a/vectorio/_circle.py +++ b/vectorio/_circle.py @@ -61,7 +61,7 @@ class Circle(_VectorShape): def radius(self, value: int) -> None: if value < 1: raise ValueError("radius must be >= 1") - self._radius = abs(value) + self._radius = int(value) # other code assumes radius is an integer self._shape_set_dirty() @property diff --git a/vectorio/_polygon.py b/vectorio/_polygon.py index 4e6e444..7f2af58 100644 --- a/vectorio/_polygon.py +++ b/vectorio/_polygon.py @@ -17,7 +17,7 @@ vectorio Polygon for Blinka """ -from typing import Union, Tuple +from typing import Union, Tuple, List from displayio._colorconverter import ColorConverter from displayio._palette import Palette from displayio._area import Area @@ -34,7 +34,7 @@ class Polygon(_VectorShape): self, *, pixel_shader: Union[ColorConverter, Palette], - points: list | Tuple[int, int], + points: List[Tuple[int, int]], x: int, y: int, ): @@ -54,12 +54,12 @@ class Polygon(_VectorShape): self.points = points @property - def points(self) -> list | Tuple[int, int]: + def points(self) -> List[Tuple[int, int]]: """The points of the polygon in pixels""" return self._points @points.setter - def points(self, value: list | Tuple[int, int]) -> None: + def points(self, value: List[Tuple[int, int]]) -> None: if len(value) < 3: raise ValueError("Polygon needs at least 3 points") self._points = value diff --git a/vectorio/_rectangle.py b/vectorio/_rectangle.py index e4c5952..15880c6 100644 --- a/vectorio/_rectangle.py +++ b/vectorio/_rectangle.py @@ -38,6 +38,7 @@ class Rectangle(_VectorShape): height: int, x: int, y: int, + color_index: int = 0, ): """Represents a rectangle by defining its bounds @@ -51,7 +52,7 @@ class Rectangle(_VectorShape): """ self._width = 1 self._height = 1 - self._color_index = 1 + self._color_index = color_index + 1 super().__init__(pixel_shader, x, y) self.width = width diff --git a/vectorio/_vectorshape.py b/vectorio/_vectorshape.py index d3d1ddb..735e5ae 100644 --- a/vectorio/_vectorshape.py +++ b/vectorio/_vectorshape.py @@ -122,9 +122,12 @@ class _VectorShape: self._get_screen_area(current_area) moved = current_area != self._current_area if moved: + # This will add _current_area (the old position) to dirty area self._current_area.union( self._ephemeral_dirty_area, self._ephemeral_dirty_area ) + # This will add the new position to the dirty area + current_area.union(self._ephemeral_dirty_area, self._ephemeral_dirty_area) # Dirty area tracks the shape's footprint between draws. It's reset on refresh finish. current_area.copy_into(self._current_area) self._current_area_dirty = True