diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index dc06363cb2..85fdd00ce3 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -92,6 +92,7 @@ Of interest to developers #. Added logging tests tools. #. Added ability to save logs in json #. Move to Poetry. +#. Colors have moved to an Enum Other Changes -------------- diff --git a/manim/__init__.py b/manim/__init__.py index dd1bf9c7ea..cfa7c33d77 100644 --- a/manim/__init__.py +++ b/manim/__init__.py @@ -65,6 +65,7 @@ from .utils.bezier import * from .utils.color import * +from .utils import color as color from .utils.config_ops import * from .utils.debug import * from .utils.images import * diff --git a/manim/animation/indication.py b/manim/animation/indication.py index 4711b72d3b..cb1bcd0e14 100644 --- a/manim/animation/indication.py +++ b/manim/animation/indication.py @@ -40,6 +40,7 @@ from ..utils.config_ops import digest_config from ..utils.rate_functions import there_and_back from ..utils.rate_functions import wiggle +from ..utils.color import GREY, YELLOW class FocusOn(Transform): diff --git a/manim/animation/specialized.py b/manim/animation/specialized.py index 5cda1068ef..975b60ddcd 100644 --- a/manim/animation/specialized.py +++ b/manim/animation/specialized.py @@ -8,13 +8,12 @@ from ..animation.composition import LaggedStart from ..animation.transform import ApplyMethod from ..animation.transform import Restore -from ..constants import WHITE -from ..constants import BLACK from ..mobject.geometry import Circle from ..mobject.svg.drawings import Car from ..mobject.types.vectorized_mobject import VGroup from ..utils.config_ops import digest_config from ..utils.space_ops import get_norm +from ..utils.color import BLACK, WHITE class MoveCar(ApplyMethod): diff --git a/manim/camera/camera.py b/manim/camera/camera.py index 81c8db9f5b..35592ca290 100644 --- a/manim/camera/camera.py +++ b/manim/camera/camera.py @@ -20,7 +20,7 @@ from ..mobject.mobject import Mobject from ..mobject.types.point_cloud_mobject import PMobject from ..mobject.types.vectorized_mobject import VMobject -from ..utils.color import color_to_int_rgba +from ..utils.color import color_to_int_rgba, BLACK from ..utils.config_ops import digest_config from ..utils.images import get_full_raster_image_path from ..utils.iterables import list_difference_update diff --git a/manim/camera/moving_camera.py b/manim/camera/moving_camera.py index e5d02e4442..f5d649f9e6 100644 --- a/manim/camera/moving_camera.py +++ b/manim/camera/moving_camera.py @@ -11,10 +11,11 @@ from .. import config from ..camera.camera import Camera -from ..constants import ORIGIN, WHITE +from ..constants import ORIGIN from ..mobject.frame import ScreenRectangle from ..mobject.types.vectorized_mobject import VGroup from ..utils.config_ops import digest_config +from ..utils.color import WHITE # TODO, think about how to incorporate perspective diff --git a/manim/constants.py b/manim/constants.py index 1dc6bb5ab8..6263a4680e 100644 --- a/manim/constants.py +++ b/manim/constants.py @@ -112,76 +112,6 @@ class MyText(Text): # gif stuff GIF_FILE_EXTENSION = ".gif" -# Colors -COLOR_MAP = { - "DARK_BLUE": "#236B8E", - "DARK_BROWN": "#8B4513", - "LIGHT_BROWN": "#CD853F", - "BLUE_E": "#1C758A", - "BLUE_D": "#29ABCA", - "BLUE_C": "#58C4DD", - "BLUE_B": "#9CDCEB", - "BLUE_A": "#C7E9F1", - "TEAL_E": "#49A88F", - "TEAL_D": "#55C1A7", - "TEAL_C": "#5CD0B3", - "TEAL_B": "#76DDC0", - "TEAL_A": "#ACEAD7", - "GREEN_E": "#699C52", - "GREEN_D": "#77B05D", - "GREEN_C": "#83C167", - "GREEN_B": "#A6CF8C", - "GREEN_A": "#C9E2AE", - "YELLOW_E": "#E8C11C", - "YELLOW_D": "#F4D345", - "YELLOW_C": "#FFFF00", - "YELLOW_B": "#FFEA94", - "YELLOW_A": "#FFF1B6", - "GOLD_E": "#C78D46", - "GOLD_D": "#E1A158", - "GOLD_C": "#F0AC5F", - "GOLD_B": "#F9B775", - "GOLD_A": "#F7C797", - "RED_E": "#CF5044", - "RED_D": "#E65A4C", - "RED_C": "#FC6255", - "RED_B": "#FF8080", - "RED_A": "#F7A1A3", - "MAROON_E": "#94424F", - "MAROON_D": "#A24D61", - "MAROON_C": "#C55F73", - "MAROON_B": "#EC92AB", - "MAROON_A": "#ECABC1", - "PURPLE_E": "#644172", - "PURPLE_D": "#715582", - "PURPLE_C": "#9A72AC", - "PURPLE_B": "#B189C6", - "PURPLE_A": "#CAA3E8", - "WHITE": "#FFFFFF", - "BLACK": "#000000", - "LIGHT_GRAY": "#BBBBBB", - "LIGHT_GREY": "#BBBBBB", - "GRAY": "#888888", - "GREY": "#888888", - "DARK_GREY": "#444444", - "DARK_GRAY": "#444444", - "DARKER_GREY": "#222222", - "DARKER_GRAY": "#222222", - "GREY_BROWN": "#736357", - "PINK": "#D147BD", - "LIGHT_PINK": "#DC75CD", - "GREEN_SCREEN": "#00FF00", - "ORANGE": "#FF862F", -} -COLOR_MAP.update( - { - name.replace("_C", ""): COLOR_MAP[name] - for name in COLOR_MAP - if name.endswith("_C") - } -) -PALETTE = list(COLOR_MAP.values()) -locals().update(COLOR_MAP) FFMPEG_VERBOSITY_MAP = { "DEBUG": "error", "INFO": "error", diff --git a/manim/mobject/changing.py b/manim/mobject/changing.py index db73ac5660..38eae65bab 100644 --- a/manim/mobject/changing.py +++ b/manim/mobject/changing.py @@ -2,12 +2,12 @@ __all__ = ["AnimatedBoundary", "TracedPath"] - from ..constants import * from ..mobject.types.vectorized_mobject import VMobject from ..mobject.types.vectorized_mobject import VGroup from ..utils.rate_functions import smooth from ..utils.space_ops import get_norm +from ..utils.color import BLUE_D, BLUE_B, BLUE_E, GREY_BROWN, WHITE class AnimatedBoundary(VGroup): diff --git a/manim/mobject/coordinate_systems.py b/manim/mobject/coordinate_systems.py index 6fd8fcbd2f..37a1184715 100644 --- a/manim/mobject/coordinate_systems.py +++ b/manim/mobject/coordinate_systems.py @@ -18,6 +18,8 @@ from ..utils.config_ops import merge_dicts_recursively from ..utils.simple_functions import binary_search from ..utils.space_ops import angle_of_vector +from ..utils.color import LIGHT_GREY, WHITE, BLUE_D, BLUE + # TODO: There should be much more code reuse between Axes, NumberPlane and GraphScene diff --git a/manim/mobject/frame.py b/manim/mobject/frame.py index cf975efb83..17f4ce22bc 100644 --- a/manim/mobject/frame.py +++ b/manim/mobject/frame.py @@ -12,6 +12,7 @@ from ..constants import * from ..mobject.geometry import Rectangle from ..utils.config_ops import digest_config +from ..utils.color import BLACK class ScreenRectangle(Rectangle): diff --git a/manim/mobject/functions.py b/manim/mobject/functions.py index 42ab87d61c..3358405df4 100644 --- a/manim/mobject/functions.py +++ b/manim/mobject/functions.py @@ -7,6 +7,8 @@ from ..constants import * from ..mobject.types.vectorized_mobject import VMobject from ..utils.config_ops import digest_config +from ..utils.color import YELLOW + import math diff --git a/manim/mobject/geometry.py b/manim/mobject/geometry.py index f234ff432a..1f6afee437 100644 --- a/manim/mobject/geometry.py +++ b/manim/mobject/geometry.py @@ -52,7 +52,7 @@ from ..utils.space_ops import get_norm from ..utils.space_ops import normalize from ..utils.space_ops import rotate_vector - +from ..utils.color import RED, WHITE, BLUE DEFAULT_DOT_RADIUS = 0.08 DEFAULT_SMALL_DOT_RADIUS = 0.04 diff --git a/manim/mobject/matrix.py b/manim/mobject/matrix.py index 4da05dab4d..d6e4a7ed1a 100644 --- a/manim/mobject/matrix.py +++ b/manim/mobject/matrix.py @@ -22,6 +22,7 @@ from ..mobject.svg.tex_mobject import Tex from ..mobject.types.vectorized_mobject import VGroup from ..mobject.types.vectorized_mobject import VMobject +from ..utils.color import WHITE VECTOR_LABEL_SCALE_FACTOR = 0.8 diff --git a/manim/mobject/mobject.py b/manim/mobject/mobject.py index 8220bc3d65..3b6f6e6e50 100644 --- a/manim/mobject/mobject.py +++ b/manim/mobject/mobject.py @@ -18,7 +18,7 @@ from .. import config, file_writer_config from ..constants import * from ..container import Container -from ..utils.color import color_gradient +from ..utils.color import color_gradient, WHITE, BLACK, YELLOW_C from ..utils.color import interpolate_color from ..utils.iterables import list_update from ..utils.iterables import remove_list_redundancies diff --git a/manim/mobject/number_line.py b/manim/mobject/number_line.py index 7de1eb3950..3d5935bec5 100644 --- a/manim/mobject/number_line.py +++ b/manim/mobject/number_line.py @@ -16,6 +16,7 @@ from ..utils.config_ops import merge_dicts_recursively from ..utils.simple_functions import fdiv from ..utils.space_ops import normalize +from ..utils.color import LIGHT_GREY class NumberLine(Line): diff --git a/manim/mobject/probability.py b/manim/mobject/probability.py index 2c6132f051..02643aa5ab 100644 --- a/manim/mobject/probability.py +++ b/manim/mobject/probability.py @@ -11,7 +11,7 @@ from ..mobject.svg.tex_mobject import MathTex from ..mobject.svg.tex_mobject import Tex from ..mobject.types.vectorized_mobject import VGroup -from ..utils.color import color_gradient +from ..utils.color import color_gradient, DARK_GREY, LIGHT_GREY, GREEN_E, BLUE_E, MAROON_B, YELLOW, BLUE from ..utils.iterables import tuplify EPSILON = 0.0001 diff --git a/manim/mobject/shape_matchers.py b/manim/mobject/shape_matchers.py index a3cc7ad922..a9bf1e0cb8 100644 --- a/manim/mobject/shape_matchers.py +++ b/manim/mobject/shape_matchers.py @@ -8,7 +8,7 @@ from ..mobject.geometry import Rectangle from ..mobject.types.vectorized_mobject import VGroup from ..mobject.types.vectorized_mobject import VMobject -from ..utils.color import Color +from ..utils.color import Color, YELLOW, BLACK, RED from ..utils.config_ops import digest_config diff --git a/manim/mobject/svg/code_mobject.py b/manim/mobject/svg/code_mobject.py index 00732fed90..86a98e6a2b 100644 --- a/manim/mobject/svg/code_mobject.py +++ b/manim/mobject/svg/code_mobject.py @@ -21,6 +21,8 @@ from pygments.formatters.html import HtmlFormatter from pygments.styles import get_all_styles +from ...utils.color import WHITE + class Code(VGroup): """A highlighted source code listing. diff --git a/manim/mobject/svg/drawings.py b/manim/mobject/svg/drawings.py index 070186fd7f..2eeaacbbe0 100644 --- a/manim/mobject/svg/drawings.py +++ b/manim/mobject/svg/drawings.py @@ -55,6 +55,7 @@ from ...utils.space_ops import angle_of_vector from ...utils.space_ops import complex_to_R3 from ...utils.space_ops import rotate_vector +from ...utils.color import YELLOW, WHITE, DARK_GREY, MAROON_B, PURPLE, GREEN, BLACK, LIGHT_GREY, GREY, BLUE_B, BLUE_D class Lightbulb(SVGMobject): diff --git a/manim/mobject/svg/tex_mobject.py b/manim/mobject/svg/tex_mobject.py index 4f29530e8c..9cb359740f 100644 --- a/manim/mobject/svg/tex_mobject.py +++ b/manim/mobject/svg/tex_mobject.py @@ -26,6 +26,7 @@ from ...utils.config_ops import digest_config from ...utils.strings import split_string_list_to_isolate_substrings from ...utils.tex_file_writing import tex_to_svg_file +from ...utils.color import BLACK TEX_MOB_SCALE_FACTOR = 0.05 diff --git a/manim/mobject/svg/text_mobject.py b/manim/mobject/svg/text_mobject.py index 6116fe3e90..8e69b37f63 100644 --- a/manim/mobject/svg/text_mobject.py +++ b/manim/mobject/svg/text_mobject.py @@ -16,7 +16,7 @@ from ...mobject.svg.svg_mobject import SVGMobject from ...mobject.types.vectorized_mobject import VGroup from ...utils.config_ops import digest_config - +from ...utils.color import WHITE, BLACK TEXT_MOB_SCALE_FACTOR = 0.05 diff --git a/manim/mobject/three_dimensions.py b/manim/mobject/three_dimensions.py index ffb65f7a50..748f737c49 100644 --- a/manim/mobject/three_dimensions.py +++ b/manim/mobject/three_dimensions.py @@ -2,13 +2,13 @@ __all__ = ["ThreeDVMobject", "ParametricSurface", "Sphere", "Cube", "Prism"] - from ..constants import * from ..mobject.geometry import Square from ..mobject.types.vectorized_mobject import VGroup from ..mobject.types.vectorized_mobject import VMobject from ..utils.iterables import tuplify from ..utils.space_ops import z_to_vector +from ..utils.color import BLUE_D, BLUE , BLUE_E , LIGHT_GREY ############## diff --git a/manim/mobject/types/image_mobject.py b/manim/mobject/types/image_mobject.py index b1e32357b1..a4e11136de 100644 --- a/manim/mobject/types/image_mobject.py +++ b/manim/mobject/types/image_mobject.py @@ -11,7 +11,7 @@ from ...mobject.mobject import Mobject from ...mobject.shape_matchers import SurroundingRectangle from ...utils.bezier import interpolate -from ...utils.color import color_to_int_rgb +from ...utils.color import color_to_int_rgb, WHITE from ...utils.config_ops import digest_config from ...utils.images import get_full_raster_image_path diff --git a/manim/mobject/types/point_cloud_mobject.py b/manim/mobject/types/point_cloud_mobject.py index d94c53dd3d..6c5be357cb 100644 --- a/manim/mobject/types/point_cloud_mobject.py +++ b/manim/mobject/types/point_cloud_mobject.py @@ -6,7 +6,7 @@ from ...constants import * from ...mobject.mobject import Mobject from ...utils.bezier import interpolate -from ...utils.color import color_gradient +from ...utils.color import color_gradient, YELLOW_C, WHITE, BLACK, YELLOW from ...utils.color import color_to_rgba from ...utils.color import rgba_to_color from ...utils.config_ops import digest_config diff --git a/manim/mobject/types/vectorized_mobject.py b/manim/mobject/types/vectorized_mobject.py index dfc5ca409b..cbc63d9c85 100644 --- a/manim/mobject/types/vectorized_mobject.py +++ b/manim/mobject/types/vectorized_mobject.py @@ -24,7 +24,7 @@ from ...utils.bezier import interpolate from ...utils.bezier import integer_interpolate from ...utils.bezier import partial_bezier_points -from ...utils.color import color_to_rgba +from ...utils.color import color_to_rgba, BLACK, WHITE from ...utils.iterables import make_even from ...utils.iterables import stretch_array_to_length from ...utils.iterables import tuplify diff --git a/manim/mobject/vector_field.py b/manim/mobject/vector_field.py index 0a41e74785..7ac3e439dd 100644 --- a/manim/mobject/vector_field.py +++ b/manim/mobject/vector_field.py @@ -29,7 +29,7 @@ from ..mobject.types.vectorized_mobject import VMobject from ..utils.bezier import inverse_interpolate from ..utils.bezier import interpolate -from ..utils.color import color_to_rgb +from ..utils.color import color_to_rgb, BLUE_E, GREEN, YELLOW, RED, BLUE, WHITE from ..utils.color import rgb_to_color from ..utils.config_ops import digest_config from ..utils.rate_functions import linear diff --git a/manim/scene/graph_scene.py b/manim/scene/graph_scene.py index 7abf24c870..97313e08f5 100644 --- a/manim/scene/graph_scene.py +++ b/manim/scene/graph_scene.py @@ -21,7 +21,7 @@ from ..mobject.types.vectorized_mobject import VectorizedPoint from ..scene.scene import Scene from ..utils.bezier import interpolate -from ..utils.color import color_gradient +from ..utils.color import color_gradient, GREY, BLUE, GREEN, YELLOW, BLACK, WHITE from ..utils.color import invert_color from ..utils.space_ops import angle_of_vector diff --git a/manim/scene/vector_space_scene.py b/manim/scene/vector_space_scene.py index 8214f9d1c9..5d0f187201 100644 --- a/manim/scene/vector_space_scene.py +++ b/manim/scene/vector_space_scene.py @@ -31,6 +31,7 @@ from ..mobject.types.vectorized_mobject import VGroup from ..mobject.types.vectorized_mobject import VMobject from ..scene.scene import Scene +from ..utils.color import GREEN_C, RED_C, BLUE_D, WHITE, YELLOW, GREY, LIGHT_GREY from ..utils.rate_functions import rush_from from ..utils.rate_functions import rush_into from ..utils.space_ops import angle_of_vector diff --git a/manim/utils/color.py b/manim/utils/color.py index cd0726a681..2dabb9c641 100644 --- a/manim/utils/color.py +++ b/manim/utils/color.py @@ -16,21 +16,244 @@ "random_bright_color", "random_color", "get_shaded_rgb", + "DARK_BLUE", + "DARK_BROWN", + "LIGHT_BROWN", + "BLUE_E", + "BLUE_D", + "BLUE_C", + "BLUE", + "BLUE_B", + "BLUE_A", + "TEAL_E", + "TEAL_D", + "TEAL_C", + "TEAL", + "TEAL_B", + "TEAL_A", + "GREEN_E", + "GREEN_D", + "GREEN_C", + "GREEN", + "GREEN_B", + "GREEN_A", + "YELLOW_E", + "YELLOW_D", + "YELLOW_C", + "YELLOW", + "YELLOW_B", + "YELLOW_A", + "GOLD_E", + "GOLD_D", + "GOLD_C", + "GOLD", + "GOLD_B", + "GOLD_A", + "RED_E", + "RED_D", + "RED_C", + "RED", + "RED_B", + "RED_A", + "MAROON_E", + "MAROON_D", + "MAROON_C", + "MAROON", + "MAROON_B", + "MAROON_A", + "PURPLE_E", + "PURPLE_D", + "PURPLE_C", + "PURPLE", + "PURPLE_B", + "PURPLE_A", + "WHITE", + "BLACK", + "LIGHT_GRAY", + "LIGHT_GREY", + "GRAY", + "GREY", + "DARK_GREY", + "DARK_GRAY", + "DARKER_GREY", + "DARKER_GRAY", + "GREY_BROWN", + "PINK", + "LIGHT_PINK", + "GREEN_SCREEN", + "ORANGE", ] - +from enum import Enum import random from colour import Color import numpy as np -from ..constants import COLOR_MAP -from ..constants import WHITE from ..utils.bezier import interpolate from ..utils.simple_functions import clip_in_place from ..utils.space_ops import normalize +class Colors(Enum): + """A list of pre-defined colors. + + Examples + -------- + The preferred way of using these colors is + + .. code-block:: python + import manim.utils.color as C + C.WHITE # -> '#FFFFFF' + + Note this way uses the name of the colors in UPPERCASE. + + Alternatively, you can also import this Enum directly and use its members + directly, through the use of :code:`color.value`. Note this way uses the + name of the colors in lowercase. + + .. code-block:: python + from manim.utils.color import Colors + Colors.white.value # -> '#FFFFFF' + + """ + + dark_blue = "#236B8E" + dark_brown = "#8B4513" + light_brown = "#CD853F" + blue_e = "#1C758A" + blue_d = "#29ABCA" + blue_c = "#58C4DD" + blue = "#58C4DD" + blue_b = "#9CDCEB" + blue_a = "#C7E9F1" + teal_e = "#49A88F" + teal_d = "#55C1A7" + teal_c = "#5CD0B3" + teal = "#5CD0B3" + teal_b = "#76DDC0" + teal_a = "#ACEAD7" + green_e = "#699C52" + green_d = "#77B05D" + green_c = "#83C167" + green = "#83C167" + green_b = "#A6CF8C" + green_a = "#C9E2AE" + yellow_e = "#E8C11C" + yellow_d = "#F4D345" + yellow_c = "#FFFF00" + yellow = "#FFFF00" + yellow_b = "#FFEA94" + yellow_a = "#FFF1B6" + gold_e = "#C78D46" + gold_d = "#E1A158" + gold_c = "#F0AC5F" + gold = "#F0AC5F" + gold_b = "#F9B775" + gold_a = "#F7C797" + red_e = "#CF5044" + red_d = "#E65A4C" + red_c = "#FC6255" + red = "#FC6255" + red_b = "#FF8080" + red_a = "#F7A1A3" + maroon_e = "#94424F" + maroon_d = "#A24D61" + maroon_c = "#C55F73" + maroon = "#C55F73" + maroon_b = "#EC92AB" + maroon_a = "#ECABC1" + purple_e = "#644172" + purple_d = "#715582" + purple_c = "#9A72AC" + purple = "#9A72AC" + purple_b = "#B189C6" + purple_a = "#CAA3E8" + white = "#FFFFFF" + black = "#000000" + light_gray = "#BBBBBB" + light_grey = "#BBBBBB" + gray = "#888888" + grey = "#888888" + dark_grey = "#444444" + dark_gray = "#444444" + darker_grey = "#222222" + darker_gray = "#222222" + grey_brown = "#736357" + pink = "#D147BD" + light_pink = "#DC75CD" + green_screen = "#00FF00" + orange = "#FF862F" + + +DARK_BLUE = Colors.dark_blue.value +DARK_BROWN = Colors.dark_brown.value +LIGHT_BROWN = Colors.dark_brown.value +BLUE_E = Colors.blue_e.value +BLUE_D = Colors.blue_d.value +BLUE_C = Colors.blue_c.value +BLUE = Colors.blue.value +BLUE_B = Colors.blue_b.value +BLUE_A = Colors.blue_a.value +TEAL_E = Colors.teal_e.value +TEAL_D = Colors.teal_d.value +TEAL_C = Colors.teal_c.value +TEAL = Colors.teal.value +TEAL_B = Colors.teal_b.value +TEAL_A = Colors.teal_a.value +GREEN_E = Colors.green_e.value +GREEN_D = Colors.green_d.value +GREEN_C = Colors.green_c.value +GREEN = Colors.green.value +GREEN_B = Colors.green_b.value +GREEN_A = Colors.green_a.value +YELLOW_E = Colors.yellow_e.value +YELLOW_D = Colors.yellow_d.value +YELLOW_C = Colors.yellow_c.value +YELLOW = Colors.yellow.value +YELLOW_B = Colors.yellow_b.value +YELLOW_A = Colors.yellow_a.value +GOLD_E = Colors.gold_e.value +GOLD_D = Colors.gold_d.value +GOLD_C = Colors.gold_c.value +GOLD = Colors.gold.value +GOLD_B = Colors.gold_b.value +GOLD_A = Colors.gold_a.value +RED_E = Colors.red_e.value +RED_D = Colors.red_d.value +RED_C = Colors.red_c.value +RED = Colors.red.value +RED_B = Colors.red_b.value +RED_A = Colors.red_a.value +MAROON_E = Colors.maroon_e.value +MAROON_D = Colors.maroon_d.value +MAROON_C = Colors.maroon_c.value +MAROON = Colors.maroon.value +MAROON_B = Colors.maroon_b.value +MAROON_A = Colors.maroon_a.value +PURPLE_E = Colors.purple_e.value +PURPLE_D = Colors.purple_d.value +PURPLE_C = Colors.purple_c.value +PURPLE = Colors.purple.value +PURPLE_B = Colors.purple_b.value +PURPLE_A = Colors.purple_a.value +WHITE = Colors.white.value +BLACK = Colors.black.value +LIGHT_GRAY = Colors.light_gray.value +LIGHT_GREY = Colors.light_grey.value +GRAY = Colors.gray.value +GREY = Colors.grey.value +DARK_GREY = Colors.dark_grey.value +DARK_GRAY = Colors.dark_gray.value +DARKER_GREY = Colors.darker_gray.value +DARKER_GRAY = Colors.darker_gray.value +GREY_BROWN = Colors.grey_brown.value +PINK = Colors.pink.value +LIGHT_PINK = Colors.light_pink.value +GREEN_SCREEN = Colors.green_screen.value +ORANGE = Colors.orange.value + + def color_to_rgb(color): if isinstance(color, str): return hex_to_rgb(color) @@ -114,7 +337,7 @@ def random_bright_color(): def random_color(): - return random.choice(list(COLOR_MAP.values())) + return random.choice([c.value for c in list(Colors)]) def get_shaded_rgb(rgb, point, unit_normal_vect, light_source): diff --git a/manim/utils/debug.py b/manim/utils/debug.py index f02f26e7bd..5ee34fce66 100644 --- a/manim/utils/debug.py +++ b/manim/utils/debug.py @@ -2,8 +2,7 @@ __all__ = ["print_family", "get_submobject_index_labels"] - -from ..constants import BLACK +from .color import BLACK from ..mobject.numbers import Integer from ..mobject.types.vectorized_mobject import VGroup diff --git a/tests/test_color.py b/tests/test_color.py new file mode 100644 index 0000000000..f6cb672bb4 --- /dev/null +++ b/tests/test_color.py @@ -0,0 +1,6 @@ +import pytest +from manim import Camera, tempconfig, config + +def test_import_color(): + import manim.utils.color as C + C.WHITE \ No newline at end of file