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)); }
private void OnMouseIsDownOverview(int x, int y, int width, int height) { Size2 overview = GraphUtil.CalcOverviewSize(width, height, main.TotalWidth(), main.TotalHeight()); Rectangle2 win = GraphUtil.CalcWin(overview, main.TotalSize, main.VisibleWin, main.ZoomFactor, main.ZoomFactor); if (win.Contains(x, y)) { navigatorData.Start(x, y, main.VisibleX, main.VisibleY); } else { float x1 = x - win.Width / 2; float y1 = y - win.Height / 2; int newX = (int)Math.Round(x1 * main.TotalWidth() / overview.Width); int newY = (int)Math.Round(y1 * main.TotalHeight() / overview.Height); newX = (int)Math.Min(Math.Max(newX, 0), main.TotalWidth() - main.VisibleWidth / main.ZoomFactor); main.VisibleX = newX; newY = (int)Math.Min(Math.Max(newY, 0), main.TotalHeight() - main.VisibleHeight / main.ZoomFactor); main.VisibleY = newY; invalidate(); } }