From 96a8f5564dce100d739e43528ecd40a10316be8d Mon Sep 17 00:00:00 2001 From: foamyguy Date: Tue, 15 Apr 2025 19:51:04 -0500 Subject: [PATCH] implement arrayblit --- bitmaptools/__init__.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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 -- 2.49.0