14#ifndef OSGTERRAIN_LAYER
15#define OSGTERRAIN_LAYER 1
27#define MAXIMUM_NUMBER_OF_LEVELS 30
48 void setSetName(
const std::string& setname) { setName(setname); }
51 const std::string&
getSetName()
const {
return getName(); }
54 virtual void setFileName(
const std::string& filename) { _filename = filename; }
57 virtual const std::string&
getFileName()
const {
return _filename; }
69 void setMinLevel(
unsigned int minLevel) { _minLevel = minLevel; }
72 void setMaxLevel(
unsigned int maxLevel) { _maxLevel = maxLevel; }
117 virtual bool transform(
float ,
float ) {
return false; }
126 virtual bool getValue(
unsigned int ,
unsigned int ,
float& )
const {
return false; }
131 inline bool getValidValue(
unsigned int i,
unsigned int j,
float& value)
const
133 if (getValue(i,j,value))
return _validDataOperator.valid() ? (*_validDataOperator)(value) :
true;
139 if (getValue(i,j,value))
return _validDataOperator.valid() ? (*_validDataOperator)(value) :
true;
145 if (getValue(i,j,value))
return _validDataOperator.valid() ? (*_validDataOperator)(value) :
true;
151 if (getValue(i,j,value))
return _validDataOperator.valid() ? (*_validDataOperator)(value) :
true;
165 inline void computeIndices(
double ndc_x,
double ndc_y,
unsigned int& i,
unsigned int& j,
double& ir,
double& jr)
const
167 ndc_x *= double(getNumColumns()-1);
168 ndc_y *= double(getNumRows()-1);
169 i = (
unsigned int)(ndc_x);
170 j = (
unsigned int)(ndc_y);
171 ir = ndc_x - double(i);
172 jr = ndc_y - double(j);
186 computeIndices(ndc_x, ndc_y, i, j, ir, jr);
191 r = (1.0f-ir)*(1.0f-jr);
192 if (r>0.0 && getValue(i,j,v))
199 if (r>0.0 && getValue(i+1,j,v))
206 if (r>0.0 && getValue(i+1,j+1,v))
213 if (r>0.0 && getValue(i,j+1,v))
233 computeIndices(ndc_x, ndc_y, i, j, ir, jr);
238 r = (1.0f-ir)*(1.0f-jr);
239 if (r>0.0 && getValidValue(i,j,v))
246 if (r>0.0 && getValidValue(i+1,j,v))
253 if (r>0.0 && getValidValue(i+1,j+1,v))
260 if (r>0.0 && getValidValue(i,j+1,v))
313 void setFileName(
const std::string& filename) { _filename = filename;
if (_image.valid()) _image->setFileName(filename); }
314 virtual const std::string&
getFileName()
const {
return _image.get() ? _image->getFileName() : _filename; }
328 virtual unsigned int getNumColumns()
const {
return _image.valid() ? _image->s() : 0; }
329 virtual unsigned int getNumRows()
const {
return _image.valid() ? _image->t() : 0; }
331 virtual bool getValue(
unsigned int i,
unsigned int j,
float& value)
const;
375 virtual unsigned int getNumColumns()
const {
return _tf.valid() ? _tf->getNumberImageCells() : 0; }
376 virtual unsigned int getNumRows()
const {
return _tf.valid() ? 1 : 0; }
378 virtual bool getValue(
unsigned int i,
unsigned int j,
float& value)
const;
406 void setFileName(
const std::string& filename) { _filename = filename; }
407 virtual const std::string&
getFileName()
const {
return _filename; }
418 virtual unsigned int getNumColumns()
const {
return _heightField.valid() ? _heightField->getNumColumns() : 0; }
419 virtual unsigned int getNumRows()
const {
return _heightField.valid() ? _heightField->getNumRows() : 0; }
421 virtual bool getValue(
unsigned int i,
unsigned int j,
float& value)
const;
454 return _implementation.
valid() ? _implementation->getImage() : 0;
460 return _implementation.
valid() ? _implementation->getImage() : 0;
473 virtual const std::string&
getFileName()
const {
return _filename; }
480 virtual bool getValue(
unsigned int i,
unsigned int j,
float& value)
const;
514 void setSetName(
unsigned int i,
const std::string& setname) { _layers[i].setname = setname;
if (_layers[i].layer.valid()) _layers[i].layer->setName(setname); }
517 const std::string&
getSetName(
unsigned int i)
const {
return _layers[i].layer.valid() ? _layers[i].layer->getName() : _layers[i].setname; }
520 void setFileName(
unsigned int i,
const std::string& filename) { _layers[i].filename = filename;
if (_layers[i].layer.valid()) _layers[i].layer->setFileName(filename); }
523 const std::string&
getFileName(
unsigned int i)
const {
return _layers[i].layer.valid() ? _layers[i].layer->getFileName() : _layers[i].filename; }
529 void setLayer(
unsigned int i,
Layer* layer) {
if (i>=_layers.size()) _layers.resize(i+1); _layers[i].layer = layer; }
533 Layer*
getLayer(
unsigned int i) {
return i<_layers.size() ? _layers[i].layer.get() : 0; }
535 const Layer*
getLayer(
unsigned int i)
const {
return i<_layers.size() ? _layers[i].layer.get() : 0; }
539 void addLayer(
const std::string& setname,
const std::string& filename);
545 void removeLayer(
unsigned int i) { _layers.erase(_layers.begin()+i); }
547 unsigned int getNumLayers()
const {
return static_cast<unsigned int>(_layers.size()); }
558 setname(cnl.setname),
559 filename(cnl.filename),
569 if (&cnl==
this)
return *
this;
582 typedef std::vector< CompoundNameLayer >
Layers;
605 if (_activeLayer < 0)
return 0;
606 if (_activeLayer >=
static_cast<int>(getNumLayers()))
return 0;
607 return _layers[_activeLayer].layer->getImage();
613 if (_activeLayer < 0)
return 0;
614 if (_activeLayer >=
static_cast<int>(getNumLayers()))
return 0;
615 return _layers[_activeLayer].layer->getImage();
Definition osgTerrain/Layer:501
Layer * getLayer(unsigned int i)
Definition osgTerrain/Layer:533
META_Object(osgTerrain, CompositeLayer)
const std::string & getFileName(unsigned int i) const
Definition osgTerrain/Layer:523
std::vector< CompoundNameLayer > Layers
Definition osgTerrain/Layer:582
void addLayer(const std::string &compoundname)
CompositeLayer(const CompositeLayer &compositeLayer, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
void setSetName(unsigned int i, const std::string &setname)
Definition osgTerrain/Layer:514
void setCompoundName(unsigned int i, const std::string &compoundname)
virtual ~CompositeLayer()
Definition osgTerrain/Layer:551
const std::string & getSetName(unsigned int i) const
Definition osgTerrain/Layer:517
Layers _layers
Definition osgTerrain/Layer:584
unsigned int getNumLayers() const
Definition osgTerrain/Layer:547
void setLayer(unsigned int i, Layer *layer)
Definition osgTerrain/Layer:529
void removeLayer(unsigned int i)
Definition osgTerrain/Layer:545
std::string getCompoundName(unsigned int i) const
void addLayer(Layer *layer)
Definition osgTerrain/Layer:541
void setLayer(unsigned int i, const osg::ref_ptr< T > &layer)
Definition osgTerrain/Layer:531
const Layer * getLayer(unsigned int i) const
Definition osgTerrain/Layer:535
void setFileName(unsigned int i, const std::string &filename)
Definition osgTerrain/Layer:520
void addLayer(const std::string &setname, const std::string &filename)
void addLayer(const osg::ref_ptr< T > &layer)
Definition osgTerrain/Layer:543
Definition osgTerrain/Layer:349
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec3 &value) const
virtual unsigned int getNumColumns() const
Definition osgTerrain/Layer:375
const osg::TransferFunction1D * getTransferFunction() const
Definition osgTerrain/Layer:366
virtual unsigned int getModifiedCount() const
osg::TransferFunction1D * getTransferFunction()
Definition osgTerrain/Layer:365
void setTransferFunction(osg::TransferFunction1D *tf)
ContourLayer(const ContourLayer &tfLayer, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
virtual osg::Image * getImage()
Definition osgTerrain/Layer:369
virtual unsigned int getNumRows() const
Definition osgTerrain/Layer:376
virtual bool getValue(unsigned int i, unsigned int j, float &value) const
virtual bool transform(float offset, float scale)
virtual void setModifiedCount(unsigned int value)
ContourLayer(osg::TransferFunction1D *tf=0)
virtual ~ContourLayer()
Definition osgTerrain/Layer:389
void setTransferFunction(const osg::ref_ptr< T > &tf)
Definition osgTerrain/Layer:363
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec4 &value) const
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec2 &value) const
virtual const osg::Image * getImage() const
Definition osgTerrain/Layer:372
META_Object(osgTerrain, ContourLayer)
osg::ref_ptr< osg::TransferFunction1D > _tf
Definition osgTerrain/Layer:391
Definition osgTerrain/Layer:396
void setHeightField(osg::HeightField *hf)
virtual unsigned int getNumRows() const
Definition osgTerrain/Layer:419
virtual unsigned int getNumColumns() const
Definition osgTerrain/Layer:418
void setFileName(const std::string &filename)
Definition osgTerrain/Layer:406
virtual ~HeightFieldLayer()
Definition osgTerrain/Layer:432
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec3 &value) const
virtual void setModifiedCount(unsigned int value)
virtual unsigned int getModifiedCount() const
osg::HeightField * getHeightField()
Definition osgTerrain/Layer:415
osg::ref_ptr< osg::HeightField > _heightField
Definition osgTerrain/Layer:435
virtual const std::string & getFileName() const
Definition osgTerrain/Layer:407
META_Object(osgTerrain, HeightFieldLayer)
virtual bool transform(float offset, float scale)
HeightFieldLayer(const HeightFieldLayer &hfLayer, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
unsigned int _modifiedCount
Definition osgTerrain/Layer:434
const osg::HeightField * getHeightField() const
Definition osgTerrain/Layer:416
HeightFieldLayer(osg::HeightField *hf=0)
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec4 &value) const
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec2 &value) const
void setHeightField(const osg::ref_ptr< T > &hf)
Definition osgTerrain/Layer:413
virtual bool getValue(unsigned int i, unsigned int j, float &value) const
Definition osgTerrain/Layer:303
void setImage(const osg::ref_ptr< T > &image)
Definition osgTerrain/Layer:320
virtual unsigned int getNumRows() const
Definition osgTerrain/Layer:329
virtual const osg::Image * getImage() const
Definition osgTerrain/Layer:326
ImageLayer(const ImageLayer &imageLayer, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
virtual unsigned int getNumColumns() const
Definition osgTerrain/Layer:328
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec4 &value) const
virtual bool transform(float offset, float scale)
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec2 &value) const
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec3 &value) const
virtual ~ImageLayer()
Definition osgTerrain/Layer:342
virtual bool getValue(unsigned int i, unsigned int j, float &value) const
void setImage(osg::Image *image)
META_Object(osgTerrain, ImageLayer)
void setFileName(const std::string &filename)
Definition osgTerrain/Layer:313
osg::ref_ptr< osg::Image > _image
Definition osgTerrain/Layer:344
ImageLayer(osg::Image *image=0)
virtual unsigned int getModifiedCount() const
virtual void setModifiedCount(unsigned int value)
virtual osg::Image * getImage()
Definition osgTerrain/Layer:323
virtual const std::string & getFileName() const
Definition osgTerrain/Layer:314
Definition osgTerrain/Layer:37
const osg::Vec4 & getDefaultValue() const
Definition osgTerrain/Layer:92
const ValidDataOperator * getValidDataOperator() const
Definition osgTerrain/Layer:82
unsigned int getMaxLevel() const
Definition osgTerrain/Layer:73
bool getInterpolatedValidValue(double ndc_x, double ndc_y, float &value) const
Definition osgTerrain/Layer:229
const Locator * getLocator() const
Definition osgTerrain/Layer:67
virtual unsigned int getModifiedCount() const
Definition osgTerrain/Layer:283
void setSetName(const std::string &setname)
Definition osgTerrain/Layer:48
virtual bool transform(float, float)
Definition osgTerrain/Layer:117
virtual unsigned int getNumRows() const
Definition osgTerrain/Layer:89
unsigned int _minLevel
Definition osgTerrain/Layer:293
virtual osg::Image * getImage()
Definition osgTerrain/Layer:111
virtual bool getValue(unsigned int, unsigned int, osg::Vec2 &) const
Definition osgTerrain/Layer:127
Layer(const Layer &, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
void setMagFilter(osg::Texture::FilterMode filter)
Definition osgTerrain/Layer:103
virtual bool getValue(unsigned int, unsigned int, osg::Vec3 &) const
Definition osgTerrain/Layer:128
unsigned int getMinLevel() const
Definition osgTerrain/Layer:70
virtual void dirty()
Definition osgTerrain/Layer:277
virtual void setModifiedCount(unsigned int)
Definition osgTerrain/Layer:280
META_Object(osgTerrain, Layer)
osg::ref_ptr< ValidDataOperator > _validDataOperator
Definition osgTerrain/Layer:295
void setMinLevel(unsigned int minLevel)
Definition osgTerrain/Layer:69
std::string getCompoundName() const
Definition osgTerrain/Layer:60
unsigned int _maxLevel
Definition osgTerrain/Layer:294
bool getValidValue(unsigned int i, unsigned int j, osg::Vec3 &value) const
Definition osgTerrain/Layer:143
virtual void setFileName(const std::string &filename)
Definition osgTerrain/Layer:54
void setMinFilter(osg::Texture::FilterMode filter)
Definition osgTerrain/Layer:96
bool getValidValue(unsigned int i, unsigned int j, osg::Vec2 &value) const
Definition osgTerrain/Layer:137
void setMaxLevel(unsigned int maxLevel)
Definition osgTerrain/Layer:72
bool getInterpolatedValue(double ndc_x, double ndc_y, float &value) const
Definition osgTerrain/Layer:182
bool getValidValue(unsigned int i, unsigned int j, float &value) const
Definition osgTerrain/Layer:131
void setValidDataOperator(ValidDataOperator *validDataOp)
Definition osgTerrain/Layer:76
const std::string & getSetName() const
Definition osgTerrain/Layer:51
virtual bool getValue(unsigned int, unsigned int, osg::Vec4 &) const
Definition osgTerrain/Layer:129
osg::Texture::FilterMode getMagFilter() const
Definition osgTerrain/Layer:106
osg::Texture::FilterMode _minFilter
Definition osgTerrain/Layer:297
virtual osg::BoundingSphere computeBound(bool treatAsElevationLayer) const
osg::Texture::FilterMode getMinFilter() const
Definition osgTerrain/Layer:99
void setDefaultValue(const osg::Vec4 &value)
Definition osgTerrain/Layer:91
ValidDataOperator * getValidDataOperator()
Definition osgTerrain/Layer:79
std::string _filename
Definition osgTerrain/Layer:291
void computeIndices(double ndc_x, double ndc_y, unsigned int &i, unsigned int &j, double &ir, double &jr) const
Definition osgTerrain/Layer:165
virtual const osg::Image * getImage() const
Definition osgTerrain/Layer:114
virtual const std::string & getFileName() const
Definition osgTerrain/Layer:57
virtual bool getValue(unsigned int, unsigned int, float &) const
Definition osgTerrain/Layer:126
virtual unsigned int getNumColumns() const
Definition osgTerrain/Layer:86
void setLocator(const osg::ref_ptr< T > &locator)
Definition osgTerrain/Layer:64
osg::Texture::FilterMode _magFilter
Definition osgTerrain/Layer:298
bool getValidValue(unsigned int i, unsigned int j, osg::Vec4 &value) const
Definition osgTerrain/Layer:149
Locator * getLocator()
Definition osgTerrain/Layer:66
osg::Vec4 _defaultValue
Definition osgTerrain/Layer:296
void setLocator(Locator *locator)
Definition osgTerrain/Layer:62
osg::ref_ptr< Locator > _locator
Definition osgTerrain/Layer:292
Definition osgTerrain/Locator:26
Definition osgTerrain/Layer:441
virtual bool getValue(unsigned int i, unsigned int j, float &value) const
virtual const std::string & getFileName() const
Definition osgTerrain/Layer:473
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec3 &value) const
virtual unsigned int getNumRows() const
META_Object(osgTerrain, ProxyLayer)
virtual unsigned int getNumColumns() const
void setImplementation(Layer *layer)
Definition osgTerrain/Layer:464
virtual bool transform(float offset, float scale)
Layer * getImplementation()
Definition osgTerrain/Layer:467
virtual osg::BoundingSphere computeBound(bool treatAsElevationLayer) const
ProxyLayer(const ProxyLayer &proxyLayer, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
const Layer * getImplementation() const
Definition osgTerrain/Layer:470
virtual unsigned int getModifiedCount() const
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec2 &value) const
virtual osg::Image * getImage()
Definition osgTerrain/Layer:452
virtual void setModifiedCount(unsigned int value)
virtual void setFileName(const std::string &filename)
virtual bool getValue(unsigned int i, unsigned int j, osg::Vec4 &value) const
osg::ref_ptr< Layer > _implementation
Definition osgTerrain/Layer:495
virtual const osg::Image * getImage() const
Definition osgTerrain/Layer:458
Definition osgTerrain/Layer:589
virtual osg::Image * getImage()
Definition osgTerrain/Layer:603
int getActiveLayer() const
Definition osgTerrain/Layer:600
void setActiveLayer(int i)
Definition osgTerrain/Layer:599
SwitchLayer(const SwitchLayer &switchLayer, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
META_Object(osgTerrain, SwitchLayer)
int _activeLayer
Definition osgTerrain/Layer:622
virtual ~SwitchLayer()
Definition osgTerrain/Layer:620
virtual const osg::Image * getImage() const
Definition osgTerrain/Layer:611
Definition BoundingSphere:35
@ SHALLOW_COPY
Definition CopyOp:47
bool valid() const
Definition Image:347
const std::string & getName() const
Definition Object:213
FilterMode
Definition Texture:499
Definition TransferFunction:56
T * get() const
Definition ref_ptr:117
OSGTERRAIN_EXPORT void extractSetNameAndFileName(const std::string &compoundstring, std::string &setname, std::string &filename)
OSGTERRAIN_EXPORT std::string createCompoundSetNameAndFileName(const std::string &setname, const std::string &filename)
#define OSGTERRAIN_EXPORT
Definition osgTerrain/Export:39
Definition osgTerrain/Layer:554
CompoundNameLayer()
Definition osgTerrain/Layer:555
CompoundNameLayer(const std::string &sn, const std::string &fn, Layer *l)
Definition osgTerrain/Layer:562
osg::ref_ptr< Layer > layer
Definition osgTerrain/Layer:579
std::string setname
Definition osgTerrain/Layer:577
std::string filename
Definition osgTerrain/Layer:578
CompoundNameLayer(const CompoundNameLayer &cnl)
Definition osgTerrain/Layer:557
Definition ValidDataOperator:26