From 59311035700024f4576a60f1f55249683ccf1e78 Mon Sep 17 00:00:00 2001 From: foamyguy Date: Mon, 17 Oct 2022 11:58:30 -0500 Subject: [PATCH] adding type annotations and png example script --- adafruit_imageload/png.py | 10 ++++-- examples/imageload_png_simpletest.py | 43 +++++++++++++++++++++++++ examples/images/test_image.png | Bin 0 -> 5999 bytes examples/images/test_image.png.license | 2 ++ 4 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 examples/imageload_png_simpletest.py create mode 100644 examples/images/test_image.png create mode 100644 examples/images/test_image.png.license diff --git a/adafruit_imageload/png.py b/adafruit_imageload/png.py index 0fdc056..db304b5 100644 --- a/adafruit_imageload/png.py +++ b/adafruit_imageload/png.py @@ -13,16 +13,22 @@ """ +try: + # pylint: disable=unused-import + import typing + from .displayio_types import PaletteConstructor, BitmapConstructor +except ImportError: + pass + import struct import zlib - __version__ = "0.0.0-auto.0" __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_ImageLoad.git" def load( - file, *, bitmap, palette=None + file: str, *, bitmap: BitmapConstructor, palette: PaletteConstructor = None ): # pylint: disable=too-many-locals,too-many-branches """Loads a PNG image from the open ``file``. diff --git a/examples/imageload_png_simpletest.py b/examples/imageload_png_simpletest.py new file mode 100644 index 0000000..c1dc09f --- /dev/null +++ b/examples/imageload_png_simpletest.py @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: 2022 Tim Cocks +# SPDX-License-Identifier: MIT + +import board +import displayio +from vectorio import Rectangle +import adafruit_imageload + +# built-in display +display = board.DISPLAY + +# load png image +image, palette = adafruit_imageload.load("images/test_image.png") + +# Set the transparency index color to be hidden +palette.make_transparent(0) + +# make tilegrid for the loaded image +tile_grid = displayio.TileGrid(image, pixel_shader=palette) +tile_grid.x = display.width // 2 - tile_grid.tile_width // 2 +tile_grid.y = display.height // 2 - tile_grid.tile_height // 2 + +# make a blank background +bg_palette = displayio.Palette(1) +bg_palette[0] = 0xFFFFFF +rect = Rectangle( + pixel_shader=bg_palette, width=display.width, height=display.height, x=0, y=0 +) + +# make a group to show on the display +group = displayio.Group() + +# add background +group.append(rect) +# add loaded image tilegrid +group.append(tile_grid) + +# show our group +board.DISPLAY.show(group) + +# loop forever so it stays on the display +while True: + pass diff --git a/examples/images/test_image.png b/examples/images/test_image.png new file mode 100644 index 0000000000000000000000000000000000000000..9e196dc55cffbec374f49a4320a559510000b8a8 GIT binary patch literal 5999 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