X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka_Displayio.git/blobdiff_plain/1715d924509e479c4000ed858c3edca8967385ad..c91e2161b6c7cbb1f96e68a476ce2d9e0f93c03f:/displayio/tilegrid.py diff --git a/displayio/tilegrid.py b/displayio/tilegrid.py index 04ceb08..2c815a4 100644 --- a/displayio/tilegrid.py +++ b/displayio/tilegrid.py @@ -215,7 +215,7 @@ class TileGrid: ) image.putalpha(alpha.convert("L")) - # pylint: disable=too-many-locals + # pylint: disable=too-many-locals,too-many-branches def _fill_area(self, buffer): """Draw onto the image""" if self._hidden: @@ -276,9 +276,27 @@ class TileGrid: y *= self._absolute_transform.dy x += self._absolute_transform.x y += self._absolute_transform.y - buffer.alpha_composite(image, (int(x), int(y))) - # pylint: enable=too-many-locals + source_x = source_y = 0 + if x < 0: + source_x = round(0 - x) + x = 0 + if y < 0: + source_y = round(0 - y) + y = 0 + + x = round(x) + y = round(y) + + if ( + x <= buffer.width + and y <= buffer.height + and source_x <= image.width + and source_y <= image.height + ): + buffer.alpha_composite(image, (x, y), source=(source_x, source_y)) + + # pylint: enable=too-many-locals,too-many-branches @property def hidden(self):