Index: /trunk/SophyaPI/PI/parradapter.cc
===================================================================
--- /trunk/SophyaPI/PI/parradapter.cc	(revision 3151)
+++ /trunk/SophyaPI/PI/parradapter.cc	(revision 3152)
@@ -41,4 +41,15 @@
 // double X(int i)
 //	Retourne l'abcisse de l'element "i"
+// int  DecodeOptionString(vector<string> & opt, bool rmdecopt=true)
+//	Effectue le décodage des options du traceur à partir de "opt". Si "rmdecopt==true"
+//	les options décodées sont supprimées du vecteur "opt". 
+//	Retourne le nombre d'options décodées.
+//	L'implémentation par défaut ne fait rien. Cette méthode est appelée par les drawers
+//	utilisant l'objet. 
+// int  OptionToString(vector<string> & opt) const
+//	Méthode virtuelle qui peut être redéfinie dans les classes filles,
+//	pour fournir des chaines de caracteres décodable par *DecodeOptionString()* .
+//	Renvoie le nombre d'éléments ajoutés.
+//	L'implémentation par défaut ne fait rien.
 //--
 
@@ -67,4 +78,14 @@
 }
 
+/* --Methode-- */
+int P1DArrayAdapter::DecodeOptionString(vector<string> & /* opt */, bool /*rmdecopt*/)
+{
+return 0;
+}
+/* --Methode-- */
+int P1DArrayAdapter::OptionToString(vector<string> & /*opt*/) const
+{
+return 0;
+}
 
 //++
@@ -104,4 +125,15 @@
 // void XYfromxy(int ix, int iy, double& x, double& y)
 //	Coordonnees "x,y" a partir d'indice du tableau
+// int  DecodeOptionString(vector<string> & opt, bool rmdecopt=true)
+//	Effectue le décodage des options du traceur à partir de "opt". Si "rmdecopt==true"
+//	les options décodées sont supprimées du vecteur "opt". 
+//	Retourne le nombre d'options décodées.
+//	L'implémentation par défaut ne fait rien. Cette méthode est appelée par les drawers
+//	utilisant l'objet, ou par PIImage .
+// int  OptionToString(vector<string> & opt) const
+//	Méthode virtuelle qui peut être redéfinie dans les classes filles,
+//	pour fournir des chaines de caracteres décodable par *DecodeOptionString()* .
+//	Renvoie le nombre d'éléments ajoutés.
+//	L'implémentation par défaut ne fait rien.
 //--
 
@@ -462,4 +494,16 @@
 }
 
+/* --Methode-- */
+int P2DArrayAdapter::DecodeOptionString(vector<string> & /* opt */, bool /*rmdecopt*/)
+{
+return 0;
+}
+/* --Methode-- */
+int P2DArrayAdapter::OptionToString(vector<string> & /*opt*/) const
+{
+return 0;
+}
+
+
 //++
 // Class	P1DAdapter<T>
Index: /trunk/SophyaPI/PI/parradapter.h
===================================================================
--- /trunk/SophyaPI/PI/parradapter.h	(revision 3151)
+++ /trunk/SophyaPI/PI/parradapter.h	(revision 3152)
@@ -10,4 +10,7 @@
 #include "lut.h"
 
+#include <string> 
+#include <vector> 
+
 class P1DArrayAdapter {
 public :
@@ -19,4 +22,9 @@
   virtual void    DefineXCoordinate(double x0, double dx);
   virtual double  X(int i);
+
+//   Methode de decodage des options - Implementation par defaut ne fait rien
+  virtual int DecodeOptionString(vector<string> & opt, bool rmdecopt=true);
+//   liste des options sous forme text - Implementation par defaut ne fait rien
+  virtual int OptionToString(vector<string> & opt) const;
      
 protected :
@@ -81,4 +89,10 @@
                            int xwsz, int ywsz, unsigned char * opix, 
                            int * oxsp, int * oysp);
+
+//   Methode de decodage des options - Implementation par defaut ne fait rien
+  virtual int DecodeOptionString(vector<string> & opt, bool rmdecopt=true);
+//   liste des options sous forme text - Implementation par defaut ne fait rien
+  virtual int OptionToString(vector<string> & opt) const;
+
 protected :
   int sX, sY;
Index: /trunk/SophyaPI/PI/piimage.cc
===================================================================
--- /trunk/SophyaPI/PI/piimage.cc	(revision 3151)
+++ /trunk/SophyaPI/PI/piimage.cc	(revision 3152)
@@ -523,5 +523,6 @@
   vector<string> udopt;
   unsigned int k = 0;
-  int ndec = opt.size();
+  int ndec = opt.size();  
+  int optsz1 = ndec;
   bool fgcmapid=false, revcmapid=false; CMapId cmapid=CMAP_COLRJ32;
   bool invx = false;
@@ -621,5 +622,11 @@
 
   if (rmdecopt)  opt = udopt;
-  return(ndec);
+
+  // Decodage des options par le array-adapter
+  int ndec2 = 0;
+  if ( ( optsz1-ndec > 0) && (img) ) {
+    ndec2 = img->DecodeOptionString(opt, rmdecopt);
+  }
+  return(ndec+ndec2);
 }
 
Index: /trunk/SophyaPI/PI/pisurfdr.cc
===================================================================
--- /trunk/SophyaPI/PI/pisurfdr.cc	(revision 3151)
+++ /trunk/SophyaPI/PI/pisurfdr.cc	(revision 3152)
@@ -294,2 +294,24 @@
 }
 
+/* --Methode-- */
+int PISurfaceDrawer::DecodeOptionString(vector<string> & opt, bool rmdecopt)
+{
+  int optsz1 = opt.size();
+  if(optsz1<1) return(0); 
+  int ndec1 = PIDrawer3D::DecodeOptionString(opt, rmdecopt);
+  if(optsz1-ndec1<1) return(ndec1);  // si tout a ete decode
+  // Decodage des options par le array-adapter
+  int ndec2 = 0;
+  if ( ( optsz1-ndec1 > 0) && (mArr) ) {
+    ndec2 = mArr->DecodeOptionString(opt, rmdecopt);
+  }
+  return(ndec1+ndec2);
+}
+
+/* --Methode-- */
+int PISurfaceDrawer::OptionToString(vector<string> & opt) const
+{
+  PIDrawer3D::OptionToString(opt);
+  if (mArr) mArr->OptionToString(opt);
+  return 1;
+}
Index: /trunk/SophyaPI/PI/pisurfdr.h
===================================================================
--- /trunk/SophyaPI/PI/pisurfdr.h	(revision 3151)
+++ /trunk/SophyaPI/PI/pisurfdr.h	(revision 3152)
@@ -20,10 +20,10 @@
 
 /* --- Juin 2004 : decodage des options mis ds PIDrawer3D 
+       Jan 2007 : reactive pour decoder les options du P2DArrayAdapter* mArr  ---  */
 //   Methode de decodage des options
   virtual int        DecodeOptionString(vector<string> & opt, bool rmdecopt=true);
   virtual int        OptionToString(vector<string> & opt) const;
 //   Texte d'aide des options disponibles
-  virtual void       GetOptionsHelpInfo(string& info);
-  ---------     */
+//-- Celui de PIDrawer3D (Juin04/Jan07)  virtual void       GetOptionsHelpInfo(string& info);
 
 protected :
