]> Creatis software - bbtk.git/blob - packages/itk/src/bbitkImageWriter.cxx
=== MAJOR RELEASE ====
[bbtk.git] / packages / itk / src / bbitkImageWriter.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   bbtk
4   Module:    $RCSfile: bbitkImageWriter.cxx,v $
5   Language:  C++
6   Date:      $Date: 2008/04/18 12:59:50 $
7   Version:   $Revision: 1.3 $
8                                                                                 
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.
12                                                                                 
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.
16                                                                                 
17 =========================================================================*/
18 /**
19  *  \file 
20  *  \brief 
21  */
22 #ifdef _USE_ITK_
23
24 #include "bbitkImageWriter.h"
25 #include "bbitkPackage.h"
26 #include "itkImageFileWriter.h"
27
28 namespace bbitk 
29 {
30   BBTK_BLACK_BOX_IMPLEMENTATION(ImageWriter,bbtk::AtomicBlackBox);
31
32   BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageWriter);
33
34
35
36
37   void ImageWriter::Write()
38   {
39     BBTK_TEMPLATE_ITK_IMAGE_SWITCH(bbGetInputIn().type(),Write);
40   }
41
42
43
44   /** 
45       Template Processing 
46   */
47   template<class itkImageType>
48   void ImageWriter::Write()
49   {
50     bbtkDebugMessageInc("Core",9,"bbitk::ImageWriter::Write<"
51                         <<bbtk::TypeName<itkImageType>()
52                         <<">()"<<std::endl);
53
54     typedef itk::ImageFileWriter< itkImageType > itkWriterType;
55     typename itkWriterType::Pointer writer = itkWriterType::New();
56     writer->SetInput(bbGetInputIn().unsafe_get<const itkImageType*>());
57     writer->SetFileName(bbGetInputFilename().c_str());
58
59     try { writer->Update(); }
60     catch( std::exception & e ) 
61       {
62         bbtkError("could not write image \""<< bbGetInputFilename() 
63                   << "\" : "<<e.what());
64       }
65
66     bbtkDebugDecTab("Core",9);
67   }
68
69
70
71
72
73
74 }
75 // eo namespace bbtk
76
77 #endif