Ejemplo n.º 1
0
 /// <summary>
 ///		Asigna la función asociada a la animación
 /// </summary>
 private IEasingFunction AssignEasingFuntion(ActionBaseModel action)
 {
     if (action != null && action.Eases.Count > 0)
     {
         return(GetEasingFunction(action.Eases[0]));
     }
     else
     {
         return(null);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        ///		Crea la animación de punto sobre un control
        /// </summary>
        private void CreatePointAnimation(UIElement control, Point?from, Point?to, PropertyPath propertyPath, ActionBaseModel action)
        {
            PointAnimation animation = new PointAnimation();

            // Asigna las propiedades From y To de la animación
            if (from != null)
            {
                animation.From = from;
            }
            if (to != null)
            {
                animation.To = to;
            }
            // Asigna las funciones
            animation.EasingFunction = AssignEasingFuntion(action);
            // Asigna la animación al storyBoard
            AddAnimationToStoryBoard(control, animation, action, propertyPath);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///		Crea una animación Double sobre un control
        /// </summary>
        private void CreateDoubleAnimation(DependencyObject control, double?from, double?to, PropertyPath propertyPath, ActionBaseModel action)
        {
            DoubleAnimation animation = new DoubleAnimation();

            // Asigna las propiedades
            if (from != null)
            {
                animation.From = from;
            }
            if (to != null)
            {
                animation.To = to;
            }
            // Asigna las funciones
            animation.EasingFunction = AssignEasingFuntion(action);
            // Añade la animación al storyBoard
            AddAnimationToStoryBoard(control, animation, action, propertyPath);
        }
Ejemplo n.º 4
0
        /// <summary>
        ///		Obtiene una animación que utiliza una ruta
        /// </summary>
        private DoubleAnimationUsingPath CreateDoubleAnimationUsingPath(UIElement control, ActionBaseModel action, PathGeometry pathGeometry,
                                                                        PathAnimationSource source, PropertyPath propertyPath)
        {
            DoubleAnimationUsingPath animation = new DoubleAnimationUsingPath();

            // Asigna las propiedades de la animación
            animation.PathGeometry = pathGeometry;
            animation.Source       = source;
            // Añade la animación al storyboard
            AddAnimationToStoryBoard(control, animation, action, propertyPath);
            // Devuelve la animación
            return(animation);
        }
Ejemplo n.º 5
0
 /// <summary>
 ///		Comprueba si se deben añadir animaciones
 /// </summary>
 private bool CheckMustAnimate(ActionBaseModel action)
 {
     return(sbStoryBoard != null && UseAnimation && action.MustAnimate && action.TimeLine.MustAnimate);
 }
Ejemplo n.º 6
0
 public EaseBaseModel(ActionBaseModel action, Mode mode)
 {
     Action   = action;
     EaseMode = mode;
 }
Ejemplo n.º 7
0
 public ExponentialEaseModel(ActionBaseModel action, Mode mode, double exponent)
     : base(action, mode)
 {
     Exponent = exponent;
 }
Ejemplo n.º 8
0
 public QuadraticEaseModel(ActionBaseModel action, Mode mode) : base(action, mode)
 {
 }
        /// <summary>
        ///		Carga las funciones asociadas a una acción
        /// </summary>
        private void LoadEases(ActionBaseModel action, MLNode nodeML)
        {
            foreach (MLNode childML in nodeML.Nodes)
            {
                switch (childML.Name)
                {
                case ComicRepositoryConstants.TagBounceEase:
                    action.Eases.Add(new BounceEaseModel(action,
                                                         GetEaseMode(childML.Attributes[ComicRepositoryConstants.TagEasingMode].Value),
                                                         childML.Attributes[ComicRepositoryConstants.TagBounces].Value.GetInt(2),
                                                         childML.Attributes[ComicRepositoryConstants.TagBounciness].Value.GetDouble(0.5)));
                    break;

                case ComicRepositoryConstants.TagBackEase:
                    action.Eases.Add(new BackEaseModel(action,
                                                       GetEaseMode(childML.Attributes[ComicRepositoryConstants.TagEasingMode].Value),
                                                       childML.Attributes[ComicRepositoryConstants.TagAmplitude].Value.GetDouble(0.5)));
                    break;

                case ComicRepositoryConstants.TagCircleEase:
                    action.Eases.Add(new CircleEaseModel(action,
                                                         GetEaseMode(childML.Attributes[ComicRepositoryConstants.TagEasingMode].Value)));
                    break;

                case ComicRepositoryConstants.TagCubicEase:
                    action.Eases.Add(new CubicEaseModel(action,
                                                        GetEaseMode(childML.Attributes[ComicRepositoryConstants.TagEasingMode].Value)));
                    break;

                case ComicRepositoryConstants.TagElasticEase:
                    action.Eases.Add(new ElasticEaseModel(action,
                                                          GetEaseMode(childML.Attributes[ComicRepositoryConstants.TagEasingMode].Value),
                                                          childML.Attributes[ComicRepositoryConstants.TagOscillations].Value.GetInt(2),
                                                          childML.Attributes[ComicRepositoryConstants.TagSpringiness].Value.GetInt(1)));
                    break;

                case ComicRepositoryConstants.TagQuadraticEase:
                    action.Eases.Add(new QuadraticEaseModel(action,
                                                            GetEaseMode(childML.Attributes[ComicRepositoryConstants.TagEasingMode].Value)));
                    break;

                case ComicRepositoryConstants.TagQuarticEase:
                    action.Eases.Add(new QuarticEaseModel(action,
                                                          GetEaseMode(childML.Attributes[ComicRepositoryConstants.TagEasingMode].Value)));
                    break;

                case ComicRepositoryConstants.TagSineEase:
                    action.Eases.Add(new SineEaseModel(action,
                                                       GetEaseMode(childML.Attributes[ComicRepositoryConstants.TagEasingMode].Value)));
                    break;

                case ComicRepositoryConstants.TagExponentialEase:
                    action.Eases.Add(new ExponentialEaseModel(action,
                                                              GetEaseMode(childML.Attributes[ComicRepositoryConstants.TagEasingMode].Value),
                                                              childML.Attributes[ComicRepositoryConstants.TagExponent].Value.GetDouble(1)));
                    break;

                case ComicRepositoryConstants.TagPowerEase:
                    action.Eases.Add(new PowerEaseModel(action,
                                                        GetEaseMode(childML.Attributes[ComicRepositoryConstants.TagEasingMode].Value),
                                                        childML.Attributes[ComicRepositoryConstants.TagPower].Value.GetDouble(1)));
                    break;
                }
            }
        }
Ejemplo n.º 10
0
 public SineEaseModel(ActionBaseModel action, Mode mode) : base(action, mode)
 {
 }
Ejemplo n.º 11
0
 public CubicEaseModel(ActionBaseModel action, Mode mode) : base(action, mode)
 {
 }
Ejemplo n.º 12
0
 public PowerEaseModel(ActionBaseModel action, Mode mode, double power) : base(action, mode)
 {
     Power = power;
 }
Ejemplo n.º 13
0
 public CircleEaseModel(ActionBaseModel action, Mode mode) : base(action, mode)
 {
 }
Ejemplo n.º 14
0
 public ElasticEaseModel(ActionBaseModel action, Mode mode, int oscillations, double springiness)
     : base(action, mode)
 {
     Oscillations = oscillations;
     Springiness  = springiness;
 }
Ejemplo n.º 15
0
 public BounceEaseModel(ActionBaseModel action, Mode mode, int bounces, double bounciness) : base(action, mode)
 {
     Bounces    = bounces;
     Bounciness = bounciness;
 }
        /// <summary>
        ///		Carga los datos de un timeline
        /// </summary>
        internal TimeLineModel LoadTimeLine(PageModel page, MLNode nodeML)
        {
            TimeLineModel timeLine = new TimeLineModel(page, nodeML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true));

            // Asigna los atributos
            AssignAttributesAction(nodeML, timeLine.Parameters, 0, 3);
            // Carga el contenido del timeLine
            foreach (MLNode childML in nodeML.Nodes)
            {
                ActionBaseModel action = null;

                // Obtiene la acción
                switch (childML.Name)
                {
                case ComicRepositoryConstants.TagActionShowImage:
                    action = new SetVisibilityActionModel(timeLine,
                                                          childML.Attributes[ComicRepositoryConstants.TagKey].Value,
                                                          childML.Attributes[ComicRepositoryConstants.TagVisible].Value.GetBool(true),
                                                          childML.Attributes[ComicRepositoryConstants.TagOpacity].Value.GetDouble(),
                                                          childML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true));
                    break;

                case ComicRepositoryConstants.TagActionResize:
                    action = new ResizeActionModel(timeLine,
                                                   childML.Attributes[ComicRepositoryConstants.TagKey].Value,
                                                   childML.Attributes[ComicRepositoryConstants.TagWidth].Value.GetDouble(),
                                                   childML.Attributes[ComicRepositoryConstants.TagHeight].Value.GetDouble(),
                                                   childML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true));
                    break;

                case ComicRepositoryConstants.TagActionRotate:
                    action = new RotateActionModel(timeLine,
                                                   childML.Attributes[ComicRepositoryConstants.TagKey].Value,
                                                   childML.Attributes[ComicRepositoryConstants.TagOriginX].Value.GetDouble(0.5),
                                                   childML.Attributes[ComicRepositoryConstants.TagOriginY].Value.GetDouble(0.5),
                                                   childML.Attributes[ComicRepositoryConstants.TagAngle].Value.GetDouble(0),
                                                   childML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true));
                    break;

                case ComicRepositoryConstants.TagActionZoom:
                    action = new ZoomActionModel(timeLine,
                                                 childML.Attributes[ComicRepositoryConstants.TagKey].Value,
                                                 childML.Attributes[ComicRepositoryConstants.TagOriginX].Value.GetDouble(0.5),
                                                 childML.Attributes[ComicRepositoryConstants.TagOriginY].Value.GetDouble(0.5),
                                                 childML.Attributes[ComicRepositoryConstants.TagScaleX].Value.GetDouble(1),
                                                 childML.Attributes[ComicRepositoryConstants.TagScaleY].Value.GetDouble(1),
                                                 childML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true));
                    break;

                case ComicRepositoryConstants.TagActionTranslate:
                    action = new TranslateActionModel(timeLine,
                                                      childML.Attributes[ComicRepositoryConstants.TagKey].Value,
                                                      childML.Attributes[ComicRepositoryConstants.TagTop].Value.GetDouble(),
                                                      childML.Attributes[ComicRepositoryConstants.TagLeft].Value.GetDouble(),
                                                      childML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true));
                    break;

                case ComicRepositoryConstants.TagActionSetZIndex:
                    action = new SetZIndexModel(timeLine,
                                                childML.Attributes[ComicRepositoryConstants.TagKey].Value,
                                                childML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true),
                                                childML.Attributes[ComicRepositoryConstants.TagZIndex].Value.GetInt(1));
                    break;

                case ComicRepositoryConstants.TagActionPath:
                    action = new PathActionModel(timeLine,
                                                 childML.Attributes[ComicRepositoryConstants.TagKey].Value,
                                                 Mediator.CommonRepository.Normalize(childML.Value),
                                                 childML.Attributes[ComicRepositoryConstants.TagRotateWithTangent].Value.GetBool(true),
                                                 childML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true));
                    break;

                case ComicRepositoryConstants.TagSetActionViewBox:
                    action = new BrushViewBoxActionModel(timeLine,
                                                         childML.Attributes[ComicRepositoryConstants.TagKey].Value,
                                                         Mediator.CommonRepository.GetRectangle(childML.Attributes[ComicRepositoryConstants.TagViewBox].Value),
                                                         Mediator.CommonRepository.GetRectangle(childML.Attributes[ComicRepositoryConstants.TagViewPort].Value),
                                                         Mediator.CommonRepository.ConvertTile(childML.Attributes[ComicRepositoryConstants.TagTileMode].Value),
                                                         childML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true));
                    break;

                case ComicRepositoryConstants.TagSetActionRadialBrush:
                    action = new BrushRadialActionModel(timeLine,
                                                        childML.Attributes[ComicRepositoryConstants.TagKey].Value,
                                                        Mediator.CommonRepository.GetPoint(childML.Attributes[ComicRepositoryConstants.TagCenter].Value),
                                                        Mediator.CommonRepository.GetPoint(childML.Attributes[ComicRepositoryConstants.TagOrigin].Value),
                                                        childML.Attributes[ComicRepositoryConstants.TagRadiusX].Value.GetDouble(),
                                                        childML.Attributes[ComicRepositoryConstants.TagRadiusY].Value.GetDouble(),
                                                        childML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true));
                    break;

                case ComicRepositoryConstants.TagSetActionLinearBrush:
                    action = new BrushLinearActionModel(timeLine,
                                                        childML.Attributes[ComicRepositoryConstants.TagKey].Value,
                                                        Mediator.CommonRepository.GetPoint(childML.Attributes[ComicRepositoryConstants.TagStart].Value),
                                                        Mediator.CommonRepository.GetPoint(childML.Attributes[ComicRepositoryConstants.TagEnd].Value),
                                                        Mediator.CommonRepository.GetSpreadMethod(childML.Attributes[ComicRepositoryConstants.TagSpread].Value),
                                                        childML.Attributes[ComicRepositoryConstants.TagMustAnimate].Value.GetBool(true));
                    break;
                }
                // Si realmente se ha leído alguna acción
                if (action != null)
                {
                    // Asigna los atributos
                    AssignAttributesAction(childML, action.Parameters, timeLine.Parameters.Start, timeLine.Parameters.Duration);
                    // Asigna las funciones
                    LoadEases(action, childML);
                    // Añade la acción al timeline
                    timeLine.Actions.Add(action);
                }
            }
            // Devuelve el timeline
            return(timeLine);
        }
