Beispiel #1
0
 /// <summary>
 ///     Record the previous zoom level, so that we can return to it.
 /// </summary>
 public void SaveZoom()
 {
     _viewportZoomCache = CreateUndoRedoStackItem();
     if (_undoStack.Any() && _viewportZoomCache.Equals(_undoStack.Peek()))
     {
         return;
     }
     _undoStack.Push(_viewportZoomCache);
     _redoStack.Clear();
     _undoZoomCommand?.RaiseCanExecuteChanged();
     _redoZoomCommand?.RaiseCanExecuteChanged();
 }
Beispiel #2
0
 /// <summary>
 ///     Jump back to the previous zoom level, saving current zoom to Redo Stack.
 /// </summary>
 private void UndoZoom()
 {
     _viewportZoomCache = CreateUndoRedoStackItem();
     if (!_undoStack.Any() || !_viewportZoomCache.Equals(_undoStack.Peek()))
     {
         _redoStack.Push(_viewportZoomCache);
     }
     _viewportZoomCache = _undoStack.Pop();
     this.AnimatedZoomTo(_viewportZoomCache.Zoom, _viewportZoomCache.Rect);
     SetScrollViewerFocus();
     _undoZoomCommand?.RaiseCanExecuteChanged();
     _redoZoomCommand?.RaiseCanExecuteChanged();
 }
Beispiel #3
0
 /// <summary>
 ///  Record the last saved zoom level, so that we can return to it if no activity for 1550 milliseconds
 /// </summary>
 public void DelayedSaveZoom1500Miliseconds()
 {
     if (!_timer1500Miliseconds?.Running != true)
     {
         _viewportZoomCache = CreateUndoRedoStackItem();
     }
     (_timer1500Miliseconds ?? (_timer1500Miliseconds = new KeepAliveTimer(TimeSpan.FromMilliseconds(1500), () =>
     {
         if (_undoStack.Any() && _viewportZoomCache.Equals(_undoStack.Peek()))
         {
             return;
         }
         _undoStack.Push(_viewportZoomCache);
         _redoStack.Clear();
         _undoZoomCommand?.RaiseCanExecuteChanged();
         _redoZoomCommand?.RaiseCanExecuteChanged();
     }))).Nudge();
 }
Beispiel #4
0
 public bool Equals(UndoRedoStackItem obj)
 {
     return(Zoom.IsWithinOnePercent(obj.Zoom) && Rect.Equals(obj.Rect));
 }
Beispiel #5
0
 public bool Equals(UndoRedoStackItem obj)
 {
     return(Math.Abs(obj.Zoom - Zoom) < Zoom * .01 && Rect.Equals(obj.Rect));
 }