#863: default Mat() c-tor, minor improvements
authorAndrey Pavlenko <no@email>
Fri, 1 Jul 2011 15:48:13 +0000 (15:48 +0000)
committerAndrey Pavlenko <no@email>
Fri, 1 Jul 2011 15:48:13 +0000 (15:48 +0000)
modules/java/gen_java.py
modules/java/src/cpp/Mat.cpp
modules/java/src/java/Mat.java

index ea0c8e2..efb5d64 100644 (file)
@@ -20,10 +20,10 @@ type_dict = {
     "double"  : { "j_type" : "double", "jn_type" : "double", "jni_type" : "jdouble", "suffix" : "D" },\r
     "size_t"  : { "j_type" : "long", "jn_type" : "long", "jni_type" : "jlong", "suffix" : "J" },\r
     "__int64" : { "j_type" : "long", "jn_type" : "long", "jni_type" : "jlong", "suffix" : "J" },\r
-    #"+Mat+"   : { "j_type" : "Mat", "jn_type" : "long", "jn_name" : "%s.nativeObj", "jni_type" : "jlong", "suffix" : "J" },\r
 # "complex" : { j_type : "?", jn_args : (("", ""),), jn_name : "", jni_var : "", jni_name : "", "suffix" : "?" },\r
     "Mat"     : { "j_type" : "Mat", "jn_type" : "long", "jn_args" : (("__int64", ".nativeObj"),),\r
-                  "jni_var" : "cv::Mat %(n)s(%(n)s_nativeObj ? *((cv::Mat*)%(n)s_nativeObj) : cv::Mat())", "jni_type" : "jlong",\r
+                  "jni_var" : "cv::Mat& %(n)s = *((cv::Mat*)%(n)s_nativeObj); //cv::Mat& %(n)s = (%(n)s_nativeObj ? *((cv::Mat*)%(n)s_nativeObj) : cv::Mat())",\r
+                  "jni_type" : "jlong", #"jni_name" : "*%(n)s",\r
                   "suffix" : "J" },\r
     "Point"   : { "j_type" : "Point", "jn_args" : (("double", ".x"), ("double", ".y")),\r
                   "jni_var" : "cv::Point %(n)s((int)%(n)s_x, (int)%(n)s_y)",\r
@@ -166,7 +166,7 @@ class JavaWrapperGenerator(object):
             sys.exit(-1)\r
         type_dict[classinfo.name] = \\r
             { "j_type" : classinfo.name,  "jn_args" : (("__int64", ".nativeObj"),),\r
-              "jni_name" : "(*((cv::"+classinfo.name+"*)%s_nativeObj))",\r
+              "jni_name" : "(*((cv::"+classinfo.name+"*)%(n)s_nativeObj))",\r
               "suffix" : "J" }\r
 \r
 \r
@@ -268,6 +268,11 @@ public class %(module)s {
 """// This file is auto-generated, please don't edit!\r
 \r
 #include <jni.h>\r
+/*\r
+#include <android/log.h>\r
+#define TEGRA_LOG_TAG "OpenCV_for_Android"\r
+#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, TEGRA_LOG_TAG, __VA_ARGS__))\r
+*/\r
 \r
 """ % {"module" : module})\r
         self.cpp_code.write( "\n".join(['#include "opencv2/%s/%s"' % (module, os.path.basename(f)) \\r
@@ -459,6 +464,7 @@ JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_$fname
   ($args)\r
 {\r
     $j2cv\r
+    //LOGD("$module :: $fname");\r
     $ret( $cvname( $cvargs ) );\r
 }\r
 \r
index b39ca1e..730a7a9 100644 (file)
@@ -1,4 +1,9 @@
 #include <jni.h>\r
+/*\r
+#include <android/log.h>\r
+#define TEGRA_LOG_TAG "MAT_CPP"\r
+#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, TEGRA_LOG_TAG, __VA_ARGS__))\r
+*/\r
 \r
 #ifdef __cplusplus\r
 extern "C" {\r
@@ -6,6 +11,14 @@ extern "C" {
 /*\r
  * Class:     org_opencv_Mat\r
  * Method:    nCreateMat\r
+ * Signature: ()J\r
+ */\r
+JNIEXPORT jlong JNICALL Java_org_opencv_Mat_nCreateMat__\r
+  (JNIEnv *, jclass);\r
+\r
+/*\r
+ * Class:     org_opencv_Mat\r
+ * Method:    nCreateMat\r
  * Signature: (III)J\r
  */\r
 JNIEXPORT jlong JNICALL Java_org_opencv_Mat_nCreateMat__III\r
@@ -594,6 +607,12 @@ JNIEXPORT jlong JNICALL Java_org_opencv_Mat_nInv
        return 0; //NYI\r
 }\r
 \r
+JNIEXPORT jlong JNICALL Java_org_opencv_Mat_nCreateMat__\r
+  (JNIEnv* env, jclass cls)\r
+{\r
+    return (jlong) new cv::Mat();\r
+}\r
+\r
 JNIEXPORT jlong JNICALL Java_org_opencv_Mat_nEye\r
     (JNIEnv* env, jclass cls, jint _rows, jint _cols, jint _type)\r
 {\r
@@ -603,7 +622,8 @@ JNIEXPORT jlong JNICALL Java_org_opencv_Mat_nEye
 JNIEXPORT jlong JNICALL Java_org_opencv_Mat_nCreateMat__III\r
   (JNIEnv* env, jclass cls, jint _rows, jint _cols, jint _type)\r
 {\r
-    return (jlong) new cv::Mat( _rows, _cols, _type );\r
+    //LOGD("called with r=%d, c=%d", _rows, _cols);\r
+    return (jlong) new cv::Mat( _rows, _cols, _type );;\r
 }\r
 \r
 JNIEXPORT jlong JNICALL Java_org_opencv_Mat_nCreateMat__IIIDDDD\r
index 0b02858..bab9a10 100644 (file)
@@ -1,5 +1,7 @@
 package org.opencv;\r
 \r
+//import android.util.Log;\r
+\r
 public class Mat {\r
 \r
        public static class CvType {\r
@@ -113,7 +115,7 @@ public class Mat {
                                        s = "CV_USRTYPE1";\r
                        }\r
                        \r
-                       return s + "(" + channels() + ")";\r
+                       return s + "C(" + channels() + ")";\r
                }\r
                \r
                // hashCode() has to be overridden if equals() is\r
@@ -135,6 +137,10 @@ public class Mat {
                this.nativeObj = nativeMat;\r
        }\r
        \r
+       public Mat() {\r
+               this( nCreateMat() );\r
+       }\r
+\r
        public Mat(int rows, int cols, CvType type) {\r
                this( nCreateMat(rows, cols, type.toInt()) );\r
        }\r
@@ -388,8 +394,9 @@ public class Mat {
     }\r
        \r
        // native stuff\r
-       static { System.loadLibrary("opencv_java"); }\r
+       static { System.loadLibrary("opencv_java"); ); }\r
        protected long nativeObj;\r
+       private static native long nCreateMat();\r
        private static native long nCreateMat(int rows, int cols, int type);\r
        private static native long nCreateMat(int rows, int cols, int type, double v0, double v1, double v2, double v3);\r
        private static native void nDispose(long self);\r