[cig-commits] r13706 - cs/cigma/trunk/src

luis at geodynamics.org luis at geodynamics.org
Wed Dec 17 02:31:38 PST 2008


Author: luis
Date: 2008-12-17 02:31:38 -0800 (Wed, 17 Dec 2008)
New Revision: 13706

Modified:
   cs/cigma/trunk/src/io_vtk_reader.cpp
   cs/cigma/trunk/src/io_vtk_reader.h
Log:
Use io_vtk.h functions in io_vtk_reader.cpp

Modified: cs/cigma/trunk/src/io_vtk_reader.cpp
===================================================================
--- cs/cigma/trunk/src/io_vtk_reader.cpp	2008-12-17 10:31:36 UTC (rev 13705)
+++ cs/cigma/trunk/src/io_vtk_reader.cpp	2008-12-17 10:31:38 UTC (rev 13706)
@@ -1,4 +1,5 @@
 #include "io_vtk_reader.h"
+#include "io_vtk.h"
 
 
 #ifdef HAVE_VTK
@@ -7,6 +8,8 @@
 //
 //
 
+#include "Filesystem.h"
+
 #include "vtkUnstructuredGridReader.h"
 #include "vtkStructuredGridReader.h"
 #include "vtkRectilinearGridReader.h"
@@ -39,7 +42,7 @@
     dataset = 0;
     legacy_reader = 0;
     xml_reader = 0;
-    gridType = NULL_GRID;
+    gridType = GRID_NULL;
 }
 
 
@@ -62,7 +65,7 @@
 
     if (ext == ".vtk")
     {
-
+        /*
         legacy_reader = vtkDataSetReader::New();
         legacy_reader->SetFileName(filename);
         gridType = VTK;
@@ -75,14 +78,26 @@
             return -1;
         }
 
-
         legacy_reader->Update();
-        dataset = legacy_reader->GetOutput();
-        dataset->Update();
+        */
 
+        legacyReader = vtk_read_legacy(filename, this->gridType);
+
+        if (legacyReader)
+        {
+            legacyReader->Update();
+            this->dataset = legacyReader->GetOutput();
+            this->dataset->Update();
+        }
+        else
+        {
+            cerr << "Could not read legacy VTK file '" << filename << "'" << endl;
+            return -1;
+        }
     }
-    else
+    else if (is_vtk_extension(ext.c_str()))
     {
+        /*
         if (ext == ".vtu")
         {
             xml_reader = vtkXMLUnstructuredGridReader::New();
@@ -134,7 +149,27 @@
 
         dataset = xml_reader->GetOutputAsDataSet();
         dataset->Update();
+        */
+
+        xmlReader = vtk_read_xml(filename, this->gridType);
+
+        if (xmlReader)
+        {
+            xmlReader->GetPointDataArraySelection()->EnableAllArrays();
+            this->dataset = xmlReader->GetOutputAsDataSet();
+            this->dataset->Update();
+        }
+        else
+        {
+            cerr << "Could not read VTK file '" << filename << "'" << endl;
+            return -2;
+        }
     }
+    else
+    {
+        cerr << "Unsupported VTK file (" << ext << ")" << endl;
+        return -1;
+    }
 
     return 0;
 }
@@ -142,29 +177,30 @@
 
 int VtkReader::close()
 {
-    gridType = NULL_GRID;
+    gridType = GRID_NULL;
 
     if (dataset != 0)
     {
         dataset = 0;
     }
 
-    if (legacy_reader)
+    if (legacyReader)
     {
-        legacy_reader->Delete();
-        legacy_reader = 0;
+        legacyReader->Delete();
+        legacyReader = 0;
     }
 
-    if (xml_reader)
+    if (xmlReader)
     {
-        xml_reader->Delete();
-        xml_reader = 0;
+        xmlReader->Delete();
+        xmlReader = 0;
     }
 
     return 0;
 }
 
 
+/*
 static int GetDimensionFromCellType(int cellType)
 {
     if ((cellType == VTK_TRIANGLE) ||
@@ -202,12 +238,14 @@
 
     return -1;
 }
+*/
 
 
 int VtkReader::getDataset(const char *loc, double **data, int *num, int *dim)
 {
+    /*
     TRI_LOG_STR("VtkReader::getDataset()");
-    
+
     int i,j;
     int n_points;
     int rank;
@@ -227,13 +265,13 @@
         vtkDataArray *dataArray = pointData->GetArray(loc);
         assert(dataArray != 0);
 
-        /* XXX: verify that we are loading a dataset of the correct type
-        int dataType = dataArray->GetDataType();
-        if ((dataType != VTK_DOUBLE) || (dataType != VTK_FLOAT))
-        {
-            assert(false); // XXX
-            return -1;
-        }*/
+        // XXX: verify that we are loading a dataset of the correct type
+        //int dataType = dataArray->GetDataType();
+        //if ((dataType != VTK_DOUBLE) || (dataType != VTK_FLOAT))
+        //{
+        //    assert(false); // XXX
+        //    return -1;
+        //}
 
         n_points = dataArray->GetNumberOfTuples();
         rank = dataArray->GetNumberOfComponents();
@@ -264,11 +302,16 @@
     TRI_LOG(rank);
 
     return 0;
+    */
+
+    TRI_LOG_STR("VtkReader::getDataset()");
+    return vtk_read_pointdata<double>(this->dataset, loc, data, num, dim);
 }
 
 
 int VtkReader::getCoordinates(const char *loc, double **coordinates, int *nno, int *nsd)
 {
+    /*
     TRI_LOG_STR("VtkReader::getCoordinates()");
 
     int i,j;
@@ -315,10 +358,15 @@
     TRI_LOG(n_dims);
 
     return 0;
+    */
+
+    TRI_LOG_STR("VtkReader::getCoordinates()");
+    return vtk_read_coordinates(this->dataset, loc, coords, nno, nsd);
 }
 
 int VtkReader::getConnectivity(const char *loc, int **connectivity, int *nel, int *ndofs)
 {
+    /*
     TRI_LOG_STR("VtkReader::getConnectivity()");
 
     int i,j;
@@ -355,6 +403,10 @@
     TRI_LOG(n_dofs);
 
     return 0;
+    */
+
+    TRI_LOG_STR("VtkReader::getConnectivity()");
+    return vtk_read_connectivity<int>(this->dataset, loc, connectivity, nel, ndofs);
 }
 
 

Modified: cs/cigma/trunk/src/io_vtk_reader.h
===================================================================
--- cs/cigma/trunk/src/io_vtk_reader.h	2008-12-17 10:31:36 UTC (rev 13705)
+++ cs/cigma/trunk/src/io_vtk_reader.h	2008-12-17 10:31:38 UTC (rev 13706)
@@ -1,8 +1,9 @@
 #ifndef __CIGMA_VTK_READER_H__
 #define __CIGMA_VTK_READER_H__
 
+#include "Common.h"
 #include "io_file_reader.h"
-#include "io_vtk.h"
+#include "io_vtk.h" // for GridType enum
 
 #ifdef HAVE_VTK
 #include "vtkDataSetReader.h"
@@ -34,8 +35,8 @@
 #ifdef HAVE_VTK
 public:
     vtkGridType gridType;
-    vtkDataSetReader *legacy_reader;
-    vtkXMLReader *xml_reader;
+    vtkDataSetReader *legacyReader;
+    vtkXMLReader *xmlReader;
     vtkDataSet *dataset;
 #endif
 };



More information about the CIG-COMMITS mailing list