[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] fenfire/org/fenfire spanimages/SpanImageVob.jav...
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] fenfire/org/fenfire spanimages/SpanImageVob.jav... |
Date: |
Wed, 13 Aug 2003 12:56:29 -0400 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Branch:
Changes by: Tuomas J. Lukka <address@hidden> 03/08/13 12:56:29
Modified files:
org/fenfire/spanimages: SpanImageVob.java
org/fenfire/spanimages/gl: PoolManager.java
org/fenfire/view: AreaSelectingView2D.java CanvasView2D.java
IrregularViewportView2D.java
PageScrollView2D.java PageSpanLayout.java
PaperView2D.java View2D.java
Log message:
Fix getting selection
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/spanimages/SpanImageVob.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/spanimages/gl/PoolManager.java.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/AreaSelectingView2D.java.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/CanvasView2D.java.diff?tr1=1.24&tr2=1.25&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/IrregularViewportView2D.java.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PageScrollView2D.java.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PageSpanLayout.java.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PaperView2D.java.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/View2D.java.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
Patches:
Index: fenfire/org/fenfire/spanimages/SpanImageVob.java
diff -u fenfire/org/fenfire/spanimages/SpanImageVob.java:1.3
fenfire/org/fenfire/spanimages/SpanImageVob.java:1.4
--- fenfire/org/fenfire/spanimages/SpanImageVob.java:1.3 Tue Jun 24
07:11:52 2003
+++ fenfire/org/fenfire/spanimages/SpanImageVob.java Wed Aug 13 12:56:28 2003
@@ -44,6 +44,16 @@
* Does not check whether it is inside or not.
*/
float getRealY(float spany);
+
+ /** Get the image (span) coordinate from the coordinate
+ * inside the vob.
+ */
+ int getSpanX(float vobx);
+ /** Get the image (span) coordinate from the coordinate
+ * inside the vob.
+ */
+ int getSpanY(float voby);
+
}
Index: fenfire/org/fenfire/spanimages/gl/PoolManager.java
diff -u fenfire/org/fenfire/spanimages/gl/PoolManager.java:1.7
fenfire/org/fenfire/spanimages/gl/PoolManager.java:1.8
--- fenfire/org/fenfire/spanimages/gl/PoolManager.java:1.7 Thu Jun 26
04:54:18 2003
+++ fenfire/org/fenfire/spanimages/gl/PoolManager.java Wed Aug 13 12:56:28 2003
@@ -69,6 +69,12 @@
public float getRealY(float spany) {
return h * (spany-sy0) / (sy1-sy0);
}
+ public int getSpanX(float vobx) {
+ return (int)(vobx * (sx1-sx0) / w + sx0);
+ }
+ public int getSpanY(float voby) {
+ return (int)(voby * (sy1-sy0) / h + sy0);
+ }
}
/** Make a SpanImageVob whose SingleImage's texture allocation will
Index: fenfire/org/fenfire/view/AreaSelectingView2D.java
diff -u fenfire/org/fenfire/view/AreaSelectingView2D.java:1.12
fenfire/org/fenfire/view/AreaSelectingView2D.java:1.13
--- fenfire/org/fenfire/view/AreaSelectingView2D.java:1.12 Wed Jul 30
06:32:10 2003
+++ fenfire/org/fenfire/view/AreaSelectingView2D.java Wed Aug 13 12:56:28 2003
@@ -42,6 +42,10 @@
private final String CONCAT = "AreaSelectingView_concat";
private final String SELECT = "AreaSelectingView_selection";
+ public Object getSelectedObject(Object plane, float x, float y, float w,
float h) {
+ return child.getSelectedObject(plane, x, y, w, h);
+ }
+
public void render(VobScene vs, Object plane,
int matchingParent,
int box2screen, int box2paper) {
Index: fenfire/org/fenfire/view/CanvasView2D.java
diff -u fenfire/org/fenfire/view/CanvasView2D.java:1.24
fenfire/org/fenfire/view/CanvasView2D.java:1.25
--- fenfire/org/fenfire/view/CanvasView2D.java:1.24 Mon Aug 4 02:02:48 2003
+++ fenfire/org/fenfire/view/CanvasView2D.java Wed Aug 13 12:56:28 2003
@@ -45,7 +45,7 @@
/** A View2D of a CANVAS2D, with a given node function.
*/
public class CanvasView2D extends View2D implements NodedView2D,
org.fenfire.view.lava.FastView {
-public static final String rcsid = "$Id: CanvasView2D.java,v 1.24 2003/08/04
06:02:48 mudyc Exp $";
+public static final String rcsid = "$Id: CanvasView2D.java,v 1.25 2003/08/13
16:56:28 tjl Exp $";
public static boolean dbg = false;
private static void p(String s) { System.out.println("CanvasView2D:: "+s);
}
@@ -66,6 +66,10 @@
"Color 0 0 0 0.6\n"
);
lineconn.glteardown = GLCache.getCallList("PopAttrib");
+ }
+
+ public Object getSelectedObject(Object plane, float x, float y, float w,
float h) {
+ return null;
}
Index: fenfire/org/fenfire/view/IrregularViewportView2D.java
diff -u fenfire/org/fenfire/view/IrregularViewportView2D.java:1.8
fenfire/org/fenfire/view/IrregularViewportView2D.java:1.9
--- fenfire/org/fenfire/view/IrregularViewportView2D.java:1.8 Wed Jun 11
13:00:24 2003
+++ fenfire/org/fenfire/view/IrregularViewportView2D.java Wed Aug 13
12:56:28 2003
@@ -92,6 +92,10 @@
}
};
+ public Object getSelectedObject(Object plane, float x, float y, float w,
float h) {
+ return child.getSelectedObject(plane, x, y, w, h);
+ }
+
public void render(VobScene vs,
Object plane,
int matchingParent,
Index: fenfire/org/fenfire/view/PageScrollView2D.java
diff -u fenfire/org/fenfire/view/PageScrollView2D.java:1.9
fenfire/org/fenfire/view/PageScrollView2D.java:1.10
--- fenfire/org/fenfire/view/PageScrollView2D.java:1.9 Sat Jul 19 05:04:36 2003
+++ fenfire/org/fenfire/view/PageScrollView2D.java Wed Aug 13 12:56:28 2003
@@ -1,7 +1,7 @@
/*
PageScrollView2D.java
*
- * Copyright (c) 2003 by Benja Fallenstein
+ * Copyright (c) 2003 by Benja Fallenstein and Tuomas J. Lukka
*
* This file is part of Fenfire.
*
@@ -22,7 +22,7 @@
*
*/
/*
- * Written by Benja Fallenstein
+ * Written by Benja Fallenstein and Tuomas J. Lukka
*/
package org.fenfire.view;
import org.fenfire.spanimages.*;
@@ -70,6 +70,12 @@
PageSpanLayout layout = (PageSpanLayout)scroll2layout.f(null, block);
wh[0] = layout.getWidth();
wh[1] = layout.getHeight();
+ }
+
+ public Object getSelectedObject(Object plane, float x, float y, float w,
float h) {
+ PageScrollBlock block = (PageScrollBlock)plane;
+ PageSpanLayout layout = (PageSpanLayout)scroll2layout.f(null, block);
+ return layout.getSelection(x, y, w, h);
}
public void render(VobScene vs,
Index: fenfire/org/fenfire/view/PageSpanLayout.java
diff -u fenfire/org/fenfire/view/PageSpanLayout.java:1.19
fenfire/org/fenfire/view/PageSpanLayout.java:1.20
--- fenfire/org/fenfire/view/PageSpanLayout.java:1.19 Sat Aug 9 08:31:16 2003
+++ fenfire/org/fenfire/view/PageSpanLayout.java Wed Aug 13 12:56:28 2003
@@ -34,7 +34,6 @@
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.
@@ -48,6 +47,9 @@
public static SpanImageFactory spanImageFactory =
SpanImageFactory.getDefaultInstance();
+ public static Enfilade1D.Maker enfilade1DMaker =
+ org.nongnu.alph.impl.Enfilade1DImpl.theMaker;
+
private int npages;
private PageImageSpan[] pages;
private SpanImageVob[] spivs;
@@ -226,35 +228,39 @@
/** Get selected area of pagespanlayout in enfilade
*/
- public Enfilade1D getSelection(int x, int y, int width, int height) {
+ public Enfilade1D getSelection(float x, float y, float width, float
height) {
if (x<0 || y<0) throw new Error ("X or Y smaller than zero, x:"+x+",
y:"+y);
- int w=0, wLeft = width, p=0;
- Enfilade1D enf = null;
+ Enfilade1D enf = enfilade1DMaker.makeEnfilade();
// Go into page where selection starts
- for (; p<pages.length; p++) {
- if (x < pages[p].getSize().width + w) break;
- w += pages[p].getSize().width;
- }
+ for (int p = 0; p<pages.length; p++) {
+ // Vob coordinates of the intersecting rectangle
+ float sx0, sx1, sy0, sy1;
+
+ sx0 = x - xywh[4*p];
+ sy0 = y - xywh[4*p+1];
+
+ sx1 = x + width - xywh[4*p];
+ sy1 = y + height - xywh[4*p + 1];
+
+ int rx0, rx1, ry0, ry1;
+
+ rx0 = spivs[p].getSpanX(sx0);
+ ry0 = spivs[p].getSpanY(sy0);
+ rx1 = spivs[p].getSpanX(sx1);
+ ry1 = spivs[p].getSpanY(sy1);
+
+ if(rx0 < 0) rx0 = 0;
+ if(ry0 < 0) ry0 = 0;
+
+ Dimension d = pages[p].getSize();
+ if(rx0 >= d.width) continue;
+ if(ry0 >= d.height) continue;
+ if(rx1 >= d.width) rx1 = d.width - 1;
+ if(ry1 >= d.height) ry1 = d.height - 1;
- w = 0;
- for (; p<pages.length; p++) {
- // check y
- if (y > pages[p].getSize().height) throw new Error("Selection out
of page,"+p+", y:"+y);
- // check height
- if ((y + height) > pages[p].getSize().height) throw new
Error("Selection out of page,"+p+", h:"+height);
-
- // everything ok, so get a clip from page for returning enfilade.
- if (enf == null) {
- w = (int)Math.min(wLeft, pages[p].getSize().width - x);
- enf = new Enfilade1DImpl(pages[p].subArea(x,y, w, height));
- } else {
- w = (int)Math.min(wLeft, pages[p].getSize().width);
- Enfilade1D.Maker m = enf.getMaker();
- enf.plus(m.makeEnfilade(pages[p].subArea(0,y, w, height)));
- }
- wLeft -= w;
+ enf.plus(enfilade1DMaker.makeEnfilade(pages[p].subArea(rx0,ry0,
rx1-rx0, ry1-ry0)));
}
return enf;
}
Index: fenfire/org/fenfire/view/PaperView2D.java
diff -u fenfire/org/fenfire/view/PaperView2D.java:1.16
fenfire/org/fenfire/view/PaperView2D.java:1.17
--- fenfire/org/fenfire/view/PaperView2D.java:1.16 Tue Aug 5 05:54:18 2003
+++ fenfire/org/fenfire/view/PaperView2D.java Wed Aug 13 12:56:28 2003
@@ -36,7 +36,7 @@
* this other view is rendered on top of the paper.
*/
public class PaperView2D extends View2D {
-public static final String rcsid = "$Id: PaperView2D.java,v 1.16 2003/08/05
09:54:18 tjl Exp $";
+public static final String rcsid = "$Id: PaperView2D.java,v 1.17 2003/08/13
16:56:28 tjl Exp $";
public static boolean dbg = false;
private static void pa(String s) { System.out.println("PaperView2D::"+s); }
@@ -59,6 +59,10 @@
private float[] tmp = new float[2];
private float[] tmp2 = new float[2];
+
+ public Object getSelectedObject(Object plane, float x, float y, float w,
float h) {
+ return child.getSelectedObject(plane, x, y, w, h);
+ }
public void render(VobScene vs,
Object plane,
Index: fenfire/org/fenfire/view/View2D.java
diff -u fenfire/org/fenfire/view/View2D.java:1.7
fenfire/org/fenfire/view/View2D.java:1.8
--- fenfire/org/fenfire/view/View2D.java:1.7 Wed Jul 30 08:38:32 2003
+++ fenfire/org/fenfire/view/View2D.java Wed Aug 13 12:56:28 2003
@@ -115,4 +115,13 @@
*/
public View2D getChildView2D() { return null; }
+ /** Get an object describing (as a selection) what
+ * is inside a rectangular region.
+ * This may be null, if it doesn't make sense
+ * to describe it yet, such as Canvas views -
+ * for a Page Scroll view, it's a PageImageSpan
+ * of the page that most overlaps the rectangle..
+ */
+ public abstract Object getSelectedObject(Object plane, float x, float y,
float w, float h);
+
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] fenfire/org/fenfire spanimages/SpanImageVob.jav...,
Tuomas J. Lukka <=