X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkCommon.cxx;h=4ccceb2761da9eb8b70b64f8074983442b3e04e1;hb=058940b4508314ecc063b466f7da6f324a796826;hp=fdfdd17887e504d095a55ee41c57258f5aa02a85;hpb=c0544f5b35f5527ca67da10c3317f99981cfd416;p=clitk.git diff --git a/common/clitkCommon.cxx b/common/clitkCommon.cxx index fdfdd17..4ccceb2 100644 --- a/common/clitkCommon.cxx +++ b/common/clitkCommon.cxx @@ -26,6 +26,8 @@ #include "clitkCommon.h" #include +#include +#include //------------------------------------------------------------------ // skip line which begin with a sharp '#' @@ -71,32 +73,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 previous = -1; + const int rounded = (100*current)/nb; + if (previous==rounded) return; + previous = rounded; - 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"); - - /* + 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 (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); } //------------------------------------------------------------------