Changed the tolower of the file extension into the plugin name construction code.

Added support for CompositeLayer.
This commit is contained in:
Robert Osfield
2007-08-16 18:49:46 +00:00
parent 3c82058c68
commit ffc8123a73
4 changed files with 119 additions and 13 deletions

View File

@@ -34,6 +34,8 @@ class OSGTERRAIN_EXPORT Layer : public osg::Object
META_Object(osgTerrain, Layer);
virtual void setFileName(const std::string& filename) { _filename = filename; }
virtual const std::string& getFileName() const { return _filename; }
void setLocator(Locator* locator) { _locator = locator; }
Locator* getLocator() { return _locator.get(); }
@@ -156,6 +158,7 @@ class OSGTERRAIN_EXPORT Layer : public osg::Object
virtual ~Layer();
std::string _filename;
osg::ref_ptr<Locator> _locator;
osg::ref_ptr<ValidDataOperator> _validDataOperator;
osg::Vec4 _defaultValue;
@@ -171,6 +174,11 @@ class OSGTERRAIN_EXPORT ImageLayer : public Layer
/** Copy constructor using CopyOp to manage deep vs shallow copy.*/
ImageLayer(const ImageLayer& imageLayer,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
META_Object(osgTerrain, ImageLayer);
void setFileName(const std::string& filename) { _filename = filename; if (_image.valid()) _image->setFileName(filename); }
virtual const std::string& getFileName() const { return _image.get() ? _image->getFileName() : _filename; }
virtual bool transform(float offset, float scale);
void setImage(osg::Image* image);
@@ -193,7 +201,7 @@ class OSGTERRAIN_EXPORT ImageLayer : public Layer
virtual ~ImageLayer() {}
osg::ref_ptr<osg::Image> _image;
osg::ref_ptr<osg::Image> _image;
};
@@ -206,6 +214,11 @@ class OSGTERRAIN_EXPORT HeightFieldLayer : public Layer
/** Copy constructor using CopyOp to manage deep vs shallow copy.*/
HeightFieldLayer(const HeightFieldLayer& hfLayer,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
META_Object(osgTerrain, HeightFieldLayer);
void setFileName(const std::string& filename) { _filename = filename; }
virtual const std::string& getFileName() const { return _filename; }
virtual bool transform(float offset, float scale);
void setHeightField(osg::HeightField* hf);
@@ -233,6 +246,46 @@ class OSGTERRAIN_EXPORT HeightFieldLayer : public Layer
};
class OSGTERRAIN_EXPORT CompositeLayer : public Layer
{
public:
CompositeLayer();
/** Copy constructor using CopyOp to manage deep vs shallow copy.*/
CompositeLayer(const CompositeLayer& compositeLayer,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
META_Object(osgTerrain, CompositeLayer);
void clear();
void setFileName(unsigned int i, const std::string& filename) { _layers[i].first = filename; if (_layers[i].second.valid()) _layers[i].second->setFileName(filename); }
const std::string& getFileName(unsigned int i) const { return _layers[i].second.valid() ? _layers[i].second->getFileName() : _layers[i].first; }
void setLayer(unsigned int i, Layer* layer) { _layers[i].second = layer; }
Layer* getLayer(unsigned int i) { return _layers[i].second.get(); }
const Layer* getLayer(unsigned int i) const { return _layers[i].second.get(); }
void addLayer(const std::string& filename) { _layers.push_back(FileNameLayerPair(filename,0)); }
void addLayer(Layer* layer) { _layers.push_back(FileNameLayerPair(layer->getFileName(),layer)); }
void removeLayer(unsigned int i) { _layers.erase(_layers.begin()+i); }
unsigned int getNumLayers() const { return _layers.size(); }
protected:
virtual ~CompositeLayer() {}
typedef std::pair< std::string, osg::ref_ptr<Layer> > FileNameLayerPair;
typedef std::vector< FileNameLayerPair > Layers;
Layers _layers;
};
}
#endif