mirror of
https://github.com/3b1b/manim.git
synced 2025-07-28 20:43:56 +08:00
Fix popping bug
This commit is contained in:
@ -136,13 +136,15 @@ class SVGMobject(VMobject):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def expand_use_elements(element_tree: ET.ElementTree) -> ET.ElementTree:
|
def expand_use_elements(element_tree: ET.ElementTree) -> ET.ElementTree:
|
||||||
# Replace `use` elements with copies of elements they refer to
|
# Replace `use` elements with copies of elements they refer to
|
||||||
xpath = f".//{SVG_XMLNS}use[@{SVG_XLINK}href]"
|
while True:
|
||||||
element = element_tree.find(xpath)
|
element = element_tree.find(f".//{SVG_XMLNS}use[@{SVG_XLINK}href]")
|
||||||
while element is not None:
|
if element is None:
|
||||||
|
break
|
||||||
|
|
||||||
element.tag = f"{SVG_XMLNS}g"
|
element.tag = f"{SVG_XMLNS}g"
|
||||||
attrs = element.attrib
|
attrs = element.attrib
|
||||||
href_str = attrs.pop(f"{SVG_XLINK}href")[1:]
|
href_id = attrs.pop(f"{SVG_XLINK}href")[1:]
|
||||||
href_element = element_tree.find(f".//{SVG_XMLNS}*[@id='{href_str}']")
|
href_element = element_tree.find(f".//{SVG_XMLNS}*[@id='{href_id}']")
|
||||||
if href_element is None:
|
if href_element is None:
|
||||||
continue
|
continue
|
||||||
attrs.pop("width", None)
|
attrs.pop("width", None)
|
||||||
@ -157,7 +159,6 @@ class SVGMobject(VMobject):
|
|||||||
attrs["transform"] = translate_str
|
attrs["transform"] = translate_str
|
||||||
shadow_node = ET.SubElement(element, href_element.tag, href_element.attrib)
|
shadow_node = ET.SubElement(element, href_element.tag, href_element.attrib)
|
||||||
shadow_node.extend(href_element)
|
shadow_node.extend(href_element)
|
||||||
element = element_tree.find(xpath)
|
|
||||||
|
|
||||||
for defs_element in element_tree.iterfind(f".//{SVG_XMLNS}defs"):
|
for defs_element in element_tree.iterfind(f".//{SVG_XMLNS}defs"):
|
||||||
defs_element.clear()
|
defs_element.clear()
|
||||||
|
Reference in New Issue
Block a user