Index: /trunk/SophyaPI/PI/pi3ddrw.cc
===================================================================
--- /trunk/SophyaPI/PI/pi3ddrw.cc	(revision 1913)
+++ /trunk/SophyaPI/PI/pi3ddrw.cc	(revision 1914)
@@ -370,4 +370,11 @@
 }
 
+/* --Methode-- */
+int PIDraw3DWdg::DecodeOptionString(vector<string> & opt, bool rmdecopt)
+{
+  // AFAIRE - Reza 01/03/2002 
+  return(0);
+}
+
 
 /* --Methode-- */
Index: /trunk/SophyaPI/PI/pi3ddrw.h
===================================================================
--- /trunk/SophyaPI/PI/pi3ddrw.h	(revision 1913)
+++ /trunk/SophyaPI/PI/pi3ddrw.h	(revision 1914)
@@ -84,5 +84,9 @@
   inline PIElDrawer*    BaseDrawer() { return mBDrw; };
 
-  int                   AddDrawer3D(PIDrawer3D*, bool ad=false);   // Ajoute un Drawer 
+//   Methode permettant de decoder des options a partir de chaines
+  virtual int           DecodeOptionString(vector<string> & opt, bool rmdecopt=true);
+
+// Ajoute un Drawer 
+  int                   AddDrawer3D(PIDrawer3D*, bool ad=false);   
 
 //  Pour tenir trace des Drawers-3D qui sont detruits 
Index: /trunk/SophyaPI/PI/pieldrw.cc
===================================================================
--- /trunk/SophyaPI/PI/pieldrw.cc	(revision 1913)
+++ /trunk/SophyaPI/PI/pieldrw.cc	(revision 1914)
@@ -71,4 +71,11 @@
 {
 titleT = tt;  titleB = tb;
+}
+
+/* --Methode-- */
+int PIElDrawer::DecodeOptionString(vector<string> & opt, bool rmdecopt)
+{
+  // AFAIRE Reza 01/03/2002 
+  return(0);
 }
 
Index: /trunk/SophyaPI/PI/pieldrw.h
===================================================================
--- /trunk/SophyaPI/PI/pieldrw.h	(revision 1913)
+++ /trunk/SophyaPI/PI/pieldrw.h	(revision 1914)
@@ -22,4 +22,7 @@
   virtual void	     SetTitles(const char* tt=NULL, const char* tb=NULL);
   virtual void       SetTitles(string const & tt, string const & tb);
+
+//   Methode de decodage des options
+  virtual int        DecodeOptionString(vector<string> & opt, bool rmdecopt=true);
 
   virtual void       Draw(PIGraphicUC* g, double xmin, double ymin, double xmax, double ymax); 
Index: /trunk/SophyaPI/PI/pigraphuc.cc
===================================================================
--- /trunk/SophyaPI/PI/pigraphuc.cc	(revision 1913)
+++ /trunk/SophyaPI/PI/pigraphuc.cc	(revision 1914)
@@ -64,4 +64,5 @@
   aYdir = false;  // Vrai si Axe Y de Haut vers Bas
   aXlog = aYlog = false;   // Vrai -> Echelle log
+  aXYexchng = false;       // Vrai -> Echange axes X,Y UserX,Y --> WindowY, X
   SetUCS(0., 1., 0., 1., kAxeDirLtoR, kAxeDirDownUp);
   SetLogScale(false, false);
@@ -155,5 +156,5 @@
 /* --Methode-- */
 void PIGraphicUC::SetUCS(double xmin, double xmax, double ymin, double ymax,
-                         int axrl, int ayud)
+                         int axrl, int ayud, bool exchxy)
 {
   if (axrl == kAxeDirAuto) {
Index: /trunk/SophyaPI/PI/pigraphuc.h
===================================================================
--- /trunk/SophyaPI/PI/pigraphuc.h	(revision 1913)
+++ /trunk/SophyaPI/PI/pigraphuc.h	(revision 1914)
@@ -33,5 +33,6 @@
 //  Definition des coordonnees utilisateur
   virtual void       SetUCS(double xmin, double xmax, double ymin, double ymax,
-                            int axrl=kAxeDirSame, int ayud=kAxeDirSame); 
+                            int axrl=kAxeDirSame, int ayud=kAxeDirSame,
+			    bool exchxy=false); 
 // Echelle logarithmique
   virtual void	     SetLogScale(bool logx, bool logy);
@@ -40,4 +41,5 @@
   inline  bool       isAxeXDirRtoL()   { return aXdir; }
   inline  bool       isAxeYDirUpDown() { return aYdir; }
+  inline  bool       isAxeXYExchanged() { return aXYexchng; }
 
 //  Trace graphiques
@@ -139,4 +141,5 @@
   bool   aXdir, aYdir;           // Sens des axes horiz, vertical 
   bool   aXlog, aYlog;		 // true-> Echelle logarithmique pour axe X,y 
+  bool   aXYexchng;              // true-> Echange X<>Y userX, Y ---> WindowY, X
   bool   clip;
 };