Ejemplo n.º 17
0
 /// <summary>
 ///		Añade una animación al storyBoard
 /// </summary>
 private void AddAnimationToStoryBoard(DependencyObject control, AnimationTimeline animation, ActionBaseModel action, PropertyPath propertyPath)
 {
     // Asigna las propiedades de inicio y duración
     animation.BeginTime = TimeSpan.FromSeconds(action.Parameters.Start);
     animation.Duration  = TimeSpan.FromSeconds(action.Parameters.Duration);
     // Asigna las propiedades de velocidad
     if (action.Parameters.AccelerationRatio != null)
     {
         animation.AccelerationRatio = action.Parameters.AccelerationRatio ?? 0;
     }
     else if (action.TimeLine.Parameters.AccelerationRatio != null)
     {
         animation.AccelerationRatio = action.TimeLine.Parameters.AccelerationRatio ?? 0;
     }
     if (action.Parameters.DecelerationRatio != null)
     {
         animation.DecelerationRatio = action.Parameters.DecelerationRatio ?? 0;
     }
     else if (action.TimeLine.Parameters.DecelerationRatio != null)
     {
         animation.DecelerationRatio = action.TimeLine.Parameters.DecelerationRatio ?? 0;
     }
     if (action.Parameters.SpeedRatio != null)
     {
         animation.SpeedRatio = action.Parameters.SpeedRatio ?? 0;
     }
     else if (action.TimeLine.Parameters.SpeedRatio != null)
     {
         animation.SpeedRatio = action.TimeLine.Parameters.SpeedRatio ?? 0;
     }
     // Añade los datos a la animación
     Storyboard.SetTarget(animation, control);
     Storyboard.SetTargetProperty(animation, propertyPath);
     // Añade la animación al storyboard
     sbStoryBoard.Children.Add(animation);
 }
Ejemplo n.º 18
0
 public BackEaseModel(ActionBaseModel action, Mode mode, double amplitude) : base(action, mode)
 {
     Amplitude = amplitude;
 }