diff --git a/include/osgVolume/VolumeTile b/include/osgVolume/VolumeTile index 9df68cea6..e5abefb4a 100644 --- a/include/osgVolume/VolumeTile +++ b/include/osgVolume/VolumeTile @@ -114,10 +114,9 @@ class OSGVOLUME_EXPORT VolumeTile : public osg::Group const osg::RefMatrix* getLocator() const { return _locator.get(); } - void setImage(osg::Image* image) { _image = image; } - osg::Image* getImage() { return _image.get(); } - const osg::Image* getImage() const { return _image.get(); } - + void setImage(unsigned int i, osg::Image* image); + osg::Image* getImage(unsigned int i) { return i<_images.size() ? _images[i].get() : 0; } + const osg::Image* getImage(unsigned int i) const { return i<_images.size() ? _images[i].get() : 0; } /** Set the VolumeTechnique*/ void setVolumeTechnique(VolumeTechnique* VolumeTechnique); @@ -154,7 +153,9 @@ class OSGVOLUME_EXPORT VolumeTile : public osg::Group osg::ref_ptr _volumeTechnique; osg::ref_ptr _locator; - osg::ref_ptr _image; + + typedef std::vector< osg::ref_ptr > Images; + Images _images; }; } diff --git a/src/osgPlugins/dicom/ReaderWriterDICOM.cpp b/src/osgPlugins/dicom/ReaderWriterDICOM.cpp index 1e631793f..20cd144f5 100644 --- a/src/osgPlugins/dicom/ReaderWriterDICOM.cpp +++ b/src/osgPlugins/dicom/ReaderWriterDICOM.cpp @@ -121,7 +121,7 @@ class ReaderWriterDICOM : public osgDB::ReaderWriter osg::ref_ptr tile = new osgVolume::VolumeTile; tile->setVolume(volume.get()); - tile->setImage(result.getImage()); + tile->setImage(0, result.getImage()); // get matrix providing size of texels (in mm) osg::RefMatrix* matrix = dynamic_cast(result.getImage()->getUserData()); diff --git a/src/osgVolume/VolumeTile.cpp b/src/osgVolume/VolumeTile.cpp index 47691815e..463f6a51e 100644 --- a/src/osgVolume/VolumeTile.cpp +++ b/src/osgVolume/VolumeTile.cpp @@ -30,16 +30,16 @@ VolumeTile::VolumeTile(): setThreadSafeRefUnref(true); } -VolumeTile::VolumeTile(const VolumeTile& brick,const osg::CopyOp& copyop): - Group(brick,copyop), +VolumeTile::VolumeTile(const VolumeTile& volumeTile,const osg::CopyOp& copyop): + Group(volumeTile,copyop), _volume(0), _dirty(false), _hasBeenTraversal(false), - _image(brick._image) + _images(volumeTile._images) { - if (brick.getVolumeTechnique()) + if (volumeTile.getVolumeTechnique()) { - setVolumeTechnique(osg::clone(brick.getVolumeTechnique())); + setVolumeTechnique(osg::clone(volumeTile.getVolumeTechnique())); } } diff --git a/src/osgWrappers/osgVolume/VolumeTile.cpp b/src/osgWrappers/osgVolume/VolumeTile.cpp index 5e75074ed..03377067f 100644 --- a/src/osgWrappers/osgVolume/VolumeTile.cpp +++ b/src/osgWrappers/osgVolume/VolumeTile.cpp @@ -138,19 +138,19 @@ BEGIN_OBJECT_REFLECTOR(osgVolume::VolumeTile) __C5_osg_RefMatrix_P1__getLocator, "", ""); - I_Method1(void, setImage, IN, osg::Image *, image, + I_Method2(void, setImage, IN, unsigned int, i, IN, osg::Image *, image, Properties::NON_VIRTUAL, - __void__setImage__osg_Image_P1, + __void__setImage__unsigned_int__osg_Image_P1, "", ""); - I_Method0(osg::Image *, getImage, + I_Method1(osg::Image *, getImage, IN, unsigned int, i, Properties::NON_VIRTUAL, - __osg_Image_P1__getImage, + __osg_Image_P1__getImage__unsigned_int, "", ""); - I_Method0(const osg::Image *, getImage, + I_Method1(const osg::Image *, getImage, IN, unsigned int, i, Properties::NON_VIRTUAL, - __C5_osg_Image_P1__getImage, + __C5_osg_Image_P1__getImage__unsigned_int, "", ""); I_Method1(void, setVolumeTechnique, IN, osgVolume::VolumeTechnique *, VolumeTechnique, @@ -186,9 +186,10 @@ BEGIN_OBJECT_REFLECTOR(osgVolume::VolumeTile) I_SimpleProperty(bool, Dirty, __bool__getDirty, __void__setDirty__bool); - I_SimpleProperty(osg::Image *, Image, - __osg_Image_P1__getImage, - __void__setImage__osg_Image_P1); + I_IndexedProperty(osg::Image *, Image, + __osg_Image_P1__getImage__unsigned_int, + __void__setImage__unsigned_int__osg_Image_P1, + 0); I_SimpleProperty(osg::RefMatrix *, Locator, __osg_RefMatrix_P1__getLocator, __void__setLocator__osg_RefMatrix_P1);