Index: /trunk/SophyaPI/PI/pigratt.cc
===================================================================
--- /trunk/SophyaPI/PI/pigratt.cc	(revision 1913)
+++ /trunk/SophyaPI/PI/pigratt.cc	(revision 1914)
@@ -5,8 +5,35 @@
 #include "pigratt.h"
 
+#include <stdio.h>
+#include <map>
+
 PIGraphicAtt::PIGraphicAtt()
+{
+  SetDefaultAtt();
+}
+
+PIGraphicAtt::PIGraphicAtt(PIGraphicAtt const & att)
+{
+  CopyFrom(att);
+}
+
+PIGraphicAtt::PIGraphicAtt(vector<string> & att, bool rmdecatt)
+{
+  // Initialize attributes
+  SetDefaultAtt();
+  // Decode attributes from strings 
+  DecodeAttStrings(att, rmdecatt);
+}
+
+PIGraphicAtt::~PIGraphicAtt()
+{
+}
+
+
+void PIGraphicAtt::SetDefaultAtt()
 {
   SetColAtt();
   SetLineAtt();
+  SetFontAtt();
   SetMarkerAtt(1);
   SetArrowMarkerAtt(5);
@@ -14,27 +41,9 @@
 }
 
-PIGraphicAtt::PIGraphicAtt(PIGraphicAtt const & att)
-{
-  CopyFrom(att);
-}
-
-PIGraphicAtt::PIGraphicAtt(vector<string> & att, bool rmdecatt)
-{
-  // AFAIRE - Reza 18/02/2002 
-  SetColAtt();
-  SetLineAtt();
-  SetMarkerAtt(1);
-  SetArrowMarkerAtt(5);
-  SetColMapId();
-}
-
-PIGraphicAtt::~PIGraphicAtt()
-{
-}
-
 void PIGraphicAtt::CopyFrom(PIGraphicAtt const & att)
 {
   mFCol = att.mFCol;
   mBCol = att.mBCol;
+  mLAtt = att.mLAtt;
   mFnt = att.mFnt;
   mMSz = att.mMSz;
@@ -46,8 +55,30 @@
 }
 
