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 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 =========================================================================*/ 00041 #ifndef __vtkRibbonFilter_h 00042 #define __vtkRibbonFilter_h 00043 00044 #include "vtkPolyDataToPolyDataFilter.h" 00045 00046 #define VTK_TCOORDS_OFF 0 00047 #define VTK_TCOORDS_FROM_NORMALIZED_LENGTH 1 00048 #define VTK_TCOORDS_FROM_LENGTH 2 00049 #define VTK_TCOORDS_FROM_SCALARS 3 00050 00051 class vtkCellArray; 00052 class vtkCellData; 00053 class vtkDataArray; 00054 class vtkFloatArray; 00055 class vtkPointData; 00056 class vtkPoints; 00057 00058 class VTK_GRAPHICS_EXPORT vtkRibbonFilter : public vtkPolyDataToPolyDataFilter 00059 { 00060 public: 00061 vtkTypeRevisionMacro(vtkRibbonFilter,vtkPolyDataToPolyDataFilter); 00062 void PrintSelf(ostream& os, vtkIndent indent); 00063 00066 static vtkRibbonFilter *New(); 00067 00069 00071 vtkSetClampMacro(Width,double,0,VTK_DOUBLE_MAX); 00072 vtkGetMacro(Width,double); 00074 00076 00078 vtkSetClampMacro(Angle,double,0,360); 00079 vtkGetMacro(Angle,double); 00081 00083 00084 vtkSetMacro(VaryWidth,int); 00085 vtkGetMacro(VaryWidth,int); 00086 vtkBooleanMacro(VaryWidth,int); 00088 00090 00092 vtkSetMacro(WidthFactor,double); 00093 vtkGetMacro(WidthFactor,double); 00095 00097 00099 vtkSetVector3Macro(DefaultNormal,double); 00100 vtkGetVectorMacro(DefaultNormal,double,3); 00102 00104 00106 vtkSetMacro(UseDefaultNormal,int); 00107 vtkGetMacro(UseDefaultNormal,int); 00108 vtkBooleanMacro(UseDefaultNormal,int); 00110 00112 00114 vtkSetClampMacro(GenerateTCoords,int,VTK_TCOORDS_OFF, 00115 VTK_TCOORDS_FROM_SCALARS); 00116 vtkGetMacro(GenerateTCoords,int); 00117 void SetGenerateTCoordsToOff() 00118 {this->SetGenerateTCoords(VTK_TCOORDS_OFF);} 00119 void SetGenerateTCoordsToNormalizedLength() 00120 {this->SetGenerateTCoords(VTK_TCOORDS_FROM_NORMALIZED_LENGTH);} 00121 void SetGenerateTCoordsToUseLength() 00122 {this->SetGenerateTCoords(VTK_TCOORDS_FROM_LENGTH);} 00123 void SetGenerateTCoordsToUseScalars() 00124 {this->SetGenerateTCoords(VTK_TCOORDS_FROM_SCALARS);} 00125 const char *GetGenerateTCoordsAsString(); 00127 00129 00133 vtkSetClampMacro(TextureLength,double,0.000001,VTK_LARGE_INTEGER); 00134 vtkGetMacro(TextureLength,double); 00136 00138 00141 vtkGetStringMacro(InputVectorsSelection); 00142 void SelectInputVectors(const char *fieldName) 00143 {this->SetInputVectorsSelection(fieldName);} 00145 00146 protected: 00147 vtkRibbonFilter(); 00148 ~vtkRibbonFilter(); 00149 00150 void Execute(); 00151 double Width; 00152 double Angle; 00153 int VaryWidth; //controls whether width varies with scalar data 00154 double WidthFactor; 00155 double DefaultNormal[3]; 00156 int UseDefaultNormal; 00157 int GenerateTCoords; //control texture coordinate generation 00158 double TextureLength; //this length is mapped to [0,1) texture space 00159 00160 // Helper methods 00161 int GeneratePoints(vtkIdType offset, vtkIdType npts, vtkIdType *pts, 00162 vtkPoints *inPts, vtkPoints *newPts, 00163 vtkPointData *pd, vtkPointData *outPD, 00164 vtkFloatArray *newNormals, vtkDataArray *inScalars, 00165 double range[2], vtkDataArray *inNormals); 00166 void GenerateStrip(vtkIdType offset, vtkIdType npts, vtkIdType *pts, 00167 vtkIdType inCellId, vtkCellData *cd, vtkCellData *outCD, 00168 vtkCellArray *newStrips); 00169 void GenerateTextureCoords(vtkIdType offset, vtkIdType npts, vtkIdType *pts, 00170 vtkPoints *inPts, vtkDataArray *inScalars, 00171 vtkFloatArray *newTCoords); 00172 vtkIdType ComputeOffset(vtkIdType offset,vtkIdType npts); 00173 00174 // Helper data members 00175 double Theta; 00176 00177 // We preferred input vectors over normals because we do 00178 // not want to shade the input line with these values. 00179 char *InputVectorsSelection; 00180 vtkSetStringMacro(InputVectorsSelection); 00181 00182 private: 00183 vtkRibbonFilter(const vtkRibbonFilter&); // Not implemented. 00184 void operator=(const vtkRibbonFilter&); // Not implemented. 00185 }; 00186 00187 #endif 00188 00189