00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _SO_VOLUME_RENDER_DETAIL_
00025 #define _SO_VOLUME_RENDER_DETAIL_
00026
00027 #include <Inventor/details/SoSubDetail.h>
00028 #include <VolumeViz/details/SoVolumeDetail.h>
00029
00030 SO_PIMPL_PUBLIC_DECLARATION(SoVolumeRenderDetail)
00031
00032
00033
00034
00035
00036
00037
00039
00084 class SoVolumeRenderDetail : public SoVolumeDetail {
00085
00086 SO_DETAIL_HEADER(SoVolumeRenderDetail);
00087 SO_PIMPL_PUBLIC_HEADER(SoVolumeRenderDetail);
00088
00089 public:
00093 SoVolumeRenderDetail();
00097 virtual ~SoVolumeRenderDetail();
00098
00109 size_t getMaskCount(SbBool realValue = FALSE) const;
00110
00123 SoLDM::DataSetIdPair getMask(size_t index, SbBool realValue = FALSE) const;
00124
00136 void getVoxelStyleAndIsoValue(SoVolumeDataDrawStyle::DrawStyle& style, double &iso, SbBool realValue = FALSE) const;
00137
00144 void getRgbaValues(std::vector<SbVec4ub>& rgbaValues, std::vector<SbVec3f>& objectPos,
00145 std::vector<SbVec3i32>& dataPos, std::vector<SoLDMTileID>& tileIds,
00146 float opacityThreshold = -1.f) const;
00147
00154 void getRgbaValues(std::vector<SbVec4ub>& rgbaValues, std::vector<SbVec3f>& objectPos, float opacityThreshold = -1.f) const;
00155
00161 void getRgbaValues(std::vector<SbVec4ub>& rgbaValues, float opacityThreshold = -1.f) const;
00162
00168 void getRgbaValues(std::vector<SbVec4ub>& rgbaValues, std::vector<SbVec3i32>& dataPos, float opacityThreshold = -1.f) const;
00169
00174 const std::vector<SoLDMTileID>& getRgbaValuesTileIds() const;
00175
00177 virtual SoDetail* copy() const;
00178
00179 private:
00180 static void initClass();
00181 static void exitClass();
00182
00187 void setRgbaValues(const std::vector<SbVec4ub>& rgbaValues, const std::vector<SbVec3f>& points);
00188
00189 private:
00191 SoVolumeRenderDetail(const SoVolumeRenderDetail& detail);
00192 };
00193
00194 #endif
00195
00196
00197