forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkProgrammableDataObjectSource.h
86 lines (72 loc) · 3.36 KB
/
vtkProgrammableDataObjectSource.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*=========================================================================
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.,
* Tcl or 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 "vtkFiltersSourcesModule.h" // For export macro
#include "vtkDataObjectAlgorithm.h"
class VTKFILTERSSOURCES_EXPORT vtkProgrammableDataObjectSource : public vtkDataObjectAlgorithm
{
public:
static vtkProgrammableDataObjectSource *New();
vtkTypeMacro(vtkProgrammableDataObjectSource,vtkDataObjectAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) VTK_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() VTK_OVERRIDE;
int RequestData(vtkInformation *, vtkInformationVector **,
vtkInformationVector *) VTK_OVERRIDE;
ProgrammableMethodCallbackType ExecuteMethod; //function to invoke
ProgrammableMethodCallbackType ExecuteMethodArgDelete;
void *ExecuteMethodArg;
private:
vtkProgrammableDataObjectSource(const vtkProgrammableDataObjectSource&) VTK_DELETE_FUNCTION;
void operator=(const vtkProgrammableDataObjectSource&) VTK_DELETE_FUNCTION;
};
#endif