moab
|
00001 00016 #ifndef READ_VTK_HPP 00017 #define READ_VTK_HPP 00018 00019 #include "moab/Forward.hpp" 00020 #include "moab/ReaderIface.hpp" 00021 00022 #include <string> 00023 00024 namespace moab { 00025 00026 class ReadUtilIface; 00027 class FileTokenizer; 00028 00029 class ReadVtk : public ReaderIface 00030 { 00031 00032 public: 00033 00034 static ReaderIface* factory( Interface* ); 00035 00037 ErrorCode load_file( const char* file_name, 00038 const EntityHandle* file_set, 00039 const FileOptions& opts, 00040 const SubsetList* subset_list = 0, 00041 const Tag* file_id_tag = 0 ); 00042 00043 ErrorCode read_tag_values( const char* file_name, 00044 const char* tag_name, 00045 const FileOptions& opts, 00046 std::vector<int>& tag_values_out, 00047 const SubsetList* subset_list = 0 ); 00048 00050 ReadVtk(Interface* impl = NULL); 00051 00053 virtual ~ReadVtk(); 00054 00055 protected: 00056 00057 ErrorCode allocate_vertices( long num_vtx, 00058 EntityHandle& start_handle_out, 00059 double*& x_coord_array_out, 00060 double*& y_coord_array_out, 00061 double*& z_coord_array_out ); 00062 00063 ErrorCode read_vertices( FileTokenizer& tokens, 00064 long num_verts, 00065 EntityHandle& start_handle_out ); 00066 00067 ErrorCode allocate_elements( long num_elements, 00068 int vert_per_element, 00069 EntityType type, 00070 EntityHandle& start_handle_out, 00071 EntityHandle*& conn_array_out, 00072 std::vector<Range>& append_to_this ); 00073 00074 ErrorCode vtk_read_dataset( FileTokenizer& tokens, 00075 Range& vertex_list, 00076 std::vector<Range>& element_list ); 00077 00078 ErrorCode vtk_read_structured_points( FileTokenizer& tokens, 00079 Range& vertex_list, 00080 std::vector<Range>& elem_list ); 00081 00082 ErrorCode vtk_read_structured_grid( FileTokenizer& tokens, 00083 Range& vertex_list, 00084 std::vector<Range>& elem_list ); 00085 00086 ErrorCode vtk_read_rectilinear_grid( FileTokenizer& tokens, 00087 Range& vertex_list, 00088 std::vector<Range>& elem_list ); 00089 00090 ErrorCode vtk_read_polydata( FileTokenizer& tokens, 00091 Range& vertex_list, 00092 std::vector<Range>& elem_list ); 00093 00094 ErrorCode vtk_read_polygons( FileTokenizer& tokens, 00095 EntityHandle first_vtx, 00096 std::vector<Range>& elem_list ); 00097 00098 ErrorCode vtk_read_unstructured_grid( FileTokenizer& tokens, 00099 Range& vertex_list, 00100 std::vector<Range>& elem_list ); 00101 00102 ErrorCode vtk_create_structured_elems( const long* dims, 00103 EntityHandle first_vtx, 00104 std::vector<Range>& elem_list ); 00105 00106 ErrorCode vtk_read_field( FileTokenizer& tokens ); 00107 00108 ErrorCode vtk_read_attrib_data( FileTokenizer& tokens, 00109 std::vector<Range>& entities ); 00110 00111 ErrorCode vtk_read_tag_data( FileTokenizer& tokens, 00112 int type, 00113 size_t per_elem, 00114 std::vector<Range>& entities, 00115 const char* name ); 00116 00117 ErrorCode vtk_read_scalar_attrib( FileTokenizer& tokens, 00118 std::vector<Range>& entities, 00119 const char* name); 00120 00121 ErrorCode vtk_read_color_attrib( FileTokenizer& tokens, 00122 std::vector<Range>& entities, 00123 const char* name); 00124 00125 ErrorCode vtk_read_vector_attrib( FileTokenizer& tokens, 00126 std::vector<Range>& entities, 00127 const char* name); 00128 00129 ErrorCode vtk_read_texture_attrib( FileTokenizer& tokens, 00130 std::vector<Range>& entities, 00131 const char* name); 00132 00133 ErrorCode vtk_read_tensor_attrib( FileTokenizer& tokens, 00134 std::vector<Range>& entities, 00135 const char* name ); 00136 00137 ErrorCode vtk_read_field_attrib( FileTokenizer& tokens, 00138 std::vector<Range>& entities, 00139 const char* name); 00140 00141 ErrorCode store_file_ids( Tag tag, 00142 const Range& vertices, 00143 const std::vector<Range>& elements ); 00144 00145 private: 00146 00147 ReadUtilIface* readMeshIface; 00148 00149 //------------member variables ------------// 00150 00152 Interface* mdbImpl; 00153 00155 EntityHandle mCurrentMeshHandle; 00156 00158 std::string mPartitionTagName; 00159 }; 00160 00161 } // namespace moab 00162 00163 #endif 00164 00165 00166 00167