akari_client.color のソースコード

from __future__ import annotations

import dataclasses
import enum


[ドキュメント]@dataclasses.dataclass(frozen=True) class Color: """M5のディスプレイの表示色を指定するクラス。 :param red: RGBのR要素。0~255で指定。 :param green: RGBのG要素。0~255で指定。 :param blue: RGBのB要素。0~255で指定。 """ red: int green: int blue: int def __post_init__(self) -> None: assert 0 <= self.red <= 0xFF assert 0 <= self.green <= 0xFF assert 0 <= self.blue <= 0xFF @staticmethod def from_rgb565(value: int) -> Color: # NOTE: Colors in RGB565 are represented as follows # value = (r7 r6 r5 r4 r3 g7 g6 g5 g4 g3 g2 b7 b6 b5 b4 b3) assert 0 <= value <= 0xFFFF blue = (value & 0x1F) << 3 # lshift 5 bits and rshift 2 bits green = (value & 0x7E0) >> 3 # lshift 11 bits and rshift 3 bits red = (value & 0xF800) >> 8 return Color(red, green, blue) def as_rgb565(self) -> int: return ((self.red >> 3) << 11) | ((self.green >> 2) << 5) | (self.blue >> 3)
[ドキュメント]class Colors(Color, enum.Enum): """ | M5のディスプレイの表示色のenum。 | 下記の色を指定可能。 | BLACK | NAVY | DARKGREEN | DARKCYAN | MAROON | PURPLE | OLIVE | LIGHTGREY | DARKGREY | BLUE | GREEN | CYAN | RED | MAGENTA | YELLOW | WHITE | ORANGE | GREENYELLOW | PINK """ BLACK = (0, 0, 0) NAVY = (0, 0, 127) DARKGREEN = (0, 127, 0) DARKCYAN = (0, 127, 127) MAROON = (127, 0, 0) PURPLE = (127, 0, 127) OLIVE = (127, 127, 0) LIGHTGREY = (192, 192, 192) DARKGREY = (127, 127, 127) BLUE = (0, 0, 255) GREEN = (0, 255, 0) CYAN = (0, 255, 0) RED = (255, 0, 0) MAGENTA = (255, 0, 255) YELLOW = (255, 255, 0) WHITE = (255, 255, 255) ORANGE = (255, 165, 0) GREENYELLOW = (173, 255, 47) PINK = (255, 0, 255)