gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz gfx/jni/GzzGL-jni.cxx gfx/libpaper/papermil...


From: Tuomas J. Lukka
Subject: [Gzz-commits] gzz gfx/jni/GzzGL-jni.cxx gfx/libpaper/papermil...
Date: Mon, 27 Jan 2003 12:26:06 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Tuomas J. Lukka <address@hidden>        03/01/27 12:26:05

Modified files:
        gfx/jni        : GzzGL-jni.cxx 
        gfx/libpaper   : papermill.py 
        gfx/librenderables: renderables.py 
        gzz/gfx/gl     : GL.java GLSpanner.java MipzipLoader.java 
                         PageSpanPaper.java pagespanpaper.py 
        test/gzz/gfx/gl: pagespanpaper.test 

Log message:
        Now the pagespanpaper tests pass

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/jni/GzzGL-jni.cxx.diff?tr1=1.84&tr2=1.85&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/libpaper/papermill.py.diff?tr1=1.69&tr2=1.70&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/librenderables/renderables.py.diff?tr1=1.171&tr2=1.172&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/GL.java.diff?tr1=1.46&tr2=1.47&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/GLSpanner.java.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/MipzipLoader.java.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/PageSpanPaper.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/pagespanpaper.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/test/gzz/gfx/gl/pagespanpaper.test.diff?tr1=1.3&tr2=1.4&r1=text&r2=text

Patches:
Index: gzz/gfx/jni/GzzGL-jni.cxx
diff -u gzz/gfx/jni/GzzGL-jni.cxx:1.84 gzz/gfx/jni/GzzGL-jni.cxx:1.85
--- gzz/gfx/jni/GzzGL-jni.cxx:1.84      Mon Jan 27 09:33:19 2003
+++ gzz/gfx/jni/GzzGL-jni.cxx   Mon Jan 27 12:26:03 2003
@@ -495,6 +495,24 @@
     GLERR
   }
 
