* Bug #11550 fixed - Closing the scope graph while running simulation led to a
[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     // do not perform anything if the id is undefined
31     if (_parentId == NULL || _childId == NULL)
32     {
33         return;
34     }
35
36     CallGraphicController::setGraphicObjectRelationship(getScilabJavaVM(), _parentId, _childId);
37 }
38
39 BOOL setGraphicObjectProperty(char const* _pstID, char const* _pstName, void const* _pvValue, _ReturnType_ _valueType, int numElements)
40 {
41     bool result = false;
42
43     double doubleValue = 0.;
44     int intValue = 0;
45     BOOL boolValue = FALSE;
46
47     // do not perform anything if the id is undefined
48     if (_pstID == NULL)
49     {
50         return FALSE;
51     }
52
53
54     // Special Case for data, no need to go through Java.
55     if (strncmp(_pstName, __GO_DATA_MODEL__, strlen(__GO_DATA_MODEL__)) == 0)
56     {
57         result = BOOLtobool(DataController::setGraphicObjectProperty(_pstID, _pstName, _pvValue, numElements));
58         CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, __GO_DATA_MODEL__, _pstID);
59         return booltoBOOL(result);
60     }
61
62     switch (_valueType)
63     {
64         case jni_string :
65             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (char *)_pvValue);
66             break;
67
68         case jni_string_vector :
69             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (char**)_pvValue, numElements);
70             break;
71
72         case jni_double :
73             doubleValue = *(double*)_pvValue;
74             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (double)doubleValue);
75             break;
76
77         case jni_double_vector :
78             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (double*)_pvValue, numElements);
79             break;
80
81         case jni_int :
82
83             intValue = *(int*)_pvValue;
84
85             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (int)intValue);
86             break;
87
88         case jni_int_vector :
89             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (int*)_pvValue, numElements);
90             break;
91
92         case jni_bool :
93
94             boolValue = *(BOOL*)_pvValue;
95
96             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, BOOLtobool(boolValue));
97             break;
98
99         case jni_bool_vector :
100
101             result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _pstID, _pstName, (bool*)_pvValue, numElements);
102
103             break;
104
105         default :
106             /* Do Nothing */
107             break;
108     }
109
110     return booltoBOOL(result);
111 }
112