00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00032 #ifndef __vtkVolumeOutlineSource_h
00033 #define __vtkVolumeOutlineSource_h
00034
00035 #include "vtkPolyDataAlgorithm.h"
00036
00037 class vtkVolumeMapper;
00038
00039 class VTK_VOLUMERENDERING_EXPORT vtkVolumeOutlineSource : public vtkPolyDataAlgorithm
00040 {
00041 public:
00042 static vtkVolumeOutlineSource *New();
00043 vtkTypeMacro(vtkVolumeOutlineSource,vtkPolyDataAlgorithm);
00044 void PrintSelf(ostream& os, vtkIndent indent);
00045
00047
00050 virtual void SetVolumeMapper(vtkVolumeMapper *mapper);
00051 vtkVolumeMapper *GetVolumeMapper() { return this->VolumeMapper; };
00053
00055
00058 vtkSetMacro(GenerateScalars, int);
00059 vtkBooleanMacro(GenerateScalars, int);
00060 vtkGetMacro(GenerateScalars, int);
00062
00064
00066 vtkSetMacro(GenerateOutline, int);
00067 vtkBooleanMacro(GenerateOutline, int);
00068 vtkGetMacro(GenerateOutline, int);
00070
00072
00075 vtkSetMacro(GenerateFaces, int);
00076 vtkBooleanMacro(GenerateFaces, int);
00077 vtkGetMacro(GenerateFaces, int);
00079
00081
00083 vtkSetVector3Macro(Color, double);
00084 vtkGetVector3Macro(Color, double);
00086
00088
00091 vtkSetMacro(ActivePlaneId, int);
00092 vtkGetMacro(ActivePlaneId, int);
00094
00096
00099 vtkSetVector3Macro(ActivePlaneColor, double);
00100 vtkGetVector3Macro(ActivePlaneColor, double);
00102
00103 protected:
00104 vtkVolumeOutlineSource();
00105 ~vtkVolumeOutlineSource();
00106
00107 vtkVolumeMapper *VolumeMapper;
00108 int GenerateScalars;
00109 int GenerateOutline;
00110 int GenerateFaces;
00111 int ActivePlaneId;
00112 double Color[3];
00113 double ActivePlaneColor[3];
00114
00115 int Cropping;
00116 int CroppingRegionFlags;
00117 double Bounds[6];
00118 double CroppingRegionPlanes[6];
00119
00120 static int ComputeCubePlanes(double planes[3][4],
00121 double croppingPlanes[6],
00122 double bounds[6]);
00123
00124 static void GeneratePolys(vtkCellArray *polys,
00125 vtkUnsignedCharArray *scalars,
00126 unsigned char colors[2][3],
00127 int activePlane,
00128 int flags,
00129 int tolPtId[3][4]);
00130
00131 static void GenerateLines(vtkCellArray *lines,
00132 vtkUnsignedCharArray *scalars,
00133 unsigned char colors[2][3],
00134 int activePlane,
00135 int flags,
00136 int tolPtId[3][4]);
00137
00138 static void GeneratePoints(vtkPoints *points,
00139 vtkCellArray *lines,
00140 vtkCellArray *polys,
00141 double planes[3][4],
00142 double tol);
00143
00144 static void NudgeCropPlanesToBounds(int tolPtId[3][4],
00145 double planes[3][4],
00146 double tol);
00147
00148 static void CreateColorValues(unsigned char colors[2][3],
00149 double color1[3], double color2[3]);
00150
00151 virtual int ComputePipelineMTime(vtkInformation* request,
00152 vtkInformationVector** inputVector,
00153 vtkInformationVector* outputVector,
00154 int requestFromOutputPort,
00155 unsigned long* mtime);
00156
00157 virtual int RequestInformation(vtkInformation* request,
00158 vtkInformationVector** inputVector,
00159 vtkInformationVector* outputVector);
00160
00161 virtual int RequestData(vtkInformation* request,
00162 vtkInformationVector** inputVector,
00163 vtkInformationVector* outputVector);
00164
00165 private:
00166 vtkVolumeOutlineSource(const vtkVolumeOutlineSource&);
00167 void operator=(const vtkVolumeOutlineSource&);
00168 };
00169
00170 #endif