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