[Top][All Lists]
[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]])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz doc/pegboard/null_cs_api--tjl/peg.rst gfx/j...,
Tuomas J. Lukka <=