28 #include <vapor/common.h> 29 #include <vapor/DataMgr.h> 30 #include <vapor/MetadataVDC.h> 59 if (!theDataStatus) theDataStatus =
new DataStatus;
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);
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);
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)
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)
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)
151 for (
int i = 0; i<variableExists2D.size(); i++){
152 if (variableExists2D[i] && getMaxLevel2D(i,timestep) >= 0)
161 for (
int t = (
int)minTimeStep; t <= (int)maxTimeStep; t++) {
162 if (dataIsPresent3D(t))
return true;
170 for (
int t = (
int)minTimeStep; t <= (int)maxTimeStep; t++) {
171 if (dataIsPresent2D(t))
return true;
185 double getDataMax3D(
int sesvarNum,
int timestep,
bool mustGet =
true);
196 double getDataMax2D(
int sesvarNum,
int timestep,
bool mustGet =
true);
207 double getDataMin3D(
int sesvarNum,
int timestep,
bool mustGet =
true);
218 double getDataMin2D(
int sesvarNum,
int timestep,
bool mustGet =
true);
224 double getDefaultDataMax3D(
int varnum,
bool mustGet =
true);
230 double getDefaultDataMin3D(
int varnum,
bool mustGet =
true);
236 double getDefaultDataMax2D(
int varnum,
bool mustGet =
true);
242 double getDefaultDataMin2D(
int varnum,
bool mustGet =
true);
253 static bool checkVarMinMax(
MapperFunction* mf,
int sesVarNum,
bool is3D,
bool useDefault,
float minmax[2],
int ts = 0);
261 int maxXFormPresent3D(
int sesvarnum,
int timestep);
269 int maxXFormPresent2D(
int sesvarnum,
int timestep);
277 int maxLODPresent3D(
int sesvarnum,
int timestep);
285 int maxLODPresent2D(
int sesvarnum,
int timestep);
295 int sesvarnum = getSessionVariableNum3D(varname);
297 sesvarnum = getSessionVariableNum2D(varname);
299 if (sesvarnum < 0)
return -1;
301 if (dim == 3)
return maxXFormPresent3D(sesvarnum,timestep);
302 else return maxXFormPresent2D(sesvarnum,timestep);
313 int sesvarnum = getSessionVariableNum3D(varname);
315 sesvarnum = getSessionVariableNum2D(varname);
317 if (sesvarnum < 0)
return -1;
319 if (dim == 3)
return maxLODPresent3D(sesvarnum,timestep);
320 else return maxLODPresent2D(sesvarnum,timestep);
328 if (varnum < variableExists.size())
return variableExists[varnum];
337 if (varnum < variableExists2D.size())
return variableExists2D[varnum];
350 bool fieldDataOK(
int refLevel,
int lod,
int tstep,
int varx,
int vary,
int varz);
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;
377 if (getMaxLevel3D(sessionVarNum,timestep) >= refLevel)
378 maxLevel3D[sessionVarNum][timestep] = refLevel -1;
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;
394 if (getMaxLevel2D(sessionVarNum,timestep) >= refLevel)
395 maxLevel2D[sessionVarNum][timestep] = refLevel -1;
412 static int getSessionVariableNum3D(
const std::string& str);
417 static int getSessionVariableNum2D(
const std::string& str);
431 {
if( varnum >= activeVariableNums3D.size())
return -1;
432 return activeVariableNums3D[varnum];}
438 {
if( varnum >= activeVariableNums2D.size())
return -1;
439 return activeVariableNums2D[varnum];}
444 static int mapSessionToActiveVarNum3D(
int sesvar);
449 static int mapSessionToActiveVarNum2D(
int sesvar);
457 if (activeVariableNums3D.size()<= activevarnum)
return variableNames[0];
458 return (variableNames[activeVariableNums3D[activevarnum]]);}
466 if (activeVariableNums2D.size()<= activevarnum)
return variableNames2D[0];
467 return (variableNames2D[activeVariableNums2D[activevarnum]]);}
472 int getActiveVarNum3D(std::string varname)
const;
477 int getActiveVarNum2D(std::string varname)
const;
504 #ifndef DOXYGEN_SKIP_THIS 508 QApplication* getApp() {
return theApp;}
511 bool reset(DataMgr* dm,
size_t cachesize, QApplication* app);
512 static void setDefaultPrefs();
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];
522 static size_t getCacheMB() {
return cacheMB;}
523 static void setInteractiveRefinementLevel(
int lev) {
524 interactiveRefLevel = lev;
526 static int getInteractiveRefinementLevel() {
return interactiveRefLevel;}
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));
537 const size_t* getFullDataSize() {
return fullDataSize;}
540 int get2DOrientation(
int mdVarNum);
543 static const std::string getProjectionString() {
return projString;}
546 void getLocalExtentsCartesian(
float extents[6]);
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;}
562 static int mergeVariableName(
const std::string& str);
563 static int mergeVariableName2D(
const std::string& str);
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);
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);
579 static int getNumMetadataVariables() {
return numMetadataVariables;}
580 static int getNumMetadataVariables2D() {
return numMetadataVariables2D;}
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);
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);
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();
608 static void removeMetadataVars(){
609 if (mapMetadataVars)
delete [] mapMetadataVars;
610 if (mapMetadataVars2D)
delete [] mapMetadataVars2D;
614 static void clearMetadataVars() {
615 mapMetadataVars = 0; numMetadataVariables = 0;
616 mapMetadataVars2D = 0; numMetadataVariables2D = 0;
618 static void clearDerivedVars() {
620 derivedMethodMap.clear();
621 derived2DInputMap.clear();
622 derived3DInputMap.clear();
623 derived2DOutputMap.clear();
624 derived3DOutputMap.clear();
626 static void purgeAllCachedDerivedVariables();
629 void getMaxStretchedExtentsInCube(
float maxExtents[3]);
630 const float* getStretchFactors() {
return stretchFactors;}
632 bool renderReady() {
return renderOK;}
633 void setRenderReady(
bool nowOK) {renderOK = nowOK;}
635 bool sphericalTransform();
637 vector<string> getVariableNames() {
return variableNames;}
638 vector<string> getVariableNames2D() {
return variableNames2D;}
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;}
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;}
652 const string& getSessionVersion(){
return sessionVersion;}
653 void setSessionVersion(std::string& ver){sessionVersion = ver;}
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);
666 static void clearActiveVars() {
667 activeVariableNums2D.clear();
668 activeVariableNums3D.clear();
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;
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);
687 static int getNumDerivedScripts(){
688 return (derivedMethodMap.size());
691 int replaceDerivedScript(
int id,
const vector<string> &in2DVars,
const vector<string> &out2DVars,
const vector<string>& in3Dvars,
const vector<string>& out3Dvars,
const string& script);
695 static const map<int,vector<string> >& getDerived2DOutputMap() {
return derived2DOutputMap;}
696 static const map<int,vector<string> >& getDerived3DOutputMap() {
return derived3DOutputMap;}
698 bool removeDerivedScript(
int index);
700 static bool isDerivedVariable(std::string varname) {
701 return (getDerivedScriptId(varname) >= 0);
703 static const std::string getDerivedMethod(std::string varname) {
704 int id = getDerivedScriptId(varname);
705 if (
id <0)
return string(
"");
706 return (getDerivedScript(
id));
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;
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));
732 int setDerivedVariable3D(
const string& derivedVarName);
733 int setDerivedVariable2D(
const string& derivedVarName);
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];
743 static float* getPre22Offset(){
return pre22Offset;}
745 int getMaxLevel3D(
int sesvarnum,
int timestep);
746 int getMaxLevel2D(
int sesvarnum,
int timestep);
750 static const vector<string> emptyVec;
751 static const string _emptyString;
754 static map<int,string> derivedMethodMap;
756 static map<int,vector<string> > derived2DInputMap;
758 static map<int,vector<string> > derived3DInputMap;
760 static map<int,vector<string> > derived2DOutputMap;
762 static map<int,vector<string> > derived3DOutputMap;
764 void calcDataRange(
int sesvarnum,
int ts);
765 void calcDataRange2D(
int sesvarnum,
int ts);
768 std::vector<bool> variableExists;
769 std::vector<bool> variableExists2D;
772 std::vector<int*> maxLevel3D;
773 std::vector<int*> maxLevel2D;
776 QApplication* theApp;
780 std::vector<float*> dataMin;
781 std::vector<float*> dataMax;
782 std::vector<float*> dataMin2D;
783 std::vector<float*> dataMax2D;
792 static int numOriented2DVars[3];
796 size_t fullDataSize[3];
797 std::vector<size_t*> dataAtLevel;
800 float stretchedExtents[6];
801 float stretchFactors[3];
803 float fullStretchedSizes[3];
810 static std::vector<std::string> variableNames;
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;
820 string sessionVersion;
824 static int textureSize;
825 static bool textureSizeSpecified;
827 static QColor backgroundColor;
828 static QColor regionFrameColor;
829 static QColor subregionFrameColor;
830 static bool regionFrameEnabled;
831 static bool subregionFrameEnabled;
833 static bool doWarnIfDataMissing;
834 static bool trackMouseInTfe;
835 static bool doUseLowerAccuracy;
836 static bool doUseQuadInterpolation;
838 static size_t cacheMB;
840 static int interactiveRefLevel;
841 static std::string projString;
844 static bool sessionBefore22;
845 static float pre22Offset[3];
855 #endif //DOXYGEN_SKIP_THIS 859 #endif //DATASTATUS_H void invalidateDataMgr()
Invalidate current data manager:
A class for describing the currently loaded dataset.
const float * getFullStretchedSizes()
bool dataIsPresent3D(int sesvarnum, int timestep)
bool dataIsPresent3D(int timestep)
static bool useQuadInterpolation()
bool variableIsPresent3D(int varnum)
static int getNumActiveVariables2D()
static int getNumActiveVariables3D()
void setDataMissing3D(int timestep, int refLevel, int lod, int sessionVarNum)
static bool useLowerAccuracy()
int maxXFormPresent(const string &varname, int timestep)
void setDataMissing2D(int timestep, int refLevel, int lod, int sessionVarNum)
static std::string & getActiveVarName3D(int activevarnum)
bool dataIsPresent2D(int sesvarnum, int timestep)
bool dataIsPresent(int timestep)
const float * getStretchedExtents()
int maxLODPresent(const string &varname, int timestep)
static std::string & getActiveVarName2D(int activevarnum)
static bool warnIfDataMissing()
static std::string & getVariableName2D(int sesvarNum)
const float * getFullSizes()
static DataStatus * getInstance()
static std::string & getVariableName3D(int sesvarNum)
static int mapActiveToSessionVarNum2D(int varnum)
bool variableIsPresent2D(int varnum)
const float * getLocalExtents()
static int mapActiveToSessionVarNum3D(int varnum)
bool dataIsPresent2D(int timestep)