00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkProgrammableGlyphFilter.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 =========================================================================*/ 00079 #ifndef __vtkProgrammableGlyphFilter_h 00080 #define __vtkProgrammableGlyphFilter_h 00081 00082 #define VTK_COLOR_BY_INPUT 0 00083 #define VTK_COLOR_BY_SOURCE 1 00084 00085 #include "vtkDataSetToPolyDataFilter.h" 00086 00087 class vtkPointData; 00088 00089 class VTK_GRAPHICS_EXPORT vtkProgrammableGlyphFilter : public vtkDataSetToPolyDataFilter 00090 { 00091 public: 00092 vtkTypeRevisionMacro(vtkProgrammableGlyphFilter,vtkDataSetToPolyDataFilter); 00093 void PrintSelf(ostream& os, vtkIndent indent); 00094 00097 static vtkProgrammableGlyphFilter *New(); 00098 00100 00102 void SetSource(vtkPolyData *source); 00103 vtkPolyData *GetSource(); 00105 00107 void SetGlyphMethod(void (*f)(void *), void *arg); 00108 00111 void SetGlyphMethodArgDelete(void (*f)(void *)); 00112 00114 00117 vtkGetMacro(PointId, vtkIdType); 00119 00121 00124 vtkGetVector3Macro(Point,float); 00126 00128 00131 vtkGetObjectMacro(PointData,vtkPointData); 00133 00135 00136 vtkSetMacro(ColorMode,int); 00137 vtkGetMacro(ColorMode,int); 00138 void SetColorModeToColorByInput() 00139 {this->SetColorMode(VTK_COLOR_BY_INPUT);}; 00140 void SetColorModeToColorBySource() 00141 {this->SetColorMode(VTK_COLOR_BY_SOURCE);}; 00142 const char *GetColorModeAsString(); 00144 00145 protected: 00146 vtkProgrammableGlyphFilter(); 00147 ~vtkProgrammableGlyphFilter(); 00148 00149 void Execute(); 00150 00151 float Point[3]; // Coordinates of point 00152 vtkIdType PointId; // Current point id during processing 00153 vtkPointData *PointData; 00154 int ColorMode; 00155 00156 void (*GlyphMethod)(void *); // Support GlyphMethod 00157 void (*GlyphMethodArgDelete)(void *); 00158 void *GlyphMethodArg; 00159 00160 private: 00161 vtkProgrammableGlyphFilter(const vtkProgrammableGlyphFilter&); // Not implemented. 00162 void operator=(const vtkProgrammableGlyphFilter&); // Not implemented. 00163 }; 00164 00165 #endif