public AnimationBuilder Transform(
            Matrix4x4 to,
            Matrix4x4?from        = null,
            TimeSpan?delay        = null,
            TimeSpan?duration     = null,
            RepeatOption?repeat   = null,
            EasingType easingType = DefaultEasingType,
            EasingMode easingMode = DefaultEasingMode)
        {
            if (!Matrix4x4.Decompose(to, out Vector3 toScale, out Quaternion toRotation, out Vector3 toTranslation))
            {
                ThrowThrowArgumentExceptionForToDecompose();
            }

            Vector3?   fromScale       = null;
            Quaternion?fromRotation    = null;
            Vector3?   fromTranslation = null;

            if (from.HasValue)
            {
                if (!Matrix4x4.Decompose(from.GetValueOrDefault(), out Vector3 scale3, out Quaternion rotation4, out Vector3 translation3))
                {
                    ThrowThrowArgumentExceptionForFromDecompose();
                }

                fromScale       = scale3;
                fromRotation    = rotation4;
                fromTranslation = translation3;
            }

            Scale(toScale, fromScale, delay, duration, repeat, easingType, easingMode);
            Orientation(toRotation, fromRotation, delay, duration, repeat, easingType, easingMode);
            Translation(toTranslation, fromTranslation, delay, duration, repeat, easingType, easingMode);

            return(this);
        public AnimationBuilder Scale(
            double to,
            double?from           = null,
            TimeSpan?delay        = null,
            TimeSpan?duration     = null,
            RepeatOption?repeat   = null,
            EasingType easingType = DefaultEasingType,
            EasingMode easingMode = DefaultEasingMode,
            FrameworkLayer layer  = FrameworkLayer.Composition)
        {
            if (layer == FrameworkLayer.Composition)
            {
                Vector3?from3 = from is null ? null : new((float)(double)from);
                Vector3 to3   = new((float)to);

                AddCompositionAnimationFactory(nameof(Visual.Scale), to3, from3, delay, duration, repeat, easingType, easingMode);
            }
            else
            {
                AddXamlTransformDoubleAnimationFactory(nameof(CompositeTransform.ScaleX), to, from, delay, duration, repeat, easingType, easingMode);
                AddXamlTransformDoubleAnimationFactory(nameof(CompositeTransform.ScaleY), to, from, delay, duration, repeat, easingType, easingMode);
            }

            return(this);
        }
Exemplo n.º 3
0
 public AnimationBuilder TimedKeyFrames(
     Action <ITimedKeyFrameAnimationBuilder <T> > build,
     TimeSpan?delay,
     RepeatOption?repeatOption)
 {
     return(Builder.TimedKeyFrames(Property, build, delay, repeatOption, Layer));
 }
Exemplo n.º 4
0
        public AnimationBuilder TimedKeyFrames <T, TState>(
            string property,
            TState state,
            Action <ITimedKeyFrameAnimationBuilder <T>, TState> build,
            TimeSpan?delay            = null,
            RepeatOption?repeatOption = null,
            FrameworkLayer layer      = FrameworkLayer.Composition)
            where T : unmanaged
        {
            if (layer == FrameworkLayer.Composition)
            {
                TimedKeyFrameAnimationBuilder <T> .Composition builder = new(property, delay, repeatOption ?? RepeatOption.Once);

                build(builder, state);

                this.compositionAnimationFactories.Add(builder);
            }
            else
            {
                TimedKeyFrameAnimationBuilder <T> .Xaml builder = new(property, delay, repeatOption ?? RepeatOption.Once);

                build(builder, state);

                this.xamlAnimationFactories.Add(builder);
            }

            return(this);
        }
Exemplo n.º 5
0
        public AnimationBuilder TimedKeyFrames <T>(
            string property,
            Action <ITimedKeyFrameAnimationBuilder <T> > build,
            TimeSpan?delay      = null,
            RepeatOption?repeat = null,
            AnimationDelayBehavior?delayBehavior = null,
            FrameworkLayer layer = FrameworkLayer.Composition)
            where T : unmanaged
        {
            if (layer == FrameworkLayer.Composition)
            {
                TimedKeyFrameAnimationBuilder <T> .Composition builder = new(
                    property,
                    delay,
                    repeat ?? RepeatOption.Once,
                    delayBehavior ?? DefaultDelayBehavior);

                build(builder);

                this.compositionAnimationFactories.Add(builder);
            }
            else
            {
                TimedKeyFrameAnimationBuilder <T> .Xaml builder = new(property, delay, repeat ?? RepeatOption.Once);

                build(builder);

                this.xamlAnimationFactories.Add(builder);
            }

            return(this);
        }
Exemplo n.º 6
0
 public AnimationBuilder TimedKeyFrames <TState>(
     TState state,
     Action <ITimedKeyFrameAnimationBuilder <T>, TState> build,
     TimeSpan?delay,
     RepeatOption?repeatOption)
 {
     return(Builder.TimedKeyFrames(Property, state, build, delay, repeatOption, Layer));
 }
Exemplo n.º 7
0
 public AnimationBuilder NormalizedKeyFrames(
     Action <INormalizedKeyFrameAnimationBuilder <T> > build,
     TimeSpan?delay,
     TimeSpan?duration,
     RepeatOption?repeatOption)
 {
     return(Builder.NormalizedKeyFrames(Property, build, delay, duration, repeatOption, Layer));
 }
Exemplo n.º 8
0
 public AnimationBuilder NormalizedKeyFrames <TState>(
     TState state,
     Action <INormalizedKeyFrameAnimationBuilder <T>, TState> build,
     TimeSpan?delay,
     TimeSpan?duration,
     RepeatOption?repeatOption,
     AnimationDelayBehavior?delayBehavior)
 {
     return(Builder.NormalizedKeyFrames(Property, state, build, delay, duration, repeatOption, delayBehavior, Layer));
 }
 public AnimationBuilder Orientation(
     Quaternion to,
     Quaternion?from       = null,
     TimeSpan?delay        = null,
     TimeSpan?duration     = null,
     RepeatOption?repeat   = null,
     EasingType easingType = DefaultEasingType,
     EasingMode easingMode = DefaultEasingMode)
 {
     return(AddCompositionAnimationFactory(nameof(Visual.Orientation), to, from, delay, duration, repeat, easingType, easingMode));
 }
 public AnimationBuilder Translation(
     Vector3 to,
     Vector3?from          = null,
     TimeSpan?delay        = null,
     TimeSpan?duration     = null,
     RepeatOption?repeat   = null,
     EasingType easingType = DefaultEasingType,
     EasingMode easingMode = DefaultEasingMode)
 {
     return(AddCompositionAnimationFactory(Properties.Composition.Translation(), to, from, delay, duration, repeat, easingType, easingMode));
 }
 public AnimationBuilder RotationAxis(
     Vector3 to,
     Vector3?from          = null,
     TimeSpan?delay        = null,
     TimeSpan?duration     = null,
     RepeatOption?repeat   = null,
     EasingType easingType = DefaultEasingType,
     EasingMode easingMode = DefaultEasingMode)
 {
     return(AddCompositionAnimationFactory(nameof(Visual.RotationAxis), to, from, delay, duration, repeat, easingType, easingMode));
 }
 public AnimationBuilder Offset(
     Axis axis,
     double to,
     double?from           = null,
     TimeSpan?delay        = null,
     TimeSpan?duration     = null,
     RepeatOption?repeat   = null,
     EasingType easingType = DefaultEasingType,
     EasingMode easingMode = DefaultEasingMode)
 {
     return(AddCompositionAnimationFactory(Properties.Composition.Offset(axis), (float)to, (float?)from, delay, duration, repeat, easingType, easingMode));
 }
        public AnimationBuilder Offset(
            Vector2 to,
            Vector2?from          = null,
            TimeSpan?delay        = null,
            TimeSpan?duration     = null,
            RepeatOption?repeat   = null,
            EasingType easingType = DefaultEasingType,
            EasingMode easingMode = DefaultEasingMode)
        {
            AddCompositionAnimationFactory(Properties.Composition.OffsetXY(), to, from, delay, duration, repeat, easingType, easingMode);

            return(this);
        }
        public AnimationBuilder AnchorPoint(
            Vector2 to,
            Vector2?from          = null,
            TimeSpan?delay        = null,
            TimeSpan?duration     = null,
            RepeatOption?repeat   = null,
            EasingType easingType = DefaultEasingType,
            EasingMode easingMode = DefaultEasingMode)
        {
            AddCompositionAnimationFactory(nameof(Visual.AnchorPoint), to, from, delay, duration, repeat, easingType, easingMode);

            return(this);
        }
        public AnimationBuilder Opacity(
            double to,
            double?from           = null,
            TimeSpan?delay        = null,
            TimeSpan?duration     = null,
            RepeatOption?repeat   = null,
            EasingType easingType = DefaultEasingType,
            EasingMode easingMode = DefaultEasingMode,
            FrameworkLayer layer  = FrameworkLayer.Composition)
        {
            if (layer == FrameworkLayer.Composition)
            {
                AddCompositionAnimationFactory(nameof(Visual.Opacity), (float)to, (float?)from, delay, duration, repeat, easingType, easingMode);
            }
            else
            {
                AddXamlAnimationFactory(nameof(UIElement.Opacity), to, from, delay, duration, repeat, easingType, easingMode);
            }

            return(this);
        }
        public AnimationBuilder RotationInDegrees(
            double to,
            double?from           = null,
            TimeSpan?delay        = null,
            TimeSpan?duration     = null,
            RepeatOption?repeat   = null,
            EasingType easingType = DefaultEasingType,
            EasingMode easingMode = DefaultEasingMode,
            FrameworkLayer layer  = FrameworkLayer.Composition)
        {
            if (layer == FrameworkLayer.Composition)
            {
                AddCompositionAnimationFactory(nameof(Visual.RotationAngleInDegrees), (float)to, (float?)from, delay, duration, repeat, easingType, easingMode);
            }
            else
            {
                AddXamlTransformDoubleAnimationFactory(nameof(CompositeTransform.Rotation), to, from, delay, duration, repeat, easingType, easingMode);
            }

            return(this);
        }
        public AnimationBuilder CenterPoint(
            Axis axis,
            double to,
            double?from           = null,
            TimeSpan?delay        = null,
            TimeSpan?duration     = null,
            RepeatOption?repeat   = null,
            EasingType easingType = DefaultEasingType,
            EasingMode easingMode = DefaultEasingMode,
            FrameworkLayer layer  = FrameworkLayer.Composition)
        {
            if (layer == FrameworkLayer.Composition)
            {
                AddCompositionAnimationFactory(Properties.Composition.CenterPoint(axis), (float)to, (float?)from, delay, duration, repeat, easingType, easingMode);
            }
            else
            {
                AddXamlTransformDoubleAnimationFactory(Properties.Xaml.CenterPoint(axis), to, from, delay, duration, repeat, easingType, easingMode);
            }

            return(this);
        }
        public AnimationBuilder CenterPoint(
            Vector2 to,
            Vector2?from          = null,
            TimeSpan?delay        = null,
            TimeSpan?duration     = null,
            RepeatOption?repeat   = null,
            EasingType easingType = DefaultEasingType,
            EasingMode easingMode = DefaultEasingMode,
            FrameworkLayer layer  = FrameworkLayer.Composition)
        {
            if (layer == FrameworkLayer.Composition)
            {
                AddCompositionAnimationFactory(Properties.Composition.CenterPointXY(), to, from, delay, duration, repeat, easingType, easingMode);
            }
            else
            {
                AddXamlTransformDoubleAnimationFactory(nameof(CompositeTransform.CenterX), to.X, from?.X, delay, duration, repeat, easingType, easingMode);
                AddXamlTransformDoubleAnimationFactory(nameof(CompositeTransform.CenterY), to.Y, from?.Y, delay, duration, repeat, easingType, easingMode);
            }

            return(this);
        }
Exemplo n.º 19
0
        public AnimationBuilder NormalizedKeyFrames <T>(
            string property,
            Action <INormalizedKeyFrameAnimationBuilder <T> > build,
            TimeSpan?delay            = null,
            TimeSpan?duration         = null,
            RepeatOption?repeatOption = null,
            FrameworkLayer layer      = FrameworkLayer.Composition)
            where T : unmanaged
        {
            if (layer == FrameworkLayer.Composition)
            {
                NormalizedKeyFrameAnimationBuilder <T> .Composition builder = new(
                    property,
                    delay,
                    duration ?? DefaultDuration,
                    repeatOption ?? RepeatOption.Once);

                build(builder);

                this.compositionAnimationFactories.Add(builder);
            }
            else
            {
                NormalizedKeyFrameAnimationBuilder <T> .Xaml builder = new(
                    property,
                    delay,
                    duration ?? DefaultDuration,
                    repeatOption ?? RepeatOption.Once);

                build(builder);

                this.xamlAnimationFactories.Add(builder);
            }

            return(this);
        }