Merge remote-tracking branch 'origin/master' into YaSp
[scilab.git] / scilab / modules / graphic_objects / src / cpp / dataModel.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 #include "DataModel.hxx"
14
15 extern "C" {
16 #include "BOOL.h"
17
18 #include <string.h>
19 }
20
21 DataModel *DataModel::m_me = NULL;
22
23 BOOL DataModel::setGraphicObjectProperty(char const* _pstID, int _iName, void const* _dblValue, int numElements)
24 {
25     Data3D* dataObject = NULL;
26     int property = 0;
27     int returnValue = 0;
28
29     dataObject = (*m_dataMap)[std::string(_pstID)];
30     if (dataObject == NULL)
31     {
32         return FALSE;
33     }
34
35     property = dataObject->getPropertyFromName(_iName);
36
37     if (property == UNKNOWN_DATA_PROPERTY)
38     {
39         return FALSE;
40     }
41
42     returnValue = dataObject->setDataProperty(property, _dblValue, numElements);
43
44     return (BOOL) returnValue;
45 }
46
47 void DataModel::getGraphicObjectProperty(char const* _pstID, int _iName, void **_pvData)
48 {
49     Data3D* dataObject = NULL;
50     int property = 0;
51
52     dataObject = (*m_dataMap)[std::string(_pstID)];
53
54     property = dataObject->getPropertyFromName(_iName);
55
56     dataObject->getDataProperty(property, _pvData);
57 }
58
59 void DataModel::getGraphicObjectIntProperty(char const* _pstID, int _iName, void **_pvData)
60 {
61     Data3D* dataObject = NULL;
62     int property = 0;
63
64     property = (*m_dataMap)[std::string(_pstID)]->getPropertyFromName(_iName);
65
66     dataObject->getDataProperty(property, _pvData);
67 }
68
69 char const* DataModel::createDataObject(char const* _pstID, int _iType)
70 {
71     Data3D* newObject = NULL;
72
73     /*
74      * To be implemented as the Java graphicObject class' similar function
75      * (getTypeFromName) in order to avoid strcmp calls.
76      */
77
78     switch (_iType) {
79     case __GO_GRAYPLOT__ :
80         newObject = new NgonGridData();
81         break;
82     case __GO_MATPLOT__ :
83         newObject = new NgonGridMatplotData();
84         break;
85     case __GO_FAC3D__ :
86         newObject = new NgonGeneralData();
87         break;
88     case __GO_PLOT3D__ :
89         newObject = new NgonGridData();
90         break;
91     case __GO_POLYLINE__ :
92         newObject = new NgonPolylineData();
93         break;
94     case __GO_FEC__ :
95         newObject = new TriangleMeshFecData();
96         break;
97     default :
98         return NULL;
99     }
100
101     (*m_dataMap)[std::string(_pstID)] = newObject;
102
103     return _pstID;
104 }
105
106 void DataModel::deleteDataObject(char const* _pstID)
107 {
108     Data3D* newObject = (*m_dataMap)[std::string(_pstID)];
109     if (newObject != NULL)
110     {
111         delete newObject;
112     }
113
114     m_dataMap->erase(std::string(_pstID));
115 }
116