3 #include "bbitkImageRegion.h"
4 #include "bbitkPackage.h"
9 BBTK_BLACK_BOX_IMPLEMENTATION(ImageRegionCreator,
10 bbtk::AtomicBlackBox);
12 BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageRegionCreator);
15 void ImageRegionCreator::DoIt()
17 const std::vector<long>& index = bbGetInputIndex();
18 const std::vector<long>& size = bbGetInputSize();
19 // std::cout<< "isize="<<index.size()<<std::endl;
20 // std::cout<< "ssize="<<size.size()<<std::endl;
21 unsigned long maxs = index.size() > size.size() ? index.size() : size.size();
24 case 2 : DoIt<2>(); break;
25 case 3 : DoIt<3>(); break;
26 case 4 : DoIt<4>(); break;
27 default : bbtkError("ImageRegionCreator : cannot build a region of dimension "<<maxs);
33 template <unsigned int Dimension>
34 void ImageRegionCreator::DoIt()
36 std::vector<long> index = bbGetInputIndex();
37 std::vector<long> size = bbGetInputSize();
38 // std::cout<< "isize="<<index.size()<<std::endl;
39 // std::cout<< "ssize="<<size.size()<<std::endl;
41 int ds = index.size() - size.size();
44 for (int i=0;i<-ds;++i)
49 for (int i=0;i<ds;++i) size.push_back(0);
52 typename itk::ImageRegion<Dimension>::IndexType I;
53 typename itk::ImageRegion<Dimension>::SizeType S;
55 std::vector<long>::const_iterator ii,si;
57 for (ii=index.begin(), si=size.begin();
58 ii!=index.end(); ++ii, ++si, ++d)
62 // std::cout << "o="<<*ii<<" d="<<*si<<std::endl;
66 bbSetOutputOut ( itk::ImageRegion<Dimension>(I,S) );