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