VTK
|
00001 // -*- c++ -*- 00002 /*========================================================================= 00003 00004 Program: Visualization Toolkit 00005 Module: vtkNetCDFReader.h 00006 00007 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00016 00017 /*------------------------------------------------------------------------- 00018 Copyright 2008 Sandia Corporation. 00019 Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 00020 the U.S. Government retains certain rights in this software. 00021 -------------------------------------------------------------------------*/ 00022 00033 #ifndef __vtkNetCDFReader_h 00034 #define __vtkNetCDFReader_h 00035 00036 #include "vtkDataObjectAlgorithm.h" 00037 00038 #include "vtkSmartPointer.h" // For ivars 00039 00040 00041 class vtkDataArraySelection; 00042 class vtkDataSet; 00043 class vtkDoubleArray; 00044 class vtkIntArray; 00045 class vtkStdString; 00046 class vtkStringArray; 00047 00048 class VTK_IO_EXPORT vtkNetCDFReader : public vtkDataObjectAlgorithm 00049 { 00050 public: 00051 vtkTypeMacro(vtkNetCDFReader, vtkDataObjectAlgorithm); 00052 static vtkNetCDFReader *New(); 00053 virtual void PrintSelf(ostream &os, vtkIndent indent); 00054 00055 virtual void SetFileName(const char *filename); 00056 vtkGetStringMacro(FileName); 00057 00060 int UpdateMetaData(); 00061 00062 // // Description: 00063 // // Get the data array selection tables used to configure which variables to 00064 // // load. 00065 // vtkGetObjectMacro(VariableArraySelection, vtkDataArraySelection); 00066 00068 00069 virtual int GetNumberOfVariableArrays(); 00070 virtual const char *GetVariableArrayName(int idx); 00071 virtual int GetVariableArrayStatus(const char *name); 00072 virtual void SetVariableArrayStatus(const char *name, int status); 00074 00079 virtual vtkStringArray *GetAllVariableArrayNames(); 00080 00082 00087 vtkGetObjectMacro(VariableDimensions, vtkStringArray); 00089 00096 virtual void SetDimensions(const char *dimensions); 00097 00099 00104 vtkGetObjectMacro(AllDimensions, vtkStringArray); 00106 00108 00116 vtkGetMacro(ReplaceFillValueWithNan, int); 00117 vtkSetMacro(ReplaceFillValueWithNan, int); 00118 vtkBooleanMacro(ReplaceFillValueWithNan, int); 00120 00121 protected: 00122 vtkNetCDFReader(); 00123 ~vtkNetCDFReader(); 00124 00125 char *FileName; 00126 vtkTimeStamp FileNameMTime; 00127 vtkTimeStamp MetaDataMTime; 00128 00129 //BTX 00131 vtkSmartPointer<vtkIntArray> LoadingDimensions; 00132 00133 vtkSmartPointer<vtkDataArraySelection> VariableArraySelection; 00134 00135 vtkSmartPointer<vtkStringArray> AllVariableArrayNames; 00136 00138 vtkStringArray *VariableDimensions; 00139 00141 00142 vtkStringArray *AllDimensions; 00143 //ETX 00145 00146 int ReplaceFillValueWithNan; 00147 00148 int WholeExtent[6]; 00149 00150 virtual int RequestDataObject(vtkInformation *request, 00151 vtkInformationVector **inputVector, 00152 vtkInformationVector *outputVector); 00153 00154 virtual int RequestInformation(vtkInformation *request, 00155 vtkInformationVector **inputVector, 00156 vtkInformationVector *outputVector); 00157 00158 virtual int RequestData(vtkInformation *request, 00159 vtkInformationVector **inputVector, 00160 vtkInformationVector *outputVector); 00161 00163 00164 static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid, 00165 void *clientdata, void *calldata); 00167 00170 vtkStdString DescribeDimensions(int ncFD, const int *dimIds, int numDims); 00171 00174 virtual int ReadMetaData(int ncFD); 00175 00177 virtual int FillVariableDimensions(int ncFD); 00178 00184 virtual int IsTimeDimension(int ncFD, int dimId); 00185 00186 //BTX 00188 00194 virtual vtkSmartPointer<vtkDoubleArray> GetTimeValues(int ncFD, int dimId); 00195 //ETX 00197 00199 00204 virtual bool DimensionsAreForPointData(vtkIntArray *vtkNotUsed(dimensions)) { 00205 return true; 00206 } 00208 00213 virtual void GetUpdateExtentForOutput(vtkDataSet *output, int extent[6]); 00214 00216 00218 virtual int LoadVariable(int ncFD, const char *varName, double time, 00219 vtkDataSet *output); 00221 00222 private: 00223 vtkNetCDFReader(const vtkNetCDFReader &); // Not implemented 00224 void operator=(const vtkNetCDFReader &); // Not implemented 00225 }; 00226 00227 #endif //__vtkNetCDFReader_h