00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkProgrammableDataObjectSource.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 =========================================================================*/ 00055 #ifndef __vtkProgrammableDataObjectSource_h 00056 #define __vtkProgrammableDataObjectSource_h 00057 00058 #include "vtkSource.h" 00059 00060 class VTK_GRAPHICS_EXPORT vtkProgrammableDataObjectSource : public vtkSource 00061 { 00062 public: 00063 static vtkProgrammableDataObjectSource *New(); 00064 vtkTypeRevisionMacro(vtkProgrammableDataObjectSource,vtkSource); 00065 void PrintSelf(ostream& os, vtkIndent indent); 00066 00069 void SetExecuteMethod(void (*f)(void *), void *arg); 00070 00072 void SetExecuteMethodArgDelete(void (*f)(void *)); 00073 00075 00076 vtkDataObject *GetOutput(); 00077 vtkDataObject *GetOutput(int idx) 00078 {return (vtkDataObject *) this->vtkSource::GetOutput(idx); }; 00080 00081 protected: 00082 vtkProgrammableDataObjectSource(); 00083 ~vtkProgrammableDataObjectSource(); 00084 00085 void Execute(); 00086 00087 void (*ExecuteMethod)(void *); //function to invoke 00088 void (*ExecuteMethodArgDelete)(void *); 00089 void *ExecuteMethodArg; 00090 private: 00091 vtkProgrammableDataObjectSource(const vtkProgrammableDataObjectSource&); // Not implemented. 00092 void operator=(const vtkProgrammableDataObjectSource&); // Not implemented. 00093 }; 00094 00095 #endif 00096