Ejemplo n.º 1
0
        private void ProcessPush(MyHead head,
                                 PushTransition <TState, TStackSymbol> pdaTransition, TTransition sourceTransition)
        {
            var newData     = pdaTransition.Pushed;
            var newState    = pdaTransition.NextState;
            var newPosition = myTransitionProvider.Target(sourceTransition);

            var processed = myCacheProvider.Visited(newPosition, newState, newData, out var previousContext);

            if (processed)
            {
                var prevTop = previousContext.StackTop;
                prevTop.AddParent(head.StackTop);

                myContextProcessor.InheritContextsOnPush(
                    head.CurrentContext,
                    previousContext,
                    pdaTransition.NextState,
                    pdaTransition.Pushed,
                    sourceTransition,
                    true);

                foreach (var record in myPopHistory.GetHistoryForNode(prevTop))
                {
                    ProcessPopForNewTop(record.NextState, record.SourceTransition, record.InheritFrom, head.StackTop);
                }
            }
            else
            {
                var newTop  = head.StackTop.Push(newData);
                var newHead = NewHead(newState, newTop, newPosition, null);

                myContextProcessor.InheritContextsOnPush(
                    head.CurrentContext,
                    newHead.CurrentContext,
                    pdaTransition.NextState,
                    pdaTransition.Pushed,
                    sourceTransition,
                    false);

                myCacheProvider.Visit(newPosition, newState, newData, newHead.CurrentContext);
                myProcessing.Push(newHead);
            }
        }
Ejemplo n.º 2
0
        private void CustomizeTransitionType()
        {
            switch (TransitionType)
            {
            case TransitionType.PushTransition:
                PushTransition pt = new PushTransition();

                transition.TransitionType = pt;
                break;

            case TransitionType.ClockTransition:
                transition.TransitionType = new ClockTransition();
                break;

            case TransitionType.CombTransition:
                transition.TransitionType = new CombTransition();
                break;

            case TransitionType.CoverTransition:
                transition.TransitionType = new CoverTransition();
                break;

            case TransitionType.DissolveTransition:
                transition.TransitionType = new DissolveTransition();
                break;

            case TransitionType.FadeTransition:
                transition.TransitionType = new FadeTransition();
                break;

            case TransitionType.ShapeTransition:
                transition.TransitionType = new ShapeTransition();
                break;

            case TransitionType.SlideFadeTransition:
                transition.TransitionType = new SlideFadeTransition();
                break;
            }
        }
