private void ZoomWithCenterTo(double newZoom, Point zoomCenterInScreenSpace, TransitionSpeed transitionSpeed)
 {
     if (ViewportZoom != newZoom)
     {
         ViewportZoomCommand?.Execute(newZoom, zoomCenterInScreenSpace, transitionSpeed);
     }
 }
 private void ZoomWithCenterTo(double newZoom, Point zoomCenterInScreenSpace, TransitionSpeed transitionSpeed)
 {
     if (!ViewportZoom.IsEqualWithTolerance(newZoom))
     {
         ViewportZoomCommand?.Execute(newZoom, zoomCenterInScreenSpace, transitionSpeed);
     }
 }
        public virtual void Pan(Vector panVectorInScreenSpace, TransitionSpeed transitionSpeed = TransitionSpeed.Fast)
        {
            var viewportMoveVectorInScreenSpace  = panVectorInScreenSpace * -1;
            var viewportMoveVectorInDiagramSpace = viewportMoveVectorInScreenSpace / _exponentialZoom;

            _centerInDiagramSpace += viewportMoveVectorInDiagramSpace;
            UpdateCalculatedProperties(transitionSpeed);
        }
        public virtual void ZoomToRect(Rect rect, TransitionSpeed transitionSpeed)
        {
            if (rect.IsUndefined())
            {
                return;
            }

            _exponentialZoom      = CalculateMinZoomToContainRect(rect.Size, _defaultExponentialZoom);
            _centerInDiagramSpace = rect.GetCenter();
            UpdateCalculatedProperties(transitionSpeed);
        }
        public virtual void ZoomWithCenterTo(double newLinearZoom, Point zoomCenterInScreenSpace,
                                             TransitionSpeed transitionSpeed = TransitionSpeed.Fast)
        {
            var oldExponentialZoom       = _exponentialZoom;
            var newExponentialZoom       = ToExponentialZoom(newLinearZoom);
            var relativeZoom             = oldExponentialZoom / newExponentialZoom;
            var zoomCenterInDiagramSpace = ProjectFromScreenSpaceToDiagramSpace(zoomCenterInScreenSpace);

            _centerInDiagramSpace = (_centerInDiagramSpace - zoomCenterInDiagramSpace) * relativeZoom + zoomCenterInDiagramSpace;
            _exponentialZoom      = newExponentialZoom;
            UpdateCalculatedProperties(transitionSpeed);
        }
Exemplo n.º 6
0
        private void Animate(Transform newValue, TransitionSpeed transitionSpeed)
        {
            var duration = TransitionSpeedToDuration(transitionSpeed);

            var matrixAnimation = new MatrixAnimation(newValue.Value, duration, FillBehavior.HoldEnd)
            {
                EasingFunction = GetEasingFunction(transitionSpeed)
            };

            Timeline.SetDesiredFrameRate(matrixAnimation, FrameRate);

            RenderTransform.BeginAnimation(MatrixTransform.MatrixProperty, matrixAnimation, HandoffBehavior.SnapshotAndReplace);
        }
Exemplo n.º 7
0
        private EasingFunctionBase GetEasingFunction(TransitionSpeed transitionSpeed)
        {
            switch (transitionSpeed)
            {
            case TransitionSpeed.Medium:
                return(MediumAnimationEasingFunction);

            case TransitionSpeed.Slow:
                return(SlowAnimationEasingFunction);

            default:
                return(null);
            }
        }
