Beispiel #1
0
    def get_mobjects_from(self, element):
        result = []
        if not isinstance(element, minidom.Element):
            return result
        if element.tagName == 'defs':
            self.update_ref_to_element(element)
        elif element.tagName == 'style':
            pass  #TODO, handle style
        elif element.tagName in ['g', 'svg']:
            result += it.chain(*[
                self.get_mobjects_from(child) for child in element.childNodes
            ])
        elif element.tagName == 'path':
            result.append(
                self.path_string_to_mobject(element.getAttribute('d')))
        elif element.tagName == 'use':
            result += self.use_to_mobjects(element)
        elif element.tagName == 'rect':
            result.append(self.rect_to_mobject(element))
        elif element.tagName == 'circle':
            result.append(self.circle_to_mobject(element))
        elif element.tagName == 'ellipse':
            result.append(self.ellipse_to_mobject(element))
        elif element.tagName in ['polygon', 'polyline']:
            result.append(self.polygon_to_mobject(element))
        else:
            pass  ##TODO
            # warnings.warn("Unknown element type: " + element.tagName)
        result = filter(lambda m: m is not None, result)
        self.handle_transforms(element, VMobject(*result))
        if len(result) > 1 and not self.unpack_groups:
            result = [VGroup(*result)]

        return result
Beispiel #2
0
    def get_parts_by_tex(self, tex, substring=True):
        def test(tex1, tex2):
            return tex1 == tex2 or (substring and tex1 in tex2)

        tex_submobjects = filter(lambda m: isinstance(m, TexMobject),
                                 self.submobject_family())
        if hasattr(self, "expression_parts"):
            tex_submobjects.remove(self)
        return VGroup(
            *filter(lambda m: test(tex, m.get_tex_string()), tex_submobjects))
Beispiel #3
0
 def handle_multiple_args(self):
     new_submobjects = []
     curr_index = 0
     self.expression_parts = list(self.args)
     for expr in self.args:
         model = TexMobject(expr, **self.CONFIG)
         new_index = curr_index + len(model.submobjects)
         new_submobjects.append(
             VGroup(*self.submobjects[curr_index:new_index]))
         curr_index = new_index
     self.submobjects = new_submobjects
     return self
Beispiel #4
0
    def get_parts_by_tex(self, tex, substring=True, case_sensitive=True):
        def test(tex1, tex2):
            if not case_sensitive:
                tex1 = tex1.lower()
                tex2 = tex2.lower()
            if substring:
                return tex1 in tex2
            else:
                return tex1 == tex2

        tex_submobjects = filter(lambda m: isinstance(m, TexMobject),
                                 self.submobject_family())
        if hasattr(self, "expression_parts"):
            tex_submobjects.remove(self)
        return VGroup(
            *filter(lambda m: test(tex, m.get_tex_string()), tex_submobjects))