Index: trunk/SophyaPI/PI/piaxes.cc
===================================================================
--- trunk/SophyaPI/PI/piaxes.cc	(revision 3552)
+++ trunk/SophyaPI/PI/piaxes.cc	(revision 3558)
@@ -53,5 +53,5 @@
 //++
 // void  DrawXYAxes(PIGraphicUC* g, PIGraphicAtt& gratt, \
-//                  unsigned int flags=kAxesDflt, bool afsz=true)
+//                  unsigned int flags, bool afsz, double fszf)
 //	Trace les axes en utilisant les limites de l'objet PIGraphicUC. 
 //	"flags" spécifie les attributs d'axes. Constantes prédéfinies: 
@@ -64,10 +64,18 @@
 //|	      kBoxAxes | kTicks | | kIntTicks | kLabels
 //|	kGridOn, kAxesNone
-//	Si "afsz == true", la taille de fonte est choisie automatiquement.
+//	Si "afsz == true", la taille de fonte est choisie automatiquement avec "fszf" 
+//	representant la taille de fonte en fraction de (ymax-ymin)
+//
+// void DrawXYAxes(PIGraphicUC* g, PIGraphicAtt& gratt, unsigned int flags=kAxesDflt)
+//        Appel de DrawXYAxes avec les parametres "axesAFSz. fontSz" de l'objet.
 //
 // void DrawXYAxes(PIGraphicUC* g, PIGraphicAtt& gratt, \
 //        double xmin, double xmax, double ymin, double ymax, \
-//        unsigned int flags=kAxesDflt, bool afsz=true)
+//        unsigned int flags, bool afsz, double )
 //	Tracé d'axes avec spécification des limites d'axes.
+//
+// void DrawXYAxes(PIGraphicUC* g, PIGraphicAtt& gratt, \
+//        double xmin, double xmax, double ymin, double ymax, unsigned int flags=kAxesDflt) 
+//        Appel de DrawXYAxes avec les parametres "axesAFSz. fontSz" de l'objet.
 //
 // void DrawXCaption(PIGraphicUC* g, string const& xLabel, PIGraphicAtt const& att)
@@ -79,10 +87,10 @@
 /* --Methode-- */
 void PIAxes::DrawXYAxes(PIGraphicUC* g, PIGraphicAtt& gratt, 
-			unsigned int flags, bool afsz)
+			unsigned int flags, bool afsz, double fszf)
 {
   PIGrCoord xmin, xmax, ymin, ymax;
   g->GetGrSpace(xmin, xmax, ymin, ymax);
   DrawXYAxes(g, gratt, (double)xmin, (double)xmax, 
-	     (double)ymin, (double)ymax, flags, afsz);
+	     (double)ymin, (double)ymax, flags, afsz, fszf);
 }
 
