private void ParseGradientLink(ref RageSvgGradient currentGradient, string gradientKey) { RageSvgGradient refGradient; if (_gradients.TryGetValue(gradientKey, out refGradient)) { currentGradient.CopyDataFrom(refGradient); } }
public void CopyDataFrom(RageSvgGradient src) { Id = src.Id; Type = src.Type; X1 = src.X1; X2 = src.X2; Y1 = src.Y1; Y2 = src.Y2; StartColor = src.StartColor; EndColor = src.EndColor; }
private RageSvgObject() { Id = ""; Paths = new List <RageSvgPathElement>(); Parent = null; PointIdx = GroupId = PathId = 0; CursorPos = Vector3.zero; Style = RageSvgStyle.NewInstance(); Gradient = null; StyleString = ClipPathUnits = ClipPath = ""; }
public void CopyDataFrom(RageSvgStyle style) { OutlineType = style.OutlineType; OutlineColor1 = style.OutlineColor1; OutlineColor2 = style.OutlineColor2; OutlineAlpha = style.OutlineAlpha; OutlineWidth = style.OutlineWidth; CornersType = style.CornersType; FillType = style.FillType; RageSvgGradient = style.RageSvgGradient; FillColor1 = style.FillColor1; FillColor2 = style.FillColor2; FillColor1Alpha = style.FillColor1Alpha; FillColor2Alpha = style.FillColor2Alpha; HasFill = style.HasFill; HasOutline = style.HasOutline; HasGradient = style.HasGradient; }
public RageSvgStyle() { OutlineType = Spline.OutlineType.None; OutlineColor1 = Color.black; OutlineColor2 = Color.black; OutlineAlpha = 1f; OutlineWidth = 1f; CornersType = Spline.CornerType.Beak; //Was: Default FillType = Spline.FillType.Solid; RageSvgGradient = null; FillColor1 = Color.black; FillColor2 = Color.black; FillColor1Alpha = 1f; FillColor2Alpha = 1f; HasFill = true; HasOutline = false; HasGradient = false; }
private void ParseGradient(XmlNode svgEntry, RageSvgObject pathData, RageSvgGradient.GradientType gradientType, bool subPath, int level) { // Initializes a new Gradient pathData.Gradient = RageSvgGradient.NewInstance(); pathData.Gradient.Type = gradientType; float radius = 0f; var gradientTransformString = ""; XmlAttributeCollection attributes = svgEntry.Attributes; if (attributes != null) { foreach (XmlAttribute svgAttribute in attributes) { string svgCommand = svgAttribute.Name; string svgValue = svgAttribute.Value; // Parse valid Svg style commands, if any found, iterate // if (ParseSvgStyle(svgCommand, svgValue)) continue; switch (svgCommand) { //<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="170.0791" y1="85.0396" x2="170.0791" y2="28.3472"> case ("id"): pathData.Gradient.Id = svgValue; break; case ("xlink:href"): ParseGradientLink(ref pathData.Gradient, svgValue.Substring(1)); break; case ("x1"): pathData.Gradient.X1 = svgValue.SvgToFloat(); break; case ("y1"): pathData.Gradient.Y1 = svgValue.SvgToFloat(); break; case ("x2"): pathData.Gradient.X2 = svgValue.SvgToFloat(); break; case ("y2"): pathData.Gradient.Y2 = svgValue.SvgToFloat(); break; case ("cx"): pathData.Gradient.X2 = svgValue.SvgToFloat(); break; case ("cy"): pathData.Gradient.Y2 = svgValue.SvgToFloat(); break; case ("fx"): pathData.Gradient.X1 = svgValue.SvgToFloat(); break; case ("fy"): pathData.Gradient.Y1 = svgValue.SvgToFloat(); break; case ("r"): radius = svgValue.SvgToFloat(); break; case ("gradientTransform"): gradientTransformString = svgValue; break; } } } if (!(Mathfx.Approximately(radius, 0f))) { pathData.Gradient.X2 = pathData.Gradient.X1 + radius; pathData.Gradient.Y2 = pathData.Gradient.Y2 + radius; } if (DebugStyleCreation) { Debug.Log("######### Gradient children Count: " + svgEntry.ChildNodes.Count); } if (svgEntry.ChildNodes.Count != 0) { level++; foreach (XmlNode childNode in svgEntry.ChildNodes) { ParseSvg(childNode, pathData, subPath, level); } } ApplyGradientTransform(gradientTransformString, pathData); if (_gradients.ContainsKey(pathData.Gradient.Id)) { return; } if (DebugStyleCreation) { Debug.Log("Gradient entry added: " + pathData.Gradient.Id); } // After all "stop" child nodes are parsed, actually add the new dictionary item _gradients.Add(pathData.Gradient.Id, pathData.Gradient); }