7ad13da263f6d7ff8a578b36f7340824edec311f
[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-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(char const* _parentId, char const* _childId)
29 {
30     CallGraphicController::setGraphicObjectRelationship(getScilabJavaVM(), _parentId, _childId);
31 }
32
33 BOOL setGraphicObjectProperty(char const* _pstID, char const* _pstName, void const* _pvValue, _ReturnType_ _valueType, int numElements)
34 {
35     bool result = false;
36
37     double doubleValue = 0.;
38     int intValue = 0;
39     BOOL boolValue = FALSE;
40
41     // Special Case for data, no need to go through Java.
42     if (strncmp(_pstName, __GO_DATA_MODEL__, strlen(__GO_DATA_MODEL__)) == 0)
43     {
44         result = BOOLtobool(DataController::setGraphicObjectProperty(_pstID, _pstName, _pvValue, numElements));
45         CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, __GO_DATA_MODEL__, _pstID);
46         return booltoBOOL(result);
47     }
48
49     switch (_valueType)
50     {
51         case jni_string :
52             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (char *)_pvValue);
53             break;
54
55         case jni_string_vector :
56             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (char**)_pvValue, numElements);
57             break;
58
59         case jni_double :
60             doubleValue = *(double*)_pvValue;
61             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (double)doubleValue);
62             break;
63
64         case jni_double_vector :
65             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (double*)_pvValue, numElements);
66             break;
67
68         case jni_int :
69
70             intValue = *(int*)_pvValue;
71
72             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (int)intValue);
73             break;
74
75         case jni_int_vector :
76             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (int*)_pvValue, numElements);
77             break;
78
79         case jni_bool :
80
81             boolValue = *(BOOL*)_pvValue;
82
83             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, BOOLtobool(boolValue));
84             break;
85
86         case jni_bool_vector :
87
88             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (bool*)_pvValue, numElements);
89
90             break;
91
92         default :
93             /* Do Nothing */
94             break;
95     }
96
97     return booltoBOOL(result);
98 }
99