public override void OnMouseIsUp(BasicMouseEventArgs e)
 {
     main.OnMouseIsUpMainView?.Invoke(e.Scale(main.ZoomFactor));
     navigatorData.Reset();
     state = ZoomButtonState.Neutral;
     Invalidate();
 }
        public override void OnMouseMoved(BasicMouseEventArgs e)
        {
            main.OnMouseMoveMainView?.Invoke(e.Scale(main.ZoomFactor));
            ZoomButtonState newState = GraphUtil.GetNewZoomButtonState(e.X, e.Y, e.Width, e.Height, false);

            if (newState != state)
            {
                state = newState;
                Invalidate();
            }
        }
 public override void OnMouseDragged(BasicMouseEventArgs e)
 {
     if (navigatorData.IsMoving())
     {
         PointI2 newXy = navigatorData.Dragging(e.X, e.Y, e.Width, e.Height, main.TotalWidth(), main.TotalHeight(),
                                                main.VisibleWidth, main.VisibleHeight, main.ZoomFactor);
         main.VisibleX = newXy.X;
         main.VisibleY = newXy.Y;
         invalidate();
         return;
     }
     main.OnMouseDraggedMainView?.Invoke(e.Scale(main.ZoomFactor));
 }
        public override void OnMouseDoubleClick(BasicMouseEventArgs e)
        {
            Size2 overview = GraphUtil.CalcOverviewSize(e.Width, e.Height, main.TotalWidth(), main.TotalHeight());

            if (e.X < overview.Width && e.Y > e.Height - overview.Height)
            {
                return;
            }
            if (GraphUtil.HitsMinusButton(e.X, e.Y, e.Width, e.Height))
            {
                return;
            }
            if (GraphUtil.HitsPlusButton(e.X, e.Y, e.Width, e.Height))
            {
                return;
            }
            main.OnMouseDoubleClickMainView?.Invoke(e.Scale(main.ZoomFactor));
        }
        public override void OnMouseIsDown(BasicMouseEventArgs e)
        {
            Size2 overview = GraphUtil.CalcOverviewSize(e.Width, e.Height, main.TotalWidth(), main.TotalHeight());

            if (e.X < overview.Width && e.Y > e.Height - overview.Height)
            {
                OnMouseIsDownOverview(e.X, (int)(e.Y - e.Height + overview.Height), e.Width, e.Height);
                return;
            }
            ZoomButtonState newState = GraphUtil.GetNewZoomButtonState(e.X, e.Y, e.Width, e.Height, true);

            switch (newState)
            {
            case ZoomButtonState.PressMinus:
                main.ZoomFactor /= GraphUtil.zoomStep;
                invalidate();
                main.InvalidateScrollbars();
                main.UpdateZoom();
                break;

            case ZoomButtonState.PressPlus:
                main.ZoomFactor *= GraphUtil.zoomStep;
                invalidate();
                main.InvalidateScrollbars();
                main.UpdateZoom();
                break;

            default:
                if (newState != state)
                {
                    invalidate();
                }
                break;
            }
            state = newState;
            if (newState == ZoomButtonState.PressMinus || newState == ZoomButtonState.PressPlus)
            {
                return;
            }
            main.OnMouseIsDownMainView?.Invoke(e.Scale(main.ZoomFactor));
        }