00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00056 #ifndef __vtkLinearExtrusionFilter_h
00057 #define __vtkLinearExtrusionFilter_h
00058
00059 #include "vtkPolyDataAlgorithm.h"
00060
00061 class vtkDataArray;
00062
00063 #define VTK_VECTOR_EXTRUSION 1
00064 #define VTK_NORMAL_EXTRUSION 2
00065 #define VTK_POINT_EXTRUSION 3
00066
00067 class VTK_GRAPHICS_EXPORT vtkLinearExtrusionFilter : public vtkPolyDataAlgorithm
00068 {
00069 public:
00070 vtkTypeMacro(vtkLinearExtrusionFilter,vtkPolyDataAlgorithm);
00071 void PrintSelf(ostream& os, vtkIndent indent);
00072
00075 static vtkLinearExtrusionFilter *New();
00076
00078
00079 vtkSetClampMacro(ExtrusionType,int,VTK_VECTOR_EXTRUSION,VTK_POINT_EXTRUSION);
00080 vtkGetMacro(ExtrusionType,int);
00081 void SetExtrusionTypeToVectorExtrusion()
00082 {this->SetExtrusionType(VTK_VECTOR_EXTRUSION);};
00083 void SetExtrusionTypeToNormalExtrusion()
00084 {this->SetExtrusionType(VTK_NORMAL_EXTRUSION);};
00085 void SetExtrusionTypeToPointExtrusion()
00086 {this->SetExtrusionType(VTK_POINT_EXTRUSION);};
00088
00090
00091 vtkSetMacro(Capping,int);
00092 vtkGetMacro(Capping,int);
00093 vtkBooleanMacro(Capping,int);
00095
00097
00098 vtkSetMacro(ScaleFactor,double);
00099 vtkGetMacro(ScaleFactor,double);
00101
00103
00105 vtkSetVector3Macro(Vector,double);
00106 vtkGetVectorMacro(Vector,double,3);
00108
00110
00112 vtkSetVector3Macro(ExtrusionPoint,double);
00113 vtkGetVectorMacro(ExtrusionPoint,double,3);
00115
00116 protected:
00117 vtkLinearExtrusionFilter();
00118 ~vtkLinearExtrusionFilter() {};
00119
00120 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00121 int ExtrusionType;
00122 int Capping;
00123 double ScaleFactor;
00124 double Vector[3];
00125 double ExtrusionPoint[3];
00126
00127
00128 double *(vtkLinearExtrusionFilter::*ExtrudePoint)(double x[3], vtkIdType id,
00129 vtkDataArray *normals);
00130 double *ViaNormal(double x[3], vtkIdType id, vtkDataArray *normals);
00131 double *ViaVector(double x[3], vtkIdType id, vtkDataArray *normals=0);
00132 double *ViaPoint(double x[3], vtkIdType id, vtkDataArray *normals=0);
00133
00134
00135 private:
00136 vtkLinearExtrusionFilter(const vtkLinearExtrusionFilter&);
00137 void operator=(const vtkLinearExtrusionFilter&);
00138 };
00139
00140 #endif