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   void (vtkLinearExtrusionFilter::*ExtrudePoint)(double x[3], vtkIdType id,
00129                                                    vtkDataArray *normals);
00130   void ViaNormal(double x[3], vtkIdType id, vtkDataArray *normals);
00131   void ViaVector(double x[3], vtkIdType id, vtkDataArray *normals=0);
00132   void 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