+bool PIGraphicAtt::Compare(PIGraphicAtt const & att)
+{
+  if (mFCol != att.mFCol) return false;
+  if (mBCol != att.mBCol) return false;
+  if (mLAtt != att.mLAtt) return false;
+  bool fnteq = (mFnt == att.mFnt);
+  if (!fnteq)  return false;
+  if (mMSz != att.mMSz) return false;
+  if (mMrk != att.mMrk)  return false;
+  if (mArrowMrkSz != att.mArrowMrkSz) return false;
+  if (mArrowMrk != att.mArrowMrk) return false;
+  if (mCmapid != att.mCmapid) return false;
+  if (mRevCmap != att.mRevCmap) return false;
+
+  return true;
+}
+
+// PIGraphicAtt::DecodeAttStrings(vector<string> & att, bool rmdecatt)
+// Voir apres InitGrAttStrings()
+
+
 void PIGraphicAtt::UpdateFrom(PIGraphicAtt const & att)
 {
   if (att.mFCol != PI_NotDefColor)  mFCol = att.mFCol;
   if (att.mBCol != PI_NotDefColor)  mBCol = att.mBCol;
+  if (att.mLAtt != PI_NotDefLineAtt)  mLAtt = att.mLAtt;
   if ( (att.mFnt.GetFontName() != PI_DefaultFont) || 
        (att.mFnt.GetFontAtt() != PI_NotDefFontAtt) ||
@@ -80,2 +111,334 @@
   mFnt.SetFontSz(fsz);
 }
+
+
+// -------------------------------------------------------------------- 
+// Variables globales pour decodage de chaines d'attributs graphiques
+// -------------------------------------------------------------------- 
+
+typedef map<string, PIColors, less<string> > GrAttColors;
+typedef map<string, PILineAtt, less<string> > GrAttLines;
+typedef map<string, PIFontName, less<string> > GrAttFontNames;
+struct gratt_fontatt {
+  PIFontAtt fatt;
+  PIFontSize fsz;
+};
+typedef map<string, gratt_fontatt, less<string> > GrAttFonts;
+struct gratt_marker {
+  PIMarker mrk;
+  int msz;
+};
+typedef map<string, gratt_marker, less<string> > GrAttMarkers;
+struct gratt_arrowmarker {
+  PIArrowMarker amrk;
+  int amsz;
+};
+typedef map<string, gratt_arrowmarker, less<string> > GrAttArrowMarkers;
+typedef map<string, CMapId, less<string> > GrAttColMaps;
+
+static bool gratt_init_done = false;
+static GrAttColors* GrAcolors = NULL;
+static GrAttLines* GrAlines = NULL;
+static GrAttFonts* GrAfonts = NULL;
+static GrAttFontNames* GrAfontNames = NULL;
+static GrAttMarkers* GrAmarkers = NULL;
+static GrAttArrowMarkers* GrAarrowMarkers = NULL;
+static GrAttColMaps* GrAcmaps = NULL;
+
+
+void PIGraphicAtt::InitGrAttStrings()
+{
+  if (gratt_init_done) return;
+
+  GrAcolors = new GrAttColors;
+  GrAttColors& GrAcol = *GrAcolors;
+  PIColors gic;
+  // Les couleurs
+  gic = PI_NotDefColor;
+  GrAcol["defcol"] = gic;
+  gic = PI_Black;
+  GrAcol["black"] = gic;
+  gic = PI_White;
+  GrAcol["white"] = gic;
+  gic = PI_Grey;
+  GrAcol["grey"] = gic;
+  gic = PI_Red;
+  GrAcol["red"] = gic;
+  gic = PI_Blue;
+  GrAcol["blue"] = gic;
+  gic = PI_Green;
+  GrAcol["green"] = gic;
+  gic = PI_Yellow;
+  GrAcol["yellow"] = gic;
+  gic = PI_Magenta;
+  GrAcol["magenta"] = gic;
+  
+  gic = PI_Cyan;
+  GrAcol["cyan"] = gic;
+  gic = PI_Turquoise;
+  GrAcol["turquoise"] = gic;
+  gic = PI_NavyBlue;
+  GrAcol["navyblue"] = gic;
+  gic = PI_Orange;
+  GrAcol["orange"] = gic;
+  gic = PI_SiennaRed;
+  GrAcol["siennared"] = gic;
+  gic = PI_Purple;
+  GrAcol["purple"] = gic;
+  gic = PI_LimeGreen;
+  GrAcol["limegreen"] = gic;
+  gic = PI_Gold;
+  GrAcol["gold"] = gic;
+  gic = PI_Violet;
+  GrAcol["violet"] = gic;
+  gic = PI_VioletRed;
+  GrAcol["violetred"] = gic;
+  gic = PI_BlueViolet;
+  GrAcol["blueviolet"] = gic;
+  gic = PI_DarkViolet;
+  GrAcol["darkviolet"] = gic;
+
+// Les attributs de lignes
+  PILineAtt gil;
+  GrAlines = new GrAttLines;
+  GrAttLines& GrAlin = *GrAlines;
+
+  gil = PI_NotDefLineAtt;
+  GrAlin["defline"] = gil;
+  gil = PI_NormalLine;
+  GrAlin["normalline"] = gil;
+  gil = PI_ThinLine;
+  GrAlin["thinline"] = gil;
+  gil = PI_ThickLine;
+  GrAlin["thickline"] = gil;
+  gil = PI_DashedLine;
+  GrAlin["dashedline"] = gil;
+  gil = PI_ThinDashedLine;
+  GrAlin["thindashedline"] = gil;
+  gil = PI_ThickDashedLine;
+  GrAlin["thickdashedline"] = gil;
+  gil = PI_DottedLine;
+  GrAlin["dottedline"] = gil;
+  gil = PI_ThinDottedLine;
+  GrAlin["thindottedline"] = gil;
+  gil = PI_ThickDottedLine;
+  GrAlin["thickdottedline"] = gil;
+  gil = PI_DashDottedLine;
+  GrAlin["dashdottedline"] = gil;
+  gil = PI_ThinDashDottedLine;
+  GrAlin["thindashdottedline"] = gil;
+  gil = PI_ThickDashDottedLine;
+  GrAlin["thickdashdottedline"] = gil;
+
+  // Noms de fontes
+  GrAfontNames = new GrAttFontNames;
+  GrAttFontNames& GrAfontnm = *GrAfontNames;
+  PIFontName gifn;
+  gifn = PI_DefaultFont;
+  GrAfontnm["deffont"] = gifn;
+  gifn = PI_CourierFont;
+  GrAfontnm["courierfont"] = gifn;
+  gifn = PI_HelveticaFont;
+  GrAfontnm["helveticafont"] = gifn;
+  gifn = PI_TimesFont;
+  GrAfontnm["timesfont"] = gifn;
+  gifn = PI_SymbolFont;
+  GrAfontnm["symbolfont"] = gifn;
+
+  // Attributs de fontes 
+  GrAfonts = new GrAttFonts;
+  GrAttFonts& GrAfnt = *GrAfonts;
+  gratt_fontatt gifa;
+
+  gifa.fsz = PI_NotDefFontSize;
+  gifa.fatt = PI_NotDefFontAtt;
+  GrAfnt["deffontatt"] = gifa;
+  gifa.fsz = PI_NormalSizeFont;
+  gifa.fatt = PI_RomanFont;
+  GrAfnt["normalfont"] = gifa;
+  gifa.fatt = PI_BoldFont;
+  GrAfnt["boldfont"] = gifa;
+  gifa.fatt = PI_ItalicFont;
+  GrAfnt["italicfont"] = gifa;
+  gifa.fatt = PI_BoldItalicFont;
+  GrAfnt["bolditalicfont"] = gifa;
+  gifa.fsz = PI_SmallSizeFont;
+  gifa.fatt = PI_RomanFont;
+  GrAfnt["smallfont"] = gifa;
+  gifa.fatt = PI_BoldFont;
+  GrAfnt["smallboldfont"] = gifa;
+  gifa.fatt = PI_ItalicFont;
+  GrAfnt["smallitalicfont"] = gifa;
+  gifa.fatt = PI_BoldItalicFont;
+  GrAfnt["smallbolditalicfont"] = gifa;
+  gifa.fsz = PI_LargeSizeFont;
+  gifa.fatt = PI_RomanFont;
+  GrAfnt["bigfont"] = gifa;
+  GrAfnt["largefont"] = gifa;
+  gifa.fatt = PI_BoldFont;
+  GrAfnt["bigboldfont"] = gifa;
+  gifa.fatt = PI_ItalicFont;
+  GrAfnt["bigitalicfont"] = gifa;
+  GrAfnt["largeitalicfont"] = gifa;
+  gifa.fatt = PI_BoldItalicFont;
+  GrAfnt["bigbolditalicfont"] = gifa;
+  GrAfnt["largebolditalicfont"] = gifa;
+  gifa.fsz = PI_HugeSizeFont;
+  gifa.fatt = PI_RomanFont;
+  GrAfnt["hugefont"] = gifa;
+  gifa.fatt = PI_BoldFont;
+  GrAfnt["hugeboldfont"] = gifa;
+  gifa.fatt = PI_ItalicFont;
+  GrAfnt["hugeitalicfont"] = gifa;
+  gifa.fatt = PI_BoldItalicFont;
+  GrAfnt["hugebolditalicfont"] = gifa;
+
+
+// Les markers 
+  GrAmarkers = new GrAttMarkers;
+  GrAttMarkers& GrAmrk = *GrAmarkers;
+  const char* mrkn[11] = {"dotmarker", "plusmarker", "crossmarker", 
+			  "circlemarker", "fcirclemarker", 
+			  "boxmarker", "fboxmarker", 
+			  "trianglemarker", "ftrianglemarker", 
+			  "starmarker", "fstarmarker"};
+  PIMarker mrk[11] = {PI_DotMarker, PI_PlusMarker, PI_CrossMarker, 
+		      PI_CircleMarker, PI_FCircleMarker, 
+		      PI_BoxMarker, PI_FBoxMarker, 
+		      PI_TriangleMarker, PI_FTriangleMarker, 
+		      PI_StarMarker, PI_FStarMarker};
+
+  
+  gratt_marker gim;
+  gim.msz = 1;
+  gim.mrk = PI_NotDefMarker;
+  GrAmrk["defmarker"] = gim;
+ 
+  for(int j=0; j<11; j++) {
+    string smrk;
+    char buff[32];
+    for(int m=1; m<16; m+=2) {
+      sprintf(buff,"%d",m);
+      smrk = (string)mrkn[j] + (string)buff;
+      gim.mrk = mrk[j];  gim.msz = m;
+      GrAmrk[smrk] = gim;
+    }
+  }
+
+// Les fleches - ArrowMarkers 
+  GrAarrowMarkers = new GrAttArrowMarkers;
+  GrAttArrowMarkers& GrAarrmrk = *GrAarrowMarkers;
+  const char* arrmrkn[5] = {"basicarrow", 
+			    "trianglearrow", "ftrianglearrow", 
+			    "arrowshapedarrow", "farrowshapedarrow"};
+  PIArrowMarker arrmrk[5] = {PI_BasicArrowMarker, 
+			     PI_TriangleArrowMarker, PI_FTriangleArrowMarker, 
+			     PI_ArrowShapedArrowMarker, PI_FArrowShapedArrowMarker};
+  
+  gratt_arrowmarker giam;
+  giam.amsz = 7;
+  giam.amrk = PI_NotDefArrowMarker;
+  GrAarrmrk["defarrow"] = giam;
+ 
+  for(int j=0; j<5; j++) {
+    string smrk;
+    char buff[32];
+    for(int m=5; m<17; m+=2) {
+      sprintf(buff,"%d",m);
+      smrk = (string)arrmrkn[j] + (string)buff;
+      giam.amrk = arrmrk[j];  giam.amsz = m;
+      GrAarrmrk[smrk] = giam;
+    }
+  }
+
+  // Les tables de couleurs 
+  GrAcmaps = new GrAttColMaps;
+  GrAttColMaps& GrAcmp = *GrAcmaps;
+  CMapId gicm;
+  gicm = CMAP_OTHER;
+  GrAcmp["defcmap"] = gicm;
+  for(int kcc=0; kcc<PIColorMap::NumberStandardColorMaps(); kcc++) {
+    gicm = PIColorMap::GetStandardColorMapId(kcc);
+    string colname = PIColorMap::GetStandardColorMapName(kcc);
+    for(unsigned int jll=0; jll<colname.length(); jll++)
+      colname[jll] = tolower(colname[jll]);
+    GrAcmp[colname] = gicm;
+  }
+
+
+  gratt_init_done = true;
+
+}
+
+int PIGraphicAtt::DecodeAttStrings(vector<string> & att, bool rmdecatt)
+{
+  if (att.size() == 0)  return(0);  
+  vector<string> udatt;
+  unsigned int k = 0;
+  int ndec = att.size();
+  for( k=0; k<att.size(); k++ ) {
+    string gratt = att[k];
+    // Valeurs par defaut 
+    if (gratt == "default") { 
+      SetDefaultAtt();  
+      continue;
+    }
+    // Inversion d'indexage de ColorMap
+    if (gratt == "revcmap")  { 
+      mRevCmap = true;  continue;
+    }
+    // Si c'est une couleur
+    GrAttColors& GrAcol = *GrAcolors;
+    GrAttColors::const_iterator itc = GrAcol.find(gratt);
+    if (itc != GrAcol.end())  { 
+      mFCol = (*itc).second;  continue; 
+    }
+    // Si c'est un attribut de lignes
+    GrAttLines& GrAlin = *GrAlines;
+    GrAttLines::const_iterator itl = GrAlin.find(gratt);
+    if (itl != GrAlin.end())  { 
+      mLAtt = (*itl).second;  continue; 
+    }
+    // Si c'est un nom de fontes
+    GrAttFontNames& GrAfontnm = *GrAfontNames;
+    GrAttFontNames::const_iterator itfn = GrAfontnm.find(gratt);
+    if (itfn != GrAfontnm.end()) { 
+      mFnt.SetFont((*itfn).second);  continue; 
+    }
+    // Si c'est un attribut de fontes
+    GrAttFonts& GrAfnt = *GrAfonts;
+    GrAttFonts::const_iterator itfa = GrAfnt.find(gratt);
+    if (itfa != GrAfnt.end()) {
+      mFnt.SetFontAtt((*itfa).second.fatt);  
+      mFnt.SetFontSz((*itfa).second.fsz);  
+      continue; 
+    }
+    // Si c'est un attribut de markers
+    GrAttMarkers& GrAmrk = *GrAmarkers;
+    GrAttMarkers::const_iterator itm = GrAmrk.find(gratt);
+    if (itm != GrAmrk.end()) {
+      mMrk = (*itm).second.mrk;  
+      mMSz = (*itm).second.msz;  
+      continue; 
+    }
+    // Si c'est un attribut de ArrowMarker (fleche)
+    GrAttArrowMarkers& GrAarrmrk = *GrAarrowMarkers;
+    GrAttArrowMarkers::const_iterator itam = GrAarrmrk.find(gratt);
+    if (itam != GrAarrmrk.end()) {
+      mArrowMrk = (*itam).second.amrk;  
+      mArrowMrkSz = (*itam).second.amsz;  
+      continue; 
+    }
+    // Si c'est un colormap
+    GrAttColMaps& GrAcmp = *GrAcmaps;
+    GrAttColMaps::const_iterator itcm = GrAcmp.find(gratt);
+    if (itcm != GrAcmp.end())  { 
+      mCmapid = (*itcm).second;  
+      continue; 
+    }
+    ndec--;
+    if (rmdecatt)  udatt.push_back(gratt);
+  }
+  if (rmdecatt)  att = udatt;
+  return(ndec);
+}
Index: /trunk/SophyaPI/PI/pigratt.h
===================================================================
--- /trunk/SophyaPI/PI/pigratt.h	(revision 1913)
+++ /trunk/SophyaPI/PI/pigratt.h	(revision 1914)
@@ -21,13 +21,22 @@
 
   virtual void   CopyFrom(PIGraphicAtt const & att);
+  virtual bool   Compare(PIGraphicAtt const & att);
+  virtual void   SetDefaultAtt();
+
   inline PIGraphicAtt& operator = (PIGraphicAtt const & att)
                  { CopyFrom(att);  return(*this); }
+  inline bool operator == (PIGraphicAtt const & att)
+                 { return (Compare(att)); } 
+  inline bool operator != (PIGraphicAtt const & att)
+                 { return (!Compare(att)); } 
 
   virtual void   UpdateFrom(PIGraphicAtt const & att);
+  virtual int    DecodeAttStrings(vector<string> & att, bool rmdecatt=true);
 
 // Changement des attributs graphiques
   inline void    SetColAtt(PIColors fg=PI_NotDefColor, 
 			   PIColors bg=PI_NotDefColor)  { mFCol = fg; mBCol = bg; }
-  inline void    SetLineAtt(PILineAtt lat=PI_NotDefLineAtt)  { mLAtt = lat; }
+  inline void    SetLineAtt(PILineAtt const & lat)  { mLAtt = lat; }
+  inline void    SetLineAtt(PILineTypes ltyp=PI_NotDefLineAtt)  { mLAtt = ltyp; }
   inline void    SetFont(PIFont const & fnt)  { mFnt = fnt; } 
          void    SetFontAtt(PIFontSize fsz=PI_NotDefFontSize,
@@ -68,4 +77,6 @@
 
 protected:
+  void      InitGrAttStrings();   
+
   PIColors           mFCol, mBCol;
   PILineAtt          mLAtt;
Index: /trunk/SophyaPI/PI/piimage.cc
===================================================================
--- /trunk/SophyaPI/PI/piimage.cc	(revision 1913)
+++ /trunk/SophyaPI/PI/piimage.cc	(revision 1914)
@@ -504,4 +504,12 @@
 
 /* --Methode-- */
+int PIImage::DecodeOptionString(vector<string> & opt, bool rmdecopt)
+{
+  // AFAIRE - Reza 01/03/2002 
+  return(0);
+}
+
+
+/* --Methode-- */
 void PIImage::SetPave(int x, int y, bool refr, bool cent)
 {
Index: /trunk/SophyaPI/PI/piimage.h
===================================================================
--- /trunk/SophyaPI/PI/piimage.h	(revision 1913)
+++ /trunk/SophyaPI/PI/piimage.h	(revision 1914)
@@ -70,4 +70,7 @@
   void SetOffset(int ox, int oy, bool refr=true);
   void SetPave(int x, int y, bool refr=true, bool cent=true);
+
+//   Methode permettant de decoder des options a partir de chaines
+  virtual int  DecodeOptionString(vector<string> & opt, bool rmdecopt=true);
 
 // Acces aux informations
Index: /trunk/SophyaPI/PI/piscdrawwdg.cc
===================================================================
--- /trunk/SophyaPI/PI/piscdrawwdg.cc	(revision 1913)
+++ /trunk/SophyaPI/PI/piscdrawwdg.cc	(revision 1914)
@@ -201,4 +201,11 @@
 
 int 
+PIScDrawWdg::DecodeOptionString(vector<string> & opt, bool rmdecopt)
+{
+  // AFAIRE - Reza 01/03/2002 
+  return(0);
+}
+
+int 
 PIScDrawWdg::AddScDrawer(PIDrawer* d, bool ad)
 {
Index: /trunk/SophyaPI/PI/piscdrawwdg.h
===================================================================
--- /trunk/SophyaPI/PI/piscdrawwdg.h	(revision 1913)
+++ /trunk/SophyaPI/PI/piscdrawwdg.h	(revision 1914)
@@ -43,5 +43,10 @@
                             { mBDrw->SetTitles(tt, tb); }
 
-  int                AddScDrawer(PIDrawer*, bool ad=false);   // Ajoute un Drawer en auto 
+//   Methode permettant de decoder des options a partir de chaines
+  virtual int        DecodeOptionString(vector<string> & opt, bool rmdecopt=true);
+
+// Ajoute un Drawer en auto 
+  int                AddScDrawer(PIDrawer*, bool ad=false);   
+
   inline PIElDrawer* BaseDrawer() { return mBDrw; };
 
Index: /trunk/SophyaPI/PI/piwdggen.cc
===================================================================
--- /trunk/SophyaPI/PI/piwdggen.cc	(revision 1913)
+++ /trunk/SophyaPI/PI/piwdggen.cc	(revision 1914)
@@ -70,4 +70,20 @@
 //	Renvoie la position de l'objet sur l'écran.
 //--
+
+//++
+// Titre	Decodage des options
+//--
+//++
+// int  DecodeOptionString(vector<string> & opt, bool rmdecopt=true) 
+//	Méthode virtuelle qui peut être redéfinie dans les classes filles,
+//	pour decoder des options a partir de chaines de caracteres.
+//	Renvoie le nombre d'options decodees.
+//--
+
+int PIWdgGen::DecodeOptionString(vector<string> & opt, bool rmdecopt)
+{
+  return(0);
+}
+
 //++
 // Titre	Couleurs, etc ...
Index: /trunk/SophyaPI/PI/piwdggen.h
===================================================================
--- /trunk/SophyaPI/PI/piwdggen.h	(revision 1913)
+++ /trunk/SophyaPI/PI/piwdggen.h	(revision 1914)
@@ -13,4 +13,5 @@
 #include <string>
 #include <list>
+#include <vector>
 
 
@@ -68,4 +69,8 @@
   virtual PIColors       GetBackgroundColor()= 0;
   virtual PIColors       GetForegroundColor()= 0;
+
+//   Methode permettant de decoder des options a partir de chaines
+  virtual int            DecodeOptionString(vector<string> & opt, 
+					    bool rmdecopt=true);
 
 //  Gestion des accrochages (binding) aux containers
