gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi...


From: Matti Katila
Subject: [Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi...
Date: Fri, 27 Jun 2003 10:00:34 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Matti Katila <address@hidden>   03/06/27 10:00:34

Modified files:
        org/fenfire/demo: actions.py buoyoing.py fenpdfcontext.py 
        org/fenfire/view: AreaSelectingView2D.java 
        org/fenfire/view/buoy: AbstractMainNode2D.java 
                               FisheyeMainNode2D.java MainNode2D.java 

Log message:
        selection modifications

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/actions.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/buoyoing.py.diff?tr1=1.85&tr2=1.86&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/fenpdfcontext.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/AreaSelectingView2D.java.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java.diff?tr1=1.27&tr2=1.28&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/MainNode2D.java.diff?tr1=1.29&tr2=1.30&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/demo/actions.py
diff -u fenfire/org/fenfire/demo/actions.py:1.5 
fenfire/org/fenfire/demo/actions.py:1.6
--- fenfire/org/fenfire/demo/actions.py:1.5     Thu Jun 26 09:00:45 2003
+++ fenfire/org/fenfire/demo/actions.py Fri Jun 27 10:00:33 2003
@@ -43,16 +43,17 @@
     def change(self, x, y):
         if dbg: p('move pan fast')
         f = self.obj.getFocus()
-        if dbg: p('zoom:',f.zoom)
         fX, fY = f.getPanX(), f.getPanY()
         f.setPan( fX-x/f.zoom, fY-y/f.zoom)
         self.obj.chgFast(self.oldVS)
 
-        self.context.states.p()
+        if dbg: self.context.states.p()
         if self.context.states.hasCtrl():
-            xy0 = self.context.states.getPressPans()
-            self.select.setArea(xy[0], xy[1], f.getPanX(), f.getPanY())
-        else: self.select.setArea(0,0,0,0)
+            xy = self.context.states.getPressPans()
+            self.obj.setSelection(xy[0], xy[1], f.getPanX(), f.getPanY())
+        else: self.obj.setSelection(0,0,0,0)
+
+
 
 class MovePanSlow(ff.util.ControlBinding.AbstractController):
     def isChangeable(self): return 0
@@ -84,7 +85,7 @@
 class SelectNodeOnPlane(AbstractContextController):
     def isChangeable(self): return 0
     def controlPoint(self, x, y, scale):
-        self.context.setAccursed(self.obj.second)
+        self.context.setAccursed(self.obj[1])
         
 class MoveNodeOnPlane(AbstractContextController):
     def isChangeable(self): return 1
@@ -112,29 +113,35 @@
         self.last = main
         self.graph = graph
         self.pp = pp
+
     def handleEvent(self, main, ev, vs):
 
         if ev.getID() == ev.MOUSE_DRAGGED:
             if dbg: p('drag')
-            return self.last.handleEvent(main, ev, vs)
+            return self.last.handleEvent(self.args, ev, vs)
         elif ev.getID() == ev.MOUSE_PRESSED:
-            f = main.getFocus()
-            self.context.states.setPressPans(f.getPanX(),f.getPanY())
+            xy = main.getXYHitOnPlane(vs, ev.getX(), ev.getY())
+            self.context.states.setPressPans(xy[0], xy[1])
 
         if dbg: p('event', ev)
         obj = main.getNodeOnPlane(vs, ev.getX(), ev.getY())
         if dbg: p(obj)
         if ev.getID() == ev.MOUSE_CLICKED:
             if obj != None and self.p.hasBinding(ev):
+                p('object on plane click')
                 self.last = self.p
-                return self.p.handleEvent(ff.util.Pair(main, obj), ev, vs)
-            
+                self.args = [main, obj, self.graph, self.pp]
+                return self.p.handleEvent(self.args, ev, vs)
+
+        # Drag if something under mouse pointer is accursed!
         if obj != None and self.p.hasBinding(ev) and 
self.context.isAccursed(obj):
             self.last = self.p
-            return self.p.handleEvent([main, obj, self.graph, self.pp], ev, vs)
+            self.args = [main, obj, self.graph, self.pp]
         else:
+            p('something else')
             self.last = self.m
-            return self.m.handleEvent(main, ev, vs)
+            self.args = main
+        return self.last.handleEvent(self.args, ev, vs)
     def removePressState(self):
         for c in self.all:
             c.removePressState()
Index: fenfire/org/fenfire/demo/buoyoing.py
diff -u fenfire/org/fenfire/demo/buoyoing.py:1.85 
fenfire/org/fenfire/demo/buoyoing.py:1.86
--- fenfire/org/fenfire/demo/buoyoing.py:1.85   Thu Jun 26 09:10:02 2003
+++ fenfire/org/fenfire/demo/buoyoing.py        Fri Jun 27 10:00:34 2003
@@ -121,8 +121,7 @@
 view = ff.view.CanvasView2D(fen, nodeview)
 view.cull = 1
 paperview = ff.view.PaperView2D(vob.putil.demowindow.w, view)
-selectview = ff.view.AreaSelectingView2D(paperview)
-irregu = ff.view.IrregularViewportView2D(selectview)
+irregu = ff.view.IrregularViewportView2D(paperview)
 
 ff.view.buoy.NodeType2D.effigy = 0
 ff.view.buoy.NodeType2DFull.effigy = 0
@@ -148,6 +147,8 @@
 
 # Default controls
 
+selectview = None
+
 ctrl.setContext(context)
 main_ctrl.add(MovePanFast(context, selectview), -1, ctrl.WHEEL, 7,0, 
ctrl.VERTICAL)
 main_ctrl.add(MovePanFast(context, selectview), 1, ctrl.DRAG, 1, 0, ctrl.ALL)
@@ -188,7 +189,6 @@
 #          ff.view.PaperView2D(vob.putil.demowindow.w, 
 #                      ff.view.PageScrollView2D()))
 pagescroll2d = ff.view.PageScrollView2D()
-
 tconnector.normalNodeNodeType = ff.view.buoy.NodeType2D(irregu,
                        ff.view.buoy.MainNode2D.MainNode2DFactory(1, ctrl))
 tconnector.pageImageScrollNodeType = ff.view.buoy.NodeType2DFull(pagescroll2d, 
ff.view.buoy.FisheyeMainNode2D.FisheyeMainNode2DFactory(ctrl))
Index: fenfire/org/fenfire/demo/fenpdfcontext.py
diff -u fenfire/org/fenfire/demo/fenpdfcontext.py:1.3 
fenfire/org/fenfire/demo/fenpdfcontext.py:1.4
--- fenfire/org/fenfire/demo/fenpdfcontext.py:1.3       Thu Jun 26 08:29:30 2003
+++ fenfire/org/fenfire/demo/fenpdfcontext.py   Fri Jun 27 10:00:34 2003
@@ -5,7 +5,7 @@
 dbg = 0
 
 def p(*s):
-    print 'actions.py::', s
+    print 'fenpdfcontext.py::', s
 
 
 
Index: fenfire/org/fenfire/view/AreaSelectingView2D.java
diff -u fenfire/org/fenfire/view/AreaSelectingView2D.java:1.4 
fenfire/org/fenfire/view/AreaSelectingView2D.java:1.5
--- fenfire/org/fenfire/view/AreaSelectingView2D.java:1.4       Thu Jun 26 
10:06:56 2003
+++ fenfire/org/fenfire/view/AreaSelectingView2D.java   Fri Jun 27 10:00:34 2003
@@ -21,23 +21,32 @@
     }
     private Paper paper;
     private GLRen.FixedPaperQuad pq;
