gzz-commits
[Top][All Lists]
Advanced

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

[Gzz-commits] gzz doc/pegboard/null_cs_api--tjl/peg.rst gfx/j...


From: Tuomas J. Lukka
Subject: [Gzz-commits] gzz doc/pegboard/null_cs_api--tjl/peg.rst gfx/j...
Date: Mon, 11 Nov 2002 07:01:32 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Tuomas J. Lukka <address@hidden>        02/11/11 07:01:32

Modified files:
        doc/pegboard/null_cs_api--tjl: peg.rst 
        gfx/jni        : GzzGL-jni.cxx 
        gzz/gfx/gl     : GLVobCoorder.java 
        gzz/vob        : VobCoorder.java 
        gzz/vob/impl   : OrthoCoorder.java 
        test           : testutil.py 
        test/gzz/gfx/gl: glvobcoorder.test 
        test/tools     : gfx.py 

Log message:
        Implement nullcoordsys; test for crashing when no coordsys, fix crash

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/doc/pegboard/null_cs_api--tjl/peg.rst.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/jni/GzzGL-jni.cxx.diff?tr1=1.59&tr2=1.60&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/GLVobCoorder.java.diff?tr1=1.56&tr2=1.57&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/vob/VobCoorder.java.diff?tr1=1.22&tr2=1.23&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/vob/impl/OrthoCoorder.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/test/testutil.py.diff?tr1=1.35&tr2=1.36&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/test/gzz/gfx/gl/glvobcoorder.test.diff?tr1=1.21&tr2=1.22&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/test/tools/gfx.py.diff?tr1=1.10&tr2=1.11&r1=text&r2=text

Patches:
Index: gzz/doc/pegboard/null_cs_api--tjl/peg.rst
diff -u gzz/doc/pegboard/null_cs_api--tjl/peg.rst:1.3 
gzz/doc/pegboard/null_cs_api--tjl/peg.rst:1.4
--- gzz/doc/pegboard/null_cs_api--tjl/peg.rst:1.3       Mon Nov 11 06:06:37 2002
+++ gzz/doc/pegboard/null_cs_api--tjl/peg.rst   Mon Nov 11 07:01:30 2002
@@ -3,9 +3,9 @@
 =============================================================
 
 :Author:   Tuomas Lukka
-:Date:     $Date: 2002/11/11 11:06:37 $
-:Revision: $Revision: 1.3 $
-:Status:   Accepted
+:Date:     $Date: 2002/11/11 12:01:30 $
+:Revision: $Revision: 1.4 $
+:Status:   Implemented
 :Scope:           Minor
 :Type:     Interface
 
Index: gzz/gfx/jni/GzzGL-jni.cxx
diff -u gzz/gfx/jni/GzzGL-jni.cxx:1.59 gzz/gfx/jni/GzzGL-jni.cxx:1.60
--- gzz/gfx/jni/GzzGL-jni.cxx:1.59      Sat Nov  9 15:19:25 2002
+++ gzz/gfx/jni/GzzGL-jni.cxx   Mon Nov 11 07:01:31 2002
@@ -1158,13 +1158,16 @@
      jfloat *into = env->GetFloatArrayElements(j_into, 0);
 
      Coords::CoordSys *cs = coordset.get(coordsys);
-     if(inverse) cs = cs->getInverse();
-      for(int i=0; i<arrayLength; i+=3) {
-        ZPt pt(points[i], points[i+1], points[i+2]);
-        ZPt pt2 = cs->transform(pt);
-        into[i] = pt2.x;
-        into[i+1] = pt2.y;
-        into[i+2] = pt2.z;
+     if(cs != 0) {
+        if(inverse) cs = cs->getInverse();
+        if(cs != 0)
+         for(int i=0; i<arrayLength; i+=3) {
+            ZPt pt(points[i], points[i+1], points[i+2]);
+            ZPt pt2 = cs->transform(pt);
+            into[i] = pt2.x;
+            into[i+1] = pt2.y;
+            into[i+2] = pt2.z;
+         }
       }
 
       env->ReleaseFloatArrayElements(j_points, points, JNI_ABORT);
@@ -1173,7 +1176,7 @@
       env->ReleaseIntArrayElements(j_inds, inds, JNI_ABORT);
       env->ReleaseFloatArrayElements(j_pts, pts, JNI_ABORT);
 
-      return 1;
+      return (cs != 0);
  }
 
 JNIEXPORT jboolean JNICALL Java_gzz_gfx_gl_GL_transform2
@@ -1257,6 +1260,7 @@
        if(!(inds[*iter] & Coords::CSFLAG_ACTIVE))
            continue;
        Coords::CoordSys *cs = coordset.get(*iter);
