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); } }
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; } }
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); }