]> Creatis software - clitk.git/blobdiff - common/clitkCommon.cxx
fix the remaining things for release. The fix for resample is just a hack, should...
[clitk.git] / common / clitkCommon.cxx
index fdfdd17887e504d095a55ee41c57258f5aa02a85..fa1c5950b7408df5bea2c860bc65f04f855b29b2 100644 (file)
@@ -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 <david.sarrut@creatis.insa-lyon.fr>
-   * @date   17 May 2006 07:59:06
-   * 
-   * @brief  
-   * 
-   * 
-   -------------------------------------------------*/
-
 #include "clitkCommon.h"
 #include <fstream>
+#include <iomanip>
+#include <sstream>
 
 //------------------------------------------------------------------
 // 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; i<oss.str().length(); ++i) 
+       std::cout << "\b" << std::flush;
 }
 //------------------------------------------------------------------
 
@@ -104,33 +86,7 @@ int stage = current;
 // Display progression
 void clitk::VerboseInProgressInPercentage(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");
-
-  /*
-  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<double> & 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 */