From: Melissa LeBlanc-Williams Date: Tue, 4 Jan 2022 00:31:35 +0000 (-0800) Subject: Linted with latest pylint X-Git-Tag: 0.9.0^2 X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka_Displayio.git/commitdiff_plain/bcb0b57a0f94e7b83178a81c8a81ebe7f9921d80?ds=sidebyside Linted with latest pylint --- diff --git a/displayio/_area.py b/displayio/_area.py index 8e50c85..e5ab944 100644 --- a/displayio/_area.py +++ b/displayio/_area.py @@ -23,8 +23,11 @@ from __future__ import annotations __version__ = "0.0.0-auto.0" __repo__ = "https://github.com/adafruit/Adafruit_Blinka_Displayio.git" + class Area: # pylint: disable=invalid-name,missing-function-docstring + """Area Class to represent an area to be updated. Currently not used.""" + def __init__(self, x1: int = 0, y1: int = 0, x2: int = 0, y2: int = 0): self.x1 = x1 self.y1 = y1 diff --git a/displayio/_displaycore.py b/displayio/_displaycore.py index acedf6e..a68f666 100644 --- a/displayio/_displaycore.py +++ b/displayio/_displaycore.py @@ -22,33 +22,17 @@ __version__ = "0.0.0-auto.0" __repo__ = "https://github.com/adafruit/Adafruit_Blinka_Displayio.git" -from typing import Optional, Union +from typing import Union import _typing +from paralleldisplay import ParallelBus from ._fourwire import FourWire from ._group import Group from ._i2cdisplay import I2CDisplay from ._structs import ColorspaceStruct, TransformStruct, RectangleStruct from ._area import Area -from paralleldisplay import ParallelBus -from ._constants import ( - DISPLAY_COMMAND, - DISPLAY_DATA, - CHIP_SELECT_TOGGLE_EVERY_BYTE, - CHIP_SELECT_UNTOUCHED, -) - displays = [] -# Functions -#* construct -# show -# set_dither -#^ bus_reset -# set_region_to_update -#* release -# fill_area -# clip_area (_clip) class _DisplayCore: # pylint: disable=too-many-arguments, too-many-instance-attributes @@ -68,23 +52,24 @@ class _DisplayCore: pixels_in_byte_share_row: bool, bytes_per_cell: int, reverse_pixels_in_byte: bool, - reverse_bytes_in_word: bool + reverse_bytes_in_word: bool, ): self._colorspace = ColorspaceStruct( - depth = color_depth, - grayscale = grayscale, - grayscale_bit = 8 - color_depth, - pixels_in_byte_share_row = pixels_in_byte_share_row, - bytes_per_cell = bytes_per_cell, - reverse_pixels_in_byte = reverse_pixels_in_byte, - reverse_bytes_in_word = reverse_bytes_in_word, - dither = False + depth=color_depth, + grayscale=grayscale, + grayscale_bit=8 - color_depth, + pixels_in_byte_share_row=pixels_in_byte_share_row, + bytes_per_cell=bytes_per_cell, + reverse_pixels_in_byte=reverse_pixels_in_byte, + reverse_bytes_in_word=reverse_bytes_in_word, + dither=False, ) self._current_group = None self._colstart = colstart self._rowstart = rowstart self._last_refresh = 0 self._refresh_in_progress = False + self._full_refresh = False if bus: if isinstance(bus, (FourWire, I2CDisplay, ParallelBus)): @@ -109,7 +94,7 @@ class _DisplayCore: """ Sets the rotation of the display as an int in degrees. """ - # pylint: disable=protected-access + # 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: @@ -204,172 +189,30 @@ class _DisplayCore: return True - def set_region_to_update( - self, - column_command: int, - row_command: int, - set_current_column_command: Optional[int], - set_current_row_command: Optional[int], - data_as_commands: bool, - always_toggle_chip_select: bool, - area: Area, - SH1107_addressing: bool, - ) -> None: - # pylint: disable=invalid-name, too-many-arguments, too-many-locals, too-many-branches, - # pylint: disable=too-many-statements - - big_endian = True # default is True # TODO ???? - - x1 = area.x1 + self._colstart - x2 = area.x2 + self._colstart - y1 = area.y1 + self._rowstart - y2 = area.y2 + self._rowstart - - # Collapse down the dimension where multiple pixels are in a byte. - if self._colorspace.depth < 8: - pixels_per_byte = 8 // self._colorspace.depth - if self._colorspace.pixels_in_byte_share_row: - x1 //= pixels_per_byte * self._colorspace.bytes_per_cell - x2 //= pixels_per_byte * self._colorspace.bytes_per_cell - else: - y1 //= pixels_per_byte * self._colorspace.bytes_per_cell - y2 //= pixels_per_byte * self._colorspace.bytes_per_cell - - x2 -= 1 - y2 -= 1 - - chip_select = CHIP_SELECT_UNTOUCHED - if always_toggle_chip_select or data_as_commands: - chip_select = CHIP_SELECT_TOGGLE_EVERY_BYTE - - # Set column - self._begin_transaction() - data = bytearray(5) - data[0] = column_command - if not data_as_commands: - self._send(DISPLAY_COMMAND, CHIP_SELECT_UNTOUCHED, data, 1) - data_type = DISPLAY_DATA - data_length = 0 - else: - data_type = DISPLAY_COMMAND - data_length = 1 - - if self._ram_width < 0x100: - data[data_length] = x1 - data_length += 1 - data[data_length] = x2 - data_length += 1 - else: - if big_endian: - data[data_length] = x1 >> 8 - data_length += 1 - data[data_length] = x1 & 0xFF - data_length += 1 - data[data_length] = x2 >> 8 - data_length += 1 - data[data_length] = x2 & 0xFF - data_length += 1 - else: - data[data_length] = x1 & 0xFF - data_length += 1 - data[data_length] = x1 >> 8 - data_length += 1 - data[data_length] = x2 & 0xFF - data_length += 1 - data[data_length] = x2 >> 8 - data_length += 1 - - # Quirk for "SH1107_addressing" - # Column lower command = 0x00, Column upper command = 0x10 - if SH1107_addressing: - data[0] = ((x1 >> 4) & 0x0F) | 0x10 # 0x10 to 0x17 - data[1] = x1 & 0x0F # 0x00 to 0x0F - data_length = 2 - - self._send(data_type, chip_select, data, data_length) - self._end_transaction() - - if set_current_column_command is not None: - command = bytearray(1) - command[0] = set_current_column_command - self._begin_transaction() - self._send(DISPLAY_COMMAND, chip_select, command, 1) - self._send(DISPLAY_DATA, chip_select, data, data_length // 2) - self._end_transaction() - - # Set row - self._begin_transaction() - data[0] = row_command - data_length = 1 - if not data_as_commands: - self._send(DISPLAY_COMMAND, CHIP_SELECT_UNTOUCHED, data, 1) - data_length = 0 - - if self._ram_height < 0x100: - data[data_length] = y1 - data_length += 1 - data[data_length] = y2 - data_length += 1 - else: - if big_endian: - data[data_length] = y1 >> 8 - data_length += 1 - data[data_length] = y1 & 0xFF - data_length += 1 - data[data_length] = y2 >> 8 - data_length += 1 - data[data_length] = y2 & 0xFF - data_length += 1 - # TODO Which is right? The core uses above - else: - data[data_length] = y1 & 0xFF - data_length += 1 - data[data_length] = y1 >> 8 - data_length += 1 - data[data_length] = y2 & 0xFF - data_length += 1 - data[data_length] = y2 >> 8 - data_length += 1 - - # Quirk for "SH1107_addressing" - # Page address command = 0xB0 - if SH1107_addressing: - # Set the page to out y value - data[0] = 0xB0 | y1 - data_length = 1 - - self._send(data_type, chip_select, data, data_length) - self._end_transaction() - - if set_current_row_command is not None: - command = bytearray(1) - command[0] = set_current_row_command - self._begin_transaction() - self._send(DISPLAY_COMMAND, chip_select, command, 1) - self._send(DISPLAY_DATA, chip_select, data, data_length // 2) - self._end_transaction() - def start_refresh(self) -> bool: # pylint: disable=protected-access + """Mark the display core as currently being refreshed""" if self._refresh_in_progress: return False self._refresh_in_progress = True - #self._last_refresh = _Supervisor()._ticks_ms64() + # self._last_refresh = _Supervisor()._ticks_ms64() return True def finish_refresh(self) -> None: # pylint: disable=protected-access + """Unmark the display core as currently being refreshed""" if self._current_group is not None: self._current_group._finish_refresh() self._full_refresh = False self._refresh_in_progress = False - #self._last_refresh = _Supervisor()._ticks_ms64() + # self._last_refresh = _Supervisor()._ticks_ms64() - def get_refresh_areas(self): + def get_refresh_areas(self) -> list: + """Get a list of areas to be refreshed""" subrectangles = [] if self._current_group is not None: # Eventually calculate dirty rectangles here @@ -377,6 +220,7 @@ class _DisplayCore: return subrectangles def release(self) -> None: + """Release the display from the current group""" # pylint: disable=protected-access if self._current_group is not None: @@ -386,10 +230,12 @@ class _DisplayCore: self, area: Area, mask: _typing.WriteableBuffer, buffer: _typing.WriteableBuffer ) -> bool: # pylint: disable=protected-access + """Call the current group's fill area function""" return self._current_group._fill_area(self._colorspace, area, mask, buffer) def clip_area(self, area: Area, clipped: Area) -> bool: + """Shrink the area to the region shared by the two areas""" # pylint: disable=protected-access overlaps = self._area._compute_overlap(area, clipped) @@ -414,7 +260,9 @@ class _DisplayCore: return True - def send(self, data_type: int, chip_select: int, data: _typing.ReadableBuffer) -> None: + def send( + self, data_type: int, chip_select: int, data: _typing.ReadableBuffer + ) -> None: """ Send the data to the current bus """ @@ -449,9 +297,9 @@ class _DisplayCore: Gets the rotation of the display as an int in degrees. """ return self._rotation - - def get_bus(self) -> Union[FourWire,ParallelBus,I2CDisplay]: + + def get_bus(self) -> Union[FourWire, ParallelBus, I2CDisplay]: """ The bus being used by the display. [readonly] """ - return self._bus \ No newline at end of file + return self._bus diff --git a/displayio/_structs.py b/displayio/_structs.py index 2f82bb0..1e76121 100644 --- a/displayio/_structs.py +++ b/displayio/_structs.py @@ -22,15 +22,21 @@ from dataclasses import dataclass __version__ = "0.0.0-auto.0" __repo__ = "https://github.com/adafruit/Adafruit_Blinka_Displayio.git" + @dataclass class RectangleStruct: + # pylint: disable=invalid-name + """Rectangle Struct Dataclass. To eventually be replaced by Area.""" x1: int y1: int x2: int y2: int + @dataclass class TransformStruct: + # pylint: disable=invalid-name + """Transform Struct Dataclass""" x: int = 0 y: int = 0 dx: int = 1 @@ -40,8 +46,11 @@ class TransformStruct: mirror_x: bool = False mirror_y: bool = False + @dataclass class ColorspaceStruct: + # pylint: disable=invalid-name + """Colorspace Struct Dataclass""" depth: int bytes_per_cell: int = 0 tricolor_hue: int = 0