+       if(!cs) continue;
 
        // Transform screen point to inside coordsys
        ZPt pt = cs->getInverse()->transform(screenpt);
Index: gzz/gzz/gfx/gl/GLVobCoorder.java
diff -u gzz/gzz/gfx/gl/GLVobCoorder.java:1.56 
gzz/gzz/gfx/gl/GLVobCoorder.java:1.57
--- gzz/gzz/gfx/gl/GLVobCoorder.java:1.56       Mon Nov  4 17:15:04 2002
+++ gzz/gzz/gfx/gl/GLVobCoorder.java    Mon Nov 11 07:01:31 2002
@@ -31,7 +31,7 @@
 import gzz.client.gl.*;
 
 public class GLVobCoorder extends AffineVobCoorder {
-public static final String rcsid = "$Id: GLVobCoorder.java,v 1.56 2002/11/04 
22:15:04 tjl Exp $";
+public static final String rcsid = "$Id: GLVobCoorder.java,v 1.57 2002/11/11 
12:01:31 tjl Exp $";
     public static boolean dbg = false;
     private static void pa(String s) { System.err.println(s); }
 
@@ -434,13 +434,17 @@
        return true;
     }
 
-    public void transformPoints3(int withCS, float[] points, float[]into) {
-       GL.transform(ninds, inds, floats, 
-                   withCS, false, points, into);
-    }
-    public boolean inverseTransformPoints3(int withCS, float[] points, 
float[]into) {
-       return GL.transform(ninds, inds, floats, 
-                   withCS, true, points, into);
+    public float[] transformPoints3(int withCS, float[] points, float[]into) {
+       if(into == null) into = new float[points.length];
+       if( GL.transform(ninds, inds, floats, withCS, false, points, into))
+           return into;
+       return null;
+    }
+    public float[] inverseTransformPoints3(int withCS, float[] points, 
float[]into) {
+       if(into == null) into = new float[points.length];
+       if( GL.transform(ninds, inds, floats, withCS, true, points, into))
+           return into;
+       return null;
     }
 
     public boolean transformPoints3_interp(int[] interpList, GLVobCoorder 
other,
Index: gzz/gzz/vob/VobCoorder.java
diff -u gzz/gzz/vob/VobCoorder.java:1.22 gzz/gzz/vob/VobCoorder.java:1.23
--- gzz/gzz/vob/VobCoorder.java:1.22    Fri Nov  8 08:38:22 2002
+++ gzz/gzz/vob/VobCoorder.java Mon Nov 11 07:01:32 2002
@@ -32,6 +32,14 @@
  * represents the root coordinate system (i.e., the whole vob scene).
  * <p>
  * Warn about setXParams!
+ * <p>
+ * The transform functions (transformPoints3, inverseTransformPoints3,
+ * transformPoint, transformPoints2) can be used to transform points
+ * into coordinate systems.
+ * The functions take an array of original points, an (optional) destination
+ * array, and return either the destination array, or,
+ * if the coordinate system is not rendered in the current configuration
+ * (e.g. culled out), null.
  */
 public abstract class VobCoorder {
     /** Create a new coordinate system.
@@ -114,20 +122,21 @@
 
     /** Transform a point to screen coordinates from the given cs.
      */
-    public void transformPoints3(int withCS, float[] pt, float[]into) {
+    public float[] transformPoints3(int withCS, float[] pt, float[]into) {
        throw new UnsupportedOperationException("transform not supported yet");
     }
     /** 
      * @return True, if a reasonable inverse was found.
      */
-    public boolean inverseTransformPoints3(int withCS, float[] pt, 
float[]into) {
+    public float[] inverseTransformPoints3(int withCS, float[] pt, 
float[]into) {
        throw new UnsupportedOperationException("inverse transform not 
supported yet");
     }
 
     public java.awt.Point transformPoint(int cs, float x, float y, 
java.awt.Point into) {
        // Slow default impl
        float[] pt = new float[] {x, y, 0};
-       transformPoints3(cs, pt, pt);
+       pt = transformPoints3(cs, pt, pt);
+       if(pt == null) return null;
        if(into == null) into = new java.awt.Point();
        into.x = (int)pt[0];
        into.y = (int)pt[1];
@@ -142,7 +151,8 @@
            pt[3*i+1] = coords[2*i+1];
            pt[3*i+2] = 0;
        }
-       transformPoints3(cs, pt, pt);
+       pt = transformPoints3(cs, pt, pt);
+       if(pt == null) return null;
        if(into == null) into = new java.awt.Point[pt.length / 3];
        for(int i=0; i<pt.length/3; i++) {
            into[i].x = (int)pt[3*i+0];
Index: gzz/gzz/vob/impl/OrthoCoorder.java
diff -u gzz/gzz/vob/impl/OrthoCoorder.java:1.1 
gzz/gzz/vob/impl/OrthoCoorder.java:1.2
--- gzz/gzz/vob/impl/OrthoCoorder.java:1.1      Fri Nov  1 20:23:46 2002
+++ gzz/gzz/vob/impl/OrthoCoorder.java  Mon Nov 11 07:01:32 2002
@@ -29,7 +29,7 @@
  */
 
 public class OrthoCoorder extends VobCoorder {
-public static final String rcsid = "$Id: OrthoCoorder.java,v 1.1 2002/11/02 
01:23:46 benja Exp $";
+public static final String rcsid = "$Id: OrthoCoorder.java,v 1.2 2002/11/11 
12:01:32 tjl Exp $";
     public static boolean dbg = false;
     private static void p(String s) { if(dbg) pa(s); }
     private static void pa(String s) { System.err.println(s); }
@@ -252,7 +252,9 @@
        return info;
     }
 
-    public void transformPoints3(int withCS, float[] pt, float[]into) {
+    public float[] transformPoints3(int withCS, float[] pt, float[]into) {
+       if(into == null)
+           into = new float[pt.length];
        float[] rect = new float[] { 0, 0, 1, 1 };
        sys.transformRect(withCS, rect);
 
@@ -265,6 +267,7 @@
            into[i + 1] = oy + sy * pt[i + 1];
            into[i + 2] = sys.depth[withCS] + pt[i + 2];
        }
+       return into;
     }
 
 
Index: gzz/test/gzz/gfx/gl/glvobcoorder.test
diff -u gzz/test/gzz/gfx/gl/glvobcoorder.test:1.21 
gzz/test/gzz/gfx/gl/glvobcoorder.test:1.22
--- gzz/test/gzz/gfx/gl/glvobcoorder.test:1.21  Fri Nov  8 05:47:28 2002
+++ gzz/test/gzz/gfx/gl/glvobcoorder.test       Mon Nov 11 07:01:32 2002
@@ -44,6 +44,9 @@
     cs4cull = c.cull(cs4, cs4clip)
     checkTrans(vs, cs4cull, [0, 0, 0, 1, 1, 1, 2, 2, 2], [0, 0, 0, 100, 100, 
1, 200, 200, 2])
 
+    c.setAffineParams(cs4clip, 0, 1500, 1500, 10, 0, 0, 10)
+    checkNoTrans(vs, cs4cull)
+
 def checkInverse(c, cs):
     # unit cube
     src = array([
Index: gzz/test/testutil.py
diff -u gzz/test/testutil.py:1.35 gzz/test/testutil.py:1.36
--- gzz/test/testutil.py:1.35   Sun Nov 10 18:08:55 2002
+++ gzz/test/testutil.py        Mon Nov 11 07:01:32 2002
@@ -119,6 +119,7 @@
     unittestObject.fail(msg)
 """, "testutil", 'exec')
 
+
 def load(file):
     """Load a file into a class (currently simplistic)."""
     name = string.capitalize(os.path.splitext(os.path.basename(file))[0])
Index: gzz/test/tools/gfx.py
diff -u gzz/test/tools/gfx.py:1.10 gzz/test/tools/gfx.py:1.11
--- gzz/test/tools/gfx.py:1.10  Fri Nov  1 20:23:48 2002
+++ gzz/test/tools/gfx.py       Mon Nov 11 07:01:32 2002
@@ -16,6 +16,10 @@
 
 print "GW: ",win
 
+def failUnless(b, msg=None):
+    if not b:
+       raise str("FU ",msg)
+
 def getvs():
     return win.createVobScene()
 
@@ -50,12 +54,20 @@
     raise msg
 
 
+def checkNoTrans(vs, cs):
+    """Check that a transformation is singular with the 
+    current coords.
+    """
+    src = array([0,0,0], 'f')
+    dst = vs.coords.transformPoints3(cs, src, None)
+    failUnless(dst == None)
+
 def checkTrans(vs, cs, srclist, dstlist, delta=0, alsoGL = 1):
     """Check that a transformation works a certain way.
     """
     src = array(srclist, 'f')
-    dst = zeros(len(src), 'f')
-    vs.coords.transformPoints3(cs, src, dst)
+    dst = vs.coords.transformPoints3(cs, src, None)
+    failUnless(dst != None)
     for i in range(0, len(src)):
        if abs(dst[i]-dstlist[i]) > delta:
            raise str([srclist, dstlist, dst, i, dst[i], dstlist[i]])




reply via email to

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