[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz/gzz/view PageSpanCellView.java buoy/BuoyVie...
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] gzz/gzz/view PageSpanCellView.java buoy/BuoyVie... |
Date: |
Thu, 06 Feb 2003 02:38:45 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Tuomas J. Lukka <address@hidden> 03/02/06 02:38:42
Modified files:
gzz/view : PageSpanCellView.java
gzz/view/buoy : BuoyViewNodeType.java CellBuoyViewNodeType.java
pagespanNodes.py
Log message:
Adjust PageSpanCellView to do scrollblocks; doc interfaces better
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/PageSpanCellView.java.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/buoy/BuoyViewNodeType.java.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/buoy/CellBuoyViewNodeType.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/buoy/pagespanNodes.py.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
Patches:
Index: gzz/gzz/view/PageSpanCellView.java
diff -u gzz/gzz/view/PageSpanCellView.java:1.11
gzz/gzz/view/PageSpanCellView.java:1.12
--- gzz/gzz/view/PageSpanCellView.java:1.11 Wed Feb 5 09:09:03 2003
+++ gzz/gzz/view/PageSpanCellView.java Thu Feb 6 02:38:42 2003
@@ -28,6 +28,10 @@
return new Layout(enf);
}
+ public Layout getLayout(ScrollBlock sb) {
+ return new Layout((PageSpan)sb.getCurrent()); // XXX Cache
+ }
+
public void getSize(Enfilade1D enf, float[] out) {
Layout l = getLayout(enf);
out[0] = l.w;
@@ -45,46 +49,63 @@
float w;
float h;
-
- public Layout(Enfilade1D enf) {
- npages = enf.length();
-
+ /** Allocate the structure to hold a given number of pages.
+ */
+ private void alloc(int size) {
+ npages = size;
pages = new PageSpan[npages];
psps = new PageSpanPaper[npages];
xywh = new float[npages * 4]; // x, y, w, h in PAPER coordinates
w = 0;
h = 0;
+ }
+
+ /** (To be called with increasing p): add a page.
+ */
+ private void page(int p, PageSpan sp) {
+ pages[p] = sp;
+ GLSpanner.SpanRect rect = GLSpanner.getSpanRect(pages[p]);
+ psps[p] = new PageSpanPaper(null, rect.page);
+
+ Point l_p = pages[p].getLocation();
+ Dimension d_p = pages[p].getSize();
+
+ xywh[4*p + 0] = psps[p].getX(l_p.x);
+ xywh[4*p + 1] = psps[p].getY(l_p.y);
+ xywh[4*p + 2] = psps[p].getX(d_p.width);
+ xywh[4*p + 3] = psps[p].getY(d_p.height);
+
+ if(dbg) pa("Page "+p+" "+
+ xywh[4*p+0]+" "+
+ xywh[4*p+1]+" "+
+ xywh[4*p+2]+" "+
+ xywh[4*p+3]+" "+
+ pages[p]);
+
+ w += scale * xywh[4*p + 2];
+ if(h < scale * xywh[4*p + 3])
+ h = scale * xywh[4*p + 3];
+ }
- boolean foundCenter = false;
+ public Layout(Enfilade1D enf) {
+ alloc(enf.length());
for(int p = 0; p < npages; p++) {
- pages[p] = (PageSpan)enf.sub(p, p+1).getList().get(0); // XXX
INEFFICIENT!
- GLSpanner.SpanRect rect = GLSpanner.getSpanRect(pages[p]);
- psps[p] = new PageSpanPaper(null, rect.page);
-
- Point l_p = pages[p].getLocation();
- Dimension d_p = pages[p].getSize();
-
- xywh[4*p + 0] = psps[p].getX(l_p.x);
- xywh[4*p + 1] = psps[p].getY(l_p.y);
- xywh[4*p + 2] = psps[p].getX(d_p.width);
- xywh[4*p + 3] = psps[p].getY(d_p.height);
-
- if(dbg) pa("Page "+p+" "+
- xywh[4*p+0]+" "+
- xywh[4*p+1]+" "+
- xywh[4*p+2]+" "+
- xywh[4*p+3]+" "+
- pages[p]);
-
- w += scale * xywh[4*p + 2];
- if(h < scale * xywh[4*p + 3])
- h = scale * xywh[4*p + 3];
+ // XXX INEFFICIENT!
+ page(p, (PageSpan)enf.sub(p, p+1).getList().get(0));
}
+ }
+ public Layout(PageSpan sp) {
+ alloc(sp.length());
+
+ for(int p = 0; p < npages; p++) {
+ page(p, (PageSpan)sp.subSpan(p, p+1));
+ }
}
+
/** Get the extents (in the output coordinates)
* of a given page span.
Index: gzz/gzz/view/buoy/BuoyViewNodeType.java
diff -u gzz/gzz/view/buoy/BuoyViewNodeType.java:1.5
gzz/gzz/view/buoy/BuoyViewNodeType.java:1.6
--- gzz/gzz/view/buoy/BuoyViewNodeType.java:1.5 Wed Feb 5 15:21:05 2003
+++ gzz/gzz/view/buoy/BuoyViewNodeType.java Thu Feb 6 02:38:42 2003
@@ -14,7 +14,11 @@
Object getSize(Object linkId, Object anchor, float[] wh);
/** Render portion of the view relevant to linkId and anchor
- * into the given box. This should not have any side effects.
+ * into the given box. This should not have any side effects,
+ * beyond e.g. beginning to load images.
+ * The box should be filled <b>completely</b> because it will
+ * be used for sensing mouse clicks to this buoy
+ * (XXX kludge! Will change later)
*/
void renderBuoy(VobScene vs, int into, Object linkId, Object anchor,
Object cachedSize);
Index: gzz/gzz/view/buoy/CellBuoyViewNodeType.java
diff -u gzz/gzz/view/buoy/CellBuoyViewNodeType.java:1.2
gzz/gzz/view/buoy/CellBuoyViewNodeType.java:1.3
--- gzz/gzz/view/buoy/CellBuoyViewNodeType.java:1.2 Wed Feb 5 15:21:05 2003
+++ gzz/gzz/view/buoy/CellBuoyViewNodeType.java Thu Feb 6 02:38:42 2003
@@ -21,6 +21,9 @@
Object getSize(Cell c, Object content, float[] wh);
/** Render this view centered on a given cell.
+ * Since this is delegated from BuoyViewNodeType.renderBuoy,
+ * the same rules apply.
+ * @see BuoyViewNodeType#renderBuoy
* @param content If not null, an object describing the part of content
* that the view should be centered on. Can be
ignored.
*/
Index: gzz/gzz/view/buoy/pagespanNodes.py
diff -u gzz/gzz/view/buoy/pagespanNodes.py:1.12
gzz/gzz/view/buoy/pagespanNodes.py:1.13
--- gzz/gzz/view/buoy/pagespanNodes.py:1.12 Wed Feb 5 13:31:02 2003
+++ gzz/gzz/view/buoy/pagespanNodes.py Thu Feb 6 02:38:42 2003
@@ -25,12 +25,10 @@
def createMainNode(self, linkId, anchorSpan, listener):
return PageSpanMainNode(self, anchorSpan, listener)
+size = jarray.zeros(2, 'f')
+
class WholePageSpanNodeType(AbstractPageSpanNodeType):
def renderBuoy(self, vs, into, linkId, anchorSpan):
- # XXX!!!!
- # Irregu!
- # find edges of span
- # should place only that region surrounded by irregu
sb = anchorSpan.getScrollBlock();
pscv.place(makeEnf(sb.getCurrent()), vs, into,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz/gzz/view PageSpanCellView.java buoy/BuoyVie...,
Tuomas J. Lukka <=