Salome HOME
Compatibility CMake
[modules/visu.git] / src / CONVERTOR / VISU_TableReader.hxx
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 //  This library is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU Lesser General Public
8 //  License as published by the Free Software Foundation; either
9 //  version 2.1 of the License.
10 //
11 //  This library is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 //  Lesser General Public License for more details.
15 //
16 //  You should have received a copy of the GNU Lesser General Public
17 //  License along with this library; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 //  VISU CONVERTOR :
23 //  File   : VISU_TableReader.hxx
24 //  Author : Alexey PETROV
25 //  Module : VISU
26 //
27 #ifndef VISU_TableReader_HeaderFile
28 #define VISU_TableReader_HeaderFile
29
30 /*! 
31   \file VISU_TableReader.hxx
32   \brief The file contains definition of the Table reading functionlity
33 */
34
35 #include "VISUConvertor.hxx"
36
37 #include "VISU_IDMapper.hxx"
38
39 #include <string>
40 #include <vector>
41
42 namespace VISU
43 {
44   //---------------------------------------------------------------
45   struct VISU_CONVERTOR_EXPORT TTable2D 
46   {
47     typedef std::string TValue;
48     typedef std::vector<TValue> TValues;
49     
50     struct TRow
51     {
52       std::string myTitle;
53       std::string myUnit;
54       TValues myValues;
55     };
56     
57     std::string myTitle;
58     std::vector<std::string> myColumnUnits;
59     std::vector<std::string> myColumnTitles;
60     
61     typedef std::vector<TRow> TRows;
62     TRows myRows;
63     
64     int 
65     Check();
66
67     void
68     getColumns( TTable2D& theTable2D ) const;
69   };
70
71
72   //---------------------------------------------------------------
73   class VISU_CONVERTOR_EXPORT TTableIDMapper: 
74     public virtual TPolyDataIDMapper,
75     public virtual TTable2D
76   {
77   public:
78     TTableIDMapper();
79     ~TTableIDMapper();
80     
81     virtual
82     vtkPolyData*
83     GetPolyDataOutput();
84
85     virtual
86     long unsigned int
87     GetMemorySize();
88
89     void
90     SetXAxisPosition( vtkIdType theAxisPosition );
91
92     vtkIdType
93     GetXAxisPosition();
94
95   protected:
96     vtkIdType myXAxisPosition;
97     vtkPolyData* myOutput;
98   };
99   typedef MED::SharedPtr<TTableIDMapper> PTableIDMapper;
100   
101
102   //---------------------------------------------------------------
103   typedef std::vector<PTableIDMapper> TTableContainer;
104   VISU_CONVERTOR_EXPORT 
105     void ImportTables( const char* theFileName, TTableContainer& theContainer );
106
107
108   //---------------------------------------------------------------
109 }
110
111 #endif