public static PaintServer CreatePaintServer(SvgDocument document, string absoluteUri) { XmlNode node = document.GetNodeByUri(absoluteUri); if(node is SvgGradientElement) { return new GradientPaintServer((SvgGradientElement)node); } else if(node is SvgPatternElement) { return new PatternPaintServer((SvgPatternElement)node); } else { return null; } }
public static WpfFill CreateFill(SvgDocument document, string absoluteUri) { XmlNode node = document.GetNodeByUri(absoluteUri); SvgGradientElement gradientNode = node as SvgGradientElement; if (gradientNode != null) { return new WpfGradientFill(gradientNode); } SvgPatternElement patternNode = node as SvgPatternElement; if (patternNode != null) { return new WpfPatternFill(patternNode); } return null; }
/// <summary> /// Generates a new <see cref="RenderingNode">RenderingNode</see> that /// corresponds to the given Uri. /// </summary> /// <param name="baseUri"> /// The base Uri. /// </param> /// <param name="url"> /// The url. /// </param> /// <returns> /// The generated <see cref="RenderingNode">RenderingNode</see> that /// corresponds to the given Uri. /// </returns> public static GdiRendering CreateByUri(SvgDocument document, string baseUri, string url) { if (url.StartsWith("#")) { // do nothing } else if (baseUri != "") { Uri absoluteUri = new Uri(new Uri(baseUri), url); url = absoluteUri.AbsoluteUri; } else { // TODO: Handle xml:base here? // Right now just skip this... it can't be resolved, must assume it is absolute } ISvgElement elm = document.GetNodeByUri(url) as ISvgElement; if (elm != null) { return GdiRendering.Create(elm); } else { return null; } }