+JNIEXPORT void JNICALL Java_gzz_gfx_gl_GL_impl_1Texture_1texImage2D
+  (JNIEnv *env, jclass, jint id, jint level, jstring internalFormat_s,
+    jint w, jint h, jint border, jstring format_s, jstring type_s,
+    jbyteArray jdata) {
+    int internalFormat = tokenFromJstring(env, internalFormat_s);
+    int format = tokenFromJstring(env, format_s);
+    int type = tokenFromJstring(env, type_s);
+    jbyte *data = env->GetByteArrayElements(jdata, 0);
+
+    glBindTexture(GL_TEXTURE_2D, id);
+    glTexImage2D(GL_TEXTURE_2D,
+               level, internalFormat, w, h, border, format, type, data);
+    env->ReleaseByteArrayElements(jdata, data, 0);
+    glBindTexture(GL_TEXTURE_2D, 0);
+    GLERR
+  }
+
+
 JNIEXPORT void JNICALL Java_gzz_gfx_gl_GL_impl_1Texture_1loadSubImage
   (JNIEnv *env, jclass, jint id, jint level, jint imageId, jint x, jint y,
     jint xoffs, jint yoffs, jint w, jint h) {
Index: gzz/gfx/libpaper/papermill.py
diff -u gzz/gfx/libpaper/papermill.py:1.69 gzz/gfx/libpaper/papermill.py:1.70
--- gzz/gfx/libpaper/papermill.py:1.69  Sat Jan 25 09:45:14 2003
+++ gzz/gfx/libpaper/papermill.py       Mon Jan 27 12:26:04 2003
@@ -175,7 +175,8 @@
            BindTexture TEXTURE_2D 0
        """ % locals())
        print "READ: ", 0, vs.getSize().height-1-s, s, s
-       tex.copyTexImage2D(w.getRenderingSurface(), "FRONT", "TEXTURE_2D", 0,
+       tex.copyTexImage2D(w.getRenderingSurface(), 
+                       "FRONT", "TEXTURE_2D", 0,
                        "RGB", 0, vs.getSize().height-1-s, 
                            s, s, 0)
 
Index: gzz/gfx/librenderables/renderables.py
diff -u gzz/gfx/librenderables/renderables.py:1.171 
gzz/gfx/librenderables/renderables.py:1.172
--- gzz/gfx/librenderables/renderables.py:1.171 Sat Jan 25 06:03:21 2003
+++ gzz/gfx/librenderables/renderables.py       Mon Jan 27 12:26:04 2003
@@ -798,13 +798,13 @@
                }
            }
 
-           glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
-           glInterleavedArrays(GL_T2F_V3F, 5*sizeof(float), vertices);
-           glLockArraysEXT(0, dice*dice*5);
+           if(flags & PAPERQUAD_USE_VERTEX_PROGRAM) {
+               glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
+               glInterleavedArrays(GL_T2F_V3F, 5*sizeof(float), vertices);
+               glLockArraysEXT(0, dice*dice*5);
 
-           for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); 
++it) {
+               for(Paper::Paper::iterator it = paper->begin(); it != 
paper->end(); ++it) {
 
-                if (flags & PAPERQUAD_USE_VERTEX_PROGRAM) {
                     DBG(dbg_paperquad) << "Pass\\n";
                     GLERR
                     (*it).setUp_VP(&lightParam);
@@ -820,7 +820,12 @@
                     GLERR
                     DBG(dbg_paperquad) << "Pass over\\n";
 
-                } else {
+               }
+               glUnlockArraysEXT();
+               glPopClientAttrib();
+           } else {
+               for(Paper::Paper::iterator it = paper->begin(); it != 
paper->end(); ++it) {
+
                     DBG(dbg_paperquad) << "Pass\\n";
                     GLERR
                     (*it).setUp_explicit(&lightParam);
@@ -834,13 +839,18 @@
                         for(int iy = 0; iy<dice; iy++) {
 
                              float tmp[4] = { VERTICES3(ix, iy, 0), 
VERTICES3(ix, iy, 1), 0 ,1 };
+                           DBG(dbg_paperquad) << "to texcoords\\n";
                              (*it).texcoords_explicit( tmp );
+                           DBG(dbg_paperquad) << "to vertex\\n";
                              glVertex3fv( (&(VERTICES2(ix, iy))+2) );
                                 
                              float tmp2[4] = { VERTICES3(ix+1, iy, 0), 
VERTICES3(ix+1, iy, 1), 0 ,1 };
+                           DBG(dbg_paperquad) << "to texcoords\\n";
                              (*it).texcoords_explicit( tmp2 );
+                           DBG(dbg_paperquad) << "to vertex\\n";
                              glVertex3fv( ((&VERTICES2(ix+1, iy))+2) );
                          }
+                       DBG(dbg_paperquad) << "to end\\n";
                          glEnd();
                     }
 
@@ -854,8 +864,6 @@
                 }
            }
 
-           glUnlockArraysEXT();
-           glPopClientAttrib();
            DBG(dbg_paperquad) << "Passes over\\n";
 
            GLERR
Index: gzz/gzz/gfx/gl/GL.java
diff -u gzz/gzz/gfx/gl/GL.java:1.46 gzz/gzz/gfx/gl/GL.java:1.47
--- gzz/gzz/gfx/gl/GL.java:1.46 Sun Jan 26 16:25:58 2003
+++ gzz/gzz/gfx/gl/GL.java      Mon Jan 27 12:26:04 2003
@@ -460,6 +460,18 @@
                        border, data);
        }
 
+       /** Call glTexImage2D.
+        * The length of data is used so it needs to be right.
+        */
+       public void texImage2D(int level, 
+                       String internalFormat, int w, int h, 
+                       int border, String format, String type, 
+                       byte[] data) {
+           impl_Texture_texImage2D(getId(), 
+                       level, internalFormat, w, h, border, format, 
+                       type, data);
+       }
+
        /** Call libtexture to create the image for each mipmap level 
separately.
         */
        public int shade_all_levels(int w, int h, int d, int comps, 
@@ -533,6 +545,9 @@
     static private native void impl_Texture_loadNull2D(int id, int level, 
                        String internalFormat, int w, int h, 
                        int border, String format, String type) ;
+    static private native void impl_Texture_texImage2D(int id, int level, 
+                       String internalFormat, int w, int h, 
+                       int border, String format, String type, byte[] data) ;
     static private native void impl_Texture_loadSubImage(int id,
        int level, int imgid, int x, int y, int xoffs, int yoffs, int w, int h) 
;
     static private native void impl_Texture_downsampleInto(int id, int intoid, 
String target, 
Index: gzz/gzz/gfx/gl/GLSpanner.java
diff -u gzz/gzz/gfx/gl/GLSpanner.java:1.8 gzz/gzz/gfx/gl/GLSpanner.java:1.9
--- gzz/gzz/gfx/gl/GLSpanner.java:1.8   Mon Jan 27 07:28:00 2003
+++ gzz/gzz/gfx/gl/GLSpanner.java       Mon Jan 27 12:26:04 2003
@@ -85,11 +85,16 @@
            w = (int)(d.width / resmult);
            h = (int)(d.height / resmult);
            MipzipLoader l; 
+           File f = new File(file + 
+                   (GL.workaroundStupidBuggyAtiDrivers?
+                       ".mipzipBLAH" :
+                       ".mipzip"));
            try {
-               l = new MipzipLoader(new File(file+".mipzip"));
+               l = new MipzipLoader(f);
            } catch(IOException e) {
+               e.printStackTrace();
                throw new Error("MipzipLoader threw '" + e + "' for " + 
-                               file + ".mipzip");
+                               f);
            }
            Dimension largest = l.getLevelSize(0);
            x1 = d.width / (float)largest.width;
Index: gzz/gzz/gfx/gl/MipzipLoader.java
diff -u gzz/gzz/gfx/gl/MipzipLoader.java:1.16 
gzz/gzz/gfx/gl/MipzipLoader.java:1.17
--- gzz/gzz/gfx/gl/MipzipLoader.java:1.16       Fri Jan 24 04:09:30 2003
+++ gzz/gzz/gfx/gl/MipzipLoader.java    Mon Jan 27 12:26:04 2003
@@ -51,6 +51,7 @@
     /** The compressed format.
      */
     private final String texFormat;
+    private final boolean compressedFormat;
 
     private int bitsPerTexel;
 
@@ -139,9 +140,14 @@
                pa("TexImage "+MipzipLoader.this+" "+level+
                        " "+state);
            if(state != STATE_DATALOADED) return;
-           tex.compressedTexImage(level, texFormat,
-                       size.width, size.height, 0,
-                       loadedData);
+           if(compressedFormat)
+               tex.compressedTexImage(level, texFormat,
+                           size.width, size.height, 0,
+                           loadedData);
+           else
+               tex.texImage2D(level, "RGB", size.width, size.height,
+                           0, texFormat, "BYTE", loadedData);
+                           
            state = STATE_INTEXTURE;
            loadedData = null;
            AbstractUpdateManager.doWhenIdle( r_runGL, priority);
@@ -430,6 +436,7 @@
            ZipEntry e = f.getEntry("texformat");
            if(e == null) throw new IOException("Invalid format: no texformat 
in mipzip");
            this.texFormat = e.getComment();
+           this.compressedFormat = texFormat.indexOf("COMPRESS") != -1;
            ArrayList l = new ArrayList();
            for(int i=0; i<100; i++) {
                e = f.getEntry(""+i);
Index: gzz/gzz/gfx/gl/PageSpanPaper.java
diff -u gzz/gzz/gfx/gl/PageSpanPaper.java:1.2 
gzz/gzz/gfx/gl/PageSpanPaper.java:1.3
--- gzz/gzz/gfx/gl/PageSpanPaper.java:1.2       Mon Jan 27 09:33:19 2003
+++ gzz/gzz/gfx/gl/PageSpanPaper.java   Mon Jan 27 12:26:04 2003
@@ -90,8 +90,11 @@
                    Paper.Pass pass = bgPaper.getPass(0);
                    pass.setNTexGens(2);
                    pass.putNormalTexGen(1, getTexgen());
-                   pass.setSetupcode(setupDualPass + getBindTexture(1));
-                   pass.setTeardowncode(teardown);
+                   pass.setSetupcode(
+                               pass.getSetupcode() +
+                               setupDualPass + getBindTexture(1));
+                   pass.setTeardowncode(teardown + 
+                                       pass.getTeardowncode());
 
                } else {
                    // We don't have an optimized paper;
Index: gzz/gzz/gfx/gl/pagespanpaper.py
diff -u gzz/gzz/gfx/gl/pagespanpaper.py:1.1 gzz/gzz/gfx/gl/pagespanpaper.py:1.2
--- gzz/gzz/gfx/gl/pagespanpaper.py:1.1 Mon Jan 27 09:43:05 2003
+++ gzz/gzz/gfx/gl/pagespanpaper.py     Mon Jan 27 12:26:04 2003
@@ -1,31 +1,34 @@
 from gzz.gfx.gl import PageSpanPaper
 
+# The filters for pagespanpaper, really clunky
+# to write in java.
+
 PageSpanPaper.filter = """
-       Enable TEXTURE_2D
-       TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_NEAREST
-       TexParameter TEXTURE_2D TEXTURE_MAG_FILTER LINEAR
-       TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 1
+    Enable TEXTURE_2D
+    TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_NEAREST
+    TexParameter TEXTURE_2D TEXTURE_MAG_FILTER LINEAR
+    TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 1
 """
 
 PageSpanPaper.setupOnlyPass = """
-       PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
-       TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
-       Disable BLEND
+    PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
+    TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
+    Disable BLEND
 """
 PageSpanPaper.setupExtraPass = """
-       PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
-       TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
-       Enable BLEND
-       BlendFunc ZERO SRC_COLOR
+    PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
+    TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
+    Enable BLEND
+    BlendFunc ZERO SRC_COLOR
 """
 PageSpanPaper.setupDualPass = """
-       PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
-       ActiveTexture TEXTURE0
-       Enable TEXTURE_2D
-       TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
-       Disable BLEND
-       ActiveTexture TEXTURE1
-       TexEnv TEXTURE_ENV TEXTURE_ENV_MODE MODULATE
+    PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
+    ActiveTexture TEXTURE0
+    Enable TEXTURE_2D
+    TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
+    Disable BLEND
+    ActiveTexture TEXTURE1
+    TexEnv TEXTURE_ENV TEXTURE_ENV_MODE MODULATE
 """
 PageSpanPaper.teardown = """
     PopAttrib
Index: gzz/test/gzz/gfx/gl/pagespanpaper.test
diff -u gzz/test/gzz/gfx/gl/pagespanpaper.test:1.3 
gzz/test/gzz/gfx/gl/pagespanpaper.test:1.4
--- gzz/test/gzz/gfx/gl/pagespanpaper.test:1.3  Mon Jan 27 09:33:19 2003
+++ gzz/test/gzz/gfx/gl/pagespanpaper.test      Mon Jan 27 12:26:05 2003
@@ -21,12 +21,20 @@
     """
     failUnlessEqual(sc.getCurrent().length(), 2)
 
+
+def excinfo():
+    global exc
+    typ, val, tra = sys.exc_info()
+    print (repr((typ, val)))
+    print str(val)
+    exc = "\n".join(traceback.format_list(traceback.extract_tb(tra)))
+
 def checkColors():
     try:
        # Check that the green rectangle is there
-       checkAvgColor(160,150,50,50, (0, 255, 0))
+       checkAvgColor(160,150,50,50, (0, 255, 0), delta=110)
        # Check that the red rectangle is there
-       checkAvgColor(260,150,50,50, (255, 0, 0))
+       checkAvgColor(260,150,50,50, (255, 0, 0), delta=110)
        # Check that the black rectangle is there
        checkAvgColor(150,225,20,50, (0, 0, 0))
        checkAvgColor(330,225,20,50, (0, 0, 0))
@@ -35,25 +43,22 @@
        checkAvgColor(45, 0, 2, 500, (255, 255, 0))
        checkAvgColor(453, 0, 2, 500, (255, 255, 0))
     except:
-       return 0
-       # Let these run to print out the errors
-       typ, val, tra = sys.exc_info()
-       print (repr((typ, val)))
-       print str(val)
-       l = traceback.format_list(traceback.extract_tb(tra))
-       print "\n".join(l)
+       excinfo()
        return 0
     return 1
 
-def testNobg():
-    """Test that the image gets loaded correctly from GLSpanner.
+def checkNonBlank():
+    checkNotAvgColor(100, 100, 3, 20, (255, 255, 255))
 
-    """
+def checkBlank():
+    checkAvgColor(100, 100, 3, 20, (255, 255, 255))
+
+def checkPaper(bgpaper, blank):
 
     pagespan = GLSpanner.getSpanRect(sc.getCurrent()).page
-    p = PageSpanPaper(None, pagespan)
+    p = PageSpanPaper(bgpaper, pagespan)
 
-    pap = p.getPaper(0)
+    pap = p.getPaper(not blank)
 
     vs = getvs()
     vs.map.put(SolidBgVob(Color.yellow))
@@ -69,11 +74,43 @@
        render(vs)
 
        # check the rendered image's color
-       if checkColors(): return
+       if checkColors(): 
+           if blank:
+               checkBlank()
+           else:
+               checkNonBlank()
+           return
 
        Thread.sleep(100)
 
+    
+
+    failUnlessEqual("didn't get the image " + exc, 0, 1)
+
+
+def testPaperLoading():
+    """Test that the image gets loaded correctly from GLSpanner.
+
+    """
+    checkPaper(None, 1)
+
+def testUnoptimized():
+    """Test that rendering the paper on top of fancy unoptimized
+    paper works.
+
+    """
+
+    checkPaper(PaperMill.getInstance().getPaper(42), 1)
+    checkPaper(PaperMill.getInstance().getPaper(42), 0)
+
+def testOptimized():
+    """Test that rendering the paper on top of fancy optimized
+    paper works.
+
+    """
+
+    checkPaper(PaperMill.getInstance().getOptimizedPaper(43, win), 1)
+    checkPaper(PaperMill.getInstance().getOptimizedPaper(43, win), 0)
 
-    failUnlessEqual("didn't get the image", 0, 1)
 
 # : vim: set syntax=python :




reply via email to

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