Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
listconverters.cpp
1// This file is part of ViSP project.
2#define LOG_TAG "org.visp.utils.Converters"
3#include "common.h"
4
5#ifdef ENABLE_VISP_NAMESPACE
6using namespace VISP_NAMESPACE_NAME;
7#endif
8
9#if ((VISP_CXX_STANDARD < VISP_CXX_STANDARD_17) && (defined(_MSVC_LANG)))
10const std::vector<bool> vpStatisticalTestShewhart::CONST_ALL_WECO_ACTIVATED = std::vector<bool>(vpStatisticalTestShewhart::COUNT_WECO -1, true);
11#endif
12
13jlongArray vector_vpColVector_to_List(JNIEnv *env, const std::vector<vpColVector> &V)
14{
15 jlongArray result = env->NewLongArray(V.size());
16 jlong *body = env->GetLongArrayElements(result, 0);
17
18 for (size_t i = 0; i < V.size(); i++) {
19 body[i] = (jlong) new vpColVector(V[i]);
20 }
21
22 env->ReleaseLongArrayElements(result, body, 0);
23 return result;
24}
25
26jlongArray vector_vpHomogeneousMatrix_to_List(JNIEnv *env, const std::vector<vpHomogeneousMatrix> &V)
27{
28 jlongArray result = env->NewLongArray(V.size());
29 jlong *body = env->GetLongArrayElements(result, 0);
30
31 for (size_t i = 0; i < V.size(); i++) {
32 body[i] = (jlong) new vpHomogeneousMatrix(V[i]);
33 }
34
35 env->ReleaseLongArrayElements(result, body, 0);
36 return result;
37}
38
39std::vector<vpHomogeneousMatrix> List_to_vector_vpHomogeneousMatrix(JNIEnv *env, jlongArray arr)
40{
41 jlong *body = env->GetLongArrayElements(arr, 0);
42 int len = env->GetArrayLength(arr);
43
44 std::vector<vpHomogeneousMatrix> V(len);
45 for (int i = 0; i < len; i++) {
47 V[i] = *temp;
48 }
49
50 env->ReleaseLongArrayElements(arr, body, 0);
51 return V;
52}
53
54std::vector<vpCameraParameters> List_to_vector_vpCameraParameters(JNIEnv *env, jlongArray arr)
55{
56 jlong *body = env->GetLongArrayElements(arr, 0);
57 int len = env->GetArrayLength(arr);
58
59 std::vector<vpCameraParameters> V(len);
60 for (int i = 0; i < len; i++) {
61 vpCameraParameters *temp = (vpCameraParameters *)body[i];
62 V[i] = *temp;
63 }
64
65 env->ReleaseLongArrayElements(arr, body, 0);
66 return V;
67}
68
69std::vector<int> List_to_vector_int(JNIEnv *env, jintArray arr)
70{
71 jint *body = env->GetIntArrayElements(arr, 0);
72 int len = env->GetArrayLength(arr);
73
74 std::vector<int> V(len);
75 for (int i = 0; i < len; i++) {
76 V[i] = body[i];
77 }
78
79 env->ReleaseIntArrayElements(arr, body, 0);
80 return V;
81}
82
83std::vector<float> List_to_vector_float(JNIEnv *env, jfloatArray arr)
84{
85 jfloat *body = env->GetFloatArrayElements(arr, 0);
86 int len = env->GetArrayLength(arr);
87
88 std::vector<float> V(len);
89 for (int i = 0; i < len; i++) {
90 V[i] = body[i];
91 }
92
93 env->ReleaseFloatArrayElements(arr, body, 0);
94 return V;
95}
96
97std::vector<double> List_to_vector_double(JNIEnv *env, jdoubleArray arr)
98{
99 jdouble *body = env->GetDoubleArrayElements(arr, 0);
100 int len = env->GetArrayLength(arr);
101
102 std::vector<double> V(len);
103 for (int i = 0; i < len; i++) {
104 V[i] = body[i];
105 }
106
107 env->ReleaseDoubleArrayElements(arr, body, 0);
108 return V;
109}
110
111jobjectArray vector_vector_vpImagePoint_to_List(JNIEnv *env, const std::vector<std::vector<vpImagePoint> > &V)
112{
113 if (V.empty()) {
114 return nullptr;
115 }
116
117 size_t outerSize = V.size();
118 jobjectArray outerArray = env->NewObjectArray(outerSize, env->FindClass("java/lang/Object"), nullptr);
119
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);
124
125 for (int j = 0; j < env->GetArrayLength(longArray); j++) {
126 longArrayElements[j] = (jlong) new vpImagePoint(V[i][j]);
127 }
128
129 env->ReleaseLongArrayElements(longArray, longArrayElements, 0);
130 env->SetObjectArrayElement(outerArray, i, longArray);
131 }
132
133 return outerArray;
134}
135
136jobjectArray vector_vector_double_to_List(JNIEnv *env, const std::vector<std::vector<double> > &V)
137{
138 if (V.empty()) {
139 return nullptr;
140 }
141
142 size_t outerSize = V.size();
143 jobjectArray outerArray = env->NewObjectArray(outerSize, env->FindClass("java/lang/Object"), nullptr);
144
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);
149
150 for (int j = 0; j < env->GetArrayLength(doubleArray); j++) {
151 doubleArrayElements[j] = (jdouble)V[i][j];
152 }
153
154 env->ReleaseDoubleArrayElements(doubleArray, doubleArrayElements, 0);
155 env->SetObjectArrayElement(outerArray, i, doubleArray);
156 }
157
158 return outerArray;
159}
160
161std::string convertTo(JNIEnv *env, jstring jstr)
162{
163 const char *rawString = env->GetStringUTFChars(jstr, 0);
164 std::string cppString(rawString ? rawString : "");
165 env->ReleaseStringUTFChars(jstr, rawString);
166
167 return cppString;
168}
169
170jstring convertTo(JNIEnv *env, const std::string &str) { return env->NewStringUTF(str.c_str()); }
171
172jobjectArray
173map_string_vector_vector_double_to_array_native(JNIEnv *env,
174 const std::map<std::string, std::vector<std::vector<double> > > &map)
175{
176 if (map.empty()) {
177 return nullptr;
178 }
179
180 size_t mapSize = map.size();
181 jobjectArray mapArray = env->NewObjectArray(mapSize, env->FindClass("java/lang/Object"), nullptr);
182
183 int idx = 0;
184 for (std::map<std::string, std::vector<std::vector<double> > >::const_iterator it = map.begin(); it != map.end();
185 ++it, idx++) {
186 size_t outerSize = it->second.size();
187 jobjectArray outerArray = env->NewObjectArray(outerSize, env->FindClass("java/lang/Object"), nullptr);
188
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);
193
194 for (int j = 0; j < env->GetArrayLength(doubleArray); j++) {
195 doubleArrayElements[j] = (jdouble)it->second[i][j];
196 }
197
198 env->ReleaseDoubleArrayElements(doubleArray, doubleArrayElements, 0);
199 env->SetObjectArrayElement(outerArray, i, doubleArray);
200 }
201
202 env->SetObjectArrayElement(mapArray, idx, outerArray);
203 }
204
205 return mapArray;
206}
207
208jobjectArray vector_string_to_array_native(JNIEnv *env, const std::vector<std::string> &V)
209{
210 if (V.empty()) {
211 return nullptr;
212 }
213
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()));
218 }
219
220 return vec;
221}
222
223std::vector<std::string> array_string_to_vector(JNIEnv *env, jobjectArray arr)
224{
225 int size = env->GetArrayLength(arr);
226
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));
230 }
231
232 return vec;
233}
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