import time
import struct
from circuitpython_typing import WriteableBuffer, ReadableBuffer
-from paralleldisplay import ParallelBus
-from ._fourwire import FourWire
+from paralleldisplaybus import ParallelBus
+from fourwire import FourWire
from ._group import Group
-from ._i2cdisplay import I2CDisplay
+from i2cdisplaybus import I2CDisplayBus
from ._structs import ColorspaceStruct, TransformStruct
from ._area import Area
-from ._displaybus import _DisplayBus
+from busdisplay._displaybus import _DisplayBus
from ._helpers import bswap16
from ._constants import (
CHIP_SELECT_UNTOUCHED,
self.last_refresh = 0
if bus:
- if isinstance(bus, (FourWire, I2CDisplay, ParallelBus)):
+ if isinstance(bus, (FourWire, I2CDisplayBus, ParallelBus)):
self._bus_reset = bus.reset
+ self._bus_free = bus._free
self._begin_transaction = bus._begin_transaction
self._send = bus._send
self._end_transaction = bus._end_transaction
self.rotation = rotation
self.transform = TransformStruct()
+ self.set_rotation(rotation)
+
def set_rotation(self, rotation: int) -> None:
"""
Sets the rotation of the display as an int in degrees.
"""
# pylint: disable=protected-access, too-many-branches
- transposed = self.rotation in (90, 270)
- will_be_transposed = rotation in (90, 270)
- if transposed != will_be_transposed:
- self.width, self.height = self.height, self.width
-
height = self.height
width = self.width
self.transform.y = height
self.transform.dy = -1
- if self.current_group is not None:
- self.current_group._update_transform(self.transform)
-
def set_root_group(self, root_group: Group) -> bool:
"""
Switches to displaying the given group of layers. When group is `None`, the
else:
region_y1 //= pixels_per_byte * self.colorspace.bytes_per_cell
region_y2 //= pixels_per_byte * self.colorspace.bytes_per_cell
-
region_x2 -= 1
region_y2 -= 1
if not self.data_as_commands:
self.send(DISPLAY_COMMAND, CHIP_SELECT_UNTOUCHED, data)
data = bytearray(0)
- if self.ram_width < 0x100: # Single Byte Bounds
+ if self.ram_height < 0x100: # Single Byte Bounds
data += struct.pack(">BB", region_y1, region_y2)
else:
if self.address_little_endian:
"""
Send the data to the current bus
"""
- print(len(data))
- if isinstance(data, memoryview):
- data = data.tobytes()
- print(data)
self._send(data_type, chip_select, data)
+ def bus_free(self) -> bool:
+ """
+ Check if the bus is free
+ """
+ return self._bus_free()
+
def begin_transaction(self) -> bool:
"""
Begin Bus Transaction