VAPoR  0.1
datastatus.h
Go to the documentation of this file.
1 //************************************************************************
2 // *
3 // Copyright (C) 2004 *
4 // University Corporation for Atmospheric Research *
5 // All Rights Reserved *
6 // *
7 //************************************************************************/
8 //
9 // File: datastatus.h
10 //
11 // Author: Alan Norton
12 // National Center for Atmospheric Research
13 // PO 3000, Boulder, Colorado
14 //
15 // Date: February 2006
16 //
17 // Description: Defines the DataStatus class.
18 // This class maintains information about the data that is currently
19 // loaded. Maintained and accessed mostly through the Session
20 #ifndef DATASTATUS_H
21 #define DATASTATUS_H
22 
23 
24 #include <vector>
25 #include <string>
26 #include <map>
27 #include <qcolor.h>
28 #include <vapor/common.h>
29 #include <vapor/DataMgr.h>
30 #include <vapor/MetadataVDC.h>
31 #include "regionparams.h"
32 class QApplication;
33 
34 namespace VAPoR {
52 public:
53 
54 
55 
58  static DataStatus* getInstance() {
59  if (!theDataStatus) theDataStatus = new DataStatus;
60  return theDataStatus;
61  }
62 
66  const float* getLocalExtents() { return extents; }
70  const float* getFullSizes() {return fullSizes;}
74  const float* getFullStretchedSizes() {return fullStretchedSizes;}
75 
76 
79  const float* getStretchedExtents() { return stretchedExtents; }
80 
83  size_t getMinTimestep() {return minTimeStep;}
84 
87  size_t getMaxTimestep() {return maxTimeStep;}
88 
91  int getVDCType() {return VDCType;}
92 
97  bool dataIsPresent3D(int sesvarnum, int timestep){
98  if (!dataMgr) return false;
99  if (timestep < (int)minTimeStep || timestep > (int)maxTimeStep) return false;
100  if (!variableExists[sesvarnum]) return false;
101  return (getMaxLevel3D(sesvarnum,timestep) >= 0);
102  }
103 
108  bool dataIsPresent2D(int sesvarnum, int timestep){
109  if (!dataMgr) return false;
110  if (timestep < (int)minTimeStep || timestep > (int)maxTimeStep) return false;
111  if (!variableExists2D[sesvarnum]) return false;
112  return (getMaxLevel2D(sesvarnum,timestep) >= 0);
113  }
114 
118  bool dataIsPresent3D(int timestep){
119  if (!dataMgr) return false;
120  if (timestep < (int)minTimeStep || timestep > (int)maxTimeStep) return false;
121  for (int i = 0; i<variableExists.size(); i++){
122  if (variableExists[i] && getMaxLevel3D(i,timestep) >= 0)
123  return true;
124  }
125  return false;
126  }
127 
131  bool dataIsPresent2D(int timestep){
132  if (!dataMgr) return false;
133  if (timestep < 0 || timestep >= numTimesteps) return false;
134  for (int i = 0; i<variableExists2D.size(); i++){
135  if (variableExists2D[i] && getMaxLevel2D(i,timestep) >= 0)
136  return true;
137  }
138  return false;
139  }
140 
144  bool dataIsPresent(int timestep){
145  if (!dataMgr) return false;
146  if (timestep < 0 || timestep >= numTimesteps) return false;
147  for (int i = 0; i<variableExists.size(); i++){
148  if (variableExists[i] && getMaxLevel3D(i,timestep) >= 0)
149  return true;
150  }
151  for (int i = 0; i<variableExists2D.size(); i++){
152  if (variableExists2D[i] && getMaxLevel2D(i,timestep) >= 0)
153  return true;
154  }
155  return false;
156  }
157 
161  for (int t = (int)minTimeStep; t <= (int)maxTimeStep; t++) {
162  if (dataIsPresent3D(t)) return true;
163  }
164  return false;
165  }
166 
170  for (int t = (int)minTimeStep; t <= (int)maxTimeStep; t++) {
171  if (dataIsPresent2D(t)) return true;
172  }
173  return false;
174  }
175 
185  double getDataMax3D(int sesvarNum, int timestep, bool mustGet = true);
186 
196  double getDataMax2D(int sesvarNum, int timestep, bool mustGet = true);
197 
207  double getDataMin3D(int sesvarNum, int timestep, bool mustGet = true);
208 
218  double getDataMin2D(int sesvarNum, int timestep, bool mustGet = true);
219 
224  double getDefaultDataMax3D(int varnum, bool mustGet = true);
225 
230  double getDefaultDataMin3D(int varnum, bool mustGet = true);
231 
236  double getDefaultDataMax2D(int varnum, bool mustGet = true);
237 
242  double getDefaultDataMin2D(int varnum, bool mustGet = true);
243 
253  static bool checkVarMinMax(MapperFunction* mf, int sesVarNum, bool is3D, bool useDefault, float minmax[2], int ts = 0);
254 
261  int maxXFormPresent3D(int sesvarnum, int timestep);
262 
269  int maxXFormPresent2D(int sesvarnum, int timestep);
270 
277  int maxLODPresent3D(int sesvarnum, int timestep);
278 
285  int maxLODPresent2D(int sesvarnum, int timestep);
286 
293  int maxXFormPresent(const string& varname, int timestep){
294  int dim = 3;
295  int sesvarnum = getSessionVariableNum3D(varname);
296  if (sesvarnum < 0) {
297  sesvarnum = getSessionVariableNum2D(varname);
298  dim = 2;
299  if (sesvarnum < 0) return -1;
300  }
301  if (dim == 3)return maxXFormPresent3D(sesvarnum,timestep);
302  else return maxXFormPresent2D(sesvarnum,timestep);
303  }
304 
311  int maxLODPresent(const string& varname, int timestep){
312  int dim = 3;
313  int sesvarnum = getSessionVariableNum3D(varname);
314  if (sesvarnum < 0) {
315  sesvarnum = getSessionVariableNum2D(varname);
316  dim = 2;
317  if (sesvarnum < 0) return -1;
318  }
319  if (dim == 3)return maxLODPresent3D(sesvarnum,timestep);
320  else return maxLODPresent2D(sesvarnum,timestep);
321  }
322 
327  bool variableIsPresent3D(int varnum) {
328  if (varnum < variableExists.size()) return variableExists[varnum];
329  else return false;
330  }
331 
336  bool variableIsPresent2D(int varnum) {
337  if (varnum < variableExists2D.size()) return variableExists2D[varnum];
338  else return false;
339  }
340 
350  bool fieldDataOK(int refLevel, int lod, int tstep, int varx, int vary, int varz);
351 
354  int getNumTimesteps() {return numTimesteps;}
355 
358  int getNumTransforms() {return numTransforms;}
359 
362  int getNumLODs() { return numLODs;}
363 
370  void setDataMissing3D(int timestep, int refLevel, int lod, int sessionVarNum){
371  MetadataVDC* md = dynamic_cast<MetadataVDC*> (dataMgr);
372  if(md && md->GetVDCType() == 2) {
373  if (getMaxLevel3D(sessionVarNum,timestep) >= lod)
374  maxLevel3D[sessionVarNum][timestep] = lod -1;
375  return;
376  }
377  if (getMaxLevel3D(sessionVarNum,timestep) >= refLevel)
378  maxLevel3D[sessionVarNum][timestep] = refLevel -1;
379  }
380 
387  void setDataMissing2D(int timestep, int refLevel, int lod, int sessionVarNum){
388  MetadataVDC* md = dynamic_cast<MetadataVDC*>(dataMgr);
389  if(md && md->GetVDCType() == 2) {
390  if (getMaxLevel2D(sessionVarNum,timestep) >= lod)
391  maxLevel2D[sessionVarNum][timestep] = lod -1;
392  return;
393  }
394  if (getMaxLevel2D(sessionVarNum,timestep) >= refLevel)
395  maxLevel2D[sessionVarNum][timestep] = refLevel -1;
396  }
397 
398 
402  static std::string& getVariableName3D(int sesvarNum) {return variableNames[sesvarNum];}
403 
407  static std::string& getVariableName2D(int sesvarNum) {return variableNames2D[sesvarNum];}
408 
412  static int getSessionVariableNum3D(const std::string& str);
413 
417  static int getSessionVariableNum2D(const std::string& str);
418 
421  static int getNumActiveVariables3D() {return activeVariableNums3D.size();}
422 
425  static int getNumActiveVariables2D() {return activeVariableNums2D.size();}
426 
430  static int mapActiveToSessionVarNum3D(int varnum)
431  { if( varnum >= activeVariableNums3D.size()) return -1;
432  return activeVariableNums3D[varnum];}
433 
437  static int mapActiveToSessionVarNum2D(int varnum)
438  { if( varnum >= activeVariableNums2D.size()) return -1;
439  return activeVariableNums2D[varnum];}
440 
444  static int mapSessionToActiveVarNum3D(int sesvar);
445 
449  static int mapSessionToActiveVarNum2D(int sesvar);
450 
456  static std::string& getActiveVarName3D(int activevarnum){
457  if (activeVariableNums3D.size()<= activevarnum) return variableNames[0];
458  return (variableNames[activeVariableNums3D[activevarnum]]);}
459 
465  static std::string& getActiveVarName2D(int activevarnum){
466  if (activeVariableNums2D.size()<= activevarnum) return variableNames2D[0];
467  return (variableNames2D[activeVariableNums2D[activevarnum]]);}
468 
472  int getActiveVarNum3D(std::string varname) const;
473 
477  int getActiveVarNum2D(std::string varname) const;
478 
482  DataMgr* getDataMgr() {return dataMgr;}
483 
485  void invalidateDataMgr(){dataMgr = 0;}
486 
489  static bool warnIfDataMissing() {return doWarnIfDataMissing;}
490 
493  static bool trackMouse() {return trackMouseInTfe;}
494 
497  static bool useLowerAccuracy() {return doUseLowerAccuracy;}
498 
501  static bool useQuadInterpolation() {return doUseQuadInterpolation;}
502 
503 
504 #ifndef DOXYGEN_SKIP_THIS
505  DataStatus();
506  ~DataStatus();
507 
508  QApplication* getApp() {return theApp;}
509  //Reset the datastatus when a new datamgr is opened.
510  //This avoids all "Set" methods:
511  bool reset(DataMgr* dm, size_t cachesize, QApplication* app);
512  static void setDefaultPrefs();
513  //Update based on current stretch factor:
514  void stretchExtents(float factor[3]){
515  for (int i = 0; i< 3; i++) {
516  stretchedExtents[i] = extents[i]*factor[i];
517  stretchedExtents[i+3] = extents[i+3]*factor[i];
518  stretchFactors[i] = factor[i];
519  fullStretchedSizes[i] = fullSizes[i]*factor[i];
520  }
521  }
522  static size_t getCacheMB() {return cacheMB;}
523  static void setInteractiveRefinementLevel(int lev) {
524  interactiveRefLevel = lev;
525  }
526  static int getInteractiveRefinementLevel() {return interactiveRefLevel;}
527 
528  //Find the first timestep that has any data with specified session variable num
529  int getFirstTimestep(int sesvarnum);
530  int getFirstTimestep2D(int sesvarnum);
531  size_t getFullDataSize(int dim){return fullDataSize[dim];}
532  size_t getFullSizeAtLevel(int lev, int dim)
533  { return dataAtLevel[lev][dim];}
534  float getVoxelSize(int lev, int dim){
535  return ((extents[dim+3]-extents[dim])/(float)getFullSizeAtLevel(lev,dim));
536  }
537  const size_t* getFullDataSize() {return fullDataSize;}
538 
539 
540  int get2DOrientation(int mdVarNum); //returns 0,1,2 for XY,YZ, or XZ
541 
542  //Used for georeferencing and moving region:
543  static const std::string getProjectionString() {return projString;}
544 
545  //Following method used to give different extents with spherical data:
546  void getLocalExtentsCartesian(float extents[6]);
547 
548 
549  //Get/set methods for global vizfeatures
550  static const QColor getBackgroundColor() {return backgroundColor;}
551  static const QColor getRegionFrameColor() {return regionFrameColor;}
552  static const QColor getSubregionFrameColor() {return subregionFrameColor;}
553  static void setBackgroundColor(const QColor c) {backgroundColor = c;}
554  static void setRegionFrameColor(const QColor c) {regionFrameColor = c;}
555  static void setSubregionFrameColor(const QColor c) {subregionFrameColor = c;}
556  static void enableRegionFrame(bool enable) {regionFrameEnabled = enable;}
557  static void enableSubregionFrame(bool enable) {subregionFrameEnabled = enable;}
558  static bool regionFrameIsEnabled() {return regionFrameEnabled;}
559  static bool subregionFrameIsEnabled() {return subregionFrameEnabled;}
560 
561  //Insert variableName if necessary; return sessionVariableNum
562  static int mergeVariableName(const std::string& str);
563  static int mergeVariableName2D(const std::string& str);
564 
565 
566  static void addVarName(const std::string newName) {
567  for (int i = 0; i<variableNames.size(); i++)
568  if (variableNames[i] == newName) return;
569  variableNames.push_back(newName);
570  }
571  static void addVarName2D(const std::string newName) {
572  for (int i = 0; i<variableNames2D.size(); i++)
573  if (variableNames2D[i] == newName) return;
574  variableNames2D.push_back(newName);
575  }
576 
577  //"Metadata" variables are those that are in current metadata, as opposed to
578  //"session" variables are those in session
579  static int getNumMetadataVariables() {return numMetadataVariables;}
580  static int getNumMetadataVariables2D() {return numMetadataVariables2D;}
581 
582  static int mapMetadataToSessionVarNum(int varnum)
583  { if(!mapMetadataVars) return 0;
584  return mapMetadataVars[varnum];}
585  static int mapMetadataToSessionVarNum2D(int varnum)
586  { if(!mapMetadataVars2D) return 0;
587  return mapMetadataVars2D[varnum];}
588  static int mapSessionToMetadataVarNum(int var);
589 
590  // Find the name that corresponds to a metadata variable num
591  // should be the same as getting it from the metadata directly
592  static std::string& getMetadataVarName(int mdvarnum) {
593  if (!mapMetadataVars) return variableNames[0];
594  return (variableNames[mapMetadataVars[mdvarnum]]);}
595  static std::string& getMetadataVarName2D(int mdvarnum) {
596  if (!mapMetadataVars2D) return variableNames2D[0];
597  return (variableNames2D[mapMetadataVars2D[mdvarnum]]);}
598  int getMetadataVarNum(std::string varname);
599  int getMetadataVarNum2D(std::string varname);
600  //getNumSessionVariables returns the number of session variables
601  static int getNumSessionVariables(){return (int)variableNames.size();}
602  static int getNumSessionVariables2D(){return (int)variableNames2D.size();}
603  static void clearVariableNames() {
604  variableNames.clear();
605  variableNames2D.clear();
606  clearDerivedVars();
607  }
608  static void removeMetadataVars(){
609  if (mapMetadataVars) delete [] mapMetadataVars;
610  if (mapMetadataVars2D) delete [] mapMetadataVars2D;
611  clearMetadataVars();
612  }
613 
614  static void clearMetadataVars() {
615  mapMetadataVars = 0; numMetadataVariables = 0;
616  mapMetadataVars2D = 0; numMetadataVariables2D = 0;
617  }
618  static void clearDerivedVars() {
619  clearActiveVars();
620  derivedMethodMap.clear();
621  derived2DInputMap.clear();
622  derived3DInputMap.clear();
623  derived2DOutputMap.clear();
624  derived3DOutputMap.clear();
625  }
626  static void purgeAllCachedDerivedVariables();
627 
628  //Get full stretched data extents in cube coords
629  void getMaxStretchedExtentsInCube(float maxExtents[3]);
630  const float* getStretchFactors() {return stretchFactors;}
631 
632  bool renderReady() {return renderOK;}
633  void setRenderReady(bool nowOK) {renderOK = nowOK;}
634 
635  bool sphericalTransform();
636 
637  vector<string> getVariableNames() {return variableNames;}
638  vector<string> getVariableNames2D() {return variableNames2D;}
639 
640  //used for specifying nondefault graphics hardware texture size:
641  static void specifyTextureSize(bool val) {textureSizeSpecified = val;}
642  static bool textureSizeIsSpecified(){return textureSizeSpecified;}
643  static int getTextureSize() {return textureSize;}
644  static void setTextureSize(int val) { textureSize = val;}
645 
646 
647  static void setWarnMissingData(bool val) {doWarnIfDataMissing = val;}
648  static void setTrackMouse(bool val) {trackMouseInTfe = val;}
649  static void setUseLowerAccuracy(bool val){doUseLowerAccuracy = val;}
650  static void setUseQuadInterpolation(bool val){doUseQuadInterpolation = val;}
651 
652  const string& getSessionVersion(){ return sessionVersion;}
653  void setSessionVersion(std::string& ver){sessionVersion = ver;}
654 
655  //Convert user point coordinates in-place. Return bool if can't do it.
656  //If the timestep is negative, then the coords are in a time-varying
657  //extent.
658  static bool convertToLonLat(double coords[], int npoints = 1);
659  static bool convertFromLonLat(double coords[], int npoints = 1);
660  static bool convertLocalToLonLat(int timestep, double coords[], int npoints = 1);
661  static bool convertLocalFromLonLat(int timestep,double coords[], int npoints = 1);
662 
663 
664 
665 
666  static void clearActiveVars() {
667  activeVariableNums2D.clear();
668  activeVariableNums3D.clear();
669  }
670 
671  //Attribute names:
672  static const string _backgroundColorAttr;
673  static const string _regionFrameColorAttr;
674  static const string _subregionFrameColorAttr;
675  static const string _regionFrameEnabledAttr;
676  static const string _subregionFrameEnabledAttr;
677  static const string _useLowerRefinementAttr;
678  static const string _useQuadInterpolationAttr;
679  static const string _missingDataWarningAttr;
680  static const string _trackMouseAttr;
681 
682  //Support for Python methods
683  //Specify a new python script, return the integer ID (-1 if error)
684  int addDerivedScript(const std::vector<string> &,const std::vector<string> &,const std::vector<string> &,
685  const std::vector<string> &,const std::string &, bool useMetadata = true);
686  //Determine how many scripts there are
687  static int getNumDerivedScripts(){
688  return (derivedMethodMap.size());
689  }
690  //Replace an existing python script with a new one. -1 if error
691  int replaceDerivedScript(int id, const vector<string> &in2DVars, const vector<string> &out2DVars, const vector<string>& in3Dvars, const vector<string>& out3Dvars, const string& script);
692  //Obtain the id for a given output variable, return -1 if it does not exist
693  //mapping from index to output 2D variables
694  //Client classes need to iterate (read-only) over these
695  static const map<int,vector<string> >& getDerived2DOutputMap() {return derived2DOutputMap;}
696  static const map<int,vector<string> >& getDerived3DOutputMap() {return derived3DOutputMap;}
697  //Remove a python script and associated variable lists. Return false if it's already gone
698  bool removeDerivedScript(int index);
699 
700  static bool isDerivedVariable(std::string varname) {
701  return (getDerivedScriptId(varname) >= 0);
702  }
703  static const std::string getDerivedMethod(std::string varname) {
704  int id = getDerivedScriptId(varname);
705  if (id <0) return string("");
706  return (getDerivedScript(id));
707  }
708  //Change the just the method on an existing script
709  static bool setDerivedMethod(const std::string varname, const std::string& method){
710  int id = getDerivedScriptId(varname);
711  if (id <0) return false;
712  derivedMethodMap[id] = method;
713  return true;
714  }
715 
716  static int getDerivedScriptId(const string& outvar) ;
717  static const string& getDerivedScript(int id) ;
718  static int getMaxDerivedScriptId();
719  static const string& getDerivedScriptName(int id);
720  static const vector<string>& getDerived2DInputVars(int id) ;
721  static const vector<string>& getDerived3DInputVars(int id) ;
722  static const vector<string>& getDerived2DOutputVars(int id) ;
723  static const vector<string>& getDerived3DOutputVars(int id) ;
724  static const string& getDerivedScript(const string& outvar) {
725  return getDerivedScript(getDerivedScriptId(outvar));
726  }
727  //Add a python variable to the session, update mappings, bounds, etc. appropriately.
728  //Return the new session var num
729  //The variable should already be the output of an existing script.
730  //It's OK if the variable is already set as a python variable, but
731  //make sure the input variables are all in the vdc; if not remove them.
732  int setDerivedVariable3D(const string& derivedVarName);
733  int setDerivedVariable2D(const string& derivedVarName);
734  //Remove a python variable, return false if it's not there.
735  //It should already be removed from the python variable mapping
736  static bool removeDerivedVariable2D(const string& derivedVarName);
737  static bool removeDerivedVariable3D(const string& derivedVarName);
738  static bool pre22Session(){return sessionBefore22;}
739  static void setPre22Session(bool value){ sessionBefore22 = value;}
740  static void setPre22Offset(float offset[3]){
741  pre22Offset[0] = offset[0];pre22Offset[1] = offset[1];pre22Offset[2] = offset[2];
742  }
743  static float* getPre22Offset(){return pre22Offset;}
744 
745  int getMaxLevel3D(int sesvarnum,int timestep);
746  int getMaxLevel2D(int sesvarnum,int timestep);
747 private:
748 
749  static DataStatus* theDataStatus;
750  static const vector<string> emptyVec;
751  static const string _emptyString;
752  //Python script mappings:
753  //mapping from index to Python function
754  static map<int,string> derivedMethodMap;
755  //mapping from index to input 2D variables
756  static map<int,vector<string> > derived2DInputMap;
757  //mapping from index to input 3D variables
758  static map<int,vector<string> > derived3DInputMap;
759  //mapping to 2d outputs
760  static map<int,vector<string> > derived2DOutputMap;
761  //mapping from index to output 3D variables
762  static map<int,vector<string> > derived3DOutputMap;
763 
764  void calcDataRange(int sesvarnum, int ts);
765  void calcDataRange2D(int sesvarnum, int ts);
766  //Identify if a session variable is active. This requires it to be an active variable
767  //and for there to be actual data behind it, or for it to be a python variable
768  std::vector<bool> variableExists;
769  std::vector<bool> variableExists2D;
770  //for each int variable there is an int vector of num transforms for each time step.
771  //value is -1 if no data at that timestep
772  std::vector<int*> maxLevel3D;
773  std::vector<int*> maxLevel2D;
774  DataMgr* dataMgr;
775  bool renderOK;
776  QApplication* theApp;
777 
778  //track min and max data values for each variable and timestep (at max transform level)
779  //Indexed by session variable nums
780  std::vector<float*> dataMin;
781  std::vector<float*> dataMax;
782  std::vector<float*> dataMin2D;
783  std::vector<float*> dataMax2D;
784  //specify the minimum and max time step that actually have data:
785  size_t minTimeStep;
786  size_t maxTimeStep;
787  int numTransforms;
788  int numLODs;
789  //numTimeSteps may include lots of times that are not used.
790  int numTimesteps;
791 
792  static int numOriented2DVars[3];
793 
794 
795 
796  size_t fullDataSize[3];
797  std::vector<size_t*> dataAtLevel;
798 
799  float extents[6];
800  float stretchedExtents[6];
801  float stretchFactors[3];
802  float fullSizes[3];
803  float fullStretchedSizes[3];
804 
805  // the variableNames array specifies the name associated with each session variable num.
806  //Note that this
807  //contains (possibly properly) the corresponding variableNames in the
808  //dataMgr. The number of metadataVariables should coincide with the
809  //number of variables in the datastatus that have actual data associated with them.
810  static std::vector<std::string> variableNames;
811 
812  static int numMetadataVariables;
813  static int* mapMetadataVars;
814  static std::vector<std::string> variableNames2D;
815  static int numMetadataVariables2D;
816  static int* mapMetadataVars2D;
817  static vector<int> activeVariableNums2D;
818  static vector<int> activeVariableNums3D;
819 
820  string sessionVersion;
821 
822 
823  //User prefs are static:
824  static int textureSize;
825  static bool textureSizeSpecified;
826  //values from vizFeatures
827  static QColor backgroundColor;
828  static QColor regionFrameColor;
829  static QColor subregionFrameColor;
830  static bool regionFrameEnabled;
831  static bool subregionFrameEnabled;
832  //Specify how to handle missing data
833  static bool doWarnIfDataMissing;
834  static bool trackMouseInTfe;
835  static bool doUseLowerAccuracy;
836  static bool doUseQuadInterpolation;
837  //Cache size in megabytes
838  static size_t cacheMB;
839  //Interactive refinement level:
840  static int interactiveRefLevel;
841  static std::string projString;
842 
843  int VDCType;
844  static bool sessionBefore22; //flag indicating that current session is before 2.2
845  static float pre22Offset[3];
846 
847  //Static tables where all ParamsBase classes are registered.
848  //Each class has a unique:
849  // classId (positive for Params classes)
850  // std::string tag
851  // CreateDefaultInstance() method, returns default instance of the class
852 
853 
854 
855 #endif //DOXYGEN_SKIP_THIS
856 };
857 
858 }; //end VAPoR namespace
859 #endif //DATASTATUS_H
860 
#define PARAMS_API
Definition: common.h:63
void invalidateDataMgr()
Invalidate current data manager:
Definition: datastatus.h:485
A class for describing the currently loaded dataset.
Definition: datastatus.h:51
int getNumTransforms()
Definition: datastatus.h:358
const float * getFullStretchedSizes()
Definition: datastatus.h:74
bool dataIsPresent3D(int sesvarnum, int timestep)
Definition: datastatus.h:97
bool dataIsPresent3D(int timestep)
Definition: datastatus.h:118
bool dataIsPresent3D()
Definition: datastatus.h:160
static bool useQuadInterpolation()
Definition: datastatus.h:501
DataMgr * getDataMgr()
Definition: datastatus.h:482
bool variableIsPresent3D(int varnum)
Definition: datastatus.h:327
static int getNumActiveVariables2D()
Definition: datastatus.h:425
A cache based data reader.
Definition: DataMgr.h:39
static int getNumActiveVariables3D()
Definition: datastatus.h:421
void setDataMissing3D(int timestep, int refLevel, int lod, int sessionVarNum)
Definition: datastatus.h:370
static bool useLowerAccuracy()
Definition: datastatus.h:497
int maxXFormPresent(const string &varname, int timestep)
Definition: datastatus.h:293
void setDataMissing2D(int timestep, int refLevel, int lod, int sessionVarNum)
Definition: datastatus.h:387
static std::string & getActiveVarName3D(int activevarnum)
Definition: datastatus.h:456
bool dataIsPresent2D(int sesvarnum, int timestep)
Definition: datastatus.h:108
A class for managing data set metadata.
Definition: MetadataVDC.h:92
int GetVDCType() const
Definition: MetadataVDC.h:350
bool dataIsPresent(int timestep)
Definition: datastatus.h:144
size_t getMaxTimestep()
Definition: datastatus.h:87
const float * getStretchedExtents()
Definition: datastatus.h:79
int maxLODPresent(const string &varname, int timestep)
Definition: datastatus.h:311
static std::string & getActiveVarName2D(int activevarnum)
Definition: datastatus.h:465
static bool warnIfDataMissing()
Definition: datastatus.h:489
static std::string & getVariableName2D(int sesvarNum)
Definition: datastatus.h:407
static bool trackMouse()
Definition: datastatus.h:493
const float * getFullSizes()
Definition: datastatus.h:70
static DataStatus * getInstance()
Definition: datastatus.h:58
bool dataIsPresent2D()
Definition: datastatus.h:169
static std::string & getVariableName3D(int sesvarNum)
Definition: datastatus.h:402
size_t getMinTimestep()
Definition: datastatus.h:83
static int mapActiveToSessionVarNum2D(int varnum)
Definition: datastatus.h:437
bool variableIsPresent2D(int varnum)
Definition: datastatus.h:336
const float * getLocalExtents()
Definition: datastatus.h:66
static int mapActiveToSessionVarNum3D(int varnum)
Definition: datastatus.h:430
bool dataIsPresent2D(int timestep)
Definition: datastatus.h:131