From b423a423b523ce3f2ba491c6f80530191fa6b6b0 Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Fri, 15 Jan 2021 10:16:37 -1000 Subject: [PATCH] Make customization more accessible --- custom_defaults.yml | 1 + manimlib/imports.py | 1 + manimlib/mobject/svg/text_mobject.py | 7 ++++--- manimlib/utils/customization.py | 23 +++++++++++++++++++++++ manimlib/utils/directories.py | 21 ++------------------- 5 files changed, 31 insertions(+), 22 deletions(-) create mode 100644 manimlib/utils/customization.py diff --git a/custom_defaults.yml b/custom_defaults.yml index 7fd8abdb..7c3d03f6 100644 --- a/custom_defaults.yml +++ b/custom_defaults.yml @@ -27,6 +27,7 @@ tex: # intermediate_filetype: "xdv" universal_import_line: "from manimlib.imports import *" style: + font: "Consolas" background_color: "#333333" camera_qualities: low: diff --git a/manimlib/imports.py b/manimlib/imports.py index f8a58696..cc01279d 100644 --- a/manimlib/imports.py +++ b/manimlib/imports.py @@ -77,6 +77,7 @@ from manimlib.scene.vector_space_scene import * from manimlib.utils.bezier import * from manimlib.utils.color import * from manimlib.utils.config_ops import * +from manimlib.utils.customization import * from manimlib.utils.debug import * from manimlib.utils.directories import * from manimlib.utils.images import * diff --git a/manimlib/mobject/svg/text_mobject.py b/manimlib/mobject/svg/text_mobject.py index 1a42eea0..b1718dae 100644 --- a/manimlib/mobject/svg/text_mobject.py +++ b/manimlib/mobject/svg/text_mobject.py @@ -6,6 +6,7 @@ import cairo from manimlib.constants import * from manimlib.mobject.svg.svg_mobject import SVGMobject from manimlib.utils.config_ops import digest_config +from manimlib.utils.customization import get_customization from manimlib.utils.directories import get_text_dir @@ -135,7 +136,7 @@ class Text(SVGMobject): settings = self.font + self.slant + self.weight settings += str(self.t2f) + str(self.t2s) + str(self.t2w) settings += str(self.lsh) + str(self.size) - id_str = self.text+settings + id_str = self.text + settings hasher = hashlib.sha256() hasher.update(id_str.encode()) return hasher.hexdigest()[:16] @@ -192,11 +193,11 @@ class Text(SVGMobject): lsh = self.lsh * 10 if self.font == '': - print(NOT_SETTING_FONT_MSG) + self.font = get_customization()['style']['font'] dir_name = get_text_dir() hash_name = self.text2hash() - file_name = os.path.join(dir_name, hash_name) +'.svg' + file_name = os.path.join(dir_name, hash_name) + '.svg' if os.path.exists(file_name): return file_name diff --git a/manimlib/utils/customization.py b/manimlib/utils/customization.py new file mode 100644 index 00000000..333a41c6 --- /dev/null +++ b/manimlib/utils/customization.py @@ -0,0 +1,23 @@ +import os +import tempfile + +from manimlib.config import get_custom_defaults +from manimlib.config import get_manim_dir + +CUSTOMIZATION = {} + + +def get_customization(): + if not CUSTOMIZATION: + CUSTOMIZATION.update(get_custom_defaults()) + directories = CUSTOMIZATION["directories"] + # Unless user has specified otherwise, use the system default temp + # directory for storing tex files, mobject_data, etc. + if not directories["temporary_storage"]: + directories["temporary_storage"] = tempfile.gettempdir() + + # Assumes all shaders are written into manimlib/shaders + directories["shaders"] = os.path.join( + get_manim_dir(), "manimlib", "shaders" + ) + return CUSTOMIZATION diff --git a/manimlib/utils/directories.py b/manimlib/utils/directories.py index efdaffe4..346312a0 100644 --- a/manimlib/utils/directories.py +++ b/manimlib/utils/directories.py @@ -1,28 +1,11 @@ import os -import tempfile from manimlib.utils.file_ops import guarantee_existence -from manimlib.config import get_custom_defaults -from manimlib.config import get_manim_dir - -PRE_COMPUTED_DIRS = {} +from manimlib.utils.customization import get_customization def get_directories(): - if not PRE_COMPUTED_DIRS: - custom_defaults = get_custom_defaults() - PRE_COMPUTED_DIRS.update(custom_defaults["directories"]) - - # Unless user has specified otherwise, use the system default temp - # directory for storing tex files, mobject_data, etc. - if not PRE_COMPUTED_DIRS["temporary_storage"]: - PRE_COMPUTED_DIRS["temporary_storage"] = tempfile.gettempdir() - - # Assumes all shaders are written into manimlib/shaders - PRE_COMPUTED_DIRS["shaders"] = os.path.join( - get_manim_dir(), "manimlib", "shaders" - ) - return PRE_COMPUTED_DIRS + return get_customization()["directories"] def get_temp_dir():