]> 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 "bbtkUserBlackBox.h"
7 #include "bbitkImage.h"
8
9 namespace bbitk
10 {
11
12   //=================================================================
13   // UserBlackBox declaration
14   template <class itkImageTypePointer>
15   class AnyImageToTypedImage : public bbtk::UserBlackBox
16   {  
17     BBTK_USER_BLACK_BOX_INTERFACE(AnyImageToTypedImage,
18                                   bbtk::UserBlackBox);
19     BBTK_DECLARE_INPUT(In,anyImagePointer);
20     BBTK_DECLARE_OUTPUT(Out,itkImageTypePointer);
21     BBTK_PROCESS(DoIt);
22     void DoIt();
23   };
24   //=================================================================
25   
26   //=================================================================
27   // UserBlackBox description
28   BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(AnyImageToTypedImage);
29   BBTK_NAME(bbtk::HumanTypeName<anyImagePointer>() + "To"+bbtk::HumanTypeName<T>());
30   BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr");
31   BBTK_DESCRIPTION("Transforms a generic itk image ("+
32                    bbtk::HumanTypeName<anyImagePointer>()+
33                    ") into a typed itk image ("+
34                    bbtk::HumanTypeName<T>()+"*)");
35   BBTK_DEFAULT_ADAPTOR();
36   BBTK_TEMPLATE_INPUT(AnyImageToTypedImage,In,
37                       "Input generic image",anyImagePointer);
38   BBTK_TEMPLATE_OUTPUT(AnyImageToTypedImage,Out,
39                         "Output typed image",T);
40   BBTK_END_DESCRIBE_TEMPLATE_BLACK_BOX(AnyImageToTypedImage);
41   //=================================================================
42   
43   //=================================================================
44   template <class itkImageTypePointer>
45   void AnyImageToTypedImage<itkImageTypePointer>::DoIt()
46   {
47     if ( bbGetInputIn().type() == typeid(itkImageTypePointer) )
48       {
49         bbSetOutputOut ( bbGetInputIn().template unsafe_get < itkImageTypePointer >() );
50       }
51     else 
52       {
53         bbtkError(this->bbGetFullName()<<+" : transform of <"
54                   <<bbtk::TypeName(bbGetInputIn().type())<<"> into <"
55                   <<bbtk::TypeName<itkImageTypePointer>()<<"> not implemented");
56       }
57   }
58   //=================================================================
59
60   //=================================================================
61   // UserBlackBox declaration
62   template <class itkImageTypePointer, class itkImageTypeConstPointer>
63   class AnyImageToConstTypedImage : public bbtk::UserBlackBox
64   {  
65     BBTK_USER_BLACK_BOX_INTERFACE(AnyImageToConstTypedImage,
66                                   bbtk::UserBlackBox);
67     BBTK_DECLARE_INPUT(In,anyImagePointer);
68     BBTK_DECLARE_OUTPUT(Out,itkImageTypeConstPointer);
69     BBTK_PROCESS(DoIt);
70     void DoIt();
71   };
72   //=================================================================
73   
74   //=================================================================
75   // UserBlackBox description
76   BBTK_BEGIN_DESCRIBE_TEMPLATE2_BLACK_BOX(AnyImageToConstTypedImage);
77   BBTK_NAME("Convert<"+bbtk::TypeName<anyImagePointer>() + "," +
78             bbtk::TypeName<T2>()+">");
79   BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr");
80   BBTK_DESCRIPTION("Transforms a generic itk image ("+
81                    bbtk::TypeName<anyImagePointer>()+
82                    ") into a typed itk image ("+
83                    bbtk::TypeName<T2>()+"*)");
84   BBTK_DEFAULT_ADAPTOR();
85   BBTK_TEMPLATE2_INPUT(AnyImageToConstTypedImage,In,
86                       "Input generic image",anyImagePointer);
87   BBTK_TEMPLATE2_OUTPUT(AnyImageToConstTypedImage,Out,
88                         "Output typed image",T2);
89   BBTK_END_DESCRIBE_TEMPLATE2_BLACK_BOX(AnyImageToConstTypedImage);
90   //=================================================================
91   
92   //=================================================================
93   template <class itkImageTypePointer, class itkImageTypeConstPointer>
94   void AnyImageToConstTypedImage<itkImageTypePointer,
95                                   itkImageTypeConstPointer>::DoIt()
96   {
97     if ( bbGetInputIn().type() == typeid(itkImageTypeConstPointer) )
98       {
99         bbSetOutputOut ( bbGetInputIn().template unsafe_get < itkImageTypeConstPointer >() );
100       }
101     else if ( bbGetInputIn().type() == typeid(itkImageTypePointer) )
102       {
103         bbSetOutputOut ( bbGetInputIn().template unsafe_get < itkImageTypePointer >() );
104       }
105     else 
106       {
107         bbtkError(this->bbGetFullName()<<+" : transform of <"
108                   <<bbtk::TypeName(bbGetInputIn().type())<<"> into <"
109                   <<bbtk::TypeName<itkImageTypeConstPointer>()<<"> not implemented");
110       }
111   }
112   //=================================================================
113
114
115 }
116 #endif
117 #endif