public override SvgPathSegList VisitRectElement(SvgRectElement element) { var result = new SvgPathSegList(); var x = element.X?.Value ?? 0; var y = element.Y?.Value ?? 0; var rx = element.RadiusX; var ry = element.RadiusY; var w = element.Width?.Value ?? 0; var h = element.Height?.Value ?? 0; result.Add(new SvgPathSegMovetoAbs(x + rx, y)); result.Add(new SvgPathSegLinetoHorizontalAbs(x + w - rx)); result.Add(new SvgPathSegArcAbs(rx, ry, 0, false, true, x + w, y + ry)); result.Add(new SvgPathSegLinetoAbs(x + w, y + h - ry)); result.Add(new SvgPathSegArcAbs(rx, ry, 0, false, true, x + w - rx, y + h)); result.Add(new SvgPathSegLinetoAbs(x + rx, y + h)); result.Add(new SvgPathSegArcAbs(rx, ry, 0, false, true, x, y + h - ry)); result.Add(new SvgPathSegLinetoAbs(x, y + ry)); result.Add(new SvgPathSegArcAbs(rx, ry, 0, false, true, x + rx, y)); result.Add(new SvgPathSegClosePath()); return(result); }
public void TestInternalReference() { SvgUseElement elm = Util.GetXmlElement("<use xlink:href='#foo' /><rect id='foo' width='100' height='100' />", "", "use") as SvgUseElement; SvgRectElement rect = elm.OwnerDocument.SelectSingleNode("//*[@id='foo']") as SvgRectElement; Assert.IsNotNull(elm.InstanceRoot); Assert.AreEqual(elm, elm.InstanceRoot.CorrespondingUseElement); Assert.AreEqual(rect, elm.InstanceRoot.CorrespondingElement); }
public void SetUp() { if (doc == null) { SvgWindow wnd = new SvgWindow(100, 100, null); doc = new SvgDocument(wnd); doc.Load("events_01.svg"); rect = (SvgRectElement)doc.SelectSingleNode("//*[local-name()='rect']"); g = (SvgGElement)doc.SelectSingleNode("//*[local-name()='g']"); } eventStatus = 0; }
protected override void RenderRect(CanvasDrawingSession session, SvgRectElement element) { var x = this.LengthConverter.ConvertX(element.X); var y = this.LengthConverter.ConvertY(element.Y); var width = this.LengthConverter.ConvertX(element.Width); var height = this.LengthConverter.ConvertY(element.Height); var rx = this.LengthConverter.ConvertX(element.RoundedX); var ry = this.LengthConverter.ConvertX(element.RoundedY); using (var geometry = CanvasGeometry.CreateRoundedRectangle(this.ResourceCreator, x, y, width, height, rx, ry)) { this.RenderGeometory(session, geometry, element.Transform.Result, element.Style); } }
public override void VisitRectElement(SvgRectElement element) { // rect render visitor here??? base.VisitRectElement(element); var x = element.X?.Value ?? 0; var y = element.Y?.Value ?? 0; var width = element.Width?.Value ?? 0; var height = element.Height?.Value ?? 0; var rx = element.RadiusX; var ry = element.RadiusY; var rect = new RoundedRect(x, y, width, height, rx, ry); this.RenderShapeToCanvas(element, rect); }
public void ChangeStyleAndRender() { string svgPath = Path.Combine(dirPath, "rectangleFillStroke.svg"); doc.Load(svgPath); CompareUtil util = new CompareUtil(); Assert.IsTrue(util.CompareImages(renderer.Render(doc), Path.Combine(dirPath, "rectangleFillStroke.svg.png"))); SvgRectElement elm = doc.GetElementById("theRect") as SvgRectElement; elm.Style.SetProperty("fill", "yellow", ""); Assert.IsTrue(util.CompareImages(renderer.Render(doc), Path.Combine(dirPath, "changeStyle.png"))); }
public static GraphicsPath CreatePath(SvgRectElement element) { GraphicsPath gp = new GraphicsPath(); RectangleF rect = new RectangleF((float)element.X.AnimVal.Value, (float)element.Y.AnimVal.Value, (float)element.Width.AnimVal.Value, (float)element.Height.AnimVal.Value); float rx = (float)element.Rx.AnimVal.Value; float ry = (float)element.Ry.AnimVal.Value; if (rx == 0F && ry == 0F) { gp.AddRectangle(rect); } else { AddRoundedRect(gp, rect, rx, ry); } return(gp); }
private void InsertSquare(SvgGroupElement group, int xIndex, int yIndex) { bool isBlack = ((xIndex + yIndex) % 2 == 0); if (!isBlack) { // nothing to draw in case of a white square return; } float x = m_UpperLeft.X + xIndex * m_SquareLength; float y = m_UpperLeft.Y + yIndex * m_SquareLength; SvgRectElement rectangle = new SvgRectElement( x, y, m_SquareLength, m_SquareLength ); rectangle.Style = s_FilledBlack; group.AddChild(rectangle); }
public void AddSquares(float yOffset, float xOffset, float sideLength, int xCount, int yCount) { SvgGroupElement squaresGroup = new SvgGroupElement("Squares"); squaresGroup.Style = s_NormalLineStyle; float xStart = this.Origin.X + xOffset - xCount / 2.0F * sideLength; float yStart = this.Origin.Y + yOffset; for (int i = 0; i < xCount; i++) { for (int j = 0; j < yCount; j++) { SvgRectElement rectElement = new SvgRectElement( GetSvgLength(xStart + i * sideLength), GetSvgLength(yStart + j * sideLength), GetSvgLength(sideLength), GetSvgLength(sideLength)); squaresGroup.AddChild(rectElement); } } this.Root.AddChild(squaresGroup); }
public static GraphicsPath CreatePath(SvgRectElement element) { float dx = (float)Math.Round(element.X.AnimVal.Value, 4); float dy = (float)Math.Round(element.Y.AnimVal.Value, 4); float width = (float)Math.Round(element.Width.AnimVal.Value, 4); float height = (float)Math.Round(element.Height.AnimVal.Value, 4); float rx = (float)Math.Round(element.Rx.AnimVal.Value, 4); float ry = (float)Math.Round(element.Ry.AnimVal.Value, 4); if (width <= 0 || height <= 0) { return(null); } if (rx <= 0 && ry > 0) { rx = ry; } else if (rx > 0 && ry <= 0) { ry = rx; } GraphicsPath gp = new GraphicsPath(); RectangleF rect = new RectangleF(dx, dy, width, height); if (rx.Equals(0F) && ry.Equals(0F)) { gp.AddRectangle(rect); } else { AddRoundedRect(gp, rect, rx, ry); } return(gp); }
public Geometry CreateGeometry(SvgRectElement element) { double dx = Math.Round(element.X.AnimVal.Value, 4); double dy = Math.Round(element.Y.AnimVal.Value, 4); double width = Math.Round(element.Width.AnimVal.Value, 4); double height = Math.Round(element.Height.AnimVal.Value, 4); double rx = Math.Round(element.Rx.AnimVal.Value, 4); double ry = Math.Round(element.Ry.AnimVal.Value, 4); if (width <= 0 || height <= 0) { return(null); } if (rx <= 0 && ry > 0) { rx = ry; } else if (rx > 0 && ry <= 0) { ry = rx; } return(new RectangleGeometry(new Rect(dx, dy, width, height), rx, ry)); }
public virtual void VisitRectElement(SvgRectElement element) => DefaultVisit(element);
public override void VisitRectElement(SvgRectElement element) => VisitPathSegList(element, element.ConvertToPathSegList());
protected abstract void RenderRect(TSession session, SvgRectElement element);