b7c9ea752001ab142c1740f6042ec66ae8558daa
[scilab.git] / scilab / modules / graphic_objects / src / cpp / setGraphicObjectProperty.cpp
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
4  *
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
10  *
11  */
12
13 extern "C"
14 {
15 #include "setGraphicObjectProperty.h"
16 #include "graphicObjectProperties.h"
17 #include "getScilabJavaVM.h"
18
19 #include <stdio.h>
20 #include <string.h>
21 }
22
23 #include "CallGraphicController.hxx"
24 #include "DataController.hxx"
25
26 using namespace org_scilab_modules_graphic_objects;
27
28 void setGraphicObjectRelationship(int _parentId, int _childId)
29 {
30     // do not perform anything if the id is undefined
31     if (_parentId == 0 || _childId == 0)
32     {
33         return;
34     }
35
36     CallGraphicController::setGraphicObjectRelationship(getScilabJavaVM(), _parentId, _childId);
37 }
38
39 BOOL setGraphicObjectProperty(int _iID, int _iName, void const* _pvValue, _ReturnType_ _valueType, int numElements)
40 {
41     return setGraphicObjectPropertyAndWarn(_iID, _iName, _pvValue, _valueType, numElements, 1);
42 }
43
44 BOOL setGraphicObjectPropertyAndNoWarn(int _iID, int _iName, void const* _pvValue, _ReturnType_ _valueType, int numElements)
45 {
46     return setGraphicObjectPropertyAndWarn(_iID, _iName, _pvValue, _valueType, numElements, 0);
47 }
48
49 BOOL setGraphicObjectPropertyAndWarn(int _iID, int _iName, void const* _pvValue, _ReturnType_ _valueType, int numElements, int warnJava)
50 {
51     bool result = false;
52
53     double doubleValue = 0.;
54     int intValue = 0;
55     BOOL boolValue = FALSE;
56
57     // do not perform anything if the id is undefined
58     if (_iID == 0)
59     {
60         return FALSE;
61     }
62
63
64     // Special Case for data, no need to go through Java.
65     if (_iName == __GO_DATA_MODEL__
66             || _iName == __GO_DATA_MODEL_COORDINATES__
67             || _iName == __GO_DATA_MODEL_X__
68             || _iName == __GO_DATA_MODEL_Y__
69             || _iName == __GO_DATA_MODEL_Z__
70             || _iName == __GO_DATA_MODEL_X_COORDINATES_SHIFT__
71             || _iName == __GO_DATA_MODEL_Y_COORDINATES_SHIFT__
72             || _iName == __GO_DATA_MODEL_Z_COORDINATES_SHIFT__
73             || _iName == __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__
74             || _iName == __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__
75             || _iName == __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__
76             || _iName == __GO_DATA_MODEL_NUM_ELEMENTS__
77             || _iName == __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__
78             || _iName == __GO_DATA_MODEL_NUM_VERTICES_PER_GON__
79             || _iName == __GO_DATA_MODEL_NUM_GONS__
80             || _iName == __GO_DATA_MODEL_Z_COORDINATES_SET__
81             || _iName == __GO_DATA_MODEL_COLORS__
82             || _iName == __GO_DATA_MODEL_NUM_COLORS__
83             || _iName == __GO_DATA_MODEL_NUM_VERTICES__
84             || _iName == __GO_DATA_MODEL_NUM_INDICES__
85             || _iName == __GO_DATA_MODEL_INDICES__
86             || _iName == __GO_DATA_MODEL_VALUES__
87             || _iName == __GO_DATA_MODEL_FEC_TRIANGLES__
88             || _iName == __GO_DATA_MODEL_NUM_X__
89             || _iName == __GO_DATA_MODEL_NUM_Y__
90             || _iName == __GO_DATA_MODEL_NUM_Z__
91             || _iName == __GO_DATA_MODEL_GRID_SIZE__
92             || _iName == __GO_DATA_MODEL_X_DIMENSIONS__
93             || _iName == __GO_DATA_MODEL_Y_DIMENSIONS__
94             || _iName == __GO_DATA_MODEL_MATPLOT_BOUNDS__
95             || _iName == __GO_DATA_MODEL_MATPLOT_TYPE__
96             || _iName == __GO_DATA_MODEL_MATPLOT_DATA_INFOS__
97             || _iName == __GO_DATA_MODEL_MATPLOT_DATA_TYPE__
98             || _iName == __GO_DATA_MODEL_MATPLOT_DATA_ORDER__
99             || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__
100             || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__
101             || _iName == __GO_DATA_MODEL_DISPLAY_FUNCTION__
102        )
103     {
104         BOOL ret = DataController::setGraphicObjectProperty(_iID, _iName, _pvValue, numElements);
105         if ((ret || _iName == __GO_DATA_MODEL__) && warnJava)
106         {
107             ///printf("debug property value=%d\n",_iName);
108             CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, __GO_DATA_MODEL__, _iID);
109         }
110         return ret;
111     }
112
113     switch (_valueType)
114     {
115         case jni_string :
116             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (char *)_pvValue);
117             break;
118
119         case jni_string_vector :
120             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (char**)_pvValue, numElements);
121             break;
122         case jni_double :
123             doubleValue = *(double*)_pvValue;
124             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (double)doubleValue);
125             break;
126         case jni_double_vector :
127             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (double*)_pvValue, numElements);
128             break;
129         case jni_int :
130             intValue = *(int*)_pvValue;
131             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (int)intValue);
132             break;
133         case jni_int_vector :
134             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (int*)_pvValue, numElements);
135             break;
136         case jni_bool :
137             boolValue = *(BOOL*)_pvValue;
138             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, BOOLtobool(boolValue));
139             break;
140         case jni_bool_vector :
141             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (bool*)_pvValue, numElements);
142             break;
143         default :
144             /* Do Nothing */
145             break;
146     }
147
148     return booltoBOOL(result);
149 }
150