Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Graphics/vtkRibbonFilter.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkRibbonFilter.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00045 #ifndef __vtkRibbonFilter_h 00046 #define __vtkRibbonFilter_h 00047 00048 #include "vtkPolyDataToPolyDataFilter.h" 00049 00050 #define VTK_TCOORDS_OFF 0 00051 #define VTK_TCOORDS_FROM_NORMALIZED_LENGTH 1 00052 #define VTK_TCOORDS_FROM_LENGTH 2 00053 #define VTK_TCOORDS_FROM_SCALARS 3 00054 00055 class vtkCellArray; 00056 class vtkCellData; 00057 class vtkDataArray; 00058 class vtkFloatArray; 00059 class vtkPointData; 00060 class vtkPoints; 00061 00062 class VTK_GRAPHICS_EXPORT vtkRibbonFilter : public vtkPolyDataToPolyDataFilter 00063 { 00064 public: 00065 vtkTypeRevisionMacro(vtkRibbonFilter,vtkPolyDataToPolyDataFilter); 00066 void PrintSelf(ostream& os, vtkIndent indent); 00067 00070 static vtkRibbonFilter *New(); 00071 00073 00075 vtkSetClampMacro(Width,float,0,VTK_LARGE_FLOAT); 00076 vtkGetMacro(Width,float); 00078 00080 00082 vtkSetClampMacro(Angle,float,0,360); 00083 vtkGetMacro(Angle,float); 00085 00087 00088 vtkSetMacro(VaryWidth,int); 00089 vtkGetMacro(VaryWidth,int); 00090 vtkBooleanMacro(VaryWidth,int); 00092 00094 00096 vtkSetMacro(WidthFactor,float); 00097 vtkGetMacro(WidthFactor,float); 00099 00101 00103 vtkSetVector3Macro(DefaultNormal,float); 00104 vtkGetVectorMacro(DefaultNormal,float,3); 00106 00108 00110 vtkSetMacro(UseDefaultNormal,int); 00111 vtkGetMacro(UseDefaultNormal,int); 00112 vtkBooleanMacro(UseDefaultNormal,int); 00114 00116 00118 vtkSetClampMacro(GenerateTCoords,int,VTK_TCOORDS_OFF, 00119 VTK_TCOORDS_FROM_SCALARS); 00120 vtkGetMacro(GenerateTCoords,int); 00121 void SetGenerateTCoordsToOff() 00122 {this->SetGenerateTCoords(VTK_TCOORDS_OFF);} 00123 void SetGenerateTCoordsToNormalizedLength() 00124 {this->SetGenerateTCoords(VTK_TCOORDS_FROM_NORMALIZED_LENGTH);} 00125 void SetGenerateTCoordsToUseLength() 00126 {this->SetGenerateTCoords(VTK_TCOORDS_FROM_LENGTH);} 00127 void SetGenerateTCoordsToUseScalars() 00128 {this->SetGenerateTCoords(VTK_TCOORDS_FROM_SCALARS);} 00129 const char *GetGenerateTCoordsAsString(); 00131 00133 00137 vtkSetClampMacro(TextureLength,float,0.000001,VTK_LARGE_INTEGER); 00138 vtkGetMacro(TextureLength,float); 00140 00141 protected: 00142 vtkRibbonFilter(); 00143 ~vtkRibbonFilter(); 00144 00145 void Execute(); 00146 float Width; 00147 float Angle; 00148 int VaryWidth; //controls whether width varies with scalar data 00149 float WidthFactor; 00150 float DefaultNormal[3]; 00151 int UseDefaultNormal; 00152 int GenerateTCoords; //control texture coordinate generation 00153 float TextureLength; //this length is mapped to [0,1) texture space 00154 00155 // Helper methods 00156 int GeneratePoints(vtkIdType offset, vtkIdType npts, vtkIdType *pts, 00157 vtkPoints *inPts, vtkPoints *newPts, 00158 vtkPointData *pd, vtkPointData *outPD, 00159 vtkFloatArray *newNormals, vtkDataArray *inScalars, 00160 float range[2], vtkDataArray *inNormals); 00161 void GenerateStrip(vtkIdType offset, vtkIdType npts, vtkIdType *pts, 00162 vtkIdType inCellId, vtkCellData *cd, vtkCellData *outCD, 00163 vtkCellArray *newStrips); 00164 void GenerateTextureCoords(vtkIdType offset, vtkIdType npts, vtkIdType *pts, 00165 vtkPoints *inPts, vtkDataArray *inScalars, 00166 vtkFloatArray *newTCoords); 00167 vtkIdType ComputeOffset(vtkIdType offset,vtkIdType npts); 00168 00169 // Helper data members 00170 float Theta; 00171 00172 // We preferred input vectors over normals because we do 00173 // not want to shade the input line with these values. 00174 char *InputVectorsSelection; 00175 vtkSetStringMacro(InputVectorsSelection); 00176 00177 private: 00178 vtkRibbonFilter(const vtkRibbonFilter&); // Not implemented. 00179 void operator=(const vtkRibbonFilter&); // Not implemented. 00180 }; 00181 00182 #endif 00183 00184