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 view/PageSp...


From: Matti Katila
Subject: [Gzz-commits] fenfire/org/fenfire demo/actions.py view/PageSp...
Date: Mon, 07 Jul 2003 03:07:55 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Matti Katila <address@hidden>   03/07/07 03:07:55

Modified files:
        org/fenfire/demo: actions.py 
        org/fenfire/view: PageSpanLayout.java 

Log message:
        test would be good for this..

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/actions.py.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PageSpanLayout.java.diff?tr1=1.15&tr2=1.16&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/demo/actions.py
diff -u fenfire/org/fenfire/demo/actions.py:1.8 
fenfire/org/fenfire/demo/actions.py:1.9
--- fenfire/org/fenfire/demo/actions.py:1.8     Mon Jul  7 02:00:51 2003
+++ fenfire/org/fenfire/demo/actions.py Mon Jul  7 03:07:55 2003
@@ -91,7 +91,8 @@
         oy = ff.util.RDFUtil.getInt(g, node, CANVAS2D.y)
         self.obj[3].moveNote(node, int(ox+x/f.zoom), int(oy+y/f.zoom) )
 
-####### Actions to control selection
+
+####### Actions to control selection (Ctrl pressed)
 
 class SelectArea(AbstractContextController):
     def isChangeable(self): return 0
@@ -102,6 +103,7 @@
         oldXY = self.context.states.getPressPans()
         self.context.selection.setArea(oldXY[0], oldXY[1], xy[0], xy[1])
         self.obj.chgFast(self.oldVS)
+
 
 ####### Dispatcher for plane events etc.
 
Index: fenfire/org/fenfire/view/PageSpanLayout.java
diff -u fenfire/org/fenfire/view/PageSpanLayout.java:1.15 
fenfire/org/fenfire/view/PageSpanLayout.java:1.16
--- fenfire/org/fenfire/view/PageSpanLayout.java:1.15   Mon Jul  7 02:00:52 2003
+++ fenfire/org/fenfire/view/PageSpanLayout.java        Mon Jul  7 03:07:55 2003
@@ -34,6 +34,7 @@
 import org.nongnu.libvob.*;
 import org.nongnu.libvob.gl.*;
 import org.nongnu.alph.*;
+import org.nongnu.alph.impl.*;
 import org.fenfire.spanimages.*;
 
 /** A single pagespan enfilade laid out on the plane.
@@ -219,9 +220,36 @@
        place(vs, scaled);
     }
 
-    Enfilade1D getSelection(float x0, float y0, float x1, float y1) {
+    /** Get selected area of pagespanlayout in enfilade
+     */
+    Enfilade1D getSelection(int x, int y, int width, int height) {
+       if (x<0 || y<0) throw new Error ("X or Y smaller than zero, x:"+x+", 
y:"+y);
 
-       return null;
+       int w=0,  wLeft = width, p=0;
+       Enfilade1D enf = new Enfilade1DImpl(null);
+       Enfilade1D.Maker m = enf.getMaker();
+
+       // Go into page where selection starts
+       for (; p<pages.length; p++)
+           if (x < xywh[4*p + 2] + w) break;
+
+       for (; p<pages.length; p++) {
+           // check y
+           if (y > xywh[4*p + 3]) throw new Error("Selection out of 
page,"+p+", y:"+y);
+           // check height
+           if (height > xywh[4*p + 3]) throw new Error("Selection out of 
page,"+p+", h:"+height);
+
+           // everything ok, so get a clip from page for returning enfilade.
+           if (enf.length() == 0) {
+               w = (int)Math.min(wLeft, xywh[4*p + 2] - x);
+               enf.plus(m.makeEnfilade(pages[p].subArea(x,y, w, height)));
+           } else {
+               w = (int)Math.min(wLeft, xywh[4*p + 2]);
+               enf.plus(m.makeEnfilade(pages[p].subArea(0,y, w, height)));
+           }
+           wLeft -= w;
+       }
+       return enf;
     }
 
 }




reply via email to

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