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); }
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); }
private EasingFunctionBase GetEasingFunction(TransitionSpeed transitionSpeed) { switch (transitionSpeed) { case TransitionSpeed.Medium: return(MediumAnimationEasingFunction); case TransitionSpeed.Slow: return(SlowAnimationEasingFunction); default: return(null); } }
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); }
/// <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); }
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); }
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); }
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); }
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);
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); }
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); }
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);
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); }