Added support for tagging the required resolutions from the source data.

This commit is contained in:
Robert Osfield
2003-12-19 22:55:35 +00:00
parent b1945b865e
commit e19f87ddce
2 changed files with 117 additions and 16 deletions

View File

@@ -189,6 +189,11 @@ class DataSet : public osg::Referenced
void setSourceData(SourceData* data) { _sourceData = data; if (_sourceData.valid()) _sourceData->_source = this; }
SourceData* getSourceData() { return _sourceData.get(); }
bool intersects(const SpatialProperties& sp) const
{
return _sourceData.valid()?_sourceData->intersects(sp):false;
}
void loadSourceData();
@@ -201,16 +206,36 @@ class DataSet : public osg::Referenced
void buildOverviews();
typedef std::pair<double,double> ResolutionPair;
typedef std::set<ResolutionPair> ResolutionList;
struct ResolutionPair
{
ResolutionPair():
_resX(0.0),_resY(0.0) {}
ResolutionPair(double x,double y):
_resX(x),_resY(y) {}
bool operator < (const ResolutionPair& rhs) const
{
double minLHS = osg::minimum(_resX,_resY);
double minRHS = osg::minimum(rhs._resX,rhs._resY);
return minLHS<minRHS;
}
void addRequiredResolution(double resX, double resY) { _requiredResolutions.insert(ResolutionPair(resX,resY)); }
double _resX;
double _resY;
};
typedef std::vector<ResolutionPair> ResolutionList;
void addRequiredResolution(double resX, double resY) { _requiredResolutions.push_back(ResolutionPair(resX,resY)); }
void setRequiredResolutions(ResolutionList& resolutions) { _requiredResolutions = resolutions; }
ResolutionList& getRequiredResolutions() { return _requiredResolutions; }
const ResolutionList& getRequiredResolutions() const { return _requiredResolutions; }
void consolodateRequiredResolutions();
protected: