123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2009 Robert Osfield
- *
- * This library is open source and may be redistributed and/or modified under
- * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
- * (at your option) any later version. The full license is in LICENSE file
- * included with this distribution, and on the openscenegraph.org website.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * OpenSceneGraph Public License for more details.
- */
- #ifndef OSGVOLUMESETTINGS
- #define OSGVOLUMESETTINGS 1
- #include <osg/Object>
- #include <osgVolume/Property>
- namespace osgVolume {
- class OSGVOLUME_EXPORT VolumeSettings : public Property
- {
- public:
- VolumeSettings();
- /** Copy constructor using CopyOp to manage deep vs shallow copy.*/
- VolumeSettings(const VolumeSettings&,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
- META_Object(osgVolume, VolumeSettings);
- virtual void accept(PropertyVisitor& pv);
- virtual void traverse(PropertyVisitor& pv);
- void setFilename(const std::string& str) { _filename = str; dirty(); }
- const std::string& getFilename() const { return _filename; }
- enum Technique
- {
- FixedFunction,
- RayTraced,
- MultiPass
- };
- void setTechnique(Technique technique) { _technique = technique; dirty(); }
- Technique getTechnique() const { return _technique; }
- enum ShadingModel
- {
- Standard,
- Light,
- Isosurface,
- MaximumIntensityProjection
- };
- void setShadingModel(ShadingModel sm) { _shadingModel = sm; dirty(); }
- ShadingModel getShadingModel() const { return _shadingModel; }
- void setSampleRatio(float sr) { _sampleRatioProperty->setValue(sr); dirty(); }
- float getSampleRatio() const { return _sampleRatioProperty->getValue(); }
- void setSampleRatioWhenMoving(float sr) { _sampleRatioWhenMovingProperty->setValue(sr); dirty(); }
- float getSampleRatioWhenMoving() const { return _sampleRatioWhenMovingProperty->getValue(); }
- void setCutoff(float co);
- float getCutoff() const { return _cutoffProperty->getValue(); }
- void setTransparency(float t) { _transparencyProperty->setValue(t); dirty(); }
- float getTransparency() const { return _transparencyProperty->getValue(); }
- SampleRatioProperty* getSampleRatioProperty() { return _sampleRatioProperty.get(); }
- const SampleRatioProperty* getSampleRatioProperty() const { return _sampleRatioProperty.get(); }
- SampleRatioWhenMovingProperty* getSampleRatioWhenMovingProperty() { return _sampleRatioWhenMovingProperty.get(); }
- const SampleRatioWhenMovingProperty* getSampleRatioWhenMovingProperty() const { return _sampleRatioWhenMovingProperty.get(); }
- AlphaFuncProperty* getCutoffProperty() { return _cutoffProperty.get(); }
- const AlphaFuncProperty* getCutoffProperty() const { return _cutoffProperty.get(); }
- TransparencyProperty* getTransparencyProperty() { return _transparencyProperty.get(); }
- const TransparencyProperty* getTransparencyProperty() const { return _transparencyProperty.get(); }
- IsoSurfaceProperty* getIsoSurfaceProperty() { return _isoSurfaceProperty.get(); }
- const IsoSurfaceProperty* getIsoSurfaceProperty() const { return _isoSurfaceProperty.get(); }
- protected:
- virtual ~VolumeSettings() {}
- std::string _filename;
- Technique _technique;
- ShadingModel _shadingModel;
- osg::ref_ptr<SampleRatioProperty> _sampleRatioProperty;
- osg::ref_ptr<SampleRatioWhenMovingProperty> _sampleRatioWhenMovingProperty;
- osg::ref_ptr<AlphaFuncProperty> _cutoffProperty;
- osg::ref_ptr<TransparencyProperty> _transparencyProperty;
- osg::ref_ptr<IsoSurfaceProperty> _isoSurfaceProperty;
- };
- }
- #endif
|