mirror of
https://github.com/3b1b/manim.git
synced 2025-04-13 09:47:07 +00:00
Get rid of cached _has_stroke and _has_fill parameters
This commit is contained in:
parent
058914fdd2
commit
b288d5301e
3 changed files with 4 additions and 39 deletions
|
@ -139,8 +139,6 @@ class DrawBorderThenFill(Animation):
|
|||
submob.pointwise_become_partial(outline, 0, subalpha)
|
||||
else:
|
||||
submob.interpolate(outline, start, subalpha)
|
||||
submob.note_changed_stroke()
|
||||
submob.note_changed_fill()
|
||||
|
||||
|
||||
class Write(DrawBorderThenFill):
|
||||
|
|
|
@ -69,7 +69,6 @@ class StringMobject(SVGMobject, ABC):
|
|||
super().__init__(**kwargs)
|
||||
self.set_stroke(stroke_color, stroke_width)
|
||||
self.set_fill(fill_color, border_width=fill_border_width)
|
||||
self.note_changed_stroke()
|
||||
self.labels = [submob.label for submob in self.submobjects]
|
||||
|
||||
def get_file_path(self, is_labelled: bool = False) -> str:
|
||||
|
|
|
@ -69,7 +69,7 @@ class VMobject(Mobject):
|
|||
('stroke_width', np.float32, (1,)),
|
||||
('joint_product', np.float32, (4,)),
|
||||
('fill_rgba', np.float32, (4,)),
|
||||
('base_normal', np.float32, (3,)), # Every other holds base point and unit normal vector
|
||||
('base_normal', np.float32, (3,)), # Base points and unit normal vectors are interleaved in this array
|
||||
('fill_border_width', np.float32, (1,)),
|
||||
])
|
||||
pre_function_handle_to_anchor_scale_factor: float = 0.01
|
||||
|
@ -112,8 +112,6 @@ class VMobject(Mobject):
|
|||
self.anti_alias_width = anti_alias_width
|
||||
self.fill_border_width = fill_border_width
|
||||
self._use_winding_fill = use_winding_fill
|
||||
self._has_fill = False
|
||||
self._has_stroke = False
|
||||
|
||||
self.needs_new_triangulation = True
|
||||
self.triangulation = np.zeros(0, dtype='i4')
|
||||
|
@ -137,16 +135,6 @@ class VMobject(Mobject):
|
|||
return super().add(*vmobjects)
|
||||
|
||||
# Colors
|
||||
def note_changed_fill(self) -> Self:
|
||||
for submob in self.get_family():
|
||||
submob._has_fill = submob.has_fill()
|
||||
return self
|
||||
|
||||
def note_changed_stroke(self) -> Self:
|
||||
for submob in self.get_family():
|
||||
submob._has_stroke = submob.has_stroke()
|
||||
return self
|
||||
|
||||
def init_colors(self):
|
||||
self.set_fill(
|
||||
color=self.fill_color,
|
||||
|
@ -164,17 +152,6 @@ class VMobject(Mobject):
|
|||
self.color = self.get_color()
|
||||
return self
|
||||
|
||||
def set_rgba_array(
|
||||
self,
|
||||
rgba_array: Vect4Array,
|
||||
name: str = "stroke_rgba",
|
||||
recurse: bool = False
|
||||
) -> Self:
|
||||
super().set_rgba_array(rgba_array, name, recurse)
|
||||
self.note_changed_fill()
|
||||
self.note_changed_stroke()
|
||||
return self
|
||||
|
||||
def set_fill(
|
||||
self,
|
||||
color: ManimColor | Iterable[ManimColor] = None,
|
||||
|
@ -188,7 +165,6 @@ class VMobject(Mobject):
|
|||
for mob in self.get_family(recurse):
|
||||
data = mob.data if mob.has_points() > 0 else mob._data_defaults
|
||||
data["fill_border_width"] = border_width
|
||||
self.note_changed_fill()
|
||||
return self
|
||||
|
||||
def set_stroke(
|
||||
|
@ -219,7 +195,6 @@ class VMobject(Mobject):
|
|||
if flat is not None:
|
||||
self.set_flat_stroke(flat)
|
||||
|
||||
self.note_changed_stroke()
|
||||
return self
|
||||
|
||||
def set_backstroke(
|
||||
|
@ -278,8 +253,6 @@ class VMobject(Mobject):
|
|||
|
||||
if shading is not None:
|
||||
mob.set_shading(*shading, recurse=False)
|
||||
self.note_changed_fill()
|
||||
self.note_changed_stroke()
|
||||
return self
|
||||
|
||||
def get_style(self) -> dict[str, Any]:
|
||||
|
@ -1041,10 +1014,7 @@ class VMobject(Mobject):
|
|||
) -> Self:
|
||||
super().interpolate(mobject1, mobject2, alpha, *args, **kwargs)
|
||||
|
||||
self._has_stroke = mobject1._has_stroke or mobject2._has_stroke
|
||||
self._has_fill = mobject1._has_fill or mobject2._has_fill
|
||||
|
||||
if self._has_fill and not self._use_winding_fill:
|
||||
if not self._use_winding_fill and self.has_fill():
|
||||
tri1 = mobject1.get_triangulation()
|
||||
tri2 = mobject2.get_triangulation()
|
||||
if not arrays_match(tri1, tri2):
|
||||
|
@ -1284,8 +1254,6 @@ class VMobject(Mobject):
|
|||
@triggers_refreshed_triangulation
|
||||
def set_data(self, data: np.ndarray) -> Self:
|
||||
super().set_data(data)
|
||||
self.note_changed_fill()
|
||||
self.note_changed_stroke()
|
||||
return self
|
||||
|
||||
# TODO, how to be smart about tangents here?
|
||||
|
@ -1342,8 +1310,8 @@ class VMobject(Mobject):
|
|||
|
||||
stroke_behind = False
|
||||
for submob in family:
|
||||
if submob._has_fill:
|
||||
submob.data["base_normal"][0::2] = submob.data["point"][0]
|
||||
# Maybe do this on set points instead? Or on noting changed data?
|
||||
submob.data["base_normal"][0::2] = submob.data["point"][0]
|
||||
if submob.stroke_behind:
|
||||
stroke_behind = True
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue