VTK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkProgrammableAttributeDataFilter Class Reference

manipulate attribute (cell and point) data via a user-specified function More...

#include <vtkProgrammableAttributeDataFilter.h>

Inherits vtkDataSetAlgorithm.

Public Types

typedef vtkDataSetAlgorithm Superclass
 
typedef void(* ProgrammableMethodCallbackType )(void *arg)
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkProgrammableAttributeDataFilterNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
void AddInput (vtkDataSet *in)
 
void RemoveInput (vtkDataSet *in)
 
vtkDataSetCollection * GetInputList ()
 
void SetExecuteMethod (void(*f)(void *), void *arg)
 
void SetExecuteMethodArgDelete (void(*f)(void *))
 

Static Public Member Functions

static
vtkProgrammableAttributeDataFilter
New ()
 
static int IsTypeOf (const char *type)
 
static
vtkProgrammableAttributeDataFilter
SafeDownCast (vtkObjectBase *o)
 

Protected Member Functions

virtual vtkObjectBase * NewInstanceInternal () const
 
 vtkProgrammableAttributeDataFilter ()
 
 ~vtkProgrammableAttributeDataFilter ()
 
int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
virtual void ReportReferences (vtkGarbageCollector *)
 

Protected Attributes

vtkDataSetCollection * InputList
 
ProgrammableMethodCallbackType ExecuteMethod
 
ProgrammableMethodCallbackType ExecuteMethodArgDelete
 
void * ExecuteMethodArg
 

Detailed Description

manipulate attribute (cell and point) data via a user-specified function

vtkProgrammableAttributeDataFilter is a filter that allows you to write a custom procedure to manipulate attribute data - either point or cell data. For example, you could generate scalars based on a complex formula; convert vectors to normals; compute scalar values as a function of vectors, texture coords, and/or any other point data attribute; and so on. The filter takes multiple inputs (input plus an auxiliary input list), so you can write procedures that combine several dataset point attributes. Note that the output of the filter is the same type (topology/geometry) as the input.

The filter works as follows. It operates like any other filter (i.e., checking and managing modified and execution times, processing Update() and Execute() methods, managing release of data, etc.), but the difference is that the Execute() method simply invokes a user-specified function with an optional (void *) argument (typically the "this" pointer in C++). It is also possible to specify a function to delete the argument via ExecuteMethodArgDelete().

To use the filter, you write a procedure to process the input datasets, process the data, and generate output data. Typically, this means grabbing the input point or cell data (using GetInput() and maybe GetInputList()), operating on it (creating new point and cell attributes such as scalars, vectors, etc.), and then setting the point and/or cell attributes in the output dataset (you'll need to use GetOutput() to access the output). (Note: besides C++, it is possible to do the same thing in Tcl, Java, or other languages that wrap the C++ core.) Remember, proper filter protocol requires that you don't modify the input data - you create new output data from the input.

Warning
This filter operates on any combination of the filter input plus a list of additional inputs (at a minimum you must set the filter input via SetInput()). It is up to you check whether the input is valid, and to insure that the output is valid. Also, you have to write the control structure for the traversal and operation on the point and cell attribute data.
By default the output point and cell data will be copied through from the input point data (using reference counting). You can control this using the output's CopyAllOff() flag, or by using individual flags for each point data field (i.e., scalars, vectors, etc.)
The output of this filter is the abstract type vtkDataSet, even if your input is a concrete type like vtkPolyData. Thus you may need to use vtkCastToConcrete to obtain the output as a particular concrete type, or one of the special methods of the superclass (e.g., vtkDataSetAlgorithm::GetPolyDataOutput) to retrieve output of the correct type.
The filter correctly manages modified time and network execution in most cases. However, if you change the definition of the filter function, you'll want to send a manual Modified() method to the filter to force it to reexecute.
Tests:
vtkProgrammableAttributeDataFilter (Tests)

Definition at line 87 of file vtkProgrammableAttributeDataFilter.h.

Member Typedef Documentation

Definition at line 91 of file vtkProgrammableAttributeDataFilter.h.

typedef void(* vtkProgrammableAttributeDataFilter::ProgrammableMethodCallbackType)(void *arg)

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.

Definition at line 110 of file vtkProgrammableAttributeDataFilter.h.

Constructor & Destructor Documentation

vtkProgrammableAttributeDataFilter::vtkProgrammableAttributeDataFilter ( )
protected
vtkProgrammableAttributeDataFilter::~vtkProgrammableAttributeDataFilter ( )
protected

Member Function Documentation

static vtkProgrammableAttributeDataFilter* vtkProgrammableAttributeDataFilter::New ( )
static
static int vtkProgrammableAttributeDataFilter::IsTypeOf ( const char *  type)
static
virtual int vtkProgrammableAttributeDataFilter::IsA ( const char *  type)
virtual
static vtkProgrammableAttributeDataFilter* vtkProgrammableAttributeDataFilter::SafeDownCast ( vtkObjectBase *  o)
static
virtual vtkObjectBase* vtkProgrammableAttributeDataFilter::NewInstanceInternal ( ) const
protectedvirtual
vtkProgrammableAttributeDataFilter* vtkProgrammableAttributeDataFilter::NewInstance ( ) const
void vtkProgrammableAttributeDataFilter::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
void vtkProgrammableAttributeDataFilter::AddInput ( vtkDataSet *  in)

Add a dataset to the list of data to process.

void vtkProgrammableAttributeDataFilter::RemoveInput ( vtkDataSet *  in)

Remove a dataset from the list of data to process.

vtkDataSetCollection* vtkProgrammableAttributeDataFilter::GetInputList ( )
inline

Return the list of inputs.

Definition at line 101 of file vtkProgrammableAttributeDataFilter.h.

void vtkProgrammableAttributeDataFilter::SetExecuteMethod ( void(*)(void *)  f,
void *  arg 
)

Specify the function to use to operate on the point attribute data. Note that the function takes a single (void *) argument.

void vtkProgrammableAttributeDataFilter::SetExecuteMethodArgDelete ( void(*)(void *)  f)

Set the arg delete method. This is used to free user memory.

int vtkProgrammableAttributeDataFilter::RequestData ( vtkInformation *  ,
vtkInformationVector **  ,
vtkInformationVector *   
)
protected
virtual void vtkProgrammableAttributeDataFilter::ReportReferences ( vtkGarbageCollector *  )
protectedvirtual

Member Data Documentation

vtkDataSetCollection* vtkProgrammableAttributeDataFilter::InputList
protected

Definition at line 124 of file vtkProgrammableAttributeDataFilter.h.

ProgrammableMethodCallbackType vtkProgrammableAttributeDataFilter::ExecuteMethod
protected

Definition at line 125 of file vtkProgrammableAttributeDataFilter.h.

ProgrammableMethodCallbackType vtkProgrammableAttributeDataFilter::ExecuteMethodArgDelete
protected

Definition at line 126 of file vtkProgrammableAttributeDataFilter.h.

void* vtkProgrammableAttributeDataFilter::ExecuteMethodArg
protected

Definition at line 127 of file vtkProgrammableAttributeDataFilter.h.


The documentation for this class was generated from the following file: