[1055] | 1 | using System.Drawing;
|
---|
| 2 | using System.Windows.Forms;
|
---|
| 3 |
|
---|
| 4 | namespace HeuristicLab.Visualization {
|
---|
| 5 | public class PanListener : IMouseEventListener {
|
---|
| 6 | private readonly Rectangle viewPort;
|
---|
| 7 | private readonly RectangleD clippingArea;
|
---|
| 8 | private readonly Point startPoint;
|
---|
| 9 |
|
---|
| 10 | public PanListener(Rectangle viewPort, RectangleD clippingArea, Point startPoint) {
|
---|
| 11 | this.viewPort = viewPort;
|
---|
| 12 | this.clippingArea = clippingArea;
|
---|
| 13 | this.startPoint = startPoint;
|
---|
| 14 | }
|
---|
| 15 |
|
---|
| 16 | #region IMouseEventListener Members
|
---|
| 17 |
|
---|
| 18 | public event SetNewClippingAreaHandler SetNewClippingArea;
|
---|
| 19 | public event MouseEventHandler OnMouseMove;
|
---|
| 20 | public event MouseEventHandler OnMouseUp;
|
---|
| 21 |
|
---|
| 22 | public void MouseMove(object sender, MouseEventArgs e) {
|
---|
| 23 | PointD worldStartPoint = Transform.ToWorld(startPoint, viewPort, clippingArea);
|
---|
| 24 | PointD worldActualPoint = Transform.ToWorld(e.Location, viewPort, clippingArea);
|
---|
| 25 |
|
---|
| 26 | double xDiff = worldActualPoint.X - worldStartPoint.X;
|
---|
| 27 | double yDiff = worldActualPoint.Y - worldStartPoint.Y;
|
---|
| 28 |
|
---|
| 29 | RectangleD newClippingArea = new RectangleD();
|
---|
| 30 | newClippingArea.X1 = clippingArea.X1 - xDiff;
|
---|
| 31 | newClippingArea.X2 = clippingArea.X2 - xDiff;
|
---|
| 32 | newClippingArea.Y1 = clippingArea.Y1 - yDiff;
|
---|
| 33 | newClippingArea.Y2 = clippingArea.Y2 - yDiff;
|
---|
| 34 |
|
---|
| 35 | if (SetNewClippingArea != null) {
|
---|
| 36 | SetNewClippingArea(newClippingArea);
|
---|
| 37 | }
|
---|
| 38 |
|
---|
| 39 | if (OnMouseMove != null) {
|
---|
| 40 | OnMouseMove(sender, e);
|
---|
| 41 | }
|
---|
| 42 | }
|
---|
| 43 |
|
---|
| 44 | public void MouseUp(object sender, MouseEventArgs e) {
|
---|
| 45 | if (OnMouseUp != null) {
|
---|
| 46 | OnMouseUp(sender, e);
|
---|
| 47 | }
|
---|
| 48 | }
|
---|
| 49 |
|
---|
| 50 | #endregion
|
---|
| 51 | }
|
---|
| 52 | } |
---|