internal override void Write(StringBuilder sb, SvgConverter conv) { sb.AppendFormat("matrix({0},{1},{2},{3},{4},{5}) ", conv.ToSvgValue(_Values[0]), conv.ToSvgValue(_Values[1]), conv.ToSvgValue(_Values[2]), conv.ToSvgValue(_Values[3]), conv.ToSvgLength(_Values[4]), conv.ToSvgLength(-_Values[5])); }
internal override void Write(StringBuilder sb, SvgConverter conv) { if (_Center.HasValue) { sb.AppendFormat("rotate({0},{1},{2}) ", conv.ToSvgValue(-_Angle), conv.ToSvgLength(_Center.Value.X), conv.ToSvgLength(-_Center.Value.Y)); } else { sb.AppendFormat("rotate({0}) ", conv.ToSvgValue(_Angle)); } }
//-------------------------------------------------------------------------------------------------- public MemoryStream WriteToStream() { var conv = new SvgConverter() { DotsPerInch = DotsPerInch, Scale = 25.4 / DotsPerInch }; var xmlWriterSettings = new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true, IndentChars = " ", }; var stream = new MemoryStream(); var writer = XmlWriter.Create(stream, xmlWriterSettings); writer.WriteStartDocument(); writer.WriteDocType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd", null); writer.WriteStartElement("svg", XmlnsSvg); writer.WriteAttributeString("width", $"{conv.ToSvgValue(Width)}mm"); // Use AngleToSvg to get unscaled values writer.WriteAttributeString("height", $"{conv.ToSvgValue(Height)}mm"); writer.WriteAttributeString("viewBox", $"0, 0, {conv.ToSvgLength(Width)}, {conv.ToSvgLength(Height)}"); writer.WriteAttributeString("version", "1.1"); writer.WriteAttributeString("xmlns", "xlink", null, "http://www.w3.org/1999/xlink"); writer.WriteAttributeString("xmlns", "xml", null, "http://www.w3.org/XML/1998/namespace"); writer.WriteAttributeString("xmlns", "sodipodi", null, XmlnsSodipodi); writer.WriteAttributeString("xmlns", "inkscape", null, XmlnsInkscape); writer.WriteStartElement("namedview", XmlnsSodipodi); writer.WriteAttributeString("document-units", XmlnsInkscape, "mm"); writer.WriteEndElement(); base.Write(writer, conv); writer.WriteEndElement(); writer.Close(); return(stream); }
internal override Pnt2d?Write(StringBuilder sb, Pnt2d?lastPnt, SvgConverter conv) { if (!(lastPnt.HasValue && conv.AreEqual(lastPnt.Value, Start))) { sb.AppendFormat("M{0},{1} ", conv.ToSvgLength(Start.X), conv.ToSvgLength(-Start.Y)); } sb.AppendFormat("A{0},{1} {2} {3} {4} {5},{6} ", conv.ToSvgLength(RadiusX), conv.ToSvgLength(RadiusY), conv.ToSvgValue(Angle), (uint)Size, (uint)Sweep, conv.ToSvgLength(End.X), conv.ToSvgLength(-End.Y)); return(End); }
internal override void Write(StringBuilder sb, SvgConverter conv) { sb.AppendFormat("skewy({0}) ", conv.ToSvgValue(_Skew)); }
internal override void Write(StringBuilder sb, SvgConverter conv) { sb.AppendFormat("scale({0},{1}) ", conv.ToSvgValue(_Sx), conv.ToSvgValue(_Sy)); }