Add types to constants

This commit is contained in:
Grant Sanderson 2022-12-15 09:56:08 -08:00
parent 3a65eb4d2c
commit bab1f964bb

View file

@ -6,66 +6,67 @@ if TYPE_CHECKING:
from typing import Union from typing import Union
from colour import Color from colour import Color
from typing import List
# Abbreviations for a common types # Abbreviations for a common types
ManimColor = Union[str, Color, None] ManimColor = Union[str, Color, None]
np_vector = np.ndarray[int, np.dtype[np.float64]] np_vector = np.ndarray[int, np.dtype[np.float64]]
# Sizes relevant to default camera frame # Sizes relevant to default camera frame
ASPECT_RATIO = 16.0 / 9.0 ASPECT_RATIO: float = 16.0 / 9.0
FRAME_HEIGHT = 8.0 FRAME_HEIGHT: float = 8.0
FRAME_WIDTH = FRAME_HEIGHT * ASPECT_RATIO FRAME_WIDTH: float = FRAME_HEIGHT * ASPECT_RATIO
FRAME_Y_RADIUS = FRAME_HEIGHT / 2 FRAME_Y_RADIUS: float = FRAME_HEIGHT / 2
FRAME_X_RADIUS = FRAME_WIDTH / 2 FRAME_X_RADIUS: float = FRAME_WIDTH / 2
DEFAULT_PIXEL_HEIGHT = 1080 DEFAULT_PIXEL_HEIGHT: int = 1080
DEFAULT_PIXEL_WIDTH = 1920 DEFAULT_PIXEL_WIDTH: int = 1920
DEFAULT_FPS = 30 DEFAULT_FPS: int = 30
SMALL_BUFF = 0.1 SMALL_BUFF: float = 0.1
MED_SMALL_BUFF = 0.25 MED_SMALL_BUFF: float = 0.25
MED_LARGE_BUFF = 0.5 MED_LARGE_BUFF: float = 0.5
LARGE_BUFF = 1 LARGE_BUFF: float = 1
DEFAULT_MOBJECT_TO_EDGE_BUFFER = MED_LARGE_BUFF DEFAULT_MOBJECT_TO_EDGE_BUFFER: float = MED_LARGE_BUFF
DEFAULT_MOBJECT_TO_MOBJECT_BUFFER = MED_SMALL_BUFF DEFAULT_MOBJECT_TO_MOBJECT_BUFFER: float = MED_SMALL_BUFF
# All in seconds # In seconds
DEFAULT_WAIT_TIME = 1.0 DEFAULT_WAIT_TIME: float = 1.0
ORIGIN = np.array((0., 0., 0.)) ORIGIN: np_vector = np.array([0., 0., 0.])
UP = np.array((0., 1., 0.)) UP: np_vector = np.array([0., 1., 0.])
DOWN = np.array((0., -1., 0.)) DOWN: np_vector = np.array([0., -1., 0.])
RIGHT = np.array((1., 0., 0.)) RIGHT: np_vector = np.array([1., 0., 0.])
LEFT = np.array((-1., 0., 0.)) LEFT: np_vector = np.array([-1., 0., 0.])
IN = np.array((0., 0., -1.)) IN: np_vector = np.array([0., 0., -1.])
OUT = np.array((0., 0., 1.)) OUT: np_vector = np.array([0., 0., 1.])
X_AXIS = np.array((1., 0., 0.)) X_AXIS: np_vector = np.array([1., 0., 0.])
Y_AXIS = np.array((0., 1., 0.)) Y_AXIS: np_vector = np.array([0., 1., 0.])
Z_AXIS = np.array((0., 0., 1.)) Z_AXIS: np_vector = np.array([0., 0., 1.])
# Useful abbreviations for diagonals # Useful abbreviations for diagonals
UL = UP + LEFT UL: np_vector = UP + LEFT
UR = UP + RIGHT UR: np_vector = UP + RIGHT
DL = DOWN + LEFT DL: np_vector = DOWN + LEFT
DR = DOWN + RIGHT DR: np_vector = DOWN + RIGHT
TOP = FRAME_Y_RADIUS * UP TOP: np_vector = FRAME_Y_RADIUS * UP
BOTTOM = FRAME_Y_RADIUS * DOWN BOTTOM: np_vector = FRAME_Y_RADIUS * DOWN
LEFT_SIDE = FRAME_X_RADIUS * LEFT LEFT_SIDE: np_vector = FRAME_X_RADIUS * LEFT
RIGHT_SIDE = FRAME_X_RADIUS * RIGHT RIGHT_SIDE: np_vector = FRAME_X_RADIUS * RIGHT
PI = np.pi PI: float = np.pi
TAU = 2 * PI TAU: float = 2 * PI
DEGREES = TAU / 360 DEGREES: float = TAU / 360
# Nice to have a constant for readability # Nice to have a constant for readability
# when juxtaposed with expressions like 30 * DEGREES # when juxtaposed with expressions like 30 * DEGREES
RADIANS = 1 RADIANS: float = 1
FFMPEG_BIN = "ffmpeg" FFMPEG_BIN: str = "ffmpeg"
JOINT_TYPE_MAP = { JOINT_TYPE_MAP: dict = {
"auto": 0, "auto": 0,
"round": 1, "round": 1,
"bevel": 2, "bevel": 2,
@ -73,82 +74,82 @@ JOINT_TYPE_MAP = {
} }
# Related to Text # Related to Text
NORMAL = "NORMAL" NORMAL: str = "NORMAL"
ITALIC = "ITALIC" ITALIC: str = "ITALIC"
OBLIQUE = "OBLIQUE" OBLIQUE: str = "OBLIQUE"
BOLD = "BOLD" BOLD: str = "BOLD"
DEFAULT_STROKE_WIDTH = 4 DEFAULT_STROKE_WIDTH: float = 4
# For keyboard interactions # For keyboard interactions
CTRL_SYMBOL = 65508 CTRL_SYMBOL: int = 65508
SHIFT_SYMBOL = 65505 SHIFT_SYMBOL: int = 65505
COMMAND_SYMBOL = 65517 COMMAND_SYMBOL: int = 65517
DELETE_SYMBOL = 65288 DELETE_SYMBOL: int = 65288
ARROW_SYMBOLS = list(range(65361, 65365)) ARROW_SYMBOLS: List[int] = list(range(65361, 65365))
SHIFT_MODIFIER = 1 SHIFT_MODIFIER: int = 1
CTRL_MODIFIER = 2 CTRL_MODIFIER: int = 2
COMMAND_MODIFIER = 64 COMMAND_MODIFIER: int = 64
# Colors # Colors
BLUE_E = "#1C758A" BLUE_E: ManimColor = "#1C758A"
BLUE_D = "#29ABCA" BLUE_D: ManimColor = "#29ABCA"
BLUE_C = "#58C4DD" BLUE_C: ManimColor = "#58C4DD"
BLUE_B = "#9CDCEB" BLUE_B: ManimColor = "#9CDCEB"
BLUE_A = "#C7E9F1" BLUE_A: ManimColor = "#C7E9F1"
TEAL_E = "#49A88F" TEAL_E: ManimColor = "#49A88F"
TEAL_D = "#55C1A7" TEAL_D: ManimColor = "#55C1A7"
TEAL_C = "#5CD0B3" TEAL_C: ManimColor = "#5CD0B3"
TEAL_B = "#76DDC0" TEAL_B: ManimColor = "#76DDC0"
TEAL_A = "#ACEAD7" TEAL_A: ManimColor = "#ACEAD7"
GREEN_E = "#699C52" GREEN_E: ManimColor = "#699C52"
GREEN_D = "#77B05D" GREEN_D: ManimColor = "#77B05D"
GREEN_C = "#83C167" GREEN_C: ManimColor = "#83C167"
GREEN_B = "#A6CF8C" GREEN_B: ManimColor = "#A6CF8C"
GREEN_A = "#C9E2AE" GREEN_A: ManimColor = "#C9E2AE"
YELLOW_E = "#E8C11C" YELLOW_E: ManimColor = "#E8C11C"
YELLOW_D = "#F4D345" YELLOW_D: ManimColor = "#F4D345"
YELLOW_C = "#FFFF00" YELLOW_C: ManimColor = "#FFFF00"
YELLOW_B = "#FFEA94" YELLOW_B: ManimColor = "#FFEA94"
YELLOW_A = "#FFF1B6" YELLOW_A: ManimColor = "#FFF1B6"
GOLD_E = "#C78D46" GOLD_E: ManimColor = "#C78D46"
GOLD_D = "#E1A158" GOLD_D: ManimColor = "#E1A158"
GOLD_C = "#F0AC5F" GOLD_C: ManimColor = "#F0AC5F"
GOLD_B = "#F9B775" GOLD_B: ManimColor = "#F9B775"
GOLD_A = "#F7C797" GOLD_A: ManimColor = "#F7C797"
RED_E = "#CF5044" RED_E: ManimColor = "#CF5044"
RED_D = "#E65A4C" RED_D: ManimColor = "#E65A4C"
RED_C = "#FC6255" RED_C: ManimColor = "#FC6255"
RED_B = "#FF8080" RED_B: ManimColor = "#FF8080"
RED_A = "#F7A1A3" RED_A: ManimColor = "#F7A1A3"
MAROON_E = "#94424F" MAROON_E: ManimColor = "#94424F"
MAROON_D = "#A24D61" MAROON_D: ManimColor = "#A24D61"
MAROON_C = "#C55F73" MAROON_C: ManimColor = "#C55F73"
MAROON_B = "#EC92AB" MAROON_B: ManimColor = "#EC92AB"
MAROON_A = "#ECABC1" MAROON_A: ManimColor = "#ECABC1"
PURPLE_E = "#644172" PURPLE_E: ManimColor = "#644172"
PURPLE_D = "#715582" PURPLE_D: ManimColor = "#715582"
PURPLE_C = "#9A72AC" PURPLE_C: ManimColor = "#9A72AC"
PURPLE_B = "#B189C6" PURPLE_B: ManimColor = "#B189C6"
PURPLE_A = "#CAA3E8" PURPLE_A: ManimColor = "#CAA3E8"
GREY_E = "#222222" GREY_E: ManimColor = "#222222"
GREY_D = "#444444" GREY_D: ManimColor = "#444444"
GREY_C = "#888888" GREY_C: ManimColor = "#888888"
GREY_B = "#BBBBBB" GREY_B: ManimColor = "#BBBBBB"
GREY_A = "#DDDDDD" GREY_A: ManimColor = "#DDDDDD"
WHITE = "#FFFFFF" WHITE: ManimColor = "#FFFFFF"
BLACK = "#000000" BLACK: ManimColor = "#000000"
GREY_BROWN = "#736357" GREY_BROWN: ManimColor = "#736357"
DARK_BROWN = "#8B4513" DARK_BROWN: ManimColor = "#8B4513"
LIGHT_BROWN = "#CD853F" LIGHT_BROWN: ManimColor = "#CD853F"
PINK = "#D147BD" PINK: ManimColor = "#D147BD"
LIGHT_PINK = "#DC75CD" LIGHT_PINK: ManimColor = "#DC75CD"
GREEN_SCREEN = "#00FF00" GREEN_SCREEN: ManimColor = "#00FF00"
ORANGE = "#FF862F" ORANGE: ManimColor = "#FF862F"
MANIM_COLORS = [ MANIM_COLORS: List[ManimColor] = [
BLACK, GREY_E, GREY_D, GREY_C, GREY_B, GREY_A, WHITE, BLACK, GREY_E, GREY_D, GREY_C, GREY_B, GREY_A, WHITE,
BLUE_E, BLUE_D, BLUE_C, BLUE_B, BLUE_A, BLUE_E, BLUE_D, BLUE_C, BLUE_B, BLUE_A,
TEAL_E, TEAL_D, TEAL_C, TEAL_B, TEAL_A, TEAL_E, TEAL_D, TEAL_C, TEAL_B, TEAL_A,
@ -163,14 +164,14 @@ MANIM_COLORS = [
] ]
# Abbreviated names for the "median" colors # Abbreviated names for the "median" colors
BLUE = BLUE_C BLUE: ManimColor = BLUE_C
TEAL = TEAL_C TEAL: ManimColor = TEAL_C
GREEN = GREEN_C GREEN: ManimColor = GREEN_C
YELLOW = YELLOW_C YELLOW: ManimColor = YELLOW_C
GOLD = GOLD_C GOLD: ManimColor = GOLD_C
RED = RED_C RED: ManimColor = RED_C
MAROON = MAROON_C MAROON: ManimColor = MAROON_C
PURPLE = PURPLE_C PURPLE: ManimColor = PURPLE_C
GREY = GREY_C GREY: ManimColor = GREY_C
COLORMAP_3B1B = [BLUE_E, GREEN, YELLOW, RED] COLORMAP_3B1B: List[ManimColor] = [BLUE_E, GREEN, YELLOW, RED]