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
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))
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
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))