]> SALOME platform Git repositories - modules/med.git/blob - src/MEDOP/gui/XmedDataModel.cxx
Salome HOME
Merge from V6_main (04/10/2012)
[modules/med.git] / src / MEDOP / gui / XmedDataModel.cxx
1 #include "XmedDataModel.hxx"
2 #include <Basics_Utils.hxx>
3
4 //
5 // =================================================================
6 // XmedDataObject implementation
7 // =================================================================
8 //
9
10 XmedDataObject::XmedDataObject() : DataObject() {
11 }
12
13 /*! This function specified the localization of the object in the
14  * hierarchical organization
15  */
16 string XmedDataObject::getPath() {
17   string path = 
18     string(_fieldHandler.meshname) + pathsep +
19     _getTypedFieldLabel();
20   return path;
21 }
22
23 void XmedDataObject::setFieldHandler(MEDOP::FieldHandler fieldHandler) {
24   _fieldHandler = fieldHandler;
25   this->setLabel(string("it = ")+ToString(_fieldHandler.iteration));
26 }
27 MEDOP::FieldHandler * XmedDataObject::getFieldHandler() {
28   return &_fieldHandler;
29 }
30
31 const char * XmedDataObject::mapTypeOfFieldLabel[XmedDataObject::NB_TYPE_OF_FIELDS] = 
32   {"ON_CELLS", "ON_NODES", "ON_GAUSS_PT", "ON_GAUSS_NE" };
33 /*!
34  * This function implements the convention for displaying a fieldname
35  * characterized by its spatial discretisation type.
36  */
37 string XmedDataObject::_getTypedFieldLabel() {
38   // A field name could identify several MEDCoupling fields, that
39   // differ by their spatial discretization on the mesh (values on
40   // cells, values on nodes, ...). This spatial discretization is
41   // specified by the TypeOfField that is an integer value in this
42   // list:
43   // 0 = ON_CELLS       
44   // 1 = ON_NODES       
45   // 2 = ON_GAUSS_PT    
46   // 3 = ON_GAUSS_NE
47   if ( _fieldHandler.type < 0 || 
48        _fieldHandler.type >= XmedDataObject::NB_TYPE_OF_FIELDS ) {
49     return string("UNKNOWN");
50   }
51   string label(_fieldHandler.fieldname);
52   label +=" ("+string(mapTypeOfFieldLabel[_fieldHandler.type])+")";
53   return label;
54 }
55
56 //
57 // =================================================================
58 // XmedDataModel implementation
59 // =================================================================
60 //
61
62 /*!
63  * This function creates a XmedDataObject instance of DataObject and
64  * add the newly created instance to the model.
65  */
66 DataObject * XmedDataModel::newDataObject() {
67   XmedDataObject * dataObject = new XmedDataObject();
68   this->addDataObject(dataObject);
69   return dataObject;
70 }
71
72 //
73 // =================================================================
74 // XmedDataProcessor implementation
75 // =================================================================
76 //
77 void XmedDataProcessor::preprocess(QStringList itemNameIdList) {
78   int maxsize = itemNameIdList.size();
79   _resultingFieldHandlerList = new MEDOP::FieldHandlerList(maxsize);
80   _resultingFieldIdList = new MEDOP::FieldIdList(maxsize);
81   _objectIndex = 0;
82 }
83
84 MEDOP::FieldHandlerList * XmedDataProcessor::getResultingFieldHandlerList() {
85   return _resultingFieldHandlerList._retn();
86 }
87
88 MEDOP::FieldIdList * XmedDataProcessor::getResultingFieldIdList() {
89   return _resultingFieldIdList._retn();
90 }
91
92 void XmedDataProcessor::processDataObject(DataObject * dataObject) {
93   XmedDataObject * xmedDataObject = (XmedDataObject *)dataObject;
94   MEDOP::FieldHandler fieldHandler = *(xmedDataObject->getFieldHandler());
95   int fieldId = fieldHandler.id;
96
97   int newsize = _objectIndex+1;
98   _resultingFieldHandlerList->length(newsize);
99   _resultingFieldIdList->length(newsize);
100
101   _resultingFieldHandlerList[_objectIndex] = fieldHandler;
102   _resultingFieldIdList[_objectIndex]      = fieldId;
103   _objectIndex++;
104
105   // >>>>>
106   // Example (if needed) for creating the list of id from the lsite of handler 
107   /*
108   MEDOP::FieldIdList_var fieldIdList = new MEDOP::FieldIdList();
109   fieldIdList->length(fieldHandlerList->length());
110   for (int i=0; i<fieldHandlerList->length(); i++) {
111     MEDOP::FieldHandler fieldHandler = (*fieldHandlerList)[i];
112     fieldIdList[i] = fieldHandler.id;
113   }
114   */
115   // <<<<<
116 }