@@ -90,5 +98,5 @@
 void PIAxes::DrawXYAxes(PIGraphicUC* g, PIGraphicAtt& gratt, 
 			double xmin, double xmax, double ymin, double ymax,
-			unsigned int flags, bool afsz)
+			unsigned int flags, bool afsz, double fszf)
 
 {
@@ -107,5 +115,5 @@
 
   if(afsz) { 
-    double fsz = (yMax-yMin)*fontSz;
+    double fsz = (yMax-yMin)*fszf;
     g->SelFontSz(fsz);
   }
@@ -332,6 +340,7 @@
 
 /* --Methode-- */
-void PIAxes::ConfigureAutoFontSize(double fszf)
-{
+void PIAxes::ConfigureAutoFontSize(bool afsz, double fszf)
+{
+  axesAFSz = afsz;
   if (fszf > 1.e-19) fontSz = fszf;
 }
Index: trunk/SophyaPI/PI/piaxes.h
===================================================================
--- trunk/SophyaPI/PI/piaxes.h	(revision 3552)
+++ trunk/SophyaPI/PI/piaxes.h	(revision 3558)
@@ -40,11 +40,15 @@
 
   virtual void      DrawXYAxes(PIGraphicUC* g, PIGraphicAtt& gratt, 
-			       unsigned int flags=kAxesDflt, bool afsz=true);
+			       unsigned int flags, bool afsz, double fszf);
+  inline  void      DrawXYAxes(PIGraphicUC* g, PIGraphicAtt& gratt, unsigned int flags=kAxesDflt)
+     { DrawXYAxes(g, gratt, flags, axesAFSz, fontSz); }
 
   virtual void      DrawXYAxes(PIGraphicUC* g, PIGraphicAtt& gratt, 
 			       double xmin, double xmax, 
 			       double ymin, double ymax,
-			       unsigned int flags=kAxesDflt, bool afsz=true);
-
+			       unsigned int flags, bool afsz, double fszf);
+  inline void       DrawXYAxes(PIGraphicUC* g, PIGraphicAtt& gratt, 
+			       double xmin, double xmax, double ymin, double ymax, unsigned int flags=kAxesDflt)
+    {   DrawXYAxes(g, gratt, xmin, xmax, ymin, ymax, flags, axesAFSz, fontSz); }
 
   virtual void      DrawXCaption(PIGraphicUC* g, PIGraphicAtt& att, unsigned int flags,
@@ -56,5 +60,5 @@
   void  ConfigureTicks(int ntickx=10, int nticky=12, 
 		       double majtl=0.016, double mintl=0.01);
-  void  ConfigureAutoFontSize(double fszf=0.04);
+  void  ConfigureAutoFontSize(bool afsz=true, double fszf=0.06);
   void  ConfigureAxesCenter(bool fset=false,double x0=0.,double y0=0.);
 
@@ -91,5 +95,5 @@
   bool   aXdir, aYdir;           // Sens des axes horiz, vertical 
   bool   aXlog, aYlog;           // Echelle log pour les axes horiz, vertical 
-  bool   axesAFSz;
+  bool   axesAFSz;               // true -> AutoFontSize
   
   int xNTicks, yNTicks;             // Nb de ticks en X, Y
Index: trunk/SophyaPI/PI/piaxestools.cc
===================================================================
--- trunk/SophyaPI/PI/piaxestools.cc	(revision 3552)
+++ trunk/SophyaPI/PI/piaxestools.cc	(revision 3558)
@@ -237,5 +237,5 @@
   mCkb[3]->SetState(scd->isLogScaleX());
   mCkb[4]->SetState(scd->isLogScaleY());
-  mCkb[7]->SetState(scd->BaseDrawer()->isAxesAutoFontSize());
+  mCkb[7]->SetState(scd->BaseDrawer()->GetAutoFontSizeState());
   }
 else {
@@ -312,5 +312,5 @@
 
   scd->SetLogScale(mCkb[3]->GetState(), mCkb[4]->GetState() );
-  scd->BaseDrawer()->SetAxesAutoFontSize(mCkb[7]->GetState() );
+  scd->BaseDrawer()->ConfigureAutoFontSize(mCkb[7]->GetState(), -1);
   if (refr) scd->Refresh();
   return;
Index: trunk/SophyaPI/PI/pidrawer.cc
===================================================================
--- trunk/SophyaPI/PI/pidrawer.cc	(revision 3552)
+++ trunk/SophyaPI/PI/pidrawer.cc	(revision 3558)
@@ -65,5 +65,5 @@
   limitsFixed = false;
   SetAxesFlags(kAxesNone);   // Pas de trace d'axes par defaut 
-  SetAxesAutoFontSize();
+  ConfigureAutoFontSize();
 
   mDndfg = false;  // Pour controle de l'appel de Detach() si delete
@@ -395,9 +395,30 @@
 PIDrawer::DecodeOptionString(vector<string> & opt, bool rmdecop)
 {
-  if (opt.size() < 1)  return(0);  
+  int nopt0 = opt.size();
+  if (nopt0 < 1)  return(0);  
   PIGraphicAtt gratt;
-  int ndec = gratt.DecodeAttStrings(opt, rmdecop);
+  int ndec1 = gratt.DecodeAttStrings(opt, rmdecop);
   UpdateGraphicAtt(gratt);
-  return(ndec);
+  if ((nopt0 - ndec1) < 1) return(ndec1);  // si tout a ete decode
+  vector<string> udopt;
+  unsigned int k = 0;
+  int ndec = opt.size();
+  string opts;
+  for( k=0; k<opt.size(); k++ ) {
+    opts = opt[k];
+    if (opts.substr(0,13) == "autofontsize=") {
+       double fszf = atof(opts.substr(13).c_str());
+       ConfigureAutoFontSize(true, fszf);
+    }
+    else if (opts == "fixedfontsize")
+       ConfigureAutoFontSize(false, -1.);  
+    else {
+      ndec--;
+      if (rmdecop)  udopt.push_back(opts);
+    }
+  }
+
+  if (rmdecop)  opt = udopt;
+  return(ndec+ndec1); 
 }
 
@@ -424,4 +445,7 @@
   info += "   FontAtt: roman, bold, italic, bolditalic  \n";
   info += "   FontSize: 6,8,10,12... (pts) - integer \n";
+  info += ">>> Automatic font size selection : \n";
+  info += "    autofontsize=FontSizeFrac fixedfontsize \n";
+  info += ">>> ColorTables: defcmap  grey32  invgrey32  colrj32  colbr32 \n";
   info += ">>> marker=MarkerType,MarkerSize (MarkerSize: integer 3,5,7... \n";
   info += "   MarkerType: dot, plus, cross, circle, fcircle, box, fbox \n";
@@ -505,5 +529,5 @@
   PIAxes axes;
   axes.DrawXYAxes(g, mGrAtt, XMin(), XMax(), YMin(), YMax(),
-		  axesFlags, axesAFSz); 
+		  axesFlags, mAFSz, mFontSzF); 
   g->Clip();
 }
