00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00038 #ifndef __vtkVolumePicker_h
00039 #define __vtkVolumePicker_h
00040
00041 #include "vtkCellPicker.h"
00042
00043 class VTK_VOLUMERENDERING_EXPORT vtkVolumePicker : public vtkCellPicker
00044 {
00045 public:
00046 static vtkVolumePicker *New();
00047 vtkTypeMacro(vtkVolumePicker, vtkCellPicker);
00048 void PrintSelf(ostream& os, vtkIndent indent);
00049
00051
00056 vtkSetMacro(PickCroppingPlanes, int);
00057 vtkBooleanMacro(PickCroppingPlanes, int);
00058 vtkGetMacro(PickCroppingPlanes, int);
00060
00062
00067 vtkGetMacro(CroppingPlaneId, int);
00069
00070 protected:
00071 vtkVolumePicker();
00072 ~vtkVolumePicker();
00073
00074 virtual void ResetPickInfo();
00075
00076 virtual double IntersectVolumeWithLine(const double p1[3],
00077 const double p2[3],
00078 double t1, double t2,
00079 vtkProp3D *prop,
00080 vtkAbstractVolumeMapper *mapper);
00081
00082 static int ClipLineWithCroppingRegion(const double bounds[6],
00083 const int extent[6], int flags,
00084 const double x1[3], const double x2[3],
00085 double t1, double t2,
00086 int &extentPlaneId, int &numSegments,
00087 double *t1List, double *t2List,
00088 double *s1List, int *planeIdList);
00089
00090 int PickCroppingPlanes;
00091 int CroppingPlaneId;
00092
00093 private:
00094 vtkVolumePicker(const vtkVolumePicker&);
00095 void operator=(const vtkVolumePicker&);
00096 };
00097
00098 #endif
00099
00100