mirror of
https://github.com/3b1b/manim.git
synced 2025-09-01 00:48:45 +00:00
Kill config in svg_mobject
This commit is contained in:
parent
c2766c9837
commit
c55374245d
1 changed files with 57 additions and 33 deletions
|
@ -20,6 +20,11 @@ from manimlib.utils.images import get_full_vector_image_path
|
|||
from manimlib.utils.iterables import hash_obj
|
||||
from manimlib.utils.simple_functions import hash_string
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from manimlib.constants import ManimColor
|
||||
|
||||
|
||||
|
||||
SVG_HASH_TO_MOB_MAP: dict[int, VMobject] = {}
|
||||
|
||||
|
@ -29,36 +34,51 @@ def _convert_point_to_3d(x: float, y: float) -> np.ndarray:
|
|||
|
||||
|
||||
class SVGMobject(VMobject):
|
||||
CONFIG = {
|
||||
"should_center": True,
|
||||
"height": 2,
|
||||
"width": None,
|
||||
"file_name": None,
|
||||
file_name: str = ""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
file_name: str = "",
|
||||
should_center: bool = True,
|
||||
height: float | None = 2.0,
|
||||
width: float | None = None,
|
||||
# Style that overrides the original svg
|
||||
"color": None,
|
||||
"opacity": None,
|
||||
"fill_color": None,
|
||||
"fill_opacity": None,
|
||||
"stroke_width": None,
|
||||
"stroke_color": None,
|
||||
"stroke_opacity": None,
|
||||
color: ManimColor = None,
|
||||
fill_color: ManimColor = None,
|
||||
fill_opacity: float | None = None,
|
||||
stroke_width: float | None = 0.0,
|
||||
stroke_color: ManimColor = None,
|
||||
stroke_opacity: float | None = None,
|
||||
# Style that fills only when not specified
|
||||
# If None, regarded as default values from svg standard
|
||||
"svg_default": {
|
||||
"color": None,
|
||||
"opacity": None,
|
||||
"fill_color": None,
|
||||
"fill_opacity": None,
|
||||
"stroke_width": None,
|
||||
"stroke_color": None,
|
||||
"stroke_opacity": None,
|
||||
},
|
||||
"path_string_config": {},
|
||||
}
|
||||
|
||||
def __init__(self, file_name: str | None = None, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
svg_default: dict = dict(
|
||||
color=None,
|
||||
opacity=None,
|
||||
fill_color=None,
|
||||
fill_opacity=None,
|
||||
stroke_width=None,
|
||||
stroke_color=None,
|
||||
stroke_opacity=None,
|
||||
),
|
||||
path_string_config: dict = dict(),
|
||||
**kwargs
|
||||
):
|
||||
self.file_name = file_name or self.file_name
|
||||
self.should_center = should_center
|
||||
self.height = height
|
||||
self.width = width
|
||||
self.svg_default = svg_default
|
||||
self.path_string_config = path_string_config
|
||||
|
||||
super().__init__(
|
||||
color=color,
|
||||
fill_color=fill_color,
|
||||
fill_opacity=fill_opacity,
|
||||
stroke_width=stroke_width,
|
||||
stroke_color=stroke_color,
|
||||
stroke_opacity=stroke_opacity,
|
||||
**kwargs
|
||||
)
|
||||
self.init_svg_mobject()
|
||||
self.init_colors()
|
||||
self.move_into_position()
|
||||
|
@ -268,16 +288,20 @@ class SVGMobject(VMobject):
|
|||
|
||||
|
||||
class VMobjectFromSVGPath(VMobject):
|
||||
CONFIG = {
|
||||
"long_lines": False,
|
||||
"should_subdivide_sharp_curves": False,
|
||||
"should_remove_null_curves": False,
|
||||
}
|
||||
|
||||
def __init__(self, path_obj: se.Path, **kwargs):
|
||||
def __init__(
|
||||
self,
|
||||
path_obj: se.Path,
|
||||
long_lines: bool = False,
|
||||
should_subdivide_sharp_curves: bool = False,
|
||||
should_remove_null_curves: bool = False,
|
||||
**kwargs
|
||||
):
|
||||
# Get rid of arcs
|
||||
path_obj.approximate_arcs_with_quads()
|
||||
self.path_obj = path_obj
|
||||
self.long_lines = long_lines
|
||||
self.should_subdivide_sharp_curves = should_subdivide_sharp_curves
|
||||
self.should_remove_null_curves = should_remove_null_curves
|
||||
super().__init__(**kwargs)
|
||||
|
||||
def init_points(self) -> None:
|
||||
|
|
Loading…
Add table
Reference in a new issue