]> Creatis software - bbtk.git/blob - packages/itk/src/bbitkAnyImageToTypedImage.h
*** empty log message ***
[bbtk.git] / packages / itk / src / bbitkAnyImageToTypedImage.h
1 #ifdef _USE_ITK_
2
3 #ifndef __bbitkAnyImageToTypedImage_h_INCLUDED__
4 #define __bbitkAnyImageToTypedImage_h_INCLUDED__
5
6 #include "bbtkAtomicBlackBox.h"
7 #include "bbitkImage.h"
8
9 namespace bbitk
10 {
11
12   //=================================================================
13   // BlackBox declaration
14   template <class itkImageTypePointer>
15   class AnyImageToTypedImage : public bbtk::AtomicBlackBox
16   {  
17     BBTK_USER_BLACK_BOX_INTERFACE(AnyImageToTypedImage,
18                                   bbtk::AtomicBlackBox);
19     BBTK_DECLARE_INPUT(In,anyImagePointer);
20     BBTK_DECLARE_OUTPUT(Out,itkImageTypePointer);
21     BBTK_PROCESS(DoIt);
22     void DoIt();
23   };
24   //=================================================================
25   
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   //=================================================================
44   
45   //=================================================================
46   template <class itkImageTypePointer>
47   void AnyImageToTypedImage<itkImageTypePointer>::DoIt()
48   {
49     if ( bbGetInputIn().type() == typeid(itkImageTypePointer) )
50       {
51         bbSetOutputOut ( bbGetInputIn().template unsafe_get < itkImageTypePointer >() );
52       }
53     else 
54       {
55         bbtkError(this->bbGetFullName()<<+" : transform of <"
56                   <<bbtk::TypeName(bbGetInputIn().type())<<"> into <"
57                   <<bbtk::TypeName<itkImageTypePointer>()<<"> not implemented");
58       }
59   }
60   //=================================================================
61
62   //=================================================================
63   // BlackBox declaration
64   template <class itkImageTypePointer, class itkImageTypeConstPointer>
65   class AnyImageToConstTypedImage : public bbtk::AtomicBlackBox
66   {  
67     BBTK_USER_BLACK_BOX_INTERFACE(AnyImageToConstTypedImage,
68                                   bbtk::AtomicBlackBox);
69     BBTK_DECLARE_INPUT(In,anyImagePointer);
70     BBTK_DECLARE_OUTPUT(Out,itkImageTypeConstPointer);
71     BBTK_PROCESS(DoIt);
72     void DoIt();
73   };
74   //=================================================================
75   
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   //=================================================================
94   
95   //=================================================================
96   template <class itkImageTypePointer, class itkImageTypeConstPointer>
97   void AnyImageToConstTypedImage<itkImageTypePointer,
98                                   itkImageTypeConstPointer>::DoIt()
99   {
100     if ( bbGetInputIn().type() == typeid(itkImageTypeConstPointer) )
101       {
102         bbSetOutputOut ( bbGetInputIn().template unsafe_get < itkImageTypeConstPointer >() );
103       }
104     else if ( bbGetInputIn().type() == typeid(itkImageTypePointer) )
105       {
106         bbSetOutputOut ( bbGetInputIn().template unsafe_get < itkImageTypePointer >() );
107       }
108     else 
109       {
110         bbtkError(this->bbGetFullName()<<+" : transform of <"
111                   <<bbtk::TypeName(bbGetInputIn().type())<<"> into <"
112                   <<bbtk::TypeName<itkImageTypeConstPointer>()<<"> not implemented");
113       }
114   }
115   //=================================================================
116
117
118 }
119 #endif
120 #endif