+
     public AreaSelectingView2D(View2D child) {
+        this(child, null);
+    }
+    public AreaSelectingView2D(View2D child, java.awt.Color color) {
         this.child = child;
         setArea(0,0,0,0);
 
-        paper = SpecialPapers.solidPaper(java.awt.Color.red);
+        paper = SpecialPapers.selectionPaper(color);
         pq = GLRen.createFixedPaperQuad(paper, 0, 0, 1, 1, 0, 10, 10, 10);
     }
 
     public void render(VobScene vs, Object plane,
                        int matchingParent,
                        int box2screen, int box2paper) {
-        int cs = vs.orthoCS(box2paper, "foo", 0, x0,y0,x1,y1);
-        vs.put(pq, cs);
 
        if(child != null)
            child.render(vs, plane, matchingParent,
                         box2screen, box2paper);
+
+       int paper2box = vs.invertCS(box2paper, "areaselectview_INv");
+       int paper2screen = vs.concatCS(box2screen, "areaselectview_conc",
+                                   paper2box);
+        int cs = vs.orthoCS(paper2screen, "selection", 0, x0,y0,x1,y1);
+        vs.put(pq, cs);
+
     }
         
         
Index: fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.27 
fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.28
--- fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.27  Wed Jun 25 
20:29:25 2003
+++ fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java       Fri Jun 27 
10:00:34 2003
@@ -122,6 +122,11 @@
        context.handleKeyStroke(s, this);
     }
 
+    protected AreaSelectingView2D selection = new AreaSelectingView2D(null);
+    public void setSelection(float x, float y, float x1, float y1) {
+        selection.setArea(x,y,x1,y1);
+    }
+
     public void renderMain(VobScene vs, int into) {
         context.mainNodeToBeRender(vs, into, this);
         // extending classes will render after this.
@@ -159,6 +164,19 @@
            if(chg) focus.setPan(panX, panY);
        }
     }
+
+    public float[] getXYHitOnPlane(VobScene oldVobScene, float x, float y) {
+       float[] pt = new float[] { x, y, 0 };
+       float[] sq = new float[2];
+       oldVobScene.coords.inverseTransformPoints3(
+            box2screen, pt, pt);
+       if (this instanceof MainNode2D) {
+               return pt;
+       } else if (this instanceof FisheyeMainNode2D) {
+           oldVobScene.coords.transformPoints3(box2paper, pt, pt);
+            return pt;
+       } else throw new Error("No known main node view2d");
+    } 
 
     public boolean isHitInsidePlane(int x, int y, VobScene oldVobScene) {
        float[] pt = new float[] { x, y, 0 };
Index: fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.11 
fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.12
--- fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.11   Wed Jun 25 
20:29:25 2003
+++ fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java        Fri Jun 27 
10:00:34 2003
@@ -98,6 +98,8 @@
        box2paper = translate;
 
        view2d.render(vs, plane, into, box2screen, box2paper);
+
+       selection.render(vs, plane, into, box2screen, box2paper);
         super.renderMain(vs, into);
     }
     
Index: fenfire/org/fenfire/view/buoy/MainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/MainNode2D.java:1.29 
fenfire/org/fenfire/view/buoy/MainNode2D.java:1.30
--- fenfire/org/fenfire/view/buoy/MainNode2D.java:1.29  Wed Jun 25 20:29:25 2003
+++ fenfire/org/fenfire/view/buoy/MainNode2D.java       Fri Jun 27 10:00:34 2003
@@ -90,6 +90,9 @@
        vs.matcher.add(box2screen, box2paper, "BOX2PAPER");
        setZoomPan(vs, box2paper);
        view2d.render(vs, plane, into, into, box2paper);
+
+        selection.render(vs, plane, into, into, box2paper);
+
         super.renderMain(vs, into);
     }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]