2#define LOG_TAG "org.visp.utils.Converters"
5#ifdef ENABLE_VISP_NAMESPACE
9#if ((VISP_CXX_STANDARD < VISP_CXX_STANDARD_17) && (defined(_MSVC_LANG)))
13jlongArray vector_vpColVector_to_List(JNIEnv *env,
const std::vector<vpColVector> &V)
15 jlongArray result = env->NewLongArray(V.size());
16 jlong *body = env->GetLongArrayElements(result, 0);
18 for (
size_t i = 0;
i < V.size();
i++) {
22 env->ReleaseLongArrayElements(result, body, 0);
26jlongArray vector_vpHomogeneousMatrix_to_List(JNIEnv *env,
const std::vector<vpHomogeneousMatrix> &V)
28 jlongArray result = env->NewLongArray(V.size());
29 jlong *body = env->GetLongArrayElements(result, 0);
31 for (
size_t i = 0;
i < V.size();
i++) {
35 env->ReleaseLongArrayElements(result, body, 0);
39std::vector<vpHomogeneousMatrix> List_to_vector_vpHomogeneousMatrix(JNIEnv *env, jlongArray arr)
41 jlong *body = env->GetLongArrayElements(arr, 0);
42 int len = env->GetArrayLength(arr);
44 std::vector<vpHomogeneousMatrix> V(len);
45 for (
int i = 0;
i < len;
i++) {
50 env->ReleaseLongArrayElements(arr, body, 0);
54std::vector<vpCameraParameters> List_to_vector_vpCameraParameters(JNIEnv *env, jlongArray arr)
56 jlong *body = env->GetLongArrayElements(arr, 0);
57 int len = env->GetArrayLength(arr);
59 std::vector<vpCameraParameters> V(len);
60 for (
int i = 0;
i < len;
i++) {
65 env->ReleaseLongArrayElements(arr, body, 0);
69std::vector<int> List_to_vector_int(JNIEnv *env, jintArray arr)
71 jint *body = env->GetIntArrayElements(arr, 0);
72 int len = env->GetArrayLength(arr);
74 std::vector<int> V(len);
75 for (
int i = 0;
i < len;
i++) {
79 env->ReleaseIntArrayElements(arr, body, 0);
83std::vector<float> List_to_vector_float(JNIEnv *env, jfloatArray arr)
85 jfloat *body = env->GetFloatArrayElements(arr, 0);
86 int len = env->GetArrayLength(arr);
88 std::vector<float> V(len);
89 for (
int i = 0;
i < len;
i++) {
93 env->ReleaseFloatArrayElements(arr, body, 0);
97std::vector<double> List_to_vector_double(JNIEnv *env, jdoubleArray arr)
99 jdouble *body = env->GetDoubleArrayElements(arr, 0);
100 int len = env->GetArrayLength(arr);
102 std::vector<double> V(len);
103 for (
int i = 0;
i < len;
i++) {
107 env->ReleaseDoubleArrayElements(arr, body, 0);
111jobjectArray vector_vector_vpImagePoint_to_List(JNIEnv *env,
const std::vector<std::vector<vpImagePoint> > &V)
117 size_t outerSize = V.size();
118 jobjectArray outerArray = env->NewObjectArray(outerSize, env->FindClass(
"java/lang/Object"),
nullptr);
120 for (
int i = 0;
i < env->GetArrayLength(outerArray);
i++) {
121 size_t innerSize = V[
i].size();
122 jlongArray longArray = env->NewLongArray(innerSize);
123 jlong *longArrayElements = env->GetLongArrayElements(longArray, 0);
125 for (
int j = 0;
j < env->GetArrayLength(longArray);
j++) {
129 env->ReleaseLongArrayElements(longArray, longArrayElements, 0);
130 env->SetObjectArrayElement(outerArray, i, longArray);
136jobjectArray vector_vector_double_to_List(JNIEnv *env,
const std::vector<std::vector<double> > &V)
142 size_t outerSize = V.size();
143 jobjectArray outerArray = env->NewObjectArray(outerSize, env->FindClass(
"java/lang/Object"),
nullptr);
145 for (
int i = 0;
i < env->GetArrayLength(outerArray);
i++) {
146 size_t innerSize = V[
i].size();
147 jdoubleArray doubleArray = env->NewDoubleArray(innerSize);
148 jdouble *doubleArrayElements = env->GetDoubleArrayElements(doubleArray, 0);
150 for (
int j = 0;
j < env->GetArrayLength(doubleArray);
j++) {
151 doubleArrayElements[
j] = (jdouble)V[i][j];
154 env->ReleaseDoubleArrayElements(doubleArray, doubleArrayElements, 0);
155 env->SetObjectArrayElement(outerArray, i, doubleArray);
161std::string convertTo(JNIEnv *env, jstring jstr)
163 const char *rawString = env->GetStringUTFChars(jstr, 0);
164 std::string cppString(rawString ? rawString :
"");
165 env->ReleaseStringUTFChars(jstr, rawString);
170jstring convertTo(JNIEnv *env,
const std::string &str) {
return env->NewStringUTF(
str.c_str()); }
173map_string_vector_vector_double_to_array_native(JNIEnv *env,
174 const std::map<std::string, std::vector<std::vector<double> > > &map)
180 size_t mapSize = map.size();
181 jobjectArray mapArray = env->NewObjectArray(mapSize, env->FindClass(
"java/lang/Object"),
nullptr);
184 for (std::map<std::string, std::vector<std::vector<double> > >::const_iterator it = map.begin(); it != map.end();
186 size_t outerSize = it->second.size();
187 jobjectArray outerArray = env->NewObjectArray(outerSize, env->FindClass(
"java/lang/Object"),
nullptr);
189 for (
int i = 0;
i < env->GetArrayLength(outerArray);
i++) {
190 size_t innerSize = it->second[
i].size();
191 jdoubleArray doubleArray = env->NewDoubleArray(innerSize);
192 jdouble *doubleArrayElements = env->GetDoubleArrayElements(doubleArray, 0);
194 for (
int j = 0;
j < env->GetArrayLength(doubleArray);
j++) {
195 doubleArrayElements[
j] = (jdouble)it->second[i][j];
198 env->ReleaseDoubleArrayElements(doubleArray, doubleArrayElements, 0);
199 env->SetObjectArrayElement(outerArray, i, doubleArray);
202 env->SetObjectArrayElement(mapArray, idx, outerArray);
208jobjectArray vector_string_to_array_native(JNIEnv *env,
const std::vector<std::string> &V)
214 size_t vecSize = V.size();
215 jobjectArray vec = env->NewObjectArray(vecSize, env->FindClass(
"java/lang/String"), env->NewStringUTF(
""));
216 for (
size_t i = 0;
i < V.size();
i++) {
217 env->SetObjectArrayElement(vec, i, env->NewStringUTF(V[i].c_str()));
223std::vector<std::string> array_string_to_vector(JNIEnv *env, jobjectArray arr)
225 int size = env->GetArrayLength(arr);
227 std::vector<std::string> vec(size);
228 for (
int i = 0;
i < size;
i++) {
229 vec[
i] = convertTo(env, (jstring)env->GetObjectArrayElement(arr, i));
Generic class defining intrinsic camera parameters.
Implementation of column vector and the associated operations.
Implementation of an homogeneous matrix and operations on such kind of matrices.
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
static VP_ATTRIBUTE_NO_DESTROY const std::vector< bool > CONST_ALL_WECO_ACTIVATED