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 char const* DataModel::createDataObject(char const* _pstID, int _iType)
60 {
61     Data3D* newObject = NULL;
62
63     /*
64      * To be implemented as the Java graphicObject class' similar function
65      * (getTypeFromName) in order to avoid strcmp calls.
66      */
67
68     switch (_iType)
69     {
70         case __GO_GRAYPLOT__ :
71             newObject = new NgonGridData();
72             break;
73         case __GO_MATPLOT__ :
74             newObject = new NgonGridMatplotData();
75             break;
76         case __GO_FAC3D__ :
77             newObject = new NgonGeneralData();
78             break;
79         case __GO_PLOT3D__ :
80             newObject = new NgonGridData();
81             break;
82         case __GO_POLYLINE__ :
83             newObject = new NgonPolylineData();
84             break;
85         case __GO_FEC__ :
86             newObject = new TriangleMeshFecData();
87             break;
88         default :
89             return NULL;
90     }
91
92     (*m_dataMap)[std::string(_pstID)] = newObject;
93
94     return _pstID;
95 }
96
97 void DataModel::deleteDataObject(char const* _pstID)
98 {
99     Data3D* newObject = (*m_dataMap)[std::string(_pstID)];
100     if (newObject != NULL)
101     {
102         delete newObject;
103     }
104
105     m_dataMap->erase(std::string(_pstID));
106 }
107