private static void ReadXMLBezierPositions(XmlReader reader, EffectStateRatioSet set) { var bcps = new List <BezierControlPoint>(2); while (reader.Read()) { if (reader.IsStartElement()) { if (reader.Name == "BezierPosition") { try { var pos = reader.GetAttribute("Position"); var bcp = BezierControlPoint.Deserialize(pos); bcps.Add(bcp); } catch { } } } } if (bcps.Count >= 2) { set.BAnalyzer = new BezierAnalyzer(bcps.ToArray()); } reader.Close(); }
public void SetLinearRatio() { bcps = new BezierControlPoint[] { BezierControlPoint.Deserialize("VT=1 SX=0 SY=128 TDX=0.707106781 TDY=-0.707106781 TL=60"), BezierControlPoint.Deserialize("VF=1 SX=128 SY=0 FDX=-0.707106781 FDY=0.707106781 FL=60") }; IsLinear = true; DrawandRefresh(); }
private static void ReadXMLRatioMakers(XmlReader reader, EffectStateRatioSet set) { while (reader.Read()) { if (reader.Name == "RatioMaker") { RatioType type = RatioType.X; switch (reader.GetAttribute("Type")) { case "X": type = RatioType.X; break; case "Y": type = RatioType.Y; break; case "Alpha": type = RatioType.Alpha; break; case "Rotation": type = RatioType.Rotation; break; case "ScaleX": type = RatioType.ScaleX; break; case "ScaleY": type = RatioType.ScaleY; break; case "BezierPosition": type = RatioType.BezierPosition; break; } IRatioMaker maker = null; switch (reader.GetAttribute("MakerType")) { case "LinearRatioMaker": maker = new LinearRatioMaker(); break; case "ConstantRatioMaker": maker = new ConstantRatioMaker(); break; case "BezierRatioMaker": var p1 = BezierControlPoint.Deserialize(reader.GetAttribute("P1")); var p2 = BezierControlPoint.Deserialize(reader.GetAttribute("P2")); maker = new BezierRatioMaker(p1, p2); break; } maker.Set = set; set[type] = maker; } } reader.Close(); set.SetDefaultToNullMaker(); }