From: <and...@us...> - 2009-01-15 16:23:43
|
Revision: 9312 http://plplot.svn.sourceforge.net/plplot/?rev=9312&view=rev Author: andrewross Date: 2009-01-15 16:23:34 +0000 (Thu, 15 Jan 2009) Log Message: ----------- Add missing PLCallback interface class for java handling of mapform. Fix so it should (?) work if PLFLT is float and not double. Modified Paths: -------------- trunk/bindings/java/plplotjavac.i Added Paths: ----------- trunk/bindings/java/PLCallback.java Added: trunk/bindings/java/PLCallback.java =================================================================== --- trunk/bindings/java/PLCallback.java (rev 0) +++ trunk/bindings/java/PLCallback.java 2009-01-15 16:23:34 UTC (rev 9312) @@ -0,0 +1,7 @@ + +package plplot.core; + +public interface PLCallback +{ + public void mapform(double[] x, double[] y); +}; Property changes on: trunk/bindings/java/PLCallback.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/bindings/java/plplotjavac.i =================================================================== --- trunk/bindings/java/plplotjavac.i 2009-01-15 16:05:35 UTC (rev 9311) +++ trunk/bindings/java/plplotjavac.i 2009-01-15 16:23:34 UTC (rev 9312) @@ -257,45 +257,39 @@ /* Setup java arrays (for callback functions) */ +/* Create a jdoubleArray and fill it from the C PLFLT array dat */ +static jdoubleArray +setup_java_array_1d_PLFLT( JNIEnv *jenv, PLFLT *dat, PLINT n) +{ + double *x; #ifdef PL_DOUBLE -#define jPLFLT jdouble -#define jPLFLTArray jdoubleArray -#define NewPLFLTArray NewDoubleArray -#define SetPLFLTArrayRegion SetDoubleArrayRegion -#define GetPLFLTArrayElements GetDoubleArrayElements -#define ReleasePLFLTArrayElements ReleaseDoubleArrayElements + x = (double *) dat; #else -#define jPLFLT jfloat -#define jPLFLTArray jfloatArray -#define NewPLFLTArray NewFloatArray -#define SetPLFLTArrayRegion SetFloatArrayRegion -#define GetPLFLTArrayElements GetFloatArrayElements -#define ReleasePLFLTArrayElements ReleaseFloatArrayElements + x = (double *) malloc( n * sizeof(double) ); + for (i=0;i<n;i++) { + x[i] = (double) dat[i]; + } #endif - -/* Create a jPLFLTArray and fill it from the C array dat */ -static jPLFLTArray -setup_java_array_1d_PLFLT( JNIEnv *jenv, PLFLT *dat, PLINT n) -{ - jPLFLTArray jadat = (*jenv)->NewPLFLTArray(jenv, n); - (*jenv)->SetPLFLTArrayRegion(jenv, jadat, 0, n, dat); + jdoubleArray jadat = (*jenv)->NewDoubleArray(jenv, n); + (*jenv)->SetDoubleArrayRegion(jenv, jadat, 0, n, x); +#ifndef PL_DOUBLE + free(x); +#endif return jadat; } -/* Copy back data from jPLFLTArray to C array then release java array */ +/* Copy back data from jdoubleArray to C PLFLT array then release java array */ static void -release_java_array_1d_PLFLT(JNIEnv *jenv, jPLFLTArray jadat, PLFLT *dat, PLINT n) +release_java_array_1d_PLFLT(JNIEnv *jenv, jdoubleArray jadat, PLFLT *dat, PLINT n) { PLINT i; - jPLFLT *jdata = (*jenv)->GetPLFLTArrayElements( jenv, jadat, 0 ); + jdouble *jdata = (*jenv)->GetDoubleArrayElements( jenv, jadat, 0 ); for (i=0;i<n;i++) { - dat[i] = jdata[i]; + dat[i] = (PLFLT) jdata[i]; } - (*jenv)->ReleasePLFLTArrayElements( jenv, jadat, jdata, 0 ); + (*jenv)->ReleaseDoubleArrayElements( jenv, jadat, jdata, 0 ); } - - %} @@ -1155,8 +1149,8 @@ /* C mapform callback function which calls the java * mapform function in a PLCallback object. */ void mapform_java(PLINT n, PLFLT *x, PLFLT *y) { - jPLFLTArray jx = setup_java_array_1d_PLFLT(cbenv,x,n); - jPLFLTArray jy = setup_java_array_1d_PLFLT(cbenv,y,n); + jdoubleArray jx = setup_java_array_1d_PLFLT(cbenv,x,n); + jdoubleArray jy = setup_java_array_1d_PLFLT(cbenv,y,n); (*cbenv)->CallVoidMethod(cbenv,mapformClass, mapformID,jx,jy); release_java_array_1d_PLFLT(cbenv,jx,x,n); release_java_array_1d_PLFLT(cbenv,jy,y,n); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |