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"
25 #include "ScilabView.hxx"
27 using namespace org_scilab_modules_graphic_objects;
29 void getGraphicObjectProperty(int iUID, int _iName, _ReturnType_ _returnType, void **_pvData)
31 // do not perform anything if the id is undefined
39 case __GO_USER_DATA__ :
41 *_pvData = ScilabView::getUserdata(iUID);
44 case __GO_USER_DATA_SIZE__ :
46 ((int *)*_pvData)[0] = ScilabView::getUserdataSize(iUID);
50 /* All the Data model properties have the DATA_MODEL prefix */
51 case __GO_DATA_MODEL__ :
52 case __GO_DATA_MODEL_COORDINATES__ :
53 case __GO_DATA_MODEL_X__ :
54 case __GO_DATA_MODEL_Y__ :
55 case __GO_DATA_MODEL_Z__ :
56 case __GO_DATA_MODEL_X_COORDINATES_SHIFT__ :
57 case __GO_DATA_MODEL_Y_COORDINATES_SHIFT__ :
58 case __GO_DATA_MODEL_Z_COORDINATES_SHIFT__ :
59 case __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__ :
60 case __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__ :
61 case __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__ :
62 case __GO_DATA_MODEL_NUM_ELEMENTS__ :
63 case __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__ :
64 case __GO_DATA_MODEL_NUM_VERTICES_PER_GON__ :
65 case __GO_DATA_MODEL_NUM_GONS__ :
66 case __GO_DATA_MODEL_Z_COORDINATES_SET__ :
67 case __GO_DATA_MODEL_COLORS__ :
68 case __GO_DATA_MODEL_NUM_COLORS__ :
69 case __GO_DATA_MODEL_NUM_VERTICES__ :
70 case __GO_DATA_MODEL_NUM_INDICES__ :
71 case __GO_DATA_MODEL_INDICES__ :
72 case __GO_DATA_MODEL_VALUES__ :
73 case __GO_DATA_MODEL_FEC_TRIANGLES__ :
74 case __GO_DATA_MODEL_NUM_X__ :
75 case __GO_DATA_MODEL_NUM_Y__ :
76 case __GO_DATA_MODEL_NUM_Z__ :
77 case __GO_DATA_MODEL_GRID_SIZE__ :
78 case __GO_DATA_MODEL_X_DIMENSIONS__ :
79 case __GO_DATA_MODEL_Y_DIMENSIONS__ :
80 case __GO_DATA_MODEL_MATPLOT_BOUNDS__ :
81 case __GO_DATA_MODEL_MATPLOT_TYPE__ :
82 case __GO_DATA_MODEL_MATPLOT_DATA_INFOS__ :
83 case __GO_DATA_MODEL_MATPLOT_DATA_TYPE__ :
84 case __GO_DATA_MODEL_MATPLOT_DATA_ORDER__ :
85 case __GO_DATA_MODEL_MATPLOT_GL_TYPE__ :
86 case __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__ :
87 case __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__ :
88 case __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__ :
89 case __GO_DATA_MODEL_DISPLAY_FUNCTION__ :
90 case __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ :
92 DataController::getGraphicObjectProperty(iUID, _iName, _pvData);
95 default : //property in Java Model
103 *(_pvData) = CallGraphicController::getGraphicObjectPropertyAsString(getScilabJavaVM(), iUID, _iName);
106 case jni_string_vector:
108 *_pvData = CallGraphicController::getGraphicObjectPropertyAsStringVector(getScilabJavaVM(), iUID, _iName);
113 double * ret = CallGraphicController::getGraphicObjectPropertyAsDoubleVector(getScilabJavaVM(), iUID, _iName);
120 ((double *)*_pvData)[0] = *ret;
126 case jni_double_vector:
128 *_pvData = CallGraphicController::getGraphicObjectPropertyAsDoubleVector(getScilabJavaVM(), iUID, _iName);
133 int * ret = CallGraphicController::getGraphicObjectPropertyAsBooleanVector(getScilabJavaVM(), iUID, _iName);
140 ((int *)*_pvData)[0] = *ret;
146 case jni_bool_vector:
148 *_pvData = CallGraphicController::getGraphicObjectPropertyAsBooleanVector(getScilabJavaVM(), iUID, _iName);
153 int * ret = CallGraphicController::getGraphicObjectPropertyAsIntegerVector(getScilabJavaVM(), iUID, _iName);
160 ((int *)*_pvData)[0] = *ret;
168 *_pvData = CallGraphicController::getGraphicObjectPropertyAsIntegerVector(getScilabJavaVM(), iUID, _iName);
176 catch (std::exception &e)
179 // If we have an exception, return null to scilab to manage error.
190 void releaseGraphicObjectProperty(int _iName, void * _pvData, enum _ReturnType_ _returnType, int numElements)
193 /* All the Data model properties have the DATA_MODEL prefix */
194 if (_iName == __GO_DATA_MODEL__
195 || _iName == __GO_DATA_MODEL_COORDINATES__
196 || _iName == __GO_DATA_MODEL_X__
197 || _iName == __GO_DATA_MODEL_Y__
198 || _iName == __GO_DATA_MODEL_Z__
199 || _iName == __GO_DATA_MODEL_X_COORDINATES_SHIFT__
200 || _iName == __GO_DATA_MODEL_Y_COORDINATES_SHIFT__
201 || _iName == __GO_DATA_MODEL_Z_COORDINATES_SHIFT__
202 || _iName == __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__
203 || _iName == __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__
204 || _iName == __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__
205 || _iName == __GO_DATA_MODEL_NUM_ELEMENTS__
206 || _iName == __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__
207 || _iName == __GO_DATA_MODEL_NUM_VERTICES_PER_GON__
208 || _iName == __GO_DATA_MODEL_NUM_GONS__
209 || _iName == __GO_DATA_MODEL_Z_COORDINATES_SET__
210 || _iName == __GO_DATA_MODEL_COLORS__
211 || _iName == __GO_DATA_MODEL_NUM_COLORS__
212 || _iName == __GO_DATA_MODEL_NUM_VERTICES__
213 || _iName == __GO_DATA_MODEL_NUM_INDICES__
214 || _iName == __GO_DATA_MODEL_INDICES__
215 || _iName == __GO_DATA_MODEL_VALUES__
216 || _iName == __GO_DATA_MODEL_FEC_TRIANGLES__
217 || _iName == __GO_DATA_MODEL_NUM_X__
218 || _iName == __GO_DATA_MODEL_NUM_Y__
219 || _iName == __GO_DATA_MODEL_NUM_Z__
220 || _iName == __GO_DATA_MODEL_GRID_SIZE__
221 || _iName == __GO_DATA_MODEL_X_DIMENSIONS__
222 || _iName == __GO_DATA_MODEL_Y_DIMENSIONS__
223 || _iName == __GO_DATA_MODEL_MATPLOT_BOUNDS__
224 || _iName == __GO_DATA_MODEL_MATPLOT_TYPE__
225 || _iName == __GO_DATA_MODEL_MATPLOT_DATA_INFOS__
226 || _iName == __GO_DATA_MODEL_MATPLOT_DATA_TYPE__
227 || _iName == __GO_DATA_MODEL_MATPLOT_DATA_ORDER__
228 || _iName == __GO_DATA_MODEL_MATPLOT_GL_TYPE__
229 || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__
230 || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__
231 || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__
234 // passed by reference, do not free them
242 delete[] (char*) _pvData;
245 case jni_string_vector:
247 char** data = (char**) _pvData;
248 for (int i = 0; i < numElements; ++i)
260 case jni_double_vector:
262 delete[] (double*) _pvData;
270 case jni_bool_vector:
272 delete[] (int*) _pvData;
282 delete[] (int*) _pvData;