Exemplo n.º 8
0
        private Duration TransitionSpeedToDuration(TransitionSpeed transitionSpeed)
        {
            switch (transitionSpeed)
            {
            case TransitionSpeed.Instant: return(TimeSpan.Zero);

            case TransitionSpeed.Fast: return(FastAnimationDuration);

            case TransitionSpeed.Medium: return(MediumAnimationDuration);

            case TransitionSpeed.Slow: return(SlowAnimationDuration);

            default: throw new NotImplementedException($"Unexpected TransitionSpeed:{transitionSpeed}");
            }
        }
        public virtual void ContainRect(Rect rect, TransitionSpeed transitionSpeed)
        {
            if (rect.IsUndefined() || rect.IsZero())
            {
                return;
            }

            _exponentialZoom = CalculateMinZoomToContainRect(rect.Size, _exponentialZoom);

            var viewportInDiagramSpace = ProjectViewportIntoDiagramSpace();
            var vector = CalculateVectorToCoverRect(rect, viewportInDiagramSpace);

            _centerInDiagramSpace = _centerInDiagramSpace + vector;

            UpdateCalculatedProperties(transitionSpeed);
        }
Exemplo n.º 10
0
        /// <summary>
        /// Toggles the opacity of a control.
        /// </summary>
        /// <param name="control">The control.</param>
        /// <param name="speed">The speed.</param>
        internal static void ToggleControlFade(Control control, TransitionSpeed speed)
        {
            Storyboard storyboard = new Storyboard();
            TimeSpan duration = new TimeSpan(0, 0, 0, 0, (int)speed); 
            
            DoubleAnimation animation = new DoubleAnimation { From = 1.0, To = 0.0, Duration = new Duration(duration) };
            if (control.Opacity == 0.0)
            {
                animation = new DoubleAnimation { From = 0.0, To = 1.0, Duration = new Duration(duration) };
            }

            Storyboard.SetTargetName(animation, control.Name);
            Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity", 0));
            storyboard.Children.Add(animation);

            storyboard.Begin(control);
        }
Exemplo n.º 11
0
        public void SetTransitionSpeed(TransitionSpeed speed)
        {
            switch (speed)
            {
            case TransitionSpeed.Slowest:
                _fadeSpeed = 0.001f;
                break;

            case TransitionSpeed.Slow:
                _fadeSpeed = 0.01f;
                break;

            case TransitionSpeed.Fast:
                _fadeSpeed = 0.05f;
                break;

            case TransitionSpeed.Fastest:
                _fadeSpeed = 0.1f;
                break;
            }
        }
        /// <summary>
        /// Toggles the opacity of a control.
        /// </summary>
        /// <param name="control">The control.</param>
        /// <param name="speed">The speed.</param>
        internal static void ToggleControlFade(this Control control, TransitionSpeed speed)
        {
            Storyboard storyboard = new Storyboard();
            TimeSpan   duration   = new TimeSpan(0, 0, 0, 0, (int)speed); //

            DoubleAnimation animation = new DoubleAnimation {
                From = 1.0, To = 0.0, Duration = new Duration(duration)
            };

            if (control.Opacity == 0.0)
            {
                animation = new DoubleAnimation {
                    From = 0.0, To = 1.0, Duration = new Duration(duration)
                };
            }

            Storyboard.SetTargetName(animation, control.Name);
            Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity", 0));
            storyboard.Children.Add(animation);

            storyboard.Begin(control);
        }
Exemplo n.º 13
0
 public void FollowDiagramNodes(IEnumerable <IDiagramNode> diagramNodes, TransitionSpeed transitionSpeed)
 {
     _followedDiagramNodes = diagramNodes?.ToArray();
     _followDiagramNodesTransitionSpeed = transitionSpeed;
     MoveViewport();
 }
 private void UpdateTransitionedTransform(TransitionSpeed transitionSpeed)
 {
     _diagramSpaceToScreenSpaceTransform = CreateTransformToScreenSpace();
     Transform = new TransitionedTransform(_diagramSpaceToScreenSpaceTransform, transitionSpeed);
     TransformChanged?.Invoke(Transform);
 }
