[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] fenfire/org/fenfire swamp/CachedNodeFunction.ja...
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] fenfire/org/fenfire swamp/CachedNodeFunction.ja... |
Date: |
Sun, 27 Apr 2003 07:40:27 -0400 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Changes by: Tuomas J. Lukka <address@hidden> 03/04/27 07:40:27
Modified files:
org/fenfire/swamp: CachedNodeFunction.java
org/fenfire/view: PageScrollView2D.java PageSpanLayout.java
PaperView2D.java
org/fenfire/view/buoy: MainNode2D.java NodeType2D.java
PPConnector.java
TransclusionConnector.java
Log message:
More work for buoyoing
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/CachedNodeFunction.java.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PageScrollView2D.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PageSpanLayout.java.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PaperView2D.java.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/MainNode2D.java.diff?tr1=1.10&tr2=1.11&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/NodeType2D.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/PPConnector.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/TransclusionConnector.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
Patches:
Index: fenfire/org/fenfire/swamp/CachedNodeFunction.java
diff -u fenfire/org/fenfire/swamp/CachedNodeFunction.java:1.4
fenfire/org/fenfire/swamp/CachedNodeFunction.java:1.5
--- fenfire/org/fenfire/swamp/CachedNodeFunction.java:1.4 Thu Apr 24
09:14:15 2003
+++ fenfire/org/fenfire/swamp/CachedNodeFunction.java Sun Apr 27 07:40:27 2003
@@ -14,6 +14,9 @@
* Second, no function whose return value depends
* on anything except the passed parameters
* (including the Graph) may be called.
+ * <p>
+ * As an aside, this class works completely also
+ * without a graph, for caching constant functions.
*/
public class CachedNodeFunction implements NodeFunction {
@@ -65,9 +68,10 @@
cache.put(node, cac);
}
if(cac.value == DIRTY) {
- ConstGraph og = ourGraph.getObservedConstGraph(cac);
+ ConstGraph og = (ourGraph == null ?
+ null : ourGraph.getObservedConstGraph(cac));
cac.value = f.f(og, node);
- og.close();
+ if(og != null) og.close();
}
if(o != null)
cac.addObs(o);
Index: fenfire/org/fenfire/view/PageScrollView2D.java
diff -u fenfire/org/fenfire/view/PageScrollView2D.java:1.3
fenfire/org/fenfire/view/PageScrollView2D.java:1.4
--- fenfire/org/fenfire/view/PageScrollView2D.java:1.3 Sun Apr 27 04:05:32 2003
+++ fenfire/org/fenfire/view/PageScrollView2D.java Sun Apr 27 07:40:27 2003
@@ -27,6 +27,7 @@
package org.fenfire.view;
import org.nongnu.libvob.VobScene;
import org.nongnu.alph.*;
+import org.fenfire.swamp.*;
/** A View2D showing a whole PageScrollBlock.
* The <code>plane</code> object passed to <code>render()</code>
@@ -34,14 +35,33 @@
* XXX cache?
*/
public class PageScrollView2D extends View2D {
+
+ NodeFunction scroll2layout = new CachedNodeFunction(100, null,
+ new NodeFunction() {
+ public Object f(ConstGraph g, Object block0) {
+ PageScrollBlock block = (PageScrollBlock)block0;
+ return new PageSpanLayout(
+ (PageSpan)block.getCurrent());
+ }
+ }
+ );
+
+
+
+ public void getSize(Object plane, float[] wh) {
+ PageScrollBlock block = (PageScrollBlock)plane;
+ PageSpanLayout layout = (PageSpanLayout)scroll2layout.f(null, block);
+ wh[0] = layout.getWidth();
+ wh[1] = layout.getHeight();
+ }
+
public void render(VobScene vs,
Object plane,
int matchingParent,
int box2screen, int box2paper
) {
PageScrollBlock block = (PageScrollBlock)plane;
- PageSpanLayout layout =
- new PageSpanLayout((PageSpan)block.getCurrent());
+ PageSpanLayout layout = (PageSpanLayout)scroll2layout.f(null, block);
int paper2box = vs.invertCS(box2paper, "PGSVinv");
int paper2screen = vs.concatCS(box2screen, "PGSVconc", paper2box);
layout.place(vs, paper2screen, 1, 1, box2screen);
Index: fenfire/org/fenfire/view/PageSpanLayout.java
diff -u fenfire/org/fenfire/view/PageSpanLayout.java:1.5
fenfire/org/fenfire/view/PageSpanLayout.java:1.6
--- fenfire/org/fenfire/view/PageSpanLayout.java:1.5 Thu Apr 24 13:53:32 2003
+++ fenfire/org/fenfire/view/PageSpanLayout.java Sun Apr 27 07:40:27 2003
@@ -43,9 +43,12 @@
private PageSpanPaper[] psps;
private float[] xywh;
- private float w; // XXX Kludge to be public
+ private float w;
private float h;
+ public float getWidth() { return w; }
+ public float getHeight() { return h; }
+
/** Allocate the structure to hold a given number of pages.
*/
private void alloc(int size) {
@@ -153,9 +156,6 @@
}
return null;
}
-
- public float getWidth() { return w; }
- public float getHeight() { return h; }
public void place(VobScene vs, int into) {
place(vs, into, .0001f, 1f, -1);
Index: fenfire/org/fenfire/view/PaperView2D.java
diff -u fenfire/org/fenfire/view/PaperView2D.java:1.5
fenfire/org/fenfire/view/PaperView2D.java:1.6
--- fenfire/org/fenfire/view/PaperView2D.java:1.5 Sat Apr 26 04:41:03 2003
+++ fenfire/org/fenfire/view/PaperView2D.java Sun Apr 27 07:40:27 2003
@@ -13,7 +13,7 @@
*/
public class PaperView2D extends View2D {
public static boolean dbg = true;
-public static final String rcsid = "$Id: PaperView2D.java,v 1.5 2003/04/26
08:41:03 tjl Exp $";
+public static final String rcsid = "$Id: PaperView2D.java,v 1.6 2003/04/27
11:40:27 tjl Exp $";
private static void pa(String s) { System.out.println("AlphContent: "+s); }
public PaperMill paperMill;
@@ -72,5 +72,8 @@
box2screen, box2paper);
}
+ public void getSize(Object plane, float[] wh) {
+ child.getSize(plane, wh);
+ }
}
Index: fenfire/org/fenfire/view/buoy/MainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/MainNode2D.java:1.10
fenfire/org/fenfire/view/buoy/MainNode2D.java:1.11
--- fenfire/org/fenfire/view/buoy/MainNode2D.java:1.10 Fri Apr 25 10:11:49 2003
+++ fenfire/org/fenfire/view/buoy/MainNode2D.java Sun Apr 27 07:40:27 2003
@@ -42,29 +42,29 @@
private static void pa(String s) { System.out.println(s); }
protected Object plane;
- protected View2D view;
+ protected View2D view2d;
protected float panX, panY;
protected float zoom;
private float tmp[] = new float[2];
- public View2D getView() { return view; }
+ public View2D getView2D() { return view2d; }
/** Create a main node with a given plane, pan, and zoom.
*/
- public MainNode2D(Object plane, View2D view,
+ public MainNode2D(Object plane, View2D view2d,
float panX, float panY, float zoom) {
- this.plane = plane; this.view = view;
+ this.plane = plane; this.view2d = view2d;
this.panX = panX; this.panY = panY;
this.zoom = zoom;
}
/** Create a main node focused the center of a given plane.
*/
- public MainNode2D(Object plane, View2D view) {
- this(plane, view, 0, 0, 1);
- view.getSize(plane, tmp);
+ public MainNode2D(Object plane, View2D view2d) {
+ this(plane, view2d, 0, 0, 1);
+ view2d.getSize(plane, tmp);
if(tmp[0] >= 0) {
panX = tmp[0] / 2f;
panY = tmp[1] / 2f;
@@ -86,7 +86,7 @@
vs.matcher.add(box2screen, box2paper, "MainNode2D_B2P");
setZoomPan(vs, box2paper);
- view.render(vs, plane, into, into, box2paper);
+ view2d.render(vs, plane, into, into, box2paper);
}
/** Cause the changes to the zooming and panning variables
@@ -109,6 +109,21 @@
private int [] m_state = null;
private float m_state_zoom = -1;
private float pan[] = new float[2];
+
+ private float[] v2dwh = new float[2];
+
+ /** Clip the values in Pan to the size of the canvas.
+ */
+ private void clipPan() {
+ view2d.getSize(plane, v2dwh);
+ if(v2dwh[0] >= 0) {
+ if(panX < 0) panX = 0;
+ if(panX > v2dwh[0]) panX = v2dwh[0];
+ if(panY < 0) panY = 0;
+ if(panY > v2dwh[1]) panY = v2dwh[1];
+ }
+ }
+
public boolean mouse(MouseEvent e, VobScene oldVobScene) {
if (e.getID() == MouseEvent.MOUSE_PRESSED) {
m_state = new int[]{ e.getX(), e.getY(), e.getModifiers()};
@@ -133,6 +148,7 @@
e.getID() == MouseEvent.MOUSE_DRAGGED) {
panX = pan[0] + (m_state[0] - e.getX())/zoom;
panY = pan[1] + (m_state[1] - e.getY())/zoom;
+ clipPan();
setZoomPan(oldVobScene, box2screen);
return true;
@@ -152,6 +168,7 @@
if(dbg) pa("P3: "+pt[0]+" "+pt[1]+" "+pt[2]);
panX = pt[0]; panY = pt[1];
+ clipPan();
AbstractUpdateManager.chg();
return false;
Index: fenfire/org/fenfire/view/buoy/NodeType2D.java
diff -u fenfire/org/fenfire/view/buoy/NodeType2D.java:1.4
fenfire/org/fenfire/view/buoy/NodeType2D.java:1.5
--- fenfire/org/fenfire/view/buoy/NodeType2D.java:1.4 Sat Apr 26 04:41:04 2003
+++ fenfire/org/fenfire/view/buoy/NodeType2D.java Sun Apr 27 07:40:27 2003
@@ -44,12 +44,12 @@
public static int effigy = 0;
- protected View2D view;
+ protected View2D view2d;
- public View2D getView() { return view; }
+ public View2D getView2D() { return view2d; }
- public NodeType2D(View2D view) {
- this.view = view;
+ public NodeType2D(View2D view2d) {
+ this.view2d = view2d;
}
public Object getSize(Object linkId, Object anchor,
@@ -90,7 +90,7 @@
// w, h);
vs.matcher.add(into, box2paper, "BUOYPAP");
- view.render(vs, plane, into, into, box2paper);
+ view2d.render(vs, plane, into, into, box2paper);
return vs.coords.translate(into, w/2f, h/2f);
}
@@ -101,7 +101,7 @@
Object plane = p.first;
Rectangle rect = (Rectangle)p.second;
- return new MainNode2D(plane, view,
+ return new MainNode2D(plane, view2d,
rect.x+rect.width/2f,
rect.y+rect.height/2f, 1);
}
Index: fenfire/org/fenfire/view/buoy/PPConnector.java
diff -u fenfire/org/fenfire/view/buoy/PPConnector.java:1.2
fenfire/org/fenfire/view/buoy/PPConnector.java:1.3
--- fenfire/org/fenfire/view/buoy/PPConnector.java:1.2 Sat Apr 26 04:31:41 2003
+++ fenfire/org/fenfire/view/buoy/PPConnector.java Sun Apr 27 07:40:27 2003
@@ -16,19 +16,19 @@
/** Make the kinds of links familiar from PP structure.
*/
public class PPConnector implements BuoyViewConnector {
-public static final String rcsid = "$Id: PPConnector.java,v 1.2 2003/04/26
08:31:41 tjl Exp $";
+public static final String rcsid = "$Id: PPConnector.java,v 1.3 2003/04/27
11:40:27 tjl Exp $";
public static boolean dbg = false;
private static void pa(String s) { System.out.println("PPLinker:"+s); }
public static boolean hackForTesting = false;
private Fen fen;
- private View2D view;
+ private View2D view2d;
private BuoyViewNodeType nodeType;
- public PPConnector(Fen fen, View2D view) {
+ public PPConnector(Fen fen, View2D view2d) {
this.fen = fen;
- this.view = view;
- this.nodeType = new NodeType2D(view);
+ this.view2d = view2d;
+ this.nodeType = new NodeType2D(view2d);
}
public void addBuoys(VobScene vs, int parentCs,
@@ -36,7 +36,7 @@
BuoyLinkListener l) {
if(!(mainNode instanceof MainNode2D)) return;
MainNode2D mn2d = (MainNode2D)mainNode;
- if(mn2d.getView() != view && !hackForTesting) return;
+ if(mn2d.getView2D() != view2d && !hackForTesting) return;
DefaultVobMatcher m = (DefaultVobMatcher)vs.matcher;
for(Iterator i=m.getKeys(parentCs).iterator(); i.hasNext();) {
Index: fenfire/org/fenfire/view/buoy/TransclusionConnector.java
diff -u fenfire/org/fenfire/view/buoy/TransclusionConnector.java:1.1
fenfire/org/fenfire/view/buoy/TransclusionConnector.java:1.2
--- fenfire/org/fenfire/view/buoy/TransclusionConnector.java:1.1 Sun Apr
27 04:05:32 2003
+++ fenfire/org/fenfire/view/buoy/TransclusionConnector.java Sun Apr 27
07:40:27 2003
@@ -20,7 +20,7 @@
/** Hang transclusion buoys.
*/
public class TransclusionConnector implements BuoyViewConnector {
-public static final String rcsid = "$Id: TransclusionConnector.java,v 1.1
2003/04/27 08:05:32 tjl Exp $";
+public static final String rcsid = "$Id: TransclusionConnector.java,v 1.2
2003/04/27 11:40:27 tjl Exp $";
public static boolean dbg = true;
private static void pa(String s) { System.out.println("PPLinker:"+s); }
@@ -60,7 +60,7 @@
BuoyLinkListener l) {
if(!(mainNode instanceof MainNode2D)) return;
MainNode2D mn2d = (MainNode2D)mainNode;
- if(mn2d.getView() == normalNodeNodeType.getView()) {
+ if(mn2d.getView2D() == normalNodeNodeType.getView2D()) {
DefaultVobMatcher m = (DefaultVobMatcher)vs.matcher;
// Loop over the placed nodes' keys
for(Iterator i=m.getKeys(parentCs).iterator(); i.hasNext();) {
@@ -84,7 +84,7 @@
}
- } else if(mn2d.getView() == pageImageScrollNodeType.getView()) {
+ } else if(mn2d.getView2D() == pageImageScrollNodeType.getView2D()) {
pa("TransclusionConnector: Pagescroll -> outside not impl");
} else {}
pa("TransclusionConnector: Unknown view2d type");
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] fenfire/org/fenfire swamp/CachedNodeFunction.ja...,
Tuomas J. Lukka <=