backlight_on_high: bool = True,
SH1107_addressing: bool = False,
):
- # pylint: disable=too-many-locals,invalid-name
+ # pylint: disable=too-many-locals,invalid-name, too-many-branches
"""Create a Display object on the given display bus (`displayio.FourWire` or
`paralleldisplay.ParallelBus`).
The initialization sequence should always leave the display memory access inline with
the scan of the display to minimize tearing artifacts.
"""
+
+ if rotation % 90 != 0:
+ raise ValueError("Display rotation must be in 90 degree increments")
+
+ if SH1107_addressing and color_depth != 1:
+ raise ValueError("color_depth must be 1 when SH1107_addressing is True")
+
# Turn off auto-refresh as we init
self._auto_refresh = False
ram_width = 0x100
)
return areas
- def background(self):
+ def _background(self):
"""Run background refresh tasks. Do not call directly"""
if (
self._auto_refresh
def _refresh_area(self, area) -> bool:
"""Loop through dirty areas and redraw that area."""
- # pylint: disable=too-many-locals
+ # pylint: disable=too-many-locals, too-many-branches
clipped = Area()
# Clip the area to the display by overlapping the areas.
buffer = memoryview(bytearray([0] * (buffer_size * 4)))
mask = memoryview(bytearray([0] * mask_length))
self._core.fill_area(subrectangle, mask, buffer)
+
+ # Can't acquire display bus; skip the rest of the data.
+ if not self._core.bus_free():
+ return False
+
self._core.begin_transaction()
self._send_pixels(buffer[:subrectangle_size_bytes])
self._core.end_transaction()
self._core.fill_area(area, mask, buffer)
return buffer
- def release(self) -> None:
+ def _release(self) -> None:
"""Release the display and free its resources"""
self.auto_refresh = False
self._core.release_display_core()
- def reset(self) -> None:
+ def _reset(self) -> None:
"""Reset the display"""
self.auto_refresh = True
circuitpython_splash.x = 0
@rotation.setter
def rotation(self, value: int):
+ if value % 90 != 0:
+ raise ValueError("Display rotation must be in 90 degree increments")
self._core.set_rotation(value)
@property