Exemplo n.º 15
0
 public void FollowDiagramNodes(IEnumerable <ModelNodeId> nodeIds, TransitionSpeed transitionSpeed)
 {
     _followedNodeIds            = nodeIds?.ToArray();
     _followNodesTransitionSpeed = transitionSpeed;
     MoveViewport();
 }
 private void UpdateCalculatedProperties(TransitionSpeed transitionSpeed)
 {
     UpdateLinearZoom();
     UpdateTransitionedTransform(transitionSpeed);
 }
 private void ZoomToContent(TransitionSpeed transitionSpeed)
 {
     ViewportZoomToContentCommand?.Execute(transitionSpeed);
 }
Exemplo n.º 18
0
 public void FollowDiagramNodes(IEnumerable <IDiagramNode> diagramNodes, TransitionSpeed transitionSpeed)
 {
     _followedNodeIds            = diagramNodes?.Select(i => i.Id).ToArray();
     _followNodesTransitionSpeed = transitionSpeed;
     MoveViewport();
 }
 public virtual void Resize(Size sizeInScreenSpace, TransitionSpeed transitionSpeed = TransitionSpeed.Instant)
 {
     _sizeInScreenSpace = sizeInScreenSpace;
     UpdateCalculatedProperties(transitionSpeed);
 }
 public void FollowDiagramNodes(IEnumerable <IDiagramNode> diagramNodes, TransitionSpeed transitionSpeed = TransitionSpeed.Slow)
 => ViewportCalculator.FollowDiagramNodes(diagramNodes, transitionSpeed);
 public void ZoomToRect(Rect rect, TransitionSpeed transitionSpeed          = TransitionSpeed.Medium) => ViewportCalculator.ZoomToRect(rect, transitionSpeed);
 public void ZoomToContent(TransitionSpeed transitionSpeed                  = TransitionSpeed.Medium) => ViewportCalculator.ZoomToContent(transitionSpeed);
Exemplo n.º 23
0
 public override void ZoomToContent(TransitionSpeed transitionSpeed = TransitionSpeed.Medium)
 {
     StopFollowingDiagramNodes();
     base.ZoomToContent(transitionSpeed);
 }
        private void ZoomTo(ZoomDirection direction, double amount, Point center, TransitionSpeed transitionSpeed)
        {
            var newLinearZoom = CalculateModifiedZoom(ViewportZoom, direction, amount);

            ZoomWithCenterTo(newLinearZoom, center, transitionSpeed);
        }
        private void ZoomTo(double newZoom, TransitionSpeed transitionSpeed)
        {
            var zoomCenter = new Rect(RenderSize).GetCenter();

            ZoomWithCenterTo(newZoom, zoomCenter, transitionSpeed);
        }
Exemplo n.º 26
0
 public override void Pan(Vector panVectorInScreenSpace, TransitionSpeed transitionSpeed = TransitionSpeed.Fast)
 {
     StopFollowingDiagramNodes();
     base.Pan(panVectorInScreenSpace, transitionSpeed);
 }
 public virtual void ZoomToContent(TransitionSpeed transitionSpeed = TransitionSpeed.Medium)
 {
     ZoomToRect(_diagramContentRect, transitionSpeed);
 }
Exemplo n.º 28
0
 public override void Resize(Size sizeInScreenSpace, TransitionSpeed transitionSpeed = TransitionSpeed.Instant)
 {
     StopFollowingDiagramNodes();
     base.Resize(sizeInScreenSpace, transitionSpeed);
 }
 public void EnsureRectIsVisible(Rect rect, TransitionSpeed transitionSpeed = TransitionSpeed.Medium) => ViewportCalculator.ContainRect(rect, transitionSpeed);
Exemplo n.º 30
0
 public override void ZoomWithCenterTo(double newLinearZoom, Point zoomCenterInScreenSpace, TransitionSpeed transitionSpeed = TransitionSpeed.Fast)
 {
     StopFollowingDiagramNodes();
     base.ZoomWithCenterTo(newLinearZoom, zoomCenterInScreenSpace, transitionSpeed);
 }
 private void PanViewport(Vector panVector, TransitionSpeed transitionSpeed)
 {
     ViewportPanCommand?.Execute(panVector, transitionSpeed);
 }