Example #1
0
        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);
        }
Example #3
0
        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));
            }
        }
Example #4
0
        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);
        }