X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkCommon.txx;h=c2e9a4ae3f92acca36287309d416971cc3a1e574;hb=03c0a567e50d4b3dcdee11112b0a404789468857;hp=bb4508a91a1866f81feed5dd9d8195096fbe0765;hpb=34490f432219fe05c7ae19c4cf012b5529d784dc;p=clitk.git diff --git a/common/clitkCommon.txx b/common/clitkCommon.txx index bb4508a9..c2e9a4a 100644 --- a/common/clitkCommon.txx +++ b/common/clitkCommon.txx @@ -1,30 +1,35 @@ -/*------------------------------------------------------------------------- - - Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de - l'Image). All rights reserved. See Doc/License.txt or - http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details. - +/*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv + + Authors belong to: + - University of LYON http://www.universite-lyon.fr/ + - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr + This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - - -------------------------------------------------------------------------*/ + PURPOSE. See the copyright notices for more information. + It is distributed under dual licence + + - BSD See included LICENSE.txt file + - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +======================================================================-====*/ #ifndef CLITKCOMMON_TXX #define CLITKCOMMON_TXX - /** ------------------------------------------------- * @file clitkCommon.txx * @author David Sarrut * @date 18 May 2006 - * + * -------------------------------------------------*/ //-------------------------------------------------------------------- // Convert float, double ... to string template -std::string toString(const T & t) { +std::string toString(const T & t) +{ std::ostringstream myStream; myStream << t << std::flush; return(myStream.str()); @@ -34,7 +39,8 @@ std::string toString(const T & t) { //-------------------------------------------------------------------- // Convert float*, double* ... to string template -std::string toStringVector(const T * t, const int n) { +std::string toStringVector(const T * t, const int n) +{ std::ostringstream myStream; for(int i=0; i(t[i]) << " "; @@ -46,7 +52,8 @@ std::string toStringVector(const T * t, const int n) { //-------------------------------------------------------------------- // Convert float*, double* ... to string template -std::string toStringVector(const T & t, const int n) { +std::string toStringVector(const T & t, const int n) +{ std::ostringstream myStream; for(int i=0; i -std::string toStringVector(const std::vector & t) { +std::string toStringVector(const std::vector & t) +{ return toStringVector(&t[0], t.size()); } //-------------------------------------------------------------------- @@ -66,7 +74,8 @@ std::string toStringVector(const std::vector & t) { //-------------------------------------------------------------------- // Convert a pixel type to another (downcast) template -TPixelDown PixelTypeDownCast(const TPixelUp & x) { +TPixelDown PixelTypeDownCast(const TPixelUp & x) +{ return (TPixelDown)lrint(x); } //-------------------------------------------------------------------- @@ -75,7 +84,7 @@ TPixelDown PixelTypeDownCast(const TPixelUp & x) { template struct vectorComparisonLowerThan: public std::binary_function { vectorComparisonLowerThan(const std::vector & v):vect(v) {}; - bool operator()(int x, int y) { + bool operator()(int x, int y) { return (vect[x] < vect[y]); } const std::vector & vect; @@ -86,7 +95,7 @@ struct vectorComparisonLowerThan: public std::binary_function { template struct vectorComparisonGreaterThan: public std::binary_function { vectorComparisonGreaterThan(const std::vector & v):vect(v) {}; - bool operator()(int x, int y) { + bool operator()(int x, int y) { return (vect[x] > vect[y]); } const std::vector & vect; @@ -95,23 +104,28 @@ struct vectorComparisonGreaterThan: public std::binary_function //-------------------------------------------------------------------- template -void GetSortedIndex(const std::vector & toSort, std::vector & index, bool increasing) { - index.resize(toSort.size()); +void GetSortedIndex(const std::vector & toSort, std::vector & index, bool increasing) +{ + index.resize(toSort.size()); for(unsigned int i=0; i(toSort)); - else - std::sort(index.begin(), - index.end(), - vectorComparisonGreaterThan(toSort)); + if (increasing) + std::sort(index.begin(), + index.end(), + vectorComparisonLowerThan(toSort)); + else + std::sort(index.begin(), + index.end(), + vectorComparisonGreaterThan(toSort)); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- template -std::string GetTypeAsString() { +std::string GetTypeAsString() +{ + // http://www.vtk.org/doc/release/3/html/vtkSetGet_8h-source.html + // and + // itkImageIOBase.cxx const std::type_info & PixType = typeid(TPixel); std::string pixelName; if (PixType == typeid(char)) pixelName = "char"; // 'plain" char is different from signed char and unsigned char ... @@ -130,17 +144,18 @@ std::string GetTypeAsString() { //-------------------------------------------------------------------- template -void CloneImage(const typename ImageType::Pointer & input, typename ImageType::Pointer & output) { +void CloneImage(const typename ImageType::Pointer & input, typename ImageType::Pointer & output) +{ output->SetRegions(input->GetLargestPossibleRegion()); output->SetOrigin(input->GetOrigin()); output->SetSpacing(input->GetSpacing()); output->Allocate(); - typedef itk::ImageRegionConstIterator ConstIteratorType; + typedef itk::ImageRegionConstIterator ConstIteratorType; ConstIteratorType pi(input,input->GetLargestPossibleRegion()); - pi.GoToBegin(); - typedef itk::ImageRegionIterator IteratorType; + pi.GoToBegin(); + typedef itk::ImageRegionIterator IteratorType; IteratorType po(output,input->GetLargestPossibleRegion()); - po.GoToBegin(); + po.GoToBegin(); while (!pi.IsAtEnd()) { po.Set(pi.Get()); ++pi;