Ejemplo n.º 3
0
        public static IAnimation GenerateTransitionAnimationObject(Transition trans)
        {
            if (trans == null || trans.FirstChild == null)
            {
                return(null);
            }
            TransitionAnimation result = new TransitionAnimation();

            if (trans.Speed != null && TransitionSpeedValues.Fast.Equals(trans.Speed.Value))
            {
                result.Length = 500;
            }
            else if (trans.Speed != null && TransitionSpeedValues.Slow.Equals(trans.Speed.Value))
            {
                result.Length = 2000;
            }
            else if (trans.Duration != null)
            {
                result.Length = int.Parse(trans.Duration.Value);
            }
            else
            {
                result.Length = 1000;
            }

            result.Start        = 0;
            result.InitialState = -1;
            result.Repetitions  = 1;
            if (trans.AdvanceOnClick != null)
            {
                result.AdvanceOnClick = trans.AdvanceOnClick.Value;
            }
            else
            {
                result.AdvanceOnClick = true;
            }

            if (typeof(StripsTransition) == trans.FirstChild.GetType())
            {
                StripsTransition transition = (StripsTransition)trans.FirstChild;
                result.Type = AnimationTypes.Strips;
                if (transition.Direction != null &&
                    TransitionCornerDirectionValues.RightUp.Equals(transition.Direction.Value))
                {
                    result.AdditionalData = "7";
                }
                else if (transition.Direction != null &&
                         TransitionCornerDirectionValues.LeftDown.Equals(transition.Direction.Value))
                {
                    result.AdditionalData = "9";
                }
                else if (transition.Direction != null &&
                         TransitionCornerDirectionValues.RightDown.Equals(transition.Direction.Value))
                {
                    result.AdditionalData = "8";
                }
                else
                {
                    result.AdditionalData = "6";
                }
            }
            else if (typeof(PushTransition) == trans.FirstChild.GetType())
            {
                PushTransition transition = (PushTransition)trans.FirstChild;
                result.Type = AnimationTypes.Push;
                if (transition.Direction != null &&
                    TransitionSlideDirectionValues.Right.Equals(transition.Direction.Value))
                {
                    result.AdditionalData = "3";
                }
                else if (transition.Direction != null &&
                         TransitionSlideDirectionValues.Up.Equals(transition.Direction.Value))
                {
                    result.AdditionalData = "4";
                }
                else if (transition.Direction != null &&
                         TransitionSlideDirectionValues.Left.Equals(transition.Direction.Value))
                {
                    result.AdditionalData = "2";
                }
                else
                {
                    result.AdditionalData = "1";
                }
            }
            else if (typeof(WipeTransition) == trans.FirstChild.GetType())
            {
                WipeTransition transition = (WipeTransition)trans.FirstChild;
                result.Type = AnimationTypes.Wipe;
                if (transition.Direction != null &&
                    TransitionSlideDirectionValues.Right.Equals(transition.Direction.Value))
                {
                    result.AdditionalData = "4";
                }
                else if (transition.Direction != null &&
                         TransitionSlideDirectionValues.Up.Equals(transition.Direction.Value))
                {
                    result.AdditionalData = "3";
                }
                else if (transition.Direction != null &&
                         TransitionSlideDirectionValues.Left.Equals(transition.Direction.Value))
                {
                    result.AdditionalData = "2";
                }
                else
                {
                    result.AdditionalData = "1";
                }
            }
            else if (typeof(FadeTransition) == trans.FirstChild.GetType())
            {
                FadeTransition transition = (FadeTransition)trans.FirstChild;
                result.Type = AnimationTypes.Fade;
                if (transition.ThroughBlack != null && transition.ThroughBlack.Value)
                {
                    result.Type = AnimationTypes.FadeThroughBlack;
                }
                result.AdditionalData = "1";
            }
            else if (typeof(CutTransition) == trans.FirstChild.GetType())
            {
                CutTransition transition = (CutTransition)trans.FirstChild;
                result.Type           = AnimationTypes.Cut;
                result.AdditionalData = "2";
                if (transition.ThroughBlack != null && transition.ThroughBlack.Value)
                {
                    result.Type           = AnimationTypes.CutThroughBlack;
                    result.AdditionalData = "3";
                }
            }
            else if (typeof(DissolveTransition) == trans.FirstChild.GetType())
            {
                result.Type           = AnimationTypes.DissolveIn;
                result.AdditionalData = "1";
            }
            else if (typeof(WedgeTransition) == trans.FirstChild.GetType())
            {
                result.Type           = AnimationTypes.Wedge;
                result.AdditionalData = "1";
            }
            else if (typeof(PullTransition) == trans.FirstChild.GetType())
            {
                PullTransition transition = (PullTransition)trans.FirstChild;
                result.Type = AnimationTypes.UnCover;
                if (transition.Direction != null && "d".Equals(transition.Direction.Value.ToString()))
                {
                    result.AdditionalData = "9";
                }
                else if (transition.Direction != null && "r".Equals(transition.Direction.Value.ToString()))
                {
                    result.AdditionalData = "11";
                }
                else if (transition.Direction != null && "u".Equals(transition.Direction.Value.ToString()))
                {
                    result.AdditionalData = "12";
                }
                else if (transition.Direction != null && "ld".Equals(transition.Direction.Value.ToString()))
                {
                    result.AdditionalData = "13";
                }
                else if (transition.Direction != null && "lu".Equals(transition.Direction.Value.ToString()))
                {
                    result.AdditionalData = "14";
                }
                else if (transition.Direction != null && "rd".Equals(transition.Direction.Value.ToString()))
                {
                    result.AdditionalData = "15";
                }
                else if (transition.Direction != null && "ru".Equals(transition.Direction.Value.ToString()))
                {
                    result.AdditionalData = "16";
                }
                else
                {
                    result.AdditionalData = "10";
                }
            }
            else if (typeof(ZoomTransition) == trans.FirstChild.GetType())
            {
                ZoomTransition transition = (ZoomTransition)trans.FirstChild;
                result.Type = AnimationTypes.Box;
                if (transition.Direction != null && TransitionInOutDirectionValues.In == transition.Direction.Value)
                {
                    result.AdditionalData = "19";
                }
                else
                {
                    result.AdditionalData = "20";
                }
            }
            else if (typeof(ZoomTransition) == trans.FirstChild.GetType())
            {
                ZoomTransition transition = (ZoomTransition)trans.FirstChild;
                result.Type = AnimationTypes.Box;
                if (transition.Direction != null && TransitionInOutDirectionValues.In == transition.Direction.Value)
                {
                    result.AdditionalData = "19";
                }
                else
                {
                    result.AdditionalData = "20";
                }
            }
            else if (typeof(WheelTransition) == trans.FirstChild.GetType())
            {
                WheelTransition transition = (WheelTransition)trans.FirstChild;
                result.Type = AnimationTypes.Wheel;
                if (transition.Spokes != null && transition.Spokes.Value == 1)
                {
                    result.AdditionalData = "1";
                }
                else if (transition.Spokes != null && transition.Spokes.Value == 2)
                {
                    result.AdditionalData = "2";
                }
                else if (transition.Spokes != null && transition.Spokes.Value == 3)
                {
                    result.AdditionalData = "3";
                }
                else if (transition.Spokes != null && transition.Spokes.Value == 8)
                {
                    result.AdditionalData = "8";
                }
                else
                {
                    result.AdditionalData = "4";
                }
            }
            else if (typeof(SplitTransition) == trans.FirstChild.GetType())
            {
                SplitTransition transition = (SplitTransition)trans.FirstChild;
                result.Type = AnimationTypes.Split;
                if (transition.Direction != null && TransitionInOutDirectionValues.In == transition.Direction.Value)
                {
                    if (transition.Orientation != null && DirectionValues.Vertical.Equals(transition.Orientation.Value))
                    {
                        result.AdditionalData = "25";
                    }
                    else
                    {
                        result.AdditionalData = "23";
                    }
                }
                else
                {
                    if (transition.Orientation != null && DirectionValues.Vertical.Equals(transition.Orientation.Value))
                    {
                        result.AdditionalData = "26";
                    }
                    else
                    {
                        result.AdditionalData = "24";
                    }
                }
            }
            else if (typeof(CircleTransition) == trans.FirstChild.GetType())
            {
                result.Type           = AnimationTypes.Circle;
                result.AdditionalData = "20";
            }
            else if (typeof(DiamondTransition) == trans.FirstChild.GetType())
            {
                result.Type           = AnimationTypes.Diamond;
                result.AdditionalData = "20";
            }
            else if (typeof(PlusTransition) == trans.FirstChild.GetType())
            {
                result.Type           = AnimationTypes.Plus;
                result.AdditionalData = "20";
            }
            else if (typeof(NewsflashTransition) == trans.FirstChild.GetType())
            {
                result.Type           = AnimationTypes.Newsflash;
                result.AdditionalData = "20";
            }
            return(result);
        }