[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz gfx/libpaper/papermill.py gfx/util/papersam...
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] gzz gfx/libpaper/papermill.py gfx/util/papersam... |
Date: |
Mon, 03 Mar 2003 07:25:48 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Tuomas J. Lukka <address@hidden> 03/03/03 07:25:48
Modified files:
gfx/libpaper : papermill.py
gfx/util : papersampler.py
gzz/gfx/gl : GLSpanner.java MipzipLoader.java
MipzipMemoryConsumer.java
gzz/view : PageSpanCellView.java
Log message:
More abstracting
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/libpaper/papermill.py.diff?tr1=1.75&tr2=1.76&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/util/papersampler.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/GLSpanner.java.diff?tr1=1.15&tr2=1.16&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/MipzipLoader.java.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/MipzipMemoryConsumer.java.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/PageSpanCellView.java.diff?tr1=1.27&tr2=1.28&r1=text&r2=text
Patches:
Index: gzz/gfx/libpaper/papermill.py
diff -u gzz/gfx/libpaper/papermill.py:1.75 gzz/gfx/libpaper/papermill.py:1.76
--- gzz/gfx/libpaper/papermill.py:1.75 Sun Mar 2 12:11:14 2003
+++ gzz/gfx/libpaper/papermill.py Mon Mar 3 07:25:47 2003
@@ -159,8 +159,9 @@
pap.repeat = rootrep
return pap
- def getOptimizedPaper(self, seed, w, passmask = [1, 1, 1, 1, 1, 1, 1]):
- pap = self.getPaper(seed, passmask)
+ def getOptimizedPaper(self, seed, w, passmask = [1, 1, 1, 1, 1, 1, 1],
+ numcolors = 8, minlum = 80):
+ pap = self.getPaper(seed, passmask, numcolors, minlum)
if not GL.hasExtension("GL_SGIS_generate_mipmap"):
print "Warning: not returning optimized paper because"
Index: gzz/gfx/util/papersampler.py
diff -u gzz/gfx/util/papersampler.py:1.2 gzz/gfx/util/papersampler.py:1.3
--- gzz/gfx/util/papersampler.py:1.2 Mon Mar 3 03:27:06 2003
+++ gzz/gfx/util/papersampler.py Mon Mar 3 07:25:47 2003
@@ -1,11 +1,15 @@
+from __future__ import nested_scopes
+
import sys
+import random
from java.lang import Runnable, System
+
import gzz
System.setProperty("gzzclient", "gl")
from gzz.client import GraphicsAPI
-from gzz.gfx.gl import GL, GLRen, GLSpans, Paper, GLCache
+from gzz.gfx.gl import GL, GLRen, GLSpanner, Paper, GLCache
from gfx.util.misc import *
from gfx.libutil import saveanim
@@ -13,9 +17,39 @@
xs = 1024
ys = 768
+zoomLevels = [1, 2, 3, 4]
+
+class OptMill(gzz.gfx.gl.PaperMill):
+ def __init__(self, mill, opts):
+ self.mill = mill
+ self.opts = opts
+ def getPaper(self,seed):
+ return mill.getPaper(seed, **opts)
+ def getOptimizedPaper(self, seed, w):
+ return mill.getOptimizedPaper(seed, w, **opts)
+
+lightnesses = [
+ { "numcolors" : 8, "minlum" : 80 },
+ { "numcolors" : 8, "minlum" : 94 },
+ { "numcolors" : 1, "minlum" : 80 },
+ ]
+
aspect = float(xs)/ys
+enfMaker = gzz.media.impl.Enfilade1DImpl.Enfilade1DImplMaker()
textblock = "011D75251F04C8BF89A44C88D875886B2B5172522A"
+scroll = gzz.media.impl.PageImageScroll(None,
+ gzz.mediaserver.Mediaserver.Id(textblock)),
+current = scroll.getCurrent()
+
+pages = [enfMaker.makeEnfilade(current.subSpan(i, i+1)) for i in range(0,
current.length())]
+
+textureSeeds = [i for i in range(523, 523+current.length())]
+
+class PSPMaker(gzz.view.PageSpanCellView.PageSpanPaperMaker):
+ def getPaper(spanpage, pagespan):
+ return gzz.gfx.gl.PageSpanPaper(spanpage,
+ textureSeeds[pagespan.offset()])
def getpaper(seed, opts):
pap = ThePaperMill().getPaper(seed, **opts)
@@ -31,29 +65,50 @@
cs2 = vs.affineCS(0, "tex", 1, 0, 0, scale, 0, 0, scale)
pq = getpaper(seed, opts)
vs.map.put(pq, cs1, cs2)
- return vs
+
+def doFrame(scene, filename):
+ vs = w.createVobScene()
+ scene(vs)
+ w.renderStill(vs, 0)
+ saveanim.saveframe(filename, w)
+ java.lang.System.gc()
+ GL.freeQueue()
+
def createPurePapers():
seed = 100
- for opts in [
- { "numcolors" : 8, "minlum" : 80 },
- { "numcolors" : 8, "minlum" : 94 },
- { "numcolors" : 1, "minlum" : 80 },
- ]:
+ for opts in lightnesses:
for i in range(0,30):
- vs = w.createVobScene()
- paperscene(vs, seed, opts)
- w.renderStill(vs, 0)
- saveanim.saveframe("/tmp/tmp%s.png" % seed, w)
- java.lang.System.gc()
- GL.freeQueue()
-
+ doFrame(lambda vs: paperscene(vs, seed, opts),
+ "tmp/tmp%s.png" % seed)
seed += 1
+def textPaperScene(vs, layout, scale):
+ layout.
+
+
+def createTextPapers():
+ for subj in range(0,2):
+ zooms = zoomLevels + zoomLevels + zoomLevels
+ random.shuffle(zooms)
+
+ global textureSeeds
+ random.shuffle(textureSeeds)
+ gzz.view.PageSpanCellView.pageSpanPaperMaker = PSPMaker()
+
+ for page in pages:
+ for opts in lightnesses:
+ gzz.gfx.gl.PageSpanPaper.paperMill = OptMill(
+ ThePaperMill(), opts)
+ layout = PageSpanCellView().getLayout(page)
+ zoom = zooms.pop()
+
+
class Main(Runnable):
def run(self):
+ GLSpanner.dangerouslyOverrideMemoryPartitioner()
global ThePaperMill, w
from gfx.libpaper.papermill import ThePaperMill
Index: gzz/gzz/gfx/gl/GLSpanner.java
diff -u gzz/gzz/gfx/gl/GLSpanner.java:1.15 gzz/gzz/gfx/gl/GLSpanner.java:1.16
--- gzz/gzz/gfx/gl/GLSpanner.java:1.15 Fri Feb 21 15:02:38 2003
+++ gzz/gzz/gfx/gl/GLSpanner.java Mon Mar 3 07:25:48 2003
@@ -46,7 +46,8 @@
public static boolean dbg = false;
private static void pa(String s) { System.out.println(s); }
-
+ static MipzipMemoryConsumer currentlyLoaded = null;
+
static MemoryPartitioner pool;
static {
String mem_str = System.getProperty("GFX_MEM", "16");
@@ -56,6 +57,14 @@
pool = new MemoryPartitioner(mem * 1024 * 1024);
}
+ /** Irrevocably stop using the memorypartitioner interface
+ * for allocating textures.
+ */
+ public static void dangerouslyOverrideMemoryPartitioner() {
+ pool.stop();
+ pool = null;
+ }
+
private static class SpanSB {
PageImageScroll sb;
SpanPage[] pages;
@@ -102,6 +111,13 @@
* of the drawn area.
*/
public GL.Texture getTexture(float importance, float pixels) {
+ if(pool == null) {
+ if(currentlyLoaded != consumer) {
+ currentlyLoaded.loadToBaseLevelSynch(1000);
+ currentlyLoaded = consumer;
+ currentlyLoaded.loadToBaseLevelSynch(0);
+ }
+ }
return consumer.getTexture(importance, pixels);
}
@@ -210,6 +226,11 @@
span2rect.put(sp, r);
}
return r;
+ }
+
+ public static void clearCache() {
+ span2rect = new WeakHashMap();
+ sb2spansb = new WeakHashMap();
}
Index: gzz/gzz/gfx/gl/MipzipLoader.java
diff -u gzz/gzz/gfx/gl/MipzipLoader.java:1.19
gzz/gzz/gfx/gl/MipzipLoader.java:1.20
--- gzz/gzz/gfx/gl/MipzipLoader.java:1.19 Fri Feb 21 15:02:38 2003
+++ gzz/gzz/gfx/gl/MipzipLoader.java Mon Mar 3 07:25:48 2003
@@ -230,6 +230,8 @@
/** Set the texture parameter "BASE_LEVEL" to the given value.
*/
synchronized private void setBaseLevel(int level) {
+ if(level < 0) level = 0;
+ if(level >= maxBaseLevel) level = maxBaseLevel;
tex.setTexParameter("TEXTURE_2D", "TEXTURE_BASE_LEVEL", level);
tex.setTexParameter("TEXTURE_2D", "TEXTURE_MIN_LOD", level);
currentBaseLevel = level;
@@ -239,8 +241,12 @@
* @param level The base level: the lowest-detail level to be loaded
*/
synchronized public void loadToBaseLevelSynch(int level) throws
IOException {
+ int cur = currentBaseLevel;
setBaseLevel(level);
- for(int i=level; i<levels.length; i++) {
+ if(currentBaseLevel > cur)
+ GLUtil.reloadCompressed(tex,
+ currentBaseLevel, levels.length);
+ for(int i=currentBaseLevel; i<levels.length; i++) {
levels[i].loadData();
levels[i].texImage();
}
Index: gzz/gzz/gfx/gl/MipzipMemoryConsumer.java
diff -u gzz/gzz/gfx/gl/MipzipMemoryConsumer.java:1.6
gzz/gzz/gfx/gl/MipzipMemoryConsumer.java:1.7
--- gzz/gzz/gfx/gl/MipzipMemoryConsumer.java:1.6 Fri Feb 21 15:02:38 2003
+++ gzz/gzz/gfx/gl/MipzipMemoryConsumer.java Mon Mar 3 07:25:48 2003
@@ -60,6 +60,14 @@
return mipzip.getMemory(level);
}
+ public void loadToBaseLevelSynch(int level) {
+ try {
+ mipzip.loadToBaseLevelSynch(level);
+ } catch(Exception e) {
+ e.printStackTrace();
+ throw new Error("Error", e);
+ }
+ }
public int getReservation() {
return mipzip.getMemory();
}
Index: gzz/gzz/view/PageSpanCellView.java
diff -u gzz/gzz/view/PageSpanCellView.java:1.27
gzz/gzz/view/PageSpanCellView.java:1.28
--- gzz/gzz/view/PageSpanCellView.java:1.27 Fri Feb 21 15:02:44 2003
+++ gzz/gzz/view/PageSpanCellView.java Mon Mar 3 07:25:48 2003
@@ -66,6 +66,18 @@
out[1] = l.h;
}
+ public interface PageSpanPaperMaker {
+ PageSpanPaper getPaper(GLSpanner.SpanPage p, PageSpan sp);
+ }
+ public class DefaultPageSpanPaperMaker implements PageSpanPaperMaker {
+ public PageSpanPaper getPaper(GLSpanner.SpanPage p, PageSpan sp) {
+ return new PageSpanPaper(p, sp.getScrollBlock().hashCode());
+ }
+ }
+
+ public PageSpanPaperMaker pageSpanPaperMaker =
+ new DefaultPageSpanPaperMaker();
+
/** A single enfilade laid out on the plane.
*/
public class Layout {
@@ -93,8 +105,7 @@
private void page(int p, PageSpan sp) {
pages[p] = sp;
GLSpanner.SpanRect rect = GLSpanner.getSpanRect(pages[p]);
- psps[p] = new PageSpanPaper(rect.page,
- sp.getScrollBlock().hashCode());
+ psps[p] = pageSpanPaperMaker.getPaper(rect.page, sp);
Point l_p = pages[p].getLocation();
Dimension d_p = pages[p].getSize();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz gfx/libpaper/papermill.py gfx/util/papersam...,
Tuomas J. Lukka <=