VTK
dox/Graphics/vtkQuadRotationalExtrusionFilter.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003 Program:   Visualization Toolkit
00004 Module:    $RCSfile: vtkQuadRotationalExtrusionFilter.h,v $
00005 
00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007 All rights reserved.
00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010 This software is distributed WITHOUT ANY WARRANTY; without even
00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012 PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00064 #ifndef __vtkQuadRotationalExtrusionFilter_h
00065 #define __vtkQuadRotationalExtrusionFilter_h
00066 
00067 #include "vtkMultiBlockDataSetAlgorithm.h"
00068 #include <vtksys/stl/map> // STL vector need for per block angles
00069 
00070 class vtkPoints;
00071 class vtkPointData;
00072 
00073 class VTK_GRAPHICS_EXPORT vtkQuadRotationalExtrusionFilter : public vtkMultiBlockDataSetAlgorithm 
00074 {
00075  public:
00076   vtkTypeMacro(vtkQuadRotationalExtrusionFilter,vtkMultiBlockDataSetAlgorithm);
00077   void PrintSelf(ostream& os, vtkIndent indent);
00078 
00081   static vtkQuadRotationalExtrusionFilter *New();
00082 
00083 //BTX
00084   enum RotationAxis 
00085     {
00086       USE_X = 0,
00087       USE_Y = 1,
00088       USE_Z = 2
00089     };
00090 //ETX
00091 
00093 
00094   vtkSetClampMacro(Axis, int, 0, 2);
00095   vtkGetMacro(Axis, int);
00096   void SetAxisToX() { this->SetAxis(USE_X); };
00097   void SetAxisToY() { this->SetAxis(USE_Y); };
00098   void SetAxisToZ() { this->SetAxis(USE_Z); };
00100 
00102 
00104   vtkSetClampMacro(Resolution,int,1,VTK_LARGE_INTEGER);
00105   vtkGetMacro(Resolution,int);
00107 
00109 
00110   vtkSetMacro(Capping,int);
00111   vtkGetMacro(Capping,int);
00112   vtkBooleanMacro(Capping,int);
00114 
00116 
00117   vtkSetMacro(DefaultAngle,double);
00118   vtkGetMacro(DefaultAngle,double);
00120 
00122 
00123   void RemoveAllPerBlockAngles();
00124   void AddPerBlockAngle(vtkIdType blockId, double angle);
00126 
00128 
00129   vtkSetMacro(Translation,double);
00130   vtkGetMacro(Translation,double);
00132 
00134 
00135   vtkSetMacro(DeltaRadius,double);
00136   vtkGetMacro(DeltaRadius,double);
00138 
00139  protected:
00140   vtkQuadRotationalExtrusionFilter();
00141   ~vtkQuadRotationalExtrusionFilter() {};
00142 
00143   int FillInputPortInformation( int , vtkInformation* );
00144   int RequestData( vtkInformation*, 
00145                    vtkInformationVector**, 
00146                    vtkInformationVector* );
00147 
00148   int RotateAroundAxis( double,
00149                         vtkIdType,
00150                         vtkPoints*,
00151                         vtkPoints*,
00152                         vtkPointData*,
00153                         vtkPointData* );
00154   int Axis;
00155   int Resolution;
00156   int Capping;
00157   double DefaultAngle;
00158   double Translation;
00159   double DeltaRadius;
00160 
00161 //BTX
00162   vtksys_stl::map<vtkIdType,double> PerBlockAngles;
00163 //ETX     
00164 
00165  private:
00166   vtkQuadRotationalExtrusionFilter(const vtkQuadRotationalExtrusionFilter&);  // Not implemented.
00167   void operator=(const vtkQuadRotationalExtrusionFilter&);  // Not implemented.
00168 };
00169 
00170 #endif