Index: /trunk/SophyaPI/PIext/phistwrapper.h
===================================================================
--- /trunk/SophyaPI/PIext/phistwrapper.h	(revision 3131)
+++ /trunk/SophyaPI/PIext/phistwrapper.h	(revision 3132)
@@ -12,8 +12,10 @@
 
 //! Wrapper class interface for 1d-histogram like objects , used by PIHisto
+// methodes par defaut dans pihisto.cc
 class P1DHistoWrapper 
 {
 public:
-  virtual ~P1DHistoWrapper() { }
+  P1DHistoWrapper();
+  virtual ~P1DHistoWrapper(); 
 
   virtual int_4 NBins() = 0; 
@@ -27,7 +29,8 @@
 
   // Renvoie contenu du bin i
-  virtual r_8 operator()(int_4 i) = 0;
+  virtual r_8 Value(int_4 i) = 0;
   virtual r_8 Error(int_4 i) = 0;
 
+  inline  r_8 operator()(int_4 i) { return ( Value(i)*mScale+mOff ); }
   // Methode de mise a jour du contenu 
   // avec implementation par defaut - ne faisant rien 
@@ -36,5 +39,12 @@
   // ajoute des lignes de texte avec les infos statistiques (dans text)
   // renvoie le nombre de lignes ajoutees - avec implementation par defaut
-  virtual int GetStatInfoAsText(vector<string> & /* text */ ) { return 0; }
+  virtual int GetStatInfoAsText(vector<string> &  text );
+
+//   Methode de decodage des options - avec implementation par defaut 
+//   l'implementation par defaut ds le fichier pihisto.cc 
+  virtual int DecodeOptionString(vector<string> & opt, bool rmdecopt=true);
+
+protected:
+  r_8 mScale, mOff;   // scaling coefficient, offset coefficient
 
 };
Index: /trunk/SophyaPI/PIext/pihisto.cc
===================================================================
--- /trunk/SophyaPI/PIext/pihisto.cc	(revision 3131)
+++ /trunk/SophyaPI/PIext/pihisto.cc	(revision 3132)
@@ -9,6 +9,51 @@
 #include <typeinfo>
 
-//RZDEL #include "sopnamsp.h"
 #include "pihisto.h"
+
+//------ Implementation classe P1DHistoWrapper
+P1DHistoWrapper::P1DHistoWrapper() 
+: mScale(1.) , mOff(0.) 
+{
+}
+
+P1DHistoWrapper::~P1DHistoWrapper()
+{
+}
+
+int P1DHistoWrapper::GetStatInfoAsText(vector<string> & /* text */ )
+{
+  return 0;
+}
+
+int P1DHistoWrapper::DecodeOptionString(vector<string> & opt, bool rmdecopt)
+{
+  if(opt.size() < 1) return(0); 
+
+  vector<string> udopt;  // On gardera ici les options non decodees
+  unsigned int k = 0;
+  int ndec = opt.size();
+  for( k=0; k<opt.size(); k++ ) {
+    string & opts = opt[k];
+    if(opts.substr(0,7) == "hs1") {
+      mScale = 1.;  mOff = 0.; 
+    }
+    else if(opts.substr(0,7) == "hscale=") {
+      mScale = atof(opts.substr(7).c_str());
+    }
+    else if(opt[k].substr(0,8) == "hoffset=") {
+      mOff = atof(opts.substr(8).c_str());
+    }
+    else {
+      ndec--;
+      // S'il faut supprimer les options decodees
+      if (rmdecopt)  udopt.push_back(opts);
+    }
+  }
+  // S'il faut supprimer les options decodees, on remplace l'argument opt
+  // par le vecteur des options non decodees.
+  if (rmdecopt)  opt = udopt;
+  return(ndec);
+}
+
 
 //++
@@ -212,8 +257,15 @@
     }
   }
+
   // S'il faut supprimer les options decodees, on remplace l'argument opt
   // par le vecteur des options non decodees.
   if (rmdecopt)  opt = udopt;
-  return(ndec+ndec1);
+
+  // Decodage des options par le histo-wrapper
+  int ndec2 = 0;
+  if ( ( optsz1-ndec1-ndec > 0) && (mHisto) ) {
+    ndec2 = mHisto->DecodeOptionString(opt, rmdecopt);
+  }
+  return(ndec+ndec1+ndec2);
 }
 
@@ -246,4 +298,8 @@
 info += "  statposoff=OffsetX,OffsetY : Position offset for Stats drawing \n";
 info += "       as a fraction of total size \n";
+info += " ---- HistoWrapper options : \n" ;
+info += "  hscale=value  : multiplicative factor (in Y) \n" ;
+info += "  hoffset=value : additive coefficient  (in Y) \n" ;
+info += "  hs1 : set hscale=1 hoffset=0  (default) \n" ;
 // On recupere ensuite la chaine info de la classe de base
 PIDrawer::GetOptionsHelpInfo(info);
Index: /trunk/SophyaPI/PIext/sohiswrap.h
===================================================================
--- /trunk/SophyaPI/PIext/sohiswrap.h	(revision 3131)
+++ /trunk/SophyaPI/PIext/sohiswrap.h	(revision 3132)
@@ -38,5 +38,5 @@
   virtual r_8 BinHighEdge(int_4 i) { return mHis->BinHighEdge(i) ; }
 
-  virtual r_8 operator()(int_4 i) { return (*mHis)(i) ; }
+  virtual r_8 Value(int_4 i) { return (*mHis)(i) ; }
   virtual r_8 Error(int_4 i) { return mHis->Error(i) ; }
 
@@ -85,5 +85,5 @@
   virtual r_8 BinHighEdge(int_4 i) { return mHis->BinHighEdge(i) ; }
 
-  virtual r_8 operator()(int_4 i) { return (*mHis)(i) ; }
+  virtual r_8 Value(int_4 i) { return (*mHis)(i) ; }
   virtual r_8 Error(int_4 i) { return mHis->Error(i) ; }
 
