/[fenfire]/fenfire/org/fenfire/view/buoy/MainNode2D.java
ViewVC logotype

Diff of /fenfire/org/fenfire/view/buoy/MainNode2D.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9 by benja, Fri Apr 25 13:57:07 2003 UTC revision 1.10 by tjl, Fri Apr 25 14:11:49 2003 UTC
# Line 38  import java.awt.event.MouseEvent; Line 38  import java.awt.event.MouseEvent;
38   *  command for moving on the spatial plane.   *  command for moving on the spatial plane.
39   */   */
40  public class MainNode2D implements BuoyViewMainNode {  public class MainNode2D implements BuoyViewMainNode {
41      public static boolean dbg = false;      public static boolean dbg = true;
42      private static void pa(String s) { System.out.println(s); }      private static void pa(String s) { System.out.println(s); }
43            
44      protected Object plane;      protected Object plane;
# Line 71  public class MainNode2D implements BuoyV Line 71  public class MainNode2D implements BuoyV
71          }          }
72      }      }
73    
74      private int focusFrame = -1;      private int box2screen = -1;
75      private int box2paper = -1;      private int box2paper = -1;
76      private float w, h;      private float w, h;
77    
78      public void renderMain(VobScene vs, int into) {      public void renderMain(VobScene vs, int into) {
79          vs.coords.getSqSize(into, tmp);          vs.coords.getSqSize(into, tmp);
80          w = tmp[0]; h = tmp[1];          w = tmp[0]; h = tmp[1];
81          focusFrame = into;          box2screen = into;
82    
83          // create the coordsys, then position it through other method          // create the coordsys, then position it through other method
84          // this way, we only have the positioning code in one place          // this way, we only have the positioning code in one place
85          box2paper = vs.coords.orthoBox(0,0,0,0,0,0,0,0);          box2paper = vs.coords.orthoBox(0,0,0,0,0,0,0,0);
86            vs.matcher.add(box2screen, box2paper, "MainNode2D_B2P");
87          setZoomPan(vs, box2paper);          setZoomPan(vs, box2paper);
88    
89          view.render(vs, plane, into, into, box2paper);          view.render(vs, plane, into, into, box2paper);
# Line 94  public class MainNode2D implements BuoyV Line 95  public class MainNode2D implements BuoyV
95       * created by render().       * created by render().
96       */       */
97      private void setZoomPan(VobScene vs, int mainFrame) {      private void setZoomPan(VobScene vs, int mainFrame) {
         DefaultVobMatcher m = (DefaultVobMatcher)vs.matcher;  
98          vs.coords.setOrthoBoxParams(box2paper, 0,          vs.coords.setOrthoBoxParams(box2paper, 0,
99                          panX-w/zoom/2, panY-h/zoom/2,                          panX-w/zoom/2, panY-h/zoom/2,
100                                      1/zoom, 1/zoom, w, h);                                      1/zoom, 1/zoom, w, h);
# Line 124  public class MainNode2D implements BuoyV Line 124  public class MainNode2D implements BuoyV
124              zoom = m_state_zoom * (float)              zoom = m_state_zoom * (float)
125                  Math.exp((m_state[1] - e.getY())/150.0);                  Math.exp((m_state[1] - e.getY())/150.0);
126              AbstractUpdateManager.setNoAnimation();              AbstractUpdateManager.setNoAnimation();
127              setZoomPan(oldVobScene, focusFrame);              setZoomPan(oldVobScene, box2screen);
128              return true;              return true;
129          }          }
130    
131          // Move by dragging with button 1          // Move by dragging with button 1
132          if (m_state[2] == e.BUTTON1_MASK && e.getID() == MouseEvent.MOUSE_DRAGGED) {          if(m_state[2] == e.BUTTON1_MASK &&
133               e.getID() == MouseEvent.MOUSE_DRAGGED) {
134              panX = pan[0] + (m_state[0] - e.getX())/zoom;              panX = pan[0] + (m_state[0] - e.getX())/zoom;
135              panY = pan[1] + (m_state[1] - e.getY())/zoom;              panY = pan[1] + (m_state[1] - e.getY())/zoom;
136    
137              setZoomPan(oldVobScene, focusFrame);              setZoomPan(oldVobScene, box2screen);
138              return true;              return true;
139          }          }
140                    
141          // Move around by clicking          // Move around by clicking
142          if (m_state[2] == e.BUTTON1_MASK && e.getID() == MouseEvent.MOUSE_CLICKED){          if(m_state[2] == e.BUTTON1_MASK &&
143               e.getID() == MouseEvent.MOUSE_CLICKED){
144    
145              float[] pt = new float[] { e.getX(), e.getY(), 0 };              float[] pt = new float[] { e.getX(), e.getY(), 0 };
146    
147              // We must transform into Frame, and then the C2F coordinate system              if(dbg) pa("P1: "+pt[0]+" "+pt[1]+" "+pt[2]);
148              int mainctrCS = ((DefaultVobMatcher)oldVobScene.matcher).getCS(0, "FocusCenter");              oldVobScene.coords.inverseTransformPoints3(
149              //pa("mainctr"+ mainctrCS);                      box2screen, pt, pt);
150                                if(dbg) pa("P2: "+pt[0]+" "+pt[1]+" "+pt[2]);
151              int frame = ((DefaultVobMatcher)oldVobScene.matcher).getCS(mainctrCS, "FocusFrame");              oldVobScene.coords.transformPoints3(box2paper, pt, pt);
152              //int frame = focusFrame;              if(dbg) pa("P3: "+pt[0]+" "+pt[1]+" "+pt[2]);
153              int f2c = ((DefaultVobMatcher)oldVobScene.matcher).getCS(frame, "F2C");  
             if (f2c < 0) f2c = box2paper;  
             if(frame < 0 || f2c < 0)  
                 throw new Error("No cs point!"+frame+" "+f2c);  
                   
             // XXX vp, not frame!  
             oldVobScene.coords.inverseTransformPoints3(mainctrCS, pt, pt);  
             //oldVobScene.coords.inverseTransformPoints3(frame, pt, pt);  
             oldVobScene.coords.transformPoints3(f2c, pt, pt);  
154              panX = pt[0]; panY = pt[1];              panX = pt[0]; panY = pt[1];
155                                    
             // XXX current = current.h(d.contains);    
             //setZoomPan(oldVobScene, focusFrame);  
156              AbstractUpdateManager.chg();              AbstractUpdateManager.chg();
157              return false;              return false;
158          }          }

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26