X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkCommon.cxx;h=fa1c5950b7408df5bea2c860bc65f04f855b29b2;hb=e0bfd8dc8b4063f757b7f3858d7c1efeadc17561;hp=c80c095a06da0a295f5613cffcb206d947495029;hpb=0350f04002063f12dcf10ee765f5389590f352e7;p=clitk.git diff --git a/common/clitkCommon.cxx b/common/clitkCommon.cxx index c80c095..fa1c595 100644 --- a/common/clitkCommon.cxx +++ b/common/clitkCommon.cxx @@ -1,31 +1,28 @@ -/*------------------------------------------------------------------------- - - 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. - - 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. - --------------------------------------------------------------------------*/ +/*========================================================================= + 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 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_CXX #define CLITKCOMMON_CXX -/** - ------------------------------------------------- - * @file clitkCommon.cxx - * @author David Sarrut - * @date 17 May 2006 07:59:06 - * - * @brief - * - * - -------------------------------------------------*/ - #include "clitkCommon.h" #include +#include +#include //------------------------------------------------------------------ // skip line which begin with a sharp '#' @@ -71,32 +68,17 @@ std::string clitk::GetExtension(const std::string& filename) // Display progression void clitk::VerboseInProgress(const int nb, const int current, const int percentage) { -int stage = current; - int number_of_stages = nb; - - static int exp = -1; - int prec = 4; - int p = (int)(stage*pow(10.0,prec)*1./number_of_stages); - if (p==exp) return; - exp = p; - float s = p * 100. / pow(10.0,prec); - char fmt[128]; - sprintf(fmt,"%%%i.%if%%%%",prec<4?prec:prec+1,prec>3?prec-3:0); - char ch[128]; - - snprintf(ch,2,fmt,s); - //sxsVSCU_MESSAGE(2,ch); - std::cout << ch << std::flush; - for (int i=0;i<(prec>3?prec+2:prec+1);++i) - std::cout << "\b" << std::flush;//sxsVSCU_MESSAGE(2,"\b"); + static int previous = -1; + const int rounded = (100*current)/nb; + if (previous==rounded) return; + previous = rounded; - /* + std::ostringstream oss; + oss << std::setw(4) << rounded << '%'; - if ((current % (nb/percentage)) == 0) { - std::cout.width(15); - std::cout << "\r" << current << "/" << nb << std::flush; - } - */ + std::cout << oss.str() << std::flush; + for (unsigned int i=0; i3?prec-3:0); - char ch[128]; - - snprintf(ch,2,fmt,s); - //sxsVSCU_MESSAGE(2,ch); - std::cout << ch << std::flush; - for (int i=0;i<(prec>3?prec+2:prec+1);++i) - std::cout << "\b" << std::flush;//sxsVSCU_MESSAGE(2,"\b"); - - /* - if (nb/percentage != 0) { - if ((current % (nb/percentage)) == 0) { - std::cout.width(2); - std::cout << "\r" << (nb/current)*100 << "/100% " << std::flush; - } - } - */ + VerboseInProgress(nb, current, percentage); } //------------------------------------------------------------------ @@ -313,5 +269,21 @@ void clitk::enableStdCerr() { } //-------------------------------------------------------------------- + +//-------------------------------------------------------------------- +void clitk::readDoubleFromFile(const std::string & filename, std::vector & list) { + std::ifstream is; + clitk::openFileForReading(is, filename); + list.clear(); + while (is) { + clitk::skipComment(is); + double d; + is >> d; + if (is) list.push_back(d); + } +} +//-------------------------------------------------------------------- + + #endif /* end #define CLITKCOMMON_CXX */