Skip to content

Commit fd2a6a6

Browse files
Created a method remove_all_except() in scene.py and interactive_scene.py, and made default colors easily configurable. (#2346)
* created a method remove_all_except() in scene.py and interactive_scene.py * Made it such that default mobject colors can be set through the yaml config file. * * Default color initialisation wasn't working. Changed conditional expression to `or` instead. * Added default values to yaml file. * added set_background_color() function to Scene class * Changed default font back to Consolas
1 parent 6fb1845 commit fd2a6a6

18 files changed

+68
-39
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,3 +151,4 @@ dmypy.json
151151
# For manim
152152
/videos
153153
/custom_config.yml
154+
test.py

manimlib/constants.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,3 +148,12 @@
148148
GREY: ManimColor = GREY_C
149149

150150
COLORMAP_3B1B: List[ManimColor] = [BLUE_E, GREEN, YELLOW, RED]
151+
152+
# Default mobject colors should be configurable just like background color
153+
# DEFAULT_MOBJECT_COLOR is mainly for text, tex, line, etc... mobjects. Default is WHITE
154+
# DEFAULT_LIGHT_COLOR is mainly for things like axes, arrows, annulus and other lightly colored mobjects. Default is GREY_B
155+
DEFAULT_MOBJECT_COLOR: ManimColor = manim_config.mobject.default_mobject_color or WHITE
156+
DEFAULT_LIGHT_COLOR: ManimColor = manim_config.mobject.default_light_color or GREY_B
157+
158+
DEFAULT_VMOBJECT_STROKE_COLOR : ManimColor = manim_config.vmobject.default_stroke_color or GREY_A
159+
DEFAULT_VMOBJECT_FILL_COLOR : ManimColor = manim_config.vmobject.default_fill_color or GREY_C

manimlib/default_config.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,16 @@ scene:
7171
default_wait_time: 1.0
7272
vmobject:
7373
default_stroke_width: 4.0
74+
default_stroke_color: "#DDDDDD" # Default is GREY_A
75+
default_fill_color: "#888888" # Default is GREY_C
76+
mobject:
77+
default_mobject_color: "#FFFFFF" # Default is WHITE
78+
default_light_color: "#BBBBBB" # Default is GREY_B
7479
tex:
7580
# See tex_templates.yml
7681
template: "default"
7782
text:
83+
# font: "Cambria Math"
7884
font: "Consolas"
7985
alignment: "LEFT"
8086
embed:

manimlib/mobject/changing.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import numpy as np
44

5-
from manimlib.constants import BLUE_B, BLUE_D, BLUE_E, GREY_BROWN, WHITE
5+
from manimlib.constants import BLUE_B, BLUE_D, BLUE_E, GREY_BROWN, DEFAULT_MOBJECT_COLOR
66
from manimlib.mobject.mobject import Mobject
77
from manimlib.mobject.types.vectorized_mobject import VGroup
88
from manimlib.mobject.types.vectorized_mobject import VMobject
@@ -102,7 +102,7 @@ def __init__(
102102
time_traced: float = np.inf,
103103
time_per_anchor: float = 1.0 / 15,
104104
stroke_width: float | Iterable[float] = 2.0,
105-
stroke_color: ManimColor = WHITE,
105+
stroke_color: ManimColor = DEFAULT_MOBJECT_COLOR,
106106
**kwargs
107107
):
108108
super().__init__(**kwargs)
@@ -147,7 +147,7 @@ def __init__(
147147
time_traced: float = 1.0,
148148
stroke_width: float | Iterable[float] = (0, 3),
149149
stroke_opacity: float | Iterable[float] = (0, 1),
150-
stroke_color: ManimColor = WHITE,
150+
stroke_color: ManimColor = DEFAULT_MOBJECT_COLOR,
151151
**kwargs
152152
):
153153
if isinstance(mobject_or_func, Mobject):

manimlib/mobject/coordinate_systems.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import numpy as np
77
import itertools as it
88

9-
from manimlib.constants import BLACK, BLUE, BLUE_D, BLUE_E, GREEN, GREY_A, WHITE, RED
9+
from manimlib.constants import BLACK, BLUE, BLUE_D, BLUE_E, GREEN, GREY_A, RED, DEFAULT_MOBJECT_COLOR
1010
from manimlib.constants import DEG, PI
1111
from manimlib.constants import DL, UL, DOWN, DR, LEFT, ORIGIN, OUT, RIGHT, UP
1212
from manimlib.constants import FRAME_X_RADIUS, FRAME_Y_RADIUS
@@ -617,7 +617,7 @@ def get_parametric_surface(
617617

618618
class NumberPlane(Axes):
619619
default_axis_config: dict = dict(
620-
stroke_color=WHITE,
620+
stroke_color=DEFAULT_MOBJECT_COLOR,
621621
stroke_width=2,
622622
include_ticks=False,
623623
include_tip=False,

manimlib/mobject/geometry.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import numpy as np
66

77
from manimlib.constants import DL, DOWN, DR, LEFT, ORIGIN, OUT, RIGHT, UL, UP, UR
8-
from manimlib.constants import GREY_A, RED, WHITE, BLACK
8+
from manimlib.constants import RED, BLACK, DEFAULT_MOBJECT_COLOR, DEFAULT_LIGHT_COLOR
99
from manimlib.constants import MED_SMALL_BUFF, SMALL_BUFF
1010
from manimlib.constants import DEG, PI, TAU
1111
from manimlib.mobject.mobject import Mobject
@@ -330,7 +330,7 @@ def __init__(
330330
stroke_color: ManimColor = BLACK,
331331
stroke_width: float = 0.0,
332332
fill_opacity: float = 1.0,
333-
fill_color: ManimColor = WHITE,
333+
fill_color: ManimColor = DEFAULT_MOBJECT_COLOR,
334334
**kwargs
335335
):
336336
super().__init__(
@@ -374,7 +374,7 @@ def __init__(
374374
inner_radius: float = 1.0,
375375
outer_radius: float = 2.0,
376376
arc_center: Vect3 = ORIGIN,
377-
fill_color: ManimColor = GREY_A,
377+
fill_color: ManimColor = DEFAULT_LIGHT_COLOR,
378378
fill_opacity: float = 1.0,
379379
stroke_width: float = 0.0,
380380
**kwargs,
@@ -424,7 +424,7 @@ def __init__(
424424
outer_radius: float = 2.0,
425425
fill_opacity: float = 1.0,
426426
stroke_width: float = 0.0,
427-
fill_color: ManimColor = GREY_A,
427+
fill_color: ManimColor = DEFAULT_LIGHT_COLOR,
428428
center: Vect3 = ORIGIN,
429429
**kwargs,
430430
):
@@ -644,7 +644,7 @@ def __init__(
644644
self,
645645
start: Vect3 | Mobject,
646646
end: Vect3 | Mobject,
647-
stroke_color: ManimColor = GREY_A,
647+
stroke_color: ManimColor = DEFAULT_LIGHT_COLOR,
648648
stroke_width: float = 5,
649649
buff: float = 0.25,
650650
tip_width_ratio: float = 5,
@@ -744,7 +744,7 @@ def __init__(
744744
end: Vect3 | Mobject = LEFT,
745745
buff: float = MED_SMALL_BUFF,
746746
path_arc: float = 0,
747-
fill_color: ManimColor = GREY_A,
747+
fill_color: ManimColor = DEFAULT_LIGHT_COLOR,
748748
fill_opacity: float = 1.0,
749749
stroke_width: float = 0.0,
750750
thickness: float = 3.0,
@@ -1008,7 +1008,7 @@ def __init__(
10081008
width: float = DEFAULT_ARROW_TIP_WIDTH,
10091009
length: float = DEFAULT_ARROW_TIP_LENGTH,
10101010
fill_opacity: float = 1.0,
1011-
fill_color: ManimColor = WHITE,
1011+
fill_color: ManimColor = DEFAULT_MOBJECT_COLOR,
10121012
stroke_width: float = 0.0,
10131013
tip_style: int = 0, # triangle=0, inner_smooth=1, dot=2
10141014
**kwargs

manimlib/mobject/interactive.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from manimlib.constants import FRAME_HEIGHT, FRAME_WIDTH
77
from manimlib.constants import DOWN, LEFT, ORIGIN, RIGHT, UP
88
from manimlib.constants import MED_LARGE_BUFF, MED_SMALL_BUFF, SMALL_BUFF
9-
from manimlib.constants import BLACK, BLUE, GREEN, GREY_A, GREY_C, RED, WHITE
9+
from manimlib.constants import BLACK, BLUE, GREEN, GREY_A, GREY_C, RED, WHITE, DEFAULT_MOBJECT_COLOR
1010
from manimlib.mobject.mobject import Group
1111
from manimlib.mobject.mobject import Mobject
1212
from manimlib.mobject.geometry import Circle
@@ -387,7 +387,7 @@ def __init__(
387387
box_kwargs: dict = {
388388
"width": 2.0,
389389
"height": 1.0,
390-
"fill_color": WHITE,
390+
"fill_color": DEFAULT_MOBJECT_COLOR,
391391
"fill_opacity": 1.0,
392392
},
393393
text_kwargs: dict = {

manimlib/mobject/mobject.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from manimlib.constants import FRAME_X_RADIUS, FRAME_Y_RADIUS
1919
from manimlib.constants import MED_SMALL_BUFF
2020
from manimlib.constants import TAU
21-
from manimlib.constants import WHITE
21+
from manimlib.constants import DEFAULT_MOBJECT_COLOR
2222
from manimlib.event_handler import EVENT_DISPATCHER
2323
from manimlib.event_handler.event_listner import EventListener
2424
from manimlib.event_handler.event_type import EventType
@@ -78,7 +78,7 @@ class Mobject(object):
7878

7979
def __init__(
8080
self,
81-
color: ManimColor = WHITE,
81+
color: ManimColor = DEFAULT_MOBJECT_COLOR,
8282
opacity: float = 1.0,
8383
shading: Tuple[float, float, float] = (0.0, 0.0, 0.0),
8484
# For shaders

manimlib/mobject/number_line.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import numpy as np
44

55
from manimlib.constants import DOWN, LEFT, RIGHT, UP
6-
from manimlib.constants import GREY_B
6+
from manimlib.constants import DEFAULT_LIGHT_COLOR
77
from manimlib.constants import MED_SMALL_BUFF
88
from manimlib.mobject.geometry import Line
99
from manimlib.mobject.numbers import DecimalNumber
@@ -24,7 +24,7 @@ class NumberLine(Line):
2424
def __init__(
2525
self,
2626
x_range: RangeSpecifier = (-8, 8, 1),
27-
color: ManimColor = GREY_B,
27+
color: ManimColor = DEFAULT_LIGHT_COLOR,
2828
stroke_width: float = 2.0,
2929
# How big is one one unit of this number line in terms of absolute spacial distance
3030
unit_size: float = 1.0,

manimlib/mobject/numbers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import numpy as np
55

66
from manimlib.constants import DOWN, LEFT, RIGHT, UP
7-
from manimlib.constants import WHITE
7+
from manimlib.constants import DEFAULT_MOBJECT_COLOR
88
from manimlib.mobject.svg.tex_mobject import Tex
99
from manimlib.mobject.svg.text_mobject import Text
1010
from manimlib.mobject.types.vectorized_mobject import VMobject
@@ -35,7 +35,7 @@ class DecimalNumber(VMobject):
3535
def __init__(
3636
self,
3737
number: float | complex = 0,
38-
color: ManimColor = WHITE,
38+
color: ManimColor = DEFAULT_MOBJECT_COLOR,
3939
stroke_width: float = 0,
4040
fill_opacity: float = 1.0,
4141
fill_border_width: float = 0.5,

0 commit comments

Comments
 (0)