3 #ifndef __bbitkAnyImageToTypedImage_h_INCLUDED__
4 #define __bbitkAnyImageToTypedImage_h_INCLUDED__
6 #include "bbtkAtomicBlackBox.h"
7 #include "bbitkImage.h"
12 //=================================================================
13 // BlackBox declaration
14 template <class itkImageTypePointer>
15 class AnyImageToTypedImage : public bbtk::AtomicBlackBox
17 BBTK_USER_BLACK_BOX_INTERFACE(AnyImageToTypedImage,
18 bbtk::AtomicBlackBox);
19 BBTK_DECLARE_INPUT(In,anyImagePointer);
20 BBTK_DECLARE_OUTPUT(Out,itkImageTypePointer);
24 //=================================================================
26 //=================================================================
27 // BlackBox description
28 BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(AnyImageToTypedImage);
29 BBTK_NAME(bbtk::HumanTypeName<anyImagePointer>() + "To"
30 +bbtk::HumanTypeName<T>());
31 BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr");
32 BBTK_DESCRIPTION("Converts a generic itk image pointer ("+
33 bbtk::HumanTypeName<anyImagePointer>()+
34 ") into a typed itk image pointer ("+
35 bbtk::HumanTypeName<T>()+")");
36 BBTK_DEFAULT_ADAPTOR();
37 BBTK_CATEGORY("adaptor");
38 BBTK_TEMPLATE_INPUT(AnyImageToTypedImage,In,
39 "Input generic image pointer",anyImagePointer);
40 BBTK_TEMPLATE_OUTPUT(AnyImageToTypedImage,Out,
41 "Output typed image pointer",T);
42 BBTK_END_DESCRIBE_TEMPLATE_BLACK_BOX(AnyImageToTypedImage);
43 //=================================================================
45 //=================================================================
46 template <class itkImageTypePointer>
47 void AnyImageToTypedImage<itkImageTypePointer>::DoIt()
49 if ( bbGetInputIn().type() == typeid(itkImageTypePointer) )
51 bbSetOutputOut ( bbGetInputIn().template unsafe_get < itkImageTypePointer >() );
55 bbtkError(this->bbGetFullName()<<+" : transform of <"
56 <<bbtk::TypeName(bbGetInputIn().type())<<"> into <"
57 <<bbtk::TypeName<itkImageTypePointer>()<<"> not implemented");
60 //=================================================================
62 //=================================================================
63 // BlackBox declaration
64 template <class itkImageTypePointer, class itkImageTypeConstPointer>
65 class AnyImageToConstTypedImage : public bbtk::AtomicBlackBox
67 BBTK_USER_BLACK_BOX_INTERFACE(AnyImageToConstTypedImage,
68 bbtk::AtomicBlackBox);
69 BBTK_DECLARE_INPUT(In,anyImagePointer);
70 BBTK_DECLARE_OUTPUT(Out,itkImageTypeConstPointer);
74 //=================================================================
76 //=================================================================
77 // BlackBox description
78 BBTK_BEGIN_DESCRIBE_TEMPLATE2_BLACK_BOX(AnyImageToConstTypedImage);
79 BBTK_NAME(bbtk::HumanTypeName<anyImagePointer>() + "To" +
80 bbtk::HumanTypeName<T2>());
81 BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr");
82 BBTK_DESCRIPTION("Converts a generic itk image pointer ("+
83 bbtk::HumanTypeName<anyImagePointer>()+
84 ") into a const typed itk image pointer ("+
85 bbtk::HumanTypeName<T2>()+")");
86 BBTK_CATEGORY("adaptor");
87 BBTK_DEFAULT_ADAPTOR();
88 BBTK_TEMPLATE2_INPUT(AnyImageToConstTypedImage,In,
89 "Input generic image pointer",anyImagePointer);
90 BBTK_TEMPLATE2_OUTPUT(AnyImageToConstTypedImage,Out,
91 "Output const typed image pointer",T2);
92 BBTK_END_DESCRIBE_TEMPLATE2_BLACK_BOX(AnyImageToConstTypedImage);
93 //=================================================================
95 //=================================================================
96 template <class itkImageTypePointer, class itkImageTypeConstPointer>
97 void AnyImageToConstTypedImage<itkImageTypePointer,
98 itkImageTypeConstPointer>::DoIt()
100 if ( bbGetInputIn().type() == typeid(itkImageTypeConstPointer) )
102 bbSetOutputOut ( bbGetInputIn().template unsafe_get < itkImageTypeConstPointer >() );
104 else if ( bbGetInputIn().type() == typeid(itkImageTypePointer) )
106 bbSetOutputOut ( bbGetInputIn().template unsafe_get < itkImageTypePointer >() );
110 bbtkError(this->bbGetFullName()<<+" : transform of <"
111 <<bbtk::TypeName(bbGetInputIn().type())<<"> into <"
112 <<bbtk::TypeName<itkImageTypeConstPointer>()<<"> not implemented");
115 //=================================================================