View Javadoc

1   package org.catacomb.graph.gui;
2   
3   
4   
5   
6   
7   public class TurnZoomHandler extends MouseHandler {
8   
9       private int xc;
10      private int yc;
11  
12      private int x0;
13      private int y0;
14  
15      private int x1;
16      private int y1;
17  
18  
19  
20      public void init(Mouse m) {
21          xc = m.getX();
22          yc = m.getY();
23  
24          x0 = xc;
25          y0 = yc;
26  
27          x1 = xc;
28          y1 = yc;
29      }
30  
31  
32      public void advance(Mouse m) {
33          int x = m.getX();
34          int y = m.getY();
35          if (x <= 1 || x >= m.getCanvasWidth() ||
36                  y <= 1 || y >= m.getCanvasHeight()) {
37              setClaimIn();
38          }
39      }
40  
41  
42  
43  
44      public void applyOnDrag(Mouse m) {
45          int x = m.getX();
46          int y = m.getY();
47  
48          if ((x-x1)*(x-x1) + (y-y1)*(y-y1) > 64) {
49  
50              double a = (x1 - x0) * (y - y0) - (y1 - y0) * (x - x0);
51              int d2 = (x1-x0)*(x1-x0) + (y1-y0)*(y1-y0);
52  
53              if (d2 > 32) {
54                  a = a / d2;
55                  double f = Math.exp(0.16 * a);
56  
57                  m.zoom(f, xc, yc);
58              }
59  
60              x0 = x1;
61              x1 = x;
62  
63              y0 = y1;
64              y1 = y;
65          }
66      }
67  
68  
69  
70  }
71