1 # SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams
3 # SPDX-License-Identifier: MIT
7 ================================================================================
9 Struct Data Classes for Blinka Displayio
11 **Software and Dependencies:**
14 https://github.com/adafruit/Adafruit_Blinka/releases
16 * Author(s): Melissa LeBlanc-Williams
20 from dataclasses import dataclass
22 __version__ = "0.0.0+auto.0"
23 __repo__ = "https://github.com/adafruit/Adafruit_Blinka_Displayio.git"
27 class RectangleStruct:
28 # pylint: disable=invalid-name
29 """Rectangle Struct Dataclass. To eventually be replaced by Area."""
37 class TransformStruct:
38 # pylint: disable=invalid-name
39 """Transform Struct Dataclass"""
45 transpose_xy: bool = False
46 mirror_x: bool = False
47 mirror_y: bool = False
51 class ColorspaceStruct:
52 # pylint: disable=invalid-name, too-many-instance-attributes
53 """Colorspace Struct Dataclass"""
55 bytes_per_cell: int = 0
57 tricolor_luma: int = 0
58 grayscale_bit: int = 0
59 grayscale: bool = False
60 tricolor: bool = False
61 sevencolor: bool = False # Acep e-ink screens.
62 pixels_in_byte_share_row: bool = False
63 reverse_pixels_in_byte: bool = False
64 reverse_bytes_in_word: bool = False
69 class InputPixelStruct:
70 """InputPixel Struct Dataclass"""
81 class OutputPixelStruct:
82 """OutputPixel Struct Dataclass"""
90 """Color Struct Dataclass"""
93 cached_colorspace: ColorspaceStruct = None
95 cached_colorspace_grayscale_bit: int = 0
96 cached_colorspace_grayscale: bool = False
97 transparent: bool = False
99 def rgba(self) -> tuple[int, int, int, int]:
100 """Return the color as a tuple of red, green, blue, alpha"""
103 (self.rgb888 >> 8) & 0xFF,
105 0 if self.transparent else 0xFF,