VTK
dox/IO/vtkNetCDFReader.h
Go to the documentation of this file.
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 
00076 
00081   vtkGetObjectMacro(VariableDimensions, vtkStringArray);
00083 
00090   virtual void SetDimensions(const char *dimensions);
00091 
00093 
00098   vtkGetObjectMacro(AllDimensions, vtkStringArray);
00100 
00102 
00110   vtkGetMacro(ReplaceFillValueWithNan, int);
00111   vtkSetMacro(ReplaceFillValueWithNan, int);
00112   vtkBooleanMacro(ReplaceFillValueWithNan, int);
00114 
00115 protected:
00116   vtkNetCDFReader();
00117   ~vtkNetCDFReader();
00118 
00119   char *FileName;
00120   vtkTimeStamp FileNameMTime;
00121   vtkTimeStamp MetaDataMTime;
00122 
00123 //BTX
00125   vtkSmartPointer<vtkIntArray> LoadingDimensions;
00126 
00127   vtkSmartPointer<vtkDataArraySelection> VariableArraySelection;
00128 
00130   vtkStringArray *VariableDimensions;
00131 
00133   vtkStringArray *AllDimensions;
00134 //ETX
00135 
00136   int ReplaceFillValueWithNan;
00137 
00138   virtual int RequestDataObject(vtkInformation *request,
00139                                 vtkInformationVector **inputVector,
00140                                 vtkInformationVector *outputVector);
00141 
00142   virtual int RequestInformation(vtkInformation *request,
00143                                  vtkInformationVector **inputVector,
00144                                  vtkInformationVector *outputVector);
00145 
00146   virtual int RequestData(vtkInformation *request,
00147                           vtkInformationVector **inputVector,
00148                           vtkInformationVector *outputVector);
00149 
00151 
00152   static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid,
00153                                         void *clientdata, void *calldata);
00155 
00158   vtkStdString DescribeDimensions(int ncFD, const int *dimIds, int numDims);
00159 
00162   virtual int ReadMetaData(int ncFD);
00163 
00165   virtual int FillVariableDimensions(int ncFD);
00166 
00172   virtual int IsTimeDimension(int ncFD, int dimId);
00173 
00174 //BTX
00181   virtual vtkSmartPointer<vtkDoubleArray> GetTimeValues(int ncFD, int dimId);
00182 //ETX
00183 
00185 
00190   virtual bool DimensionsAreForPointData(const int *vtkNotUsed(dimensions),
00191                                          int vtkNotUsed(numDimensions)) {
00192     return true;
00193   }
00195 
00197 
00199   virtual int LoadVariable(int ncFD, const char *varName, double time,
00200                            vtkDataSet *output);
00202 
00203 private:
00204   vtkNetCDFReader(const vtkNetCDFReader &);     // Not implemented
00205   void operator=(const vtkNetCDFReader &);      // Not implemented
00206 };
00207 
00208 #endif //__vtkNetCDFReader_h