00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkProgrammableSource.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 =========================================================================*/ 00040 #ifndef __vtkProgrammableSource_h 00041 #define __vtkProgrammableSource_h 00042 00043 #include "vtkDataSetAlgorithm.h" 00044 00045 class vtkPolyData; 00046 class vtkStructuredPoints; 00047 class vtkStructuredGrid; 00048 class vtkUnstructuredGrid; 00049 class vtkRectilinearGrid; 00050 00051 class VTK_GRAPHICS_EXPORT vtkProgrammableSource : public vtkDataSetAlgorithm 00052 { 00053 public: 00054 static vtkProgrammableSource *New(); 00055 vtkTypeRevisionMacro(vtkProgrammableSource,vtkDataSetAlgorithm); 00056 00059 void SetExecuteMethod(void (*f)(void *), void *arg); 00060 00062 void SetExecuteMethodArgDelete(void (*f)(void *)); 00063 00066 void SetRequestInformationMethod(void (*f)(void *)); 00067 00072 vtkPolyData *GetPolyDataOutput(); 00073 00075 vtkStructuredPoints *GetStructuredPointsOutput(); 00076 00078 vtkStructuredGrid *GetStructuredGridOutput(); 00079 00081 vtkUnstructuredGrid *GetUnstructuredGridOutput(); 00082 00084 vtkRectilinearGrid *GetRectilinearGridOutput(); 00085 00086 protected: 00087 vtkProgrammableSource(); 00088 ~vtkProgrammableSource(); 00089 00090 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00091 virtual int RequestDataObject(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00092 virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00093 00094 void (*ExecuteMethod)(void *); //function to invoke 00095 void (*ExecuteMethodArgDelete)(void *); 00096 void *ExecuteMethodArg; 00097 void (*RequestInformationMethod)(void *); // function to invoke 00098 00099 vtkTimeStamp ExecuteTime; 00100 int RequestedDataType; 00101 00102 private: 00103 vtkProgrammableSource(const vtkProgrammableSource&); // Not implemented. 00104 void operator=(const vtkProgrammableSource&); // Not implemented. 00105 }; 00106 00107 #endif 00108