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
00083 class SoVolumeRenderDetail : public SoVolumeDetail {
00084
00085 SO_DETAIL_HEADER(SoVolumeRenderDetail);
00086 SO_PIMPL_PUBLIC_HEADER(SoVolumeRenderDetail);
00087
00088 public:
00092 SoVolumeRenderDetail();
00096 virtual ~SoVolumeRenderDetail();
00097
00108 size_t getMaskCount(SbBool realValue = FALSE) const;
00109
00122 SoLDM::DataSetIdPair getMask(size_t index, SbBool realValue = FALSE) const;
00123
00135 void getVoxelStyleAndIsoValue(SoVolumeDataDrawStyle::DrawStyle& style, double &iso, SbBool realValue = FALSE) const;
00136
00143 void getRgbaValues(std::vector<SbVec4ub>& rgbaValues, std::vector<SbVec3f>& objectPos,
00144 std::vector<SbVec3i32>& dataPos, std::vector<SoLDMTileID>& tileIds,
00145 float opacityThreshold = -1.f) const;
00146
00153 void getRgbaValues(std::vector<SbVec4ub>& rgbaValues, std::vector<SbVec3f>& objectPos, float opacityThreshold = -1.f) const;
00154
00160 void getRgbaValues(std::vector<SbVec4ub>& rgbaValues, float opacityThreshold = -1.f) const;
00161
00167 void getRgbaValues(std::vector<SbVec4ub>& rgbaValues, std::vector<SbVec3i32>& dataPos, float opacityThreshold = -1.f) const;
00168
00173 const std::vector<SoLDMTileID>& getRgbaValuesTileIds() const;
00174
00176 virtual SoDetail* copy() const;
00177
00178 private:
00179 static void initClass();
00180 static void exitClass();
00181
00186 void setRgbaValues(const std::vector<SbVec4ub>& rgbaValues, const std::vector<SbVec3f>& points);
00187
00188 private:
00190 SoVolumeRenderDetail(const SoVolumeRenderDetail& detail);
00191 };
00192
00193 #endif
00194
00195
00196