154 lines
3.3 KiB
Python
154 lines
3.3 KiB
Python
from typing import List, Optional, Tuple
|
|
|
|
from .color_triplet import ColorTriplet
|
|
from .palette import Palette
|
|
|
|
_ColorTuple = Tuple[int, int, int]
|
|
|
|
|
|
class TerminalTheme:
|
|
"""A color theme used when exporting console content.
|
|
|
|
Args:
|
|
background (Tuple[int, int, int]): The background color.
|
|
foreground (Tuple[int, int, int]): The foreground (text) color.
|
|
normal (List[Tuple[int, int, int]]): A list of 8 normal intensity colors.
|
|
bright (List[Tuple[int, int, int]], optional): A list of 8 bright colors, or None
|
|
to repeat normal intensity. Defaults to None.
|
|
"""
|
|
|
|
def __init__(
|
|
self,
|
|
background: _ColorTuple,
|
|
foreground: _ColorTuple,
|
|
normal: List[_ColorTuple],
|
|
bright: Optional[List[_ColorTuple]] = None,
|
|
) -> None:
|
|
self.background_color = ColorTriplet(*background)
|
|
self.foreground_color = ColorTriplet(*foreground)
|
|
self.ansi_colors = Palette(normal + (bright or normal))
|
|
|
|
|
|
DEFAULT_TERMINAL_THEME = TerminalTheme(
|
|
(255, 255, 255),
|
|
(0, 0, 0),
|
|
[
|
|
(0, 0, 0),
|
|
(128, 0, 0),
|
|
(0, 128, 0),
|
|
(128, 128, 0),
|
|
(0, 0, 128),
|
|
(128, 0, 128),
|
|
(0, 128, 128),
|
|
(192, 192, 192),
|
|
],
|
|
[
|
|
(128, 128, 128),
|
|
(255, 0, 0),
|
|
(0, 255, 0),
|
|
(255, 255, 0),
|
|
(0, 0, 255),
|
|
(255, 0, 255),
|
|
(0, 255, 255),
|
|
(255, 255, 255),
|
|
],
|
|
)
|
|
|
|
MONOKAI = TerminalTheme(
|
|
(12, 12, 12),
|
|
(217, 217, 217),
|
|
[
|
|
(26, 26, 26),
|
|
(244, 0, 95),
|
|
(152, 224, 36),
|
|
(253, 151, 31),
|
|
(157, 101, 255),
|
|
(244, 0, 95),
|
|
(88, 209, 235),
|
|
(196, 197, 181),
|
|
(98, 94, 76),
|
|
],
|
|
[
|
|
(244, 0, 95),
|
|
(152, 224, 36),
|
|
(224, 213, 97),
|
|
(157, 101, 255),
|
|
(244, 0, 95),
|
|
(88, 209, 235),
|
|
(246, 246, 239),
|
|
],
|
|
)
|
|
DIMMED_MONOKAI = TerminalTheme(
|
|
(25, 25, 25),
|
|
(185, 188, 186),
|
|
[
|
|
(58, 61, 67),
|
|
(190, 63, 72),
|
|
(135, 154, 59),
|
|
(197, 166, 53),
|
|
(79, 118, 161),
|
|
(133, 92, 141),
|
|
(87, 143, 164),
|
|
(185, 188, 186),
|
|
(136, 137, 135),
|
|
],
|
|
[
|
|
(251, 0, 31),
|
|
(15, 114, 47),
|
|
(196, 112, 51),
|
|
(24, 109, 227),
|
|
(251, 0, 103),
|
|
(46, 112, 109),
|
|
(253, 255, 185),
|
|
],
|
|
)
|
|
NIGHT_OWLISH = TerminalTheme(
|
|
(255, 255, 255),
|
|
(64, 63, 83),
|
|
[
|
|
(1, 22, 39),
|
|
(211, 66, 62),
|
|
(42, 162, 152),
|
|
(218, 170, 1),
|
|
(72, 118, 214),
|
|
(64, 63, 83),
|
|
(8, 145, 106),
|
|
(122, 129, 129),
|
|
(122, 129, 129),
|
|
],
|
|
[
|
|
(247, 110, 110),
|
|
(73, 208, 197),
|
|
(218, 194, 107),
|
|
(92, 167, 228),
|
|
(105, 112, 152),
|
|
(0, 201, 144),
|
|
(152, 159, 177),
|
|
],
|
|
)
|
|
|
|
SVG_EXPORT_THEME = TerminalTheme(
|
|
(41, 41, 41),
|
|
(197, 200, 198),
|
|
[
|
|
(75, 78, 85),
|
|
(204, 85, 90),
|
|
(152, 168, 75),
|
|
(208, 179, 68),
|
|
(96, 138, 177),
|
|
(152, 114, 159),
|
|
(104, 160, 179),
|
|
(197, 200, 198),
|
|
(154, 155, 153),
|
|
],
|
|
[
|
|
(255, 38, 39),
|
|
(0, 130, 61),
|
|
(208, 132, 66),
|
|
(25, 132, 233),
|
|
(255, 44, 122),
|
|
(57, 130, 128),
|
|
(253, 253, 197),
|
|
],
|
|
)
|