]> Repositories - hackapet/Adafruit_Blinka_Displayio.git/commitdiff
Avoid drawing offscreen stuff
authorMelissa LeBlanc-Williams <melissa@adafruit.com>
Wed, 8 Jul 2020 16:31:27 +0000 (09:31 -0700)
committerMelissa LeBlanc-Williams <melissa@adafruit.com>
Wed, 8 Jul 2020 16:31:27 +0000 (09:31 -0700)
displayio/tilegrid.py

index 2b2f8c7ad7d4755c3330df23c7704d1d6cce8138..2c815a4f9280e92558ffab6d70e4373327ab9076 100644 (file)
@@ -279,15 +279,22 @@ class TileGrid:
 
         source_x = source_y = 0
         if x < 0:
-            source_x = 0 - x
+            source_x = round(0 - x)
             x = 0
         if y < 0:
-            source_y = 0 - y
+            source_y = round(0 - y)
             y = 0
 
-        buffer.alpha_composite(
-            image, (round(x), round(y)), source=(round(source_x), round(source_y))
-        )
+        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