private void RenderElement(ISvgElement svgElement) { bool isNotRenderable = !svgElement.IsRenderable || string.Equals(svgElement.LocalName, "a"); if (isNotRenderable) { return; } GdiRenderingBase renderingNode = GdiRendering.Create(svgElement); if (renderingNode == null) { return; } if (!renderingNode.NeedRender(_renderer)) { renderingNode.Dispose(); renderingNode = null; return; } bool shouldRender = true; SvgStyleableElement stylable = svgElement as SvgStyleableElement; if (stylable != null) { string sVisibility = stylable.GetPropertyValue("visibility"); string sDisplay = stylable.GetPropertyValue("display"); if (string.Equals(sVisibility, "hidden") || string.Equals(sDisplay, "none")) { shouldRender = false; } } if (shouldRender) { //_rendererMap[svgElement] = renderingNode; _rendererMap.Push(renderingNode); renderingNode.BeforeRender(_renderer); renderingNode.Render(_renderer); if (!renderingNode.IsRecursive && svgElement.HasChildNodes) { RenderChildren(svgElement); } //renderingNode = _rendererMap[svgElement]; renderingNode = _rendererMap.Pop(); Debug.Assert(renderingNode.Element == svgElement); renderingNode.AfterRender(_renderer); //_rendererMap.Remove(svgElement); } renderingNode.Dispose(); renderingNode = null; }
private void RenderElement(ISvgElement svgElement) { bool isNotRenderable = !svgElement.IsRenderable || String.Equals(svgElement.LocalName, "a"); if (isNotRenderable) { return; } GdiRenderingBase renderingNode = GdiRendering.Create(svgElement); if (renderingNode == null) { return; } if (!renderingNode.NeedRender(_renderer)) { renderingNode.Dispose(); renderingNode = null; return; } //_rendererMap[svgElement] = renderingNode; _rendererMap.Push(renderingNode); renderingNode.BeforeRender(_renderer); renderingNode.Render(_renderer); if (!renderingNode.IsRecursive && svgElement.HasChildNodes) { RenderChildren(svgElement); } //renderingNode = _rendererMap[svgElement]; renderingNode = _rendererMap.Pop(); Debug.Assert(renderingNode.Element == svgElement); renderingNode.AfterRender(_renderer); //_rendererMap.Remove(svgElement); renderingNode.Dispose(); renderingNode = null; }
private void RenderElement(ISvgElement svgElement) { bool isNotRenderable = !svgElement.IsRenderable || string.Equals(svgElement.LocalName, "a"); if (isNotRenderable) { return; } SvgElement currentElement = (SvgElement)svgElement; GdiRenderingBase renderingNode = GdiRendering.Create(currentElement); if (renderingNode == null) { return; } if (!renderingNode.NeedRender(_renderer)) { renderingNode.Dispose(); renderingNode = null; return; } var comparer = StringComparison.OrdinalIgnoreCase; bool shouldRender = true; SvgStyleableElement stylable = svgElement as SvgStyleableElement; if (stylable != null) { string sVisibility = stylable.GetPropertyValue(CssConstants.PropVisibility); string sDisplay = stylable.GetPropertyValue(CssConstants.PropDisplay); if (string.Equals(sVisibility, CssConstants.ValHidden, comparer) || string.Equals(sDisplay, CssConstants.ValNone, comparer)) { shouldRender = false; } } if (shouldRender) { //_rendererMap[svgElement] = renderingNode; // _rendererMap.Push(renderingNode); if (_rendererMap.ContainsKey(currentElement.UniqueId)) { // Might be circular rendering... // System.Diagnostics.Debug.WriteLine("Circular Object: " + currentElement.LocalName); return; } _rendererMap[currentElement.UniqueId] = renderingNode; renderingNode.BeforeRender(_renderer); renderingNode.Render(_renderer); if (!renderingNode.IsRecursive && svgElement.HasChildNodes) { RenderChildren(svgElement); } //renderingNode = _rendererMap[svgElement]; renderingNode = _rendererMap[currentElement.UniqueId]; // renderingNode = _rendererMap.Pop(); Debug.Assert(renderingNode.Element == svgElement); renderingNode.AfterRender(_renderer); _rendererMap.Remove(currentElement.UniqueId); //_rendererMap.Remove(svgElement); } renderingNode.Dispose(); renderingNode = null; }