mirror of
https://github.com/3b1b/manim.git
synced 2025-04-13 09:47:07 +00:00
Have DecimalMobject save pre-generated characters
This commit is contained in:
parent
763967281f
commit
93f3c6535f
1 changed files with 10 additions and 5 deletions
|
@ -46,6 +46,7 @@ class DecimalNumber(VMobject):
|
||||||
self.edge_to_fix = edge_to_fix
|
self.edge_to_fix = edge_to_fix
|
||||||
self.font_size = font_size
|
self.font_size = font_size
|
||||||
self.text_config = dict(text_config)
|
self.text_config = dict(text_config)
|
||||||
|
self.char_to_mob_map = dict()
|
||||||
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
color=color,
|
color=color,
|
||||||
|
@ -62,14 +63,11 @@ class DecimalNumber(VMobject):
|
||||||
self.set_submobjects([])
|
self.set_submobjects([])
|
||||||
self.text_config["font_size"] = self.get_font_size()
|
self.text_config["font_size"] = self.get_font_size()
|
||||||
num_string = self.num_string = self.get_num_string(number)
|
num_string = self.num_string = self.get_num_string(number)
|
||||||
self.add(*(
|
self.add(*map(self.char_to_mob, num_string))
|
||||||
Text(ns, **self.text_config)
|
|
||||||
for ns in num_string
|
|
||||||
))
|
|
||||||
|
|
||||||
# Add non-numerical bits
|
# Add non-numerical bits
|
||||||
if self.show_ellipsis:
|
if self.show_ellipsis:
|
||||||
dots = Text("...", **self.text_config)
|
dots = self.char_to_mob("...")
|
||||||
dots.arrange(RIGHT, buff=2 * dots[0].get_width())
|
dots.arrange(RIGHT, buff=2 * dots[0].get_width())
|
||||||
self.add(dots)
|
self.add(dots)
|
||||||
if self.unit is not None:
|
if self.unit is not None:
|
||||||
|
@ -111,6 +109,13 @@ class DecimalNumber(VMobject):
|
||||||
num_string = num_string.replace("-", "–")
|
num_string = num_string.replace("-", "–")
|
||||||
return num_string
|
return num_string
|
||||||
|
|
||||||
|
def char_to_mob(self, char: str) -> Tex | Text:
|
||||||
|
if char not in self.char_to_mob_map:
|
||||||
|
self.char_to_mob_map[char] = Text(char, **self.text_config)
|
||||||
|
result = self.char_to_mob_map[char].copy()
|
||||||
|
result.scale(self.get_font_size() / result.font_size)
|
||||||
|
return result
|
||||||
|
|
||||||
def init_uniforms(self) -> None:
|
def init_uniforms(self) -> None:
|
||||||
super().init_uniforms()
|
super().init_uniforms()
|
||||||
self.uniforms["font_size"] = self.font_size
|
self.uniforms["font_size"] = self.font_size
|
||||||
|
|
Loading…
Add table
Reference in a new issue