gzz-commits
[Top][All Lists]
Advanced

[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();




reply via email to

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