From: foamyguy Date: Wed, 16 Apr 2025 00:51:04 +0000 (-0500) Subject: implement arrayblit X-Git-Tag: 2.2.0^2~9 X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka_Displayio.git/commitdiff_plain/96a8f5564dce100d739e43528ecd40a10316be8d implement arrayblit --- diff --git a/bitmaptools/__init__.py b/bitmaptools/__init__.py index 4b18c45..e3490f6 100644 --- a/bitmaptools/__init__.py +++ b/bitmaptools/__init__.py @@ -216,3 +216,24 @@ def rotozoom( v += dv_row rowu += du_col rowv += dv_col + + +def arrayblit( + bitmap: Bitmap, + data: circuitpython_typing.ReadableBuffer, + x1: int = 0, y1: int = 0, + x2: int | None = None, y2: int | None = None, + skip_index: int | None = None): + + if x2 is None: + x2 = bitmap.width + if y2 is None: + y2 = bitmap.height + + _value_count = 2 ** bitmap._bits_per_value + for y in range(y1, y2): + for x in range(x1, x2): + i = y * (x2 - x1) + x + value = int(data[i] % _value_count) + if skip_index is None or value != skip_index: + bitmap[x, y] = value