00001
00002
00003
00004
00005
00016 #ifndef __SIGNVOLUME_H
00017 #define __SIGNVOLUME_H
00018
00019 #include <map>
00020
00021 #include <vtkObject.h>
00022 #include <SignDLL.h>
00023
00024
00025 class vtkPiecewiseFunction;
00026 class vtkColorTransferFunction;
00027 class vtkVolumeMapper;
00028 class vtkVolume;
00029 class vtkVolumeProperty;
00030 class vtkImageShiftScale;
00031 class vtkImageChangeInformation;
00032 class MrmlVolumeNode;
00033 class vtkMRMLScalarVolumeNode;
00034 class vtkImageData;
00035 class vtkTransform;
00036
00037 typedef std::map<int,vtkVolume*> VolumeMap;
00038
00039 class SIGN_EXPORT SignVolume : public vtkObject
00040 {
00041 public:
00042 vtkTypeRevisionMacro(SignVolume,vtkObject);
00043 virtual void PrintSelf(ostream& os, vtkIndent indent);
00044
00046 static SignVolume *New();
00047
00049 void SetImageData(vtkMRMLScalarVolumeNode* vn);
00051 vtkVolume* GetVolume();
00053 vtkVolume* GetVolume(int t);
00055 void CycleVisible();
00056
00058 vtkVolumeProperty* GetVolumeProperty();
00060 void SetVolumeProperty(vtkVolumeProperty* property);
00061
00063 MrmlVolumeNode* GetMrmlVolumeNode()
00064 { return mrmlVolumeNode;
00065 }
00066 void SetUse3DTextures(bool f) {use_3D_textures=f;}
00067
00068 protected:
00070 SignVolume();
00071 ~SignVolume();
00072
00073 private:
00074 vtkPiecewiseFunction *opacityTransferFunction;
00075 vtkColorTransferFunction *colorTransferFunction;
00076 vtkVolumeProperty *volumeProperty;
00077
00078 MrmlVolumeNode *mrmlVolumeNode;
00079 vtkMRMLScalarVolumeNode* mrmlScalarVolumeNode;
00080 VolumeMap volumes;
00081
00082 int curr_visible;
00083 int NumbersInCycle;
00084 bool use_3D_textures;
00085
00086 SignVolume(const SignVolume&);
00087 void operator=(const SignVolume&);
00088
00089 };
00090
00091 #endif