Index: trunk/SophyaPI/PI/pidrawer.h
===================================================================
--- trunk/SophyaPI/PI/pidrawer.h	(revision 3552)
+++ trunk/SophyaPI/PI/pidrawer.h	(revision 3558)
@@ -30,5 +30,8 @@
 
   virtual void       SetAxesFlags(unsigned int flags=kAxesNone);
-  inline  void       SetAxesAutoFontSize(bool fg=true) { axesAFSz = fg; }
+
+//  Choix automatique ou pas de taille de fonte
+  inline void        ConfigureAutoFontSize(bool afsz=true, double fszf=0.06)
+    { mAFSz = afsz;  if (fszf>1e-5)  mFontSzF = fszf; }
 
   virtual void       DrawAxes(PIGraphicUC* g);
@@ -63,5 +66,7 @@
 
   inline unsigned int GetAxesFlags() { return(axesFlags); }
-  inline bool         isAxesAutoFontSize() { return axesAFSz; }
+
+  inline bool         GetAutoFontSizeState() { return mAFSz; }
+  inline double       GetAutoFontSizeFraction() { return mFontSzF; }
 
   inline PIGraphicUC*    GetGraphicUC() { return(mGrUC); }
@@ -127,5 +132,8 @@
   bool limitsFixed;
   unsigned int axesFlags;
-  bool axesAFSz;
+
+  bool mAFSz;  // true -> Choix automatique de taille de font en fraction (ymax-ymin)
+  double mFontSzF;   // TailleFonteAuto = mFontSzF*(ymax-ymin)
+
   PIBaseWdgGen* mBWdg;
   PIGraphicUC* mGrUC;
Index: trunk/SophyaPI/PI/pieldrw.cc
===================================================================
--- trunk/SophyaPI/PI/pieldrw.cc	(revision 3552)
+++ trunk/SophyaPI/PI/pieldrw.cc	(revision 3558)
@@ -593,13 +593,5 @@
       }
     }
-
-    else if (opts.substr(0,13) == "autofontsize=") {
-      double fszf = atof(opts.substr(13).c_str());
-      ConfigureAxeAutoFontSize(fszf);
-      SetAxesAutoFontSize(true);
-    }
-    else if (opts == "fixedfontsize")
-      SetAxesAutoFontSize(false);
-
+ 
     else if (opts == "title" || opts == "tit") ShowTitles(true);
     else if (opts == "notitle" || opts == "notit") ShowTitles(false);
@@ -639,6 +631,6 @@
   info += "   ticks/noticks minorticks/nominorticks \n";
   info += "   extticks/intticks/extintticks nbticks=X_NbTicks,Y_NbTicks \n";
-  info += "   tickslen=MajorTickLenFrac,MinorTickLenFraC \n";
-  info += " >> Axe label font size: \n";
+  info += "   tickslen=MajorTickLenFrac,MinorTickLenFraC \n"; 
+  info += " >> Axe labels font size: \n";
   info += "    autofontsize=FontSizeFrac fixedfontsize \n";
   info += " >> Up/Down title: title tit notitle notit \n";
@@ -655,5 +647,5 @@
   //  g->NoClip();
   axeDr.DrawXYAxes(g, mGrAtt, XMin(), XMax(), YMin(), YMax(), 
-		   axesFlags, axesAFSz); 
+		   axesFlags, mAFSz, mFontSzF); 
   if (showAxesLabels) { 
     axeDr.DrawXCaption(g, labelAtt, axesFlags, xLabel);
Index: trunk/SophyaPI/PI/pieldrw.h
===================================================================
--- trunk/SophyaPI/PI/pieldrw.h	(revision 3552)
+++ trunk/SophyaPI/PI/pieldrw.h	(revision 3558)
@@ -246,6 +246,4 @@
 				       double majtl=0., double mintl=0.)
      { axeDr.ConfigureTicks(ntickx, nticky, majtl, mintl); }
-  inline void        ConfigureAxeAutoFontSize(double fszf=0.)
-     { axeDr.ConfigureAutoFontSize(fszf); }
 
   inline PIElDrwMgr& ElDrwMgr()    { return eltsMgr; }
