You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.3 KiB
C
87 lines
3.3 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkProgrammableDataObjectSource.h
|
||
|
|
||
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||
|
All rights reserved.
|
||
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||
|
|
||
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
||
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
PURPOSE. See the above copyright notice for more information.
|
||
|
|
||
|
=========================================================================*/
|
||
|
/**
|
||
|
* @class vtkProgrammableDataObjectSource
|
||
|
* @brief generate source data object via a user-specified function
|
||
|
*
|
||
|
* vtkProgrammableDataObjectSource is a source object that is programmable by
|
||
|
* the user. The output of the filter is a data object (vtkDataObject) which
|
||
|
* represents data via an instance of field data. To use this object, you
|
||
|
* must specify a function that creates the output.
|
||
|
*
|
||
|
* Example use of this filter includes reading tabular data and encoding it
|
||
|
* as vtkFieldData. You can then use filters like vtkDataObjectToDataSetFilter
|
||
|
* to convert the data object to a dataset and then visualize it. Another
|
||
|
* important use of this class is that it allows users of interpreters (e.g.,
|
||
|
* Java) the ability to write source objects without having to
|
||
|
* recompile C++ code or generate new libraries.
|
||
|
*
|
||
|
* @sa
|
||
|
* vtkProgrammableFilter vtkProgrammableAttributeDataFilter
|
||
|
* vtkProgrammableSource vtkDataObjectToDataSetFilter
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkProgrammableDataObjectSource_h
|
||
|
#define vtkProgrammableDataObjectSource_h
|
||
|
|
||
|
#include "vtkDataObjectAlgorithm.h"
|
||
|
#include "vtkFiltersSourcesModule.h" // For export macro
|
||
|
|
||
|
class VTKFILTERSSOURCES_EXPORT vtkProgrammableDataObjectSource : public vtkDataObjectAlgorithm
|
||
|
{
|
||
|
public:
|
||
|
static vtkProgrammableDataObjectSource* New();
|
||
|
vtkTypeMacro(vtkProgrammableDataObjectSource, vtkDataObjectAlgorithm);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
/**
|
||
|
* Signature definition for programmable method callbacks. Methods passed to
|
||
|
* SetExecuteMethod or SetExecuteMethodArgDelete must conform to this
|
||
|
* signature.
|
||
|
* The presence of this typedef is useful for reference and for external
|
||
|
* analysis tools, but it cannot be used in the method signatures in these
|
||
|
* header files themselves because it prevents the internal VTK wrapper
|
||
|
* generators from wrapping these methods.
|
||
|
*/
|
||
|
typedef void (*ProgrammableMethodCallbackType)(void* arg);
|
||
|
|
||
|
/**
|
||
|
* Specify the function to use to generate the output data object. Note
|
||
|
* that the function takes a single (void *) argument.
|
||
|
*/
|
||
|
void SetExecuteMethod(void (*f)(void*), void* arg);
|
||
|
|
||
|
/**
|
||
|
* Set the arg delete method. This is used to free user memory.
|
||
|
*/
|
||
|
void SetExecuteMethodArgDelete(void (*f)(void*));
|
||
|
|
||
|
protected:
|
||
|
vtkProgrammableDataObjectSource();
|
||
|
~vtkProgrammableDataObjectSource() override;
|
||
|
|
||
|
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
||
|
|
||
|
ProgrammableMethodCallbackType ExecuteMethod; // function to invoke
|
||
|
ProgrammableMethodCallbackType ExecuteMethodArgDelete;
|
||
|
void* ExecuteMethodArg;
|
||
|
|
||
|
private:
|
||
|
vtkProgrammableDataObjectSource(const vtkProgrammableDataObjectSource&) = delete;
|
||
|
void operator=(const vtkProgrammableDataObjectSource&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif
|