2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
5 * This file must be used under the terms of the CeCILL.
6 * This source file is licensed as described in the file COPYING, which
7 * you should have received as part of this distribution. The terms
8 * are also available at
9 * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
17 #include "getGraphicObjectProperty.h"
18 #include "graphicObjectProperties.h"
19 #include "getScilabJavaVM.h"
23 #include "CallGraphicController.hxx"
24 #include "DataController.hxx"
26 using namespace org_scilab_modules_graphic_objects;
28 void getGraphicObjectProperty(int iUID, int _iName, _ReturnType_ _returnType, void **_pvData)
30 // do not perform anything if the id is undefined
36 /* All the Data model properties have the DATA_MODEL prefix */
37 if (_iName == __GO_DATA_MODEL__
38 || _iName == __GO_DATA_MODEL_COORDINATES__
39 || _iName == __GO_DATA_MODEL_X__
40 || _iName == __GO_DATA_MODEL_Y__
41 || _iName == __GO_DATA_MODEL_Z__
42 || _iName == __GO_DATA_MODEL_X_COORDINATES_SHIFT__
43 || _iName == __GO_DATA_MODEL_Y_COORDINATES_SHIFT__
44 || _iName == __GO_DATA_MODEL_Z_COORDINATES_SHIFT__
45 || _iName == __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__
46 || _iName == __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__
47 || _iName == __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__
48 || _iName == __GO_DATA_MODEL_NUM_ELEMENTS__
49 || _iName == __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__
50 || _iName == __GO_DATA_MODEL_NUM_VERTICES_PER_GON__
51 || _iName == __GO_DATA_MODEL_NUM_GONS__
52 || _iName == __GO_DATA_MODEL_Z_COORDINATES_SET__
53 || _iName == __GO_DATA_MODEL_COLORS__
54 || _iName == __GO_DATA_MODEL_NUM_COLORS__
55 || _iName == __GO_DATA_MODEL_NUM_VERTICES__
56 || _iName == __GO_DATA_MODEL_NUM_INDICES__
57 || _iName == __GO_DATA_MODEL_INDICES__
58 || _iName == __GO_DATA_MODEL_VALUES__
59 || _iName == __GO_DATA_MODEL_FEC_TRIANGLES__
60 || _iName == __GO_DATA_MODEL_NUM_X__
61 || _iName == __GO_DATA_MODEL_NUM_Y__
62 || _iName == __GO_DATA_MODEL_NUM_Z__
63 || _iName == __GO_DATA_MODEL_GRID_SIZE__
64 || _iName == __GO_DATA_MODEL_X_DIMENSIONS__
65 || _iName == __GO_DATA_MODEL_Y_DIMENSIONS__
66 || _iName == __GO_DATA_MODEL_MATPLOT_BOUNDS__
67 || _iName == __GO_DATA_MODEL_MATPLOT_TYPE__
68 || _iName == __GO_DATA_MODEL_MATPLOT_DATA_INFOS__
69 || _iName == __GO_DATA_MODEL_MATPLOT_DATA_TYPE__
70 || _iName == __GO_DATA_MODEL_MATPLOT_DATA_ORDER__
71 || _iName == __GO_DATA_MODEL_MATPLOT_GL_TYPE__
72 || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__
73 || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__
74 || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__
75 || _iName == __GO_DATA_MODEL_DISPLAY_FUNCTION__
76 || _iName == __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__
79 DataController::getGraphicObjectProperty(iUID, _iName, _pvData);
89 *(_pvData) = CallGraphicController::getGraphicObjectPropertyAsString(getScilabJavaVM(), iUID, _iName);
92 case jni_string_vector:
94 *_pvData = CallGraphicController::getGraphicObjectPropertyAsStringVector(getScilabJavaVM(), iUID, _iName);
99 double * ret = CallGraphicController::getGraphicObjectPropertyAsDoubleVector(getScilabJavaVM(), iUID, _iName);
106 ((double *)*_pvData)[0] = *ret;
112 case jni_double_vector:
114 *_pvData = CallGraphicController::getGraphicObjectPropertyAsDoubleVector(getScilabJavaVM(), iUID, _iName);
119 int * ret = CallGraphicController::getGraphicObjectPropertyAsBooleanVector(getScilabJavaVM(), iUID, _iName);
126 ((int *)*_pvData)[0] = *ret;
132 case jni_bool_vector:
134 *_pvData = CallGraphicController::getGraphicObjectPropertyAsBooleanVector(getScilabJavaVM(), iUID, _iName);
139 int * ret = CallGraphicController::getGraphicObjectPropertyAsIntegerVector(getScilabJavaVM(), iUID, _iName);
146 ((int *)*_pvData)[0] = *ret;
154 *_pvData = CallGraphicController::getGraphicObjectPropertyAsIntegerVector(getScilabJavaVM(), iUID, _iName);
162 catch (std::exception &e)
165 // If we have an exception, return null to scilab to manage error.
173 void releaseGraphicObjectProperty(int _iName, void * _pvData, enum _ReturnType_ _returnType, int numElements)
176 /* All the Data model properties have the DATA_MODEL prefix */
177 if (_iName == __GO_DATA_MODEL__
178 || _iName == __GO_DATA_MODEL_COORDINATES__
179 || _iName == __GO_DATA_MODEL_X__
180 || _iName == __GO_DATA_MODEL_Y__
181 || _iName == __GO_DATA_MODEL_Z__
182 || _iName == __GO_DATA_MODEL_X_COORDINATES_SHIFT__
183 || _iName == __GO_DATA_MODEL_Y_COORDINATES_SHIFT__
184 || _iName == __GO_DATA_MODEL_Z_COORDINATES_SHIFT__
185 || _iName == __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__
186 || _iName == __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__
187 || _iName == __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__
188 || _iName == __GO_DATA_MODEL_NUM_ELEMENTS__
189 || _iName == __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__
190 || _iName == __GO_DATA_MODEL_NUM_VERTICES_PER_GON__
191 || _iName == __GO_DATA_MODEL_NUM_GONS__
192 || _iName == __GO_DATA_MODEL_Z_COORDINATES_SET__
193 || _iName == __GO_DATA_MODEL_COLORS__
194 || _iName == __GO_DATA_MODEL_NUM_COLORS__
195 || _iName == __GO_DATA_MODEL_NUM_VERTICES__
196 || _iName == __GO_DATA_MODEL_NUM_INDICES__
197 || _iName == __GO_DATA_MODEL_INDICES__
198 || _iName == __GO_DATA_MODEL_VALUES__
199 || _iName == __GO_DATA_MODEL_FEC_TRIANGLES__
200 || _iName == __GO_DATA_MODEL_NUM_X__
201 || _iName == __GO_DATA_MODEL_NUM_Y__
202 || _iName == __GO_DATA_MODEL_NUM_Z__
203 || _iName == __GO_DATA_MODEL_GRID_SIZE__
204 || _iName == __GO_DATA_MODEL_X_DIMENSIONS__
205 || _iName == __GO_DATA_MODEL_Y_DIMENSIONS__
206 || _iName == __GO_DATA_MODEL_MATPLOT_BOUNDS__
207 || _iName == __GO_DATA_MODEL_MATPLOT_TYPE__
208 || _iName == __GO_DATA_MODEL_MATPLOT_DATA_INFOS__
209 || _iName == __GO_DATA_MODEL_MATPLOT_DATA_TYPE__
210 || _iName == __GO_DATA_MODEL_MATPLOT_DATA_ORDER__
211 || _iName == __GO_DATA_MODEL_MATPLOT_GL_TYPE__
212 || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__
213 || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__
214 || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__
217 // passed by reference, do not free them
225 delete[] (char*) _pvData;
228 case jni_string_vector:
230 char** data = (char**) _pvData;
231 for (int i = 0; i < numElements; ++i)
243 case jni_double_vector:
245 delete[] (double*) _pvData;
253 case jni_bool_vector:
255 delete[] (int*) _pvData;
265 delete[] (int*) _pvData;