1
15
16 #ifndef READ_VTK_HPP
17 #define READ_VTK_HPP
18
19 #include "moab/Forward.hpp"
20 #include "moab/ReaderIface.hpp"
21
22 #include <string>
23
24 namespace moab
25 {
26
27 class ReadUtilIface;
28 class FileTokenizer;
29
30 class ReadVtk : public ReaderIface
31 {
32
33 public:
34 static ReaderIface* factory( Interface* );
35
36
37 ErrorCode load_file( const char* file_name,
38 const EntityHandle* file_set,
39 const FileOptions& opts,
40 const SubsetList* subset_list = 0,
41 const Tag* file_id_tag = 0 );
42
43 ErrorCode read_tag_values( const char* file_name,
44 const char* tag_name,
45 const FileOptions& opts,
46 std::vector< int >& tag_values_out,
47 const SubsetList* subset_list = 0 );
48
49
50 ReadVtk( Interface* impl = NULL );
51
52
53 virtual ~ReadVtk();
54
55 protected:
56 ErrorCode allocate_vertices( long num_vtx,
57 EntityHandle& start_handle_out,
58 double*& x_coord_array_out,
59 double*& y_coord_array_out,
60 double*& z_coord_array_out );
61
62 ErrorCode read_vertices( FileTokenizer& tokens, long num_verts, EntityHandle& start_handle_out );
63
64 ErrorCode allocate_elements( long num_elements,
65 int vert_per_element,
66 EntityType type,
67 EntityHandle& start_handle_out,
68 EntityHandle*& conn_array_out,
69 std::vector< Range >& append_to_this );
70
71 ErrorCode vtk_read_dataset( FileTokenizer& tokens, Range& vertex_list, std::vector< Range >& element_list );
72
73 ErrorCode vtk_read_structured_points( FileTokenizer& tokens, Range& vertex_list, std::vector< Range >& elem_list );
74
75 ErrorCode vtk_read_structured_grid( FileTokenizer& tokens, Range& vertex_list, std::vector< Range >& elem_list );
76
77 ErrorCode vtk_read_rectilinear_grid( FileTokenizer& tokens, Range& vertex_list, std::vector< Range >& elem_list );
78
79 ErrorCode vtk_read_polydata( FileTokenizer& tokens, Range& vertex_list, std::vector< Range >& elem_list );
80
81 ErrorCode vtk_read_polygons( FileTokenizer& tokens, EntityHandle first_vtx, std::vector< Range >& elem_list );
82
83 ErrorCode vtk_read_unstructured_grid( FileTokenizer& tokens, Range& vertex_list, std::vector< Range >& elem_list );
84
85 ErrorCode vtk_create_structured_elems( const long* dims, EntityHandle first_vtx, std::vector< Range >& elem_list );
86
87 ErrorCode vtk_read_field( FileTokenizer& tokens );
88
89 ErrorCode vtk_read_attrib_data( FileTokenizer& tokens, std::vector< Range >& entities );
90
91 ErrorCode vtk_read_tag_data( FileTokenizer& tokens,
92 int type,
93 size_t per_elem,
94 std::vector< Range >& entities,
95 const char* name );
96
97 ErrorCode vtk_read_scalar_attrib( FileTokenizer& tokens, std::vector< Range >& entities, const char* name );
98
99 ErrorCode vtk_read_color_attrib( FileTokenizer& tokens, std::vector< Range >& entities, const char* name );
100
101 ErrorCode vtk_read_vector_attrib( FileTokenizer& tokens, std::vector< Range >& entities, const char* name );
102
103 ErrorCode vtk_read_texture_attrib( FileTokenizer& tokens, std::vector< Range >& entities, const char* name );
104
105 ErrorCode vtk_read_tensor_attrib( FileTokenizer& tokens, std::vector< Range >& entities, const char* name );
106
107 ErrorCode vtk_read_field_attrib( FileTokenizer& tokens, std::vector< Range >& entities, const char* name );
108
109 ErrorCode store_file_ids( Tag tag, const Range& vertices, const std::vector< Range >& elements );
110
111 private:
112 ReadUtilIface* readMeshIface;
113
114
115
116
117 Interface* mdbImpl;
118
119
120
121 std::string mPartitionTagName;
122 };
123
124 }
125
126 #endif