YamlObject FromTrimPath(TrimPath content, YamlMap superclassContent) { var result = superclassContent; result.Add(nameof(content.Start), FromAnimatable(content.Start)); result.Add(nameof(content.End), FromAnimatable(content.End)); result.Add(nameof(content.Offset), FromAnimatable(content.Offset)); return(result); }
YamlObject FromTrimPath(TrimPath content, YamlMap superclassContent) { var result = superclassContent; result.Add("StartPercent", FromAnimatable(content.StartPercent)); result.Add("EndPercent", FromAnimatable(content.EndPercent)); result.Add("OffsetDegrees", FromAnimatable(content.OffsetDegrees)); return(result); }
XElement FromTrimPath(TrimPath content) { return(new XElement("TrimPath", GetContents())); IEnumerable <XObject> GetContents() { foreach (var item in GetShapeLayerContentContents(content)) { yield return(item); } yield return(FromAnimatable(nameof(content.StartTrim), content.StartTrim)); yield return(FromAnimatable(nameof(content.EndTrim), content.EndTrim)); yield return(FromAnimatable(nameof(content.Offset), content.Offset)); } }
TrimPath ComposeTrimPaths(TrimPath a, TrimPath b) { if (a is null) { return(b); } else if (b is null) { return(a); } if (!a.Start.IsAnimated && !a.Start.IsAnimated && !a.Offset.IsAnimated) { // a is not animated. if (!b.Start.IsAnimated && !b.Start.IsAnimated && !b.Offset.IsAnimated) { // Both are not animated. if (a.Start.InitialValue == b.End.InitialValue) { // a trims out everything. b is unnecessary. return(a); } else if (b.Start.InitialValue == b.End.InitialValue) { // b trims out everything. a is unnecessary. return(b); } else if (a.Start.InitialValue.Value == 0 && a.End.InitialValue.Value == 1 && a.Offset.InitialValue.Degrees == 0) { // a is trimming nothing. a is unnecessary. return(b); } else if (b.Start.InitialValue.Value == 0 && b.End.InitialValue.Value == 1 && b.Offset.InitialValue.Degrees == 0) { // b is trimming nothing. b is unnecessary. return(a); } } } Translation.Issues.MultipleTrimPathsIsNotSupported(); return(b); }