1 /*=========================================================================
4 Module: $RCSfile: bbtkVtkBlackBoxMacros.h,v $
6 Date: $Date: 2008/05/07 07:26:50 $
7 Version: $Revision: 1.2 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
22 * \brief Defines macros for the creation of vtk object inherited black boxes
24 #ifndef __bbtkVtkBlackBoxMacros_h__
25 #define __bbtkVtkBlackBoxMacros_h__
27 //===========================================================================
28 //============================================================================
29 // VTK Specific macros
30 //===========================================================================
31 //===========================================================================
34 //===========================================================================
35 #define BBTK_VTK_DELETE() \
37 vtkParent::Delete(); }
39 #define BBTK_VTK_BLACK_BOX_INTERFACE(CLASS,PARENTBLACKBOX,VTKPARENT) \
40 BBTK_BLACK_BOX_INTERFACE(CLASS,PARENTBLACKBOX); \
41 typedef VTKPARENT vtkParent; \
44 /// Declares a vtkImageAlgorithm-inherited AtomicBlackBox input
45 #define BBTK_DECLARE_VTK_IMAGE_ALGORITHM_INPUT(NAME,TYPE) \
47 TYPE bbGetInput##NAME () \
48 { return GetImageDataInput(0); /*vtkParent::GetInput();*/ } \
49 void bbSetInput##NAME (TYPE d) \
50 { vtkParent::SetInput( (vtkDataObject*) d); \
51 /*bbSetModifiedStatus();*/ }
52 //===========================================================================
53 /// Declares a vtkPolyDataAlgorithm-inherited AtomicBlackBox input
54 #define BBTK_DECLARE_VTK_POLY_DATA_ALGORITHM_INPUT(NAME,TYPE) \
56 TYPE bbGetInput##NAME () \
57 { return GetPolyDataInput(0); /*vtkParent::GetInput();*/ } \
58 void bbSetInput##NAME (TYPE d) \
59 { vtkParent::SetInput( (vtkDataObject*) d); \
60 /*bbSetModifiedStatus();*/ }
61 //===========================================================================
63 //===========================================================================
64 /// Declares a vtkImageAlgorithm-inherited AtomicBlackBox output
65 #define BBTK_DECLARE_VTK_OUTPUT(NAME,TYPE) \
67 TYPE bbGetOutput##NAME () \
68 { return vtkParent::GetOutput(); } \
69 void bbSetOutput##NAME (TYPE d) \
70 { /*vtkParent::GetOutput() = d;*/ }
71 //===========================================================================
73 //===========================================================================
74 /// Declares a vtkAlgorithm-inherited AtomicBlackBox input
75 #define BBTK_DECLARE_VTK_INPUT(NAME,TYPE) \
77 TYPE bbGetInput##NAME () \
78 { return dynamic_cast<TYPE>(vtkParent::GetInput()); } \
79 void bbSetInput##NAME (TYPE d) \
80 { vtkParent::SetInput( (vtkDataObject*) d); /*vtkParent::GetOutput() = d;*/ }
82 //===========================================================================
84 //===========================================================================
85 /// Declares an AtomicBlackBox input corresponding to an
86 /// inherited vtk parameter
87 /// which was declared by vtkSetMacro/vtkGetMacro
88 /// The NAME **MUST** be the same than the vtk parameter name
89 #define BBTK_DECLARE_VTK_PARAM(NAME,TYPE) \
91 TYPE bbGetInput##NAME () \
92 { return vtkParent::Get##NAME(); } \
93 void bbSetInput##NAME (TYPE d) \
94 { vtkParent::Set##NAME(d); \
95 /*bbSetModifiedStatus();*/ }
96 //===========================================================================
100 //============================================================================
101 /// Defines the default bbUserProcess method for vtk inherited black boxes
102 /// (calls vtkParent::Update)
103 #define BBTK_VTK_PROCESS() \
105 inline void bbUserProcess() \
107 bbtkDebugMessage("process",1,"**> Processing ["<<bbGetFullName() \
109 vtkParent::Update(); \
110 bbGetOutputOut()->SetSource(NULL); \
111 bbtkDebugMessage("process",2,"<** Processing ["<<bbGetFullName() \
114 //============================================================================
117 //===========================================================================
119 //===========================================================================