// private SvgSvgElement MoveIntoSvgElement() // { // SvgDocument doc = _patternElement.OwnerDocument; // SvgSvgElement svgElm = doc.CreateElement("", "svg", SvgDocument.SvgNamespace) as SvgSvgElement; // XmlNodeList children = _patternElement.Children; // if (children.Count > 0) // { // oldParent = children[0].ParentNode as XmlElement; // } // for (int i = 0; i < children.Count; i++) // { // svgElm.AppendChild(children[i]); // } // if (_patternElement.HasAttribute("viewBox")) // { // svgElm.SetAttribute("viewBox", _patternElement.GetAttribute("viewBox")); // } // //svgElm.SetAttribute("x", "0"); // //svgElm.SetAttribute("y", "0"); // svgElm.SetAttribute("x", _patternElement.GetAttribute("x")); // svgElm.SetAttribute("y", _patternElement.GetAttribute("y")); // svgElm.SetAttribute("width", _patternElement.GetAttribute("width")); // svgElm.SetAttribute("height", _patternElement.GetAttribute("height")); // if (_patternElement.PatternContentUnits.AnimVal.Equals((ushort)SvgUnitType.ObjectBoundingBox)) // { //// svgElm.SetAttribute("viewBox", "0 0 1 1"); // } // else // { // _isUserSpace = true; // } // _patternElement.AppendChild(svgElm); // return svgElm; // } //private void MoveOutOfSvgElement(SvgSvgElement svgElm) //{ // while (svgElm.ChildNodes.Count > 0) // { // oldParent.AppendChild(svgElm.ChildNodes[0]); // } // _patternElement.RemoveChild(svgElm); //} private void PrepareTargetPattern() { var renderedElement = _patternElement; if (renderedElement.ReferencedElement != null) { SvgPatternElement svgElm = _patternElement.CloneNode(true) as SvgPatternElement; renderedElement = _patternElement.ReferencedElement; if (svgElm.IsEmpty) { XmlNodeList children = renderedElement.Children; if (children.Count > 0) { foreach (SvgElement element in children) { svgElm.AppendChild(element.Clone()); } } } var inheritedAttributes = renderedElement.Attributes; foreach (XmlAttribute attr in inheritedAttributes) { if (!svgElm.HasAttribute(attr.Name)) { svgElm.SetAttribute(attr.Name, attr.Value); } } _patternElement.AppendChild(svgElm); // renderedElement = svgElm; while (renderedElement.ReferencedElement != null) { renderedElement = renderedElement.ReferencedElement; inheritedAttributes = renderedElement.Attributes; foreach (XmlAttribute attr in inheritedAttributes) { if (!svgElm.HasAttribute(attr.Name)) { svgElm.SetAttribute(attr.Name, attr.Value); } } } svgElm.Id = ""; renderedElement = svgElm; } _renderedElement = renderedElement; }
private SvgSvgElement MoveIntoSvgElement() { SvgDocument doc = _patternElement.OwnerDocument; SvgSvgElement svgElm = doc.CreateElement("", "svg", SvgDocument.SvgNamespace) as SvgSvgElement; XmlNodeList children = _patternElement.Children; if (children.Count > 0) { oldParent = children[0].ParentNode as XmlElement; } for (int i = 0; i < children.Count; i++) { svgElm.AppendChild(children[i]); } if (_patternElement.HasAttribute("viewBox")) { svgElm.SetAttribute("viewBox", _patternElement.GetAttribute("viewBox")); } svgElm.SetAttribute("x", "0"); svgElm.SetAttribute("y", "0"); svgElm.SetAttribute("width", _patternElement.GetAttribute("width")); svgElm.SetAttribute("height", _patternElement.GetAttribute("height")); if (_patternElement.PatternContentUnits.AnimVal.Equals((ushort)SvgUnitType.ObjectBoundingBox)) { svgElm.SetAttribute("viewBox", "0 0 1 1"); } _patternElement.AppendChild(svgElm); return(svgElm); }