diff --git a/manimlib/mobject/mobject.py b/manimlib/mobject/mobject.py index 73c5c8df..79b489de 100644 --- a/manimlib/mobject/mobject.py +++ b/manimlib/mobject/mobject.py @@ -561,7 +561,7 @@ class Mobject(object): ) return self - def scale(self, scale_factor, min_scale_factor=1e-8, about_point=None, about_edge=ORIGIN, recurse=True): + def scale(self, scale_factor, min_scale_factor=1e-8, about_point=None, about_edge=ORIGIN): """ Default behavior is to scale about the center of the mobject. The argument about_edge can be a vector, indicating which side of @@ -572,20 +572,21 @@ class Mobject(object): respect to that point. """ scale_factor = max(scale_factor, min_scale_factor) - if about_point is None and about_edge is not None: - about_point = self.get_bounding_box_point(about_edge) - if recurse: - for submob in self.submobjects: - submob.scale(scale_factor, about_point=about_point, recurse=True) - if not self.submobjects: - self.apply_points_function( - lambda points: scale_factor * points, - works_on_bounding_box=True, - about_point=about_point, - about_edge=about_edge - ) + for mob in self.get_family(): + mob._handle_scale_side_effects(scale_factor) + self.apply_points_function( + lambda points: scale_factor * points, + about_point=about_point, + about_edge=about_edge, + works_on_bounding_box=True, + ) return self + def _handle_scale_side_effects(self, scale_factor): + # In case subclasses, such as DecimalNumber, need to make + # any other changes when the size gets altered + pass + def stretch(self, factor, dim, **kwargs): def func(points): points[:, dim] *= factor diff --git a/manimlib/mobject/numbers.py b/manimlib/mobject/numbers.py index 34d1fa6c..a1949f51 100644 --- a/manimlib/mobject/numbers.py +++ b/manimlib/mobject/numbers.py @@ -135,10 +135,8 @@ class DecimalNumber(VMobject): sm1.match_style(sm2) return self - def scale(self, scale_factor, **kwargs): - super().scale(scale_factor, **kwargs) + def _handle_scale_side_effects(self, scale_factor): self.data["font_size"] *= scale_factor - return self def get_value(self): return self.number