Update some Text Mobject changes

This commit is contained in:
xy-23
2019-08-12 14:40:42 +08:00
parent e9fa188d42
commit 0983fa11be

View File

@ -1,8 +1,8 @@
import cairo
import copy
import hashlib
import re import re
import os import os
import copy
import hashlib
import cairo
import manimlib.constants as consts import manimlib.constants as consts
from manimlib.constants import * from manimlib.constants import *
from manimlib.mobject.svg.svg_mobject import SVGMobject from manimlib.mobject.svg.svg_mobject import SVGMobject
@ -21,10 +21,10 @@ class TextSetting(object):
class Text(SVGMobject): class Text(SVGMobject):
CONFIG = { CONFIG = {
#Mobject # Mobject
'color': WHITE, 'color': consts.WHITE,
'height': None, 'height': None,
#Text # Text
'font': '', 'font': '',
'gradient': None, 'gradient': None,
'lsh': -1, 'lsh': -1,
@ -54,7 +54,7 @@ class Text(SVGMobject):
if self.t2g: if self.t2g:
self.set_color_by_t2g() self.set_color_by_t2g()
#anti-aliasing # anti-aliasing
self.scale(0.1) self.scale(0.1)
def find_indexes(self, word): def find_indexes(self, word):
@ -134,9 +134,9 @@ class Text(SVGMobject):
fsw[i] = x fsw[i] = x
settings.append(TextSetting(start, end, *fsw)) settings.append(TextSetting(start, end, *fsw))
#Set All text settings(default font slant weight) # Set All text settings(default font slant weight)
fsw = [self.font, self.slant, self.weight] fsw = [self.font, self.slant, self.weight]
settings.sort(key = lambda setting: setting.start) settings.sort(key=lambda setting: setting.start)
temp_settings = settings.copy() temp_settings = settings.copy()
start = 0 start = 0
for setting in settings: for setting in settings:
@ -145,7 +145,7 @@ class Text(SVGMobject):
start = setting.end start = setting.end
if start != len(self.text): if start != len(self.text):
temp_settings.append(TextSetting(start, len(self.text), *fsw)) temp_settings.append(TextSetting(start, len(self.text), *fsw))
settings = sorted(temp_settings, key = lambda setting: setting.start) settings = sorted(temp_settings, key=lambda setting: setting.start)
if re.search(r'\n', self.text): if re.search(r'\n', self.text):
line_num = 0 line_num = 0
@ -160,7 +160,7 @@ class Text(SVGMobject):
new_setting.start = end new_setting.start = end
new_setting.line_num = line_num new_setting.line_num = line_num
settings.append(new_setting) settings.append(new_setting)
settings.sort(key = lambda setting: setting.start) settings.sort(key=lambda setting: setting.start)
break break
for setting in settings: for setting in settings:
@ -170,7 +170,7 @@ class Text(SVGMobject):
return settings return settings
def text2svg(self): def text2svg(self):
#anti-aliasing # anti-aliasing
size = self.size * 10 size = self.size * 10
lsh = self.lsh * 10 lsh = self.lsh * 10
@ -201,7 +201,7 @@ class Text(SVGMobject):
if setting.line_num != last_line_num: if setting.line_num != last_line_num:
offset_x = 0 offset_x = 0
last_line_num = setting.line_num last_line_num = setting.line_num
context.move_to(START_X+offset_x, START_Y + lsh*setting.line_num) context.move_to(START_X + offset_x, START_Y + lsh*setting.line_num)
context.show_text(text) context.show_text(text)
offset_x += context.text_extents(text)[4] offset_x += context.text_extents(text)[4]