public LineTo(char command, ShapeUtil.StringSplitter value) : base(command) { if (char.ToLower(command) == 'h') { PositionType = eType.Horizontal; double v = value.ReadNextValue(); Points = new Point[] { new Point(v, 0) }; return; } if (char.ToLower(command) == 'v') { PositionType = eType.Vertical; double v = value.ReadNextValue(); Points = new Point[] { new Point(0, v) }; return; } PositionType = eType.Point; List <Point> list = new List <Point>(); while (value.More) { Point p = value.ReadNextPoint(); list.Add(p); } Points = list.ToArray(); }
public static Transform ParseTransform(string value) { string type = ExtractUntil(value, '('); string v1 = ExtractBetween(value, '(', ')'); ShapeUtil.StringSplitter split = new ShapeUtil.StringSplitter(v1); List <double> values = new List <double>(); while (split.More) { values.Add(split.ReadNextValue()); } if (type == SVGTags.sTranslate) { return(new TranslateTransform(values[0], values[1])); } if (type == SVGTags.sMatrix) { return(Transform.Parse(v1)); } if (type == SVGTags.sScale) { return(new ScaleTransform(values[0], values[1])); } if (type == SVGTags.sRotate) { return(new RotateTransform(values[0], values[1], values[2])); } return(null); }
public EllipticalArcTo(char command, ShapeUtil.StringSplitter value) : base(command) { RX = value.ReadNextValue(); RY = value.ReadNextValue(); AxisRotation = value.ReadNextValue(); double arcflag = value.ReadNextValue(); LargeArc = (arcflag > 0); double sweepflag = value.ReadNextValue(); Clockwise = (sweepflag > 0); X = value.ReadNextValue(); Y = value.ReadNextValue(); }
protected virtual void Parse(string name, string value) { if (name == SVGTags.sTransform) { Transform = ShapeUtil.ParseTransform(value.ToLower()); return; } if (name == SVGTags.sStroke) { GetStroke().Color = SVG.PaintServers.Parse(value); return; } if (name == SVGTags.sStrokeWidth) { GetStroke().Width = XmlUtil.ParseDouble(value); return; } if (name == SVGTags.sStrokeOpacity) { GetStroke().Opacity = XmlUtil.ParseDouble(value) * 100; return; } if (name == SVGTags.sStrokeDashArray) { if (value == "none") { GetStroke().StrokeArray = null; return; } ShapeUtil.StringSplitter sp = new ShapeUtil.StringSplitter(value); List <double> a = new List <double>(); while (sp.More) { a.Add(sp.ReadNextValue()); } GetStroke().StrokeArray = a.ToArray(); return; } if (name == SVGTags.sStrokeLinecap) { GetStroke().LineCap = (Stroke.eLineCap)Enum.Parse(typeof(Stroke.eLineCap), value); return; } if (name == SVGTags.sStrokeLinejoin) { GetStroke().LineJoin = (Stroke.eLineJoin)Enum.Parse(typeof(Stroke.eLineJoin), value); return; } if (name == SVGTags.sFill) { GetFill().Color = SVG.PaintServers.Parse(value); return; } if (name == SVGTags.sFillOpacity) { GetFill().Opacity = XmlUtil.ParseDouble(value) * 100; return; } if (name == SVGTags.sFillRule) { GetFill().FillRule = (Fill.eFillRule)Enum.Parse(typeof(Fill.eFillRule), value); return; } if (name == SVGTags.sStyle) { foreach (ShapeUtil.Attribute item in XmlUtil.SplitStyle(value)) { Parse(item); } } //********************** text ******************* if (name == SVGTags.sFontFamily) { GetTextStyle().FontFamily = value; return; } if (name == SVGTags.sFontSize) { GetTextStyle().FontSize = XmlUtil.AttrValue(new ShapeUtil.Attribute(name, value)); return; } if (name == SVGTags.sFontWeight) { GetTextStyle().Fontweight = (FontWeight) new FontWeightConverter().ConvertFromString(value); return; } if (name == SVGTags.sFontStyle) { GetTextStyle().Fontstyle = (FontStyle) new FontStyleConverter().ConvertFromString(value); return; } if (name == SVGTags.sTextDecoration) { TextDecoration t = new TextDecoration(); if (value == "none") { return; } if (value == "underline") { t.Location = TextDecorationLocation.Underline; } if (value == "overline") { t.Location = TextDecorationLocation.OverLine; } if (value == "line-through") { t.Location = TextDecorationLocation.Strikethrough; } TextDecorationCollection tt = new TextDecorationCollection(); tt.Add(t); GetTextStyle().TextDecoration = tt; return; } if (name == SVGTags.sTextAnchor) { if (value == "start") { GetTextStyle().TextAlignment = TextAlignment.Left; } if (value == "middle") { GetTextStyle().TextAlignment = TextAlignment.Center; } if (value == "end") { GetTextStyle().TextAlignment = TextAlignment.Right; } return; } if (name == "word-spacing") { GetTextStyle().WordSpacing = XmlUtil.AttrValue(new ShapeUtil.Attribute(name, value)); return; } if (name == "letter-spacing") { GetTextStyle().LetterSpacing = XmlUtil.AttrValue(new ShapeUtil.Attribute(name, value)); return; } if (name == "baseline-shift") { //GetTextStyle().BaseLineShift = XmlUtil.AttrValue(new ShapeUtil.Attribute(name, value)); GetTextStyle().BaseLineShift = value; return; } }