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 
250  int maxXFormPresent3D(int sesvarnum, int timestep);
251 
258  int maxXFormPresent2D(int sesvarnum, int timestep);
259 
266  int maxLODPresent3D(int sesvarnum, int timestep);
267 
274  int maxLODPresent2D(int sesvarnum, int timestep);
275 
282  int maxXFormPresent(const string& varname, int timestep){
283  int dim = 3;
284  int sesvarnum = getSessionVariableNum3D(varname);
285  if (sesvarnum < 0) {
286  sesvarnum = getSessionVariableNum2D(varname);
287  dim = 2;
288  if (sesvarnum < 0) return -1;
289  }
290  if (dim == 3)return maxXFormPresent3D(sesvarnum,timestep);
291  else return maxXFormPresent2D(sesvarnum,timestep);
292  }
293 
300  int maxLODPresent(const string& varname, int timestep){
301  int dim = 3;
302  int sesvarnum = getSessionVariableNum3D(varname);
303  if (sesvarnum < 0) {
304  sesvarnum = getSessionVariableNum2D(varname);
305  dim = 2;
306  if (sesvarnum < 0) return -1;
307  }
308  if (dim == 3)return maxLODPresent3D(sesvarnum,timestep);
309  else return maxLODPresent2D(sesvarnum,timestep);
310  }
311 
316  bool variableIsPresent3D(int varnum) {
317  if (varnum < variableExists.size()) return variableExists[varnum];
318  else return false;
319  }
320 
325  bool variableIsPresent2D(int varnum) {
326  if (varnum < variableExists2D.size()) return variableExists2D[varnum];
327  else return false;
328  }
329 
339  bool fieldDataOK(int refLevel, int lod, int tstep, int varx, int vary, int varz);
340 
343  int getNumTimesteps() {return numTimesteps;}
344 
347  int getNumTransforms() {return numTransforms;}
348 
351  int getNumLODs() { return numLODs;}
352 
359  void setDataMissing3D(int timestep, int refLevel, int lod, int sessionVarNum){
360  MetadataVDC* md = dynamic_cast<MetadataVDC*> (dataMgr);
361  if(md && md->GetVDCType() == 2) {
362  if (getMaxLevel3D(sessionVarNum,timestep) >= lod)
363  maxLevel3D[sessionVarNum][timestep] = lod -1;
364  return;
365  }
366  if (getMaxLevel3D(sessionVarNum,timestep) >= refLevel)
367  maxLevel3D[sessionVarNum][timestep] = refLevel -1;
368  }
369 
376  void setDataMissing2D(int timestep, int refLevel, int lod, int sessionVarNum){
377  MetadataVDC* md = dynamic_cast<MetadataVDC*>(dataMgr);
378  if(md && md->GetVDCType() == 2) {
379  if (getMaxLevel2D(sessionVarNum,timestep) >= lod)
380  maxLevel2D[sessionVarNum][timestep] = lod -1;
381  return;
382  }
383  if (getMaxLevel2D(sessionVarNum,timestep) >= refLevel)
384  maxLevel2D[sessionVarNum][timestep] = refLevel -1;
385  }
386 
387 
391  static std::string& getVariableName3D(int sesvarNum) {return variableNames[sesvarNum];}
392 
396  static std::string& getVariableName2D(int sesvarNum) {return variableNames2D[sesvarNum];}
397 
401  static int getSessionVariableNum3D(const std::string& str);
402 
406  static int getSessionVariableNum2D(const std::string& str);
407 
410  static int getNumActiveVariables3D() {return activeVariableNums3D.size();}
411 
414  static int getNumActiveVariables2D() {return activeVariableNums2D.size();}
415 
419  static int mapActiveToSessionVarNum3D(int varnum)
420  { if( varnum >= activeVariableNums3D.size()) return -1;
421  return activeVariableNums3D[varnum];}
422 
426  static int mapActiveToSessionVarNum2D(int varnum)
427  { if( varnum >= activeVariableNums2D.size()) return -1;
428  return activeVariableNums2D[varnum];}
429 
433  static int mapSessionToActiveVarNum3D(int sesvar);
434 
438  static int mapSessionToActiveVarNum2D(int sesvar);
439 
445  static std::string& getActiveVarName3D(int activevarnum){
446  if (activeVariableNums3D.size()<= activevarnum) return variableNames[0];
447  return (variableNames[activeVariableNums3D[activevarnum]]);}
448 
454  static std::string& getActiveVarName2D(int activevarnum){
455  if (activeVariableNums2D.size()<= activevarnum) return variableNames2D[0];
456  return (variableNames2D[activeVariableNums2D[activevarnum]]);}
457 
461  int getActiveVarNum3D(std::string varname) const;
462 
466  int getActiveVarNum2D(std::string varname) const;
467 
471  DataMgr* getDataMgr() {return dataMgr;}
472 
474  void invalidateDataMgr(){dataMgr = 0;}
475 
478  static bool warnIfDataMissing() {return doWarnIfDataMissing;}
479 
482  static bool trackMouse() {return trackMouseInTfe;}
483 
486  static bool useLowerAccuracy() {return doUseLowerAccuracy;}
487 
488 
489 #ifndef DOXYGEN_SKIP_THIS
490  DataStatus();
491  ~DataStatus();
492 
493  QApplication* getApp() {return theApp;}
494  //Reset the datastatus when a new datamgr is opened.
495  //This avoids all "Set" methods:
496  bool reset(DataMgr* dm, size_t cachesize, QApplication* app);
497  static void setDefaultPrefs();
498  //Update based on current stretch factor:
499  void stretchExtents(float factor[3]){
500  for (int i = 0; i< 3; i++) {
501  stretchedExtents[i] = extents[i]*factor[i];
502  stretchedExtents[i+3] = extents[i+3]*factor[i];
503  stretchFactors[i] = factor[i];
504  fullStretchedSizes[i] = fullSizes[i]*factor[i];
505  }
506  }
507  static size_t getCacheMB() {return cacheMB;}
508  static void setInteractiveRefinementLevel(int lev) {
509  interactiveRefLevel = lev;
510  }
511  static int getInteractiveRefinementLevel() {return interactiveRefLevel;}
512 
513  //Find the first timestep that has any data with specified session variable num
514  int getFirstTimestep(int sesvarnum);
515  int getFirstTimestep2D(int sesvarnum);
516  size_t getFullDataSize(int dim){return fullDataSize[dim];}
517  size_t getFullSizeAtLevel(int lev, int dim)
518  { return dataAtLevel[lev][dim];}
519  float getVoxelSize(int lev, int dim){
520  return ((extents[dim+3]-extents[dim])/(float)getFullSizeAtLevel(lev,dim));
521  }
522  const size_t* getFullDataSize() {return fullDataSize;}
523 
524 
525  int get2DOrientation(int mdVarNum); //returns 0,1,2 for XY,YZ, or XZ
526 
527  //Used for georeferencing and moving region:
528  static const std::string getProjectionString() {return projString;}
529 
530  //Following method used to give different extents with spherical data:
531  void getLocalExtentsCartesian(float extents[6]);
532 
533 
534  //Get/set methods for global vizfeatures
535  static const QColor getBackgroundColor() {return backgroundColor;}
536  static const QColor getRegionFrameColor() {return regionFrameColor;}
537  static const QColor getSubregionFrameColor() {return subregionFrameColor;}
538  static void setBackgroundColor(const QColor c) {backgroundColor = c;}
539  static void setRegionFrameColor(const QColor c) {regionFrameColor = c;}
540  static void setSubregionFrameColor(const QColor c) {subregionFrameColor = c;}
541  static void enableRegionFrame(bool enable) {regionFrameEnabled = enable;}
542  static void enableSubregionFrame(bool enable) {subregionFrameEnabled = enable;}
543  static bool regionFrameIsEnabled() {return regionFrameEnabled;}
544  static bool subregionFrameIsEnabled() {return subregionFrameEnabled;}
545 
546  //Insert variableName if necessary; return sessionVariableNum
547  static int mergeVariableName(const std::string& str);
548  static int mergeVariableName2D(const std::string& str);
549 
550 
551  static void addVarName(const std::string newName) {
552  for (int i = 0; i<variableNames.size(); i++)
553  if (variableNames[i] == newName) return;
554  variableNames.push_back(newName);
555  }
556  static void addVarName2D(const std::string newName) {
557  for (int i = 0; i<variableNames2D.size(); i++)
558  if (variableNames2D[i] == newName) return;
559  variableNames2D.push_back(newName);
560  }
561 
562  //"Metadata" variables are those that are in current metadata, as opposed to
563  //"session" variables are those in session
564  static int getNumMetadataVariables() {return numMetadataVariables;}
565  static int getNumMetadataVariables2D() {return numMetadataVariables2D;}
566 
567  static int mapMetadataToSessionVarNum(int varnum)
568  { if(!mapMetadataVars) return 0;
569  return mapMetadataVars[varnum];}
570  static int mapMetadataToSessionVarNum2D(int varnum)
571  { if(!mapMetadataVars2D) return 0;
572  return mapMetadataVars2D[varnum];}
573  static int mapSessionToMetadataVarNum(int var);
574 
575  // Find the name that corresponds to a metadata variable num
576  // should be the same as getting it from the metadata directly
577  static std::string& getMetadataVarName(int mdvarnum) {
578  if (!mapMetadataVars) return variableNames[0];
579  return (variableNames[mapMetadataVars[mdvarnum]]);}
580  static std::string& getMetadataVarName2D(int mdvarnum) {
581  if (!mapMetadataVars2D) return variableNames2D[0];
582  return (variableNames2D[mapMetadataVars2D[mdvarnum]]);}
583  int getMetadataVarNum(std::string varname);
584  int getMetadataVarNum2D(std::string varname);
585  //getNumSessionVariables returns the number of session variables
586  static int getNumSessionVariables(){return (int)variableNames.size();}
587  static int getNumSessionVariables2D(){return (int)variableNames2D.size();}
588  static void clearVariableNames() {
589  variableNames.clear();
590  variableNames2D.clear();
591  clearDerivedVars();
592  }
593  static void removeMetadataVars(){
594  if (mapMetadataVars) delete [] mapMetadataVars;
595  if (mapMetadataVars2D) delete [] mapMetadataVars2D;
596  clearMetadataVars();
597  }
598 
599  static void clearMetadataVars() {
600  mapMetadataVars = 0; numMetadataVariables = 0;
601  mapMetadataVars2D = 0; numMetadataVariables2D = 0;
602  }
603  static void clearDerivedVars() {
604  clearActiveVars();
605  derivedMethodMap.clear();
606  derived2DInputMap.clear();
607  derived3DInputMap.clear();
608  derived2DOutputMap.clear();
609  derived3DOutputMap.clear();
610  }
611  static void purgeAllCachedDerivedVariables();
612 
613  //Get full stretched data extents in cube coords
614  void getMaxStretchedExtentsInCube(float maxExtents[3]);
615  const float* getStretchFactors() {return stretchFactors;}
616 
617  bool renderReady() {return renderOK;}
618  void setRenderReady(bool nowOK) {renderOK = nowOK;}
619 
620  bool sphericalTransform();
621 
622  vector<string> getVariableNames() {return variableNames;}
623  vector<string> getVariableNames2D() {return variableNames2D;}
624 
625  //used for specifying nondefault graphics hardware texture size:
626  static void specifyTextureSize(bool val) {textureSizeSpecified = val;}
627  static bool textureSizeIsSpecified(){return textureSizeSpecified;}
628  static int getTextureSize() {return textureSize;}
629  static void setTextureSize(int val) { textureSize = val;}
630 
631 
632  static void setWarnMissingData(bool val) {doWarnIfDataMissing = val;}
633  static void setTrackMouse(bool val) {trackMouseInTfe = val;}
634  static void setUseLowerAccuracy(bool val){doUseLowerAccuracy = val;}
635 
636  const string& getSessionVersion(){ return sessionVersion;}
637  void setSessionVersion(std::string& ver){sessionVersion = ver;}
638 
639  //Convert user point coordinates in-place. Return bool if can't do it.
640  //If the timestep is negative, then the coords are in a time-varying
641  //extent.
642  static bool convertToLonLat(double coords[], int npoints = 1);
643  static bool convertFromLonLat(double coords[], int npoints = 1);
644  static bool convertLocalToLonLat(int timestep, double coords[], int npoints = 1);
645  static bool convertLocalFromLonLat(int timestep,double coords[], int npoints = 1);
646 
647 
648 
649 
650  static void clearActiveVars() {
651  activeVariableNums2D.clear();
652  activeVariableNums3D.clear();
653  }
654 
655  //Attribute names:
656  static const string _backgroundColorAttr;
657  static const string _regionFrameColorAttr;
658  static const string _subregionFrameColorAttr;
659  static const string _regionFrameEnabledAttr;
660  static const string _subregionFrameEnabledAttr;
661  static const string _useLowerRefinementAttr;
662  static const string _missingDataWarningAttr;
663  static const string _trackMouseAttr;
664 
665  //Support for Python methods
666  //Specify a new python script, return the integer ID (-1 if error)
667  int addDerivedScript(const std::vector<string> &,const std::vector<string> &,const std::vector<string> &,
668  const std::vector<string> &,const std::string &, bool useMetadata = true);
669  //Determine how many scripts there are
670  static int getNumDerivedScripts(){
671  return (derivedMethodMap.size());
672  }
673  //Replace an existing python script with a new one. -1 if error
674  int replaceDerivedScript(int id, const vector<string> &in2DVars, const vector<string> &out2DVars, const vector<string>& in3Dvars, const vector<string>& out3Dvars, const string& script);
675  //Obtain the id for a given output variable, return -1 if it does not exist
676  //mapping from index to output 2D variables
677  //Client classes need to iterate (read-only) over these
678  static const map<int,vector<string> >& getDerived2DOutputMap() {return derived2DOutputMap;}
679  static const map<int,vector<string> >& getDerived3DOutputMap() {return derived3DOutputMap;}
680  //Remove a python script and associated variable lists. Return false if it's already gone
681  bool removeDerivedScript(int index);
682 
683  static bool isDerivedVariable(std::string varname) {
684  return (getDerivedScriptId(varname) >= 0);
685  }
686  static const std::string getDerivedMethod(std::string varname) {
687  int id = getDerivedScriptId(varname);
688  if (id <0) return string("");
689  return (getDerivedScript(id));
690  }
691  //Change the just the method on an existing script
692  static bool setDerivedMethod(const std::string varname, const std::string& method){
693  int id = getDerivedScriptId(varname);
694  if (id <0) return false;
695  derivedMethodMap[id] = method;
696  return true;
697  }
698 
699  static int getDerivedScriptId(const string& outvar) ;
700  static const string& getDerivedScript(int id) ;
701  static int getMaxDerivedScriptId();
702  static const string& getDerivedScriptName(int id);
703  static const vector<string>& getDerived2DInputVars(int id) ;
704  static const vector<string>& getDerived3DInputVars(int id) ;
705  static const vector<string>& getDerived2DOutputVars(int id) ;
706  static const vector<string>& getDerived3DOutputVars(int id) ;
707  static const string& getDerivedScript(const string& outvar) {
708  return getDerivedScript(getDerivedScriptId(outvar));
709  }
710  //Add a python variable to the session, update mappings, bounds, etc. appropriately.
711  //Return the new session var num
712  //The variable should already be the output of an existing script.
713  //It's OK if the variable is already set as a python variable, but
714  //make sure the input variables are all in the vdc; if not remove them.
715  int setDerivedVariable3D(const string& derivedVarName);
716  int setDerivedVariable2D(const string& derivedVarName);
717  //Remove a python variable, return false if it's not there.
718  //It should already be removed from the python variable mapping
719  static bool removeDerivedVariable2D(const string& derivedVarName);
720  static bool removeDerivedVariable3D(const string& derivedVarName);
721  static bool pre22Session(){return sessionBefore22;}
722  static void setPre22Session(bool value){ sessionBefore22 = value;}
723  static void setPre22Offset(float offset[3]){
724  pre22Offset[0] = offset[0];pre22Offset[1] = offset[1];pre22Offset[2] = offset[2];
725  }
726  static float* getPre22Offset(){return pre22Offset;}
727 
728  int getMaxLevel3D(int sesvarnum,int timestep);
729  int getMaxLevel2D(int sesvarnum,int timestep);
730 private:
731 
732  static DataStatus* theDataStatus;
733  static const vector<string> emptyVec;
734  static const string _emptyString;
735  //Python script mappings:
736  //mapping from index to Python function
737  static map<int,string> derivedMethodMap;
738  //mapping from index to input 2D variables
739  static map<int,vector<string> > derived2DInputMap;
740  //mapping from index to input 3D variables
741  static map<int,vector<string> > derived3DInputMap;
742  //mapping to 2d outputs
743  static map<int,vector<string> > derived2DOutputMap;
744  //mapping from index to output 3D variables
745  static map<int,vector<string> > derived3DOutputMap;
746 
747  void calcDataRange(int sesvarnum, int ts);
748  void calcDataRange2D(int sesvarnum, int ts);
749  //Identify if a session variable is active. This requires it to be an active variable
750  //and for there to be actual data behind it, or for it to be a python variable
751  std::vector<bool> variableExists;
752  std::vector<bool> variableExists2D;
753  //for each int variable there is an int vector of num transforms for each time step.
754  //value is -1 if no data at that timestep
755  std::vector<int*> maxLevel3D;
756  std::vector<int*> maxLevel2D;
757  DataMgr* dataMgr;
758  bool renderOK;
759  QApplication* theApp;
760 
761  //track min and max data values for each variable and timestep (at max transform level)
762  //Indexed by session variable nums
763  std::vector<float*> dataMin;
764  std::vector<float*> dataMax;
765  std::vector<float*> dataMin2D;
766  std::vector<float*> dataMax2D;
767  //specify the minimum and max time step that actually have data:
768  size_t minTimeStep;
769  size_t maxTimeStep;
770  int numTransforms;
771  int numLODs;
772  //numTimeSteps may include lots of times that are not used.
773  int numTimesteps;
774 
775  static int numOriented2DVars[3];
776 
777 
778 
779  size_t fullDataSize[3];
780  std::vector<size_t*> dataAtLevel;
781 
782  float extents[6];
783  float stretchedExtents[6];
784  float stretchFactors[3];
785  float fullSizes[3];
786  float fullStretchedSizes[3];
787 
788  // the variableNames array specifies the name associated with each session variable num.
789  //Note that this
790  //contains (possibly properly) the corresponding variableNames in the
791  //dataMgr. The number of metadataVariables should coincide with the
792  //number of variables in the datastatus that have actual data associated with them.
793  static std::vector<std::string> variableNames;
794 
795  static int numMetadataVariables;
796  static int* mapMetadataVars;
797  static std::vector<std::string> variableNames2D;
798  static int numMetadataVariables2D;
799  static int* mapMetadataVars2D;
800  static vector<int> activeVariableNums2D;
801  static vector<int> activeVariableNums3D;
802 
803  string sessionVersion;
804 
805 
806  //User prefs are static:
807  static int textureSize;
808  static bool textureSizeSpecified;
809  //values from vizFeatures
810  static QColor backgroundColor;
811  static QColor regionFrameColor;
812  static QColor subregionFrameColor;
813  static bool regionFrameEnabled;
814  static bool subregionFrameEnabled;
815  //Specify how to handle missing data
816  static bool doWarnIfDataMissing;
817  static bool trackMouseInTfe;
818  static bool doUseLowerAccuracy;
819  //Cache size in megabytes
820  static size_t cacheMB;
821  //Interactive refinement level:
822  static int interactiveRefLevel;
823  static std::string projString;
824 
825  int VDCType;
826  static bool sessionBefore22; //flag indicating that current session is before 2.2
827  static float pre22Offset[3];
828 
829  //Static tables where all ParamsBase classes are registered.
830  //Each class has a unique:
831  // classId (positive for Params classes)
832  // std::string tag
833  // CreateDefaultInstance() method, returns default instance of the class
834 
835 
836 
837 #endif //DOXYGEN_SKIP_THIS
838 };
839 
840 }; //end VAPoR namespace
841 #endif //DATASTATUS_H
842 
#define PARAMS_API
Definition: common.h:63
void invalidateDataMgr()
Invalidate current data manager:
Definition: datastatus.h:474
A class for describing the currently loaded dataset.
Definition: datastatus.h:51
int getNumTransforms()
Definition: datastatus.h:347
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
DataMgr * getDataMgr()
Definition: datastatus.h:471
bool variableIsPresent3D(int varnum)
Definition: datastatus.h:316
static int getNumActiveVariables2D()
Definition: datastatus.h:414
A cache based data reader.
Definition: DataMgr.h:40
static int getNumActiveVariables3D()
Definition: datastatus.h:410
void setDataMissing3D(int timestep, int refLevel, int lod, int sessionVarNum)
Definition: datastatus.h:359
static bool useLowerAccuracy()
Definition: datastatus.h:486
int maxXFormPresent(const string &varname, int timestep)
Definition: datastatus.h:282
void setDataMissing2D(int timestep, int refLevel, int lod, int sessionVarNum)
Definition: datastatus.h:376
static std::string & getActiveVarName3D(int activevarnum)
Definition: datastatus.h:445
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:300
static std::string & getActiveVarName2D(int activevarnum)
Definition: datastatus.h:454
static bool warnIfDataMissing()
Definition: datastatus.h:478
static std::string & getVariableName2D(int sesvarNum)
Definition: datastatus.h:396
static bool trackMouse()
Definition: datastatus.h:482
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:391
size_t getMinTimestep()
Definition: datastatus.h:83
static int mapActiveToSessionVarNum2D(int varnum)
Definition: datastatus.h:426
bool variableIsPresent2D(int varnum)
Definition: datastatus.h:325
const float * getLocalExtents()
Definition: datastatus.h:66
static int mapActiveToSessionVarNum3D(int varnum)
Definition: datastatus.h:419
bool dataIsPresent2D(int timestep)
Definition: datastatus.h:131