Index: /trunk/SophyaPI/PI/pieldrw.cc
===================================================================
--- /trunk/SophyaPI/PI/pieldrw.cc	(revision 2263)
+++ /trunk/SophyaPI/PI/pieldrw.cc	(revision 2264)
@@ -145,13 +145,27 @@
 	case PIDEL_Circ :
 	  if ((*it).scc)  // Coord specifie normalise 0..1
-	    g->DrawCircle(CN_To_CG_X((*it).ex), CN_To_CG_Y((*it).ey), CN_To_CG_R((*it).edx) );
-	  else  g->DrawCircle((*it).ex, (*it).ey, (*it).edx ); 
+	    g->DrawCircle(CN_To_CG_X((*it).ex), CN_To_CG_Y((*it).ey), CN_To_CG_R((*it).er) );
+	  else  g->DrawCircle((*it).ex, (*it).ey, (*it).er ); 
 	  break;
 	case PIDEL_FCirc :
 	  if ((*it).scc)  // Coord specifie normalise 0..1
-	    g->DrawFCircle(CN_To_CG_X((*it).ex), CN_To_CG_Y((*it).ey), CN_To_CG_R((*it).edx) );
-	  else g->DrawFCircle((*it).ex, (*it).ey, (*it).edx ); 
+	    g->DrawFCircle(CN_To_CG_X((*it).ex), CN_To_CG_Y((*it).ey), CN_To_CG_R((*it).er) );
+	  else g->DrawFCircle((*it).ex, (*it).ey, (*it).er ); 
 	  break;
 	case PIDEL_Arc :
+	  if ((*it).scc)  // Coord specifie normalise 0..1
+	    g->DrawArc(CN_To_CG_X((*it).ex), CN_To_CG_Y((*it).ey), CN_To_CG_R((*it).er),
+		       CN_To_CG_R((*it).er), (*it).edx, (*it).edy );
+	  else  g->DrawArc((*it).ex, (*it).ey, (*it).er, (*it).er, 
+			   (*it).edx, (*it).edy ); 
+	  break;
+	case PIDEL_FArc :
+	  if ((*it).scc)  // Coord specifie normalise 0..1
+	    g->DrawFArc(CN_To_CG_X((*it).ex), CN_To_CG_Y((*it).ey), CN_To_CG_R((*it).er),
+			CN_To_CG_R((*it).er), (*it).edx, (*it).edy );
+	  else  g->DrawFArc((*it).ex, (*it).ey, (*it).er, (*it).er, 
+			    (*it).edx, (*it).edy ); 
+	  break;
+	case PIDEL_Arc3P :
 	  if ((*it).scc)  // Coord specifie normalise 0..1
 	    g->Draw3PtArc(CN_To_CG_X((*it).xpol[0]), CN_To_CG_X((*it).xpol[1]), 
@@ -161,5 +175,5 @@
 			     (*it).ypol[1], (*it).xpol[2], (*it).ypol[2] );
 	  break;
-	case PIDEL_FArc :
+	case PIDEL_FArc3P :
 	  if ((*it).scc)  // Coord specifie normalise 0..1
 	    g->Draw3PtFArc(CN_To_CG_X((*it).xpol[0]), CN_To_CG_X((*it).xpol[1]), 
@@ -256,4 +270,22 @@
 //	Renvoie le numéro identificateur de l'élément.
 //
+// int  ElAddArc(double x, double y, double r, double a1, double da, bool fgsc=false)
+// int  ElAddArc(double x, double y, double r, double a1, double da, \
+//               PIGraphicAtt gatt, bool fgsc=false)
+//	Ajout d'un élément de type arc de cercle défini par un angle de départ "a1"
+//	et une extension angulaire "da". 
+//	Il est possible de spécifier un attribut graphique.
+//	si "fgsc==true", coordonnées spécifiées considerées normalisées entre 0 et 1.
+//	Renvoie le numéro identificateur de l'élément.
+//
+// int  ElAddFArc(double x, double y, double r, double a1, double da, bool fgsc=false)
+// int  ElAddFArc(double x, double y, double r, double a1, double da, \
+//                PIGraphicAtt gatt, bool fgsc=false)
+//	Ajout d'un élément de type arc de cercle plein défini par un angle de 
+//	départ "a1" et une extension angulaire "da". 
+//	Il est possible de spécifier un attribut graphique.
+//	si "fgsc==true", coordonnées spécifiées considerées normalisées entre 0 et 1.
+//	Renvoie le numéro identificateur de l'élément.
+//
 // int  ElAddArc(double x1, double y1, double x2, double y2 \
 //               double x3, double y3, bool fgsc=false)
@@ -298,5 +330,6 @@
 /* --Methode-- */
 int PIElDrwMgr::ElAdd(int typ, double x, double  y, double dx, double dy, 
-		      const char* s, PIGraphicAtt const& att, unsigned long tpd, bool fgsc)
+		      const char* s, PIGraphicAtt const& att, 
+		      unsigned long tpd, bool fgsc, double r)
 {
   DrwEl dre;
@@ -305,4 +338,5 @@
   dre.ex = x;   dre.ey = y;
   dre.edx = dx;  dre.edy = dy;
+  dre.er = r; 
   dre.gatt = att;
   if (s)  { 
@@ -329,5 +363,6 @@
   dre.eid = mEn; dre.etyp = PIDEL_CText;
   dre.ex = x;   dre.ey = y;
-  dre.edx = 0;  dre.edy = 0;
+  dre.edx = 0;  dre.edy = 0; 
+  dre.er = 0.;
   dre.gatt = att;
   dre.es = new TxtEl;
@@ -356,4 +391,5 @@
   dre.ex = dre.ey = 0;
   dre.edx = dre.edy = 0;
+  dre.er = 0.;
   dre.gatt = att;
   dre.es = NULL;
Index: /trunk/SophyaPI/PI/pieldrw.h
===================================================================
--- /trunk/SophyaPI/PI/pieldrw.h	(revision 2263)
+++ /trunk/SophyaPI/PI/pieldrw.h	(revision 2264)
@@ -8,5 +8,6 @@
 #include "pidrawer.h"
 
-//  Classe avec gestion d une liste d elements a tracer 
+/*  ------------------- Classe PIElDrwMgr ------------------------  */
+//  Classe avec gerant d une liste d elements a tracer 
 
 class PIElDrwMgr
@@ -17,7 +18,8 @@
          PIDEL_Circ = 5, PIDEL_FCirc = 6,
          PIDEL_Arc = 7,  PIDEL_FArc = 8,
-         PIDEL_Poly = 9, PIDEL_FPoly = 10,
-	 PIDEL_Mark = 11, PIDEL_Arrow = 12,
-         PIDEL_CText = 13  } ; 
+         PIDEL_Arc3P = 9,  PIDEL_FArc3P = 10,
+         PIDEL_Poly = 11, PIDEL_FPoly = 12,
+	 PIDEL_Mark = 13, PIDEL_Arrow = 14,
+         PIDEL_CText = 15  } ; 
 
 		PIElDrwMgr();
@@ -88,16 +90,35 @@
   // ---- Ajout de cercles
   inline int    ElAddCirc(double x, double y, double r, bool fgsc=false)
-    { PIGraphicAtt gatt; return( ElAdd(PIDEL_Circ, x, y, r, r, NULL, gatt, 0, fgsc) ); }  
+    { PIGraphicAtt gatt; 
+      return( ElAdd(PIDEL_Circ, x, y, 0., 360., NULL, gatt, 0, fgsc, r) ); }  
   inline int    ElAddCirc(double x, double y, double r, 
 			  PIGraphicAtt const & gatt, bool fgsc=false)
-    { return( ElAdd(PIDEL_Circ, x, y, r, r, NULL, gatt, 0, fgsc) ); }  
+    { return( ElAdd(PIDEL_Circ, x, y, 0., 360., NULL, gatt, 0, fgsc, r) ); }  
 
   inline int    ElAddFCirc(double x, double y, double r, bool fgsc=false)
-    { PIGraphicAtt gatt; return( ElAdd(PIDEL_FCirc, x, y, r, r, NULL, gatt, 0, fgsc) ); }  
+    { PIGraphicAtt gatt; 
+      return( ElAdd(PIDEL_FCirc, x, y, 0., 360., NULL, gatt, 0, fgsc, r) ); }  
   inline int    ElAddFCirc(double x, double y, double r, 
 			   PIGraphicAtt const & gatt, bool fgsc=false)
-    { return( ElAdd(PIDEL_FCirc, x, y, r, r, NULL, gatt, 0, fgsc) ); }  
-
-  // ---- Ajout d' arcs 
+    { return( ElAdd(PIDEL_FCirc, x, y, 0., 360., NULL, gatt, 0, fgsc, r) ); }  
+
+  // ---- Ajout d' arcs specifies par deux angles
+  inline int    ElAddArc(double x, double y, double r, 
+			 double a, double da, bool fgsc=false)
+    { PIGraphicAtt gatt; 
+      return( ElAdd(PIDEL_Arc, x, y, a, da, NULL, gatt, 0, fgsc, r) ); }  
+  inline int    ElAddArc(double x, double y, double r, double a, double da, 
+			 PIGraphicAtt const & gatt, bool fgsc=false)
+    { return( ElAdd(PIDEL_Arc, x, y, a, da, NULL, gatt, 0, fgsc, r) ); }  
+
+  inline int    ElAddFArc(double x, double y, double r, 
+			  double a, double da, bool fgsc=false)
+    { PIGraphicAtt gatt; 
+      return( ElAdd(PIDEL_FArc, x, y, a, da, NULL, gatt, 0, fgsc, r) ); }  
+  inline int    ElAddFArc(double x, double y, double r, double a, double da, 
+			  PIGraphicAtt const & gatt, bool fgsc=false)
+    { return( ElAdd(PIDEL_FArc, x, y, a, da, NULL, gatt, 0, fgsc, r) ); }  
+
+  // ---- Ajout d' arcs specifies par 3 points
   inline int    ElAddArc(double x1, double y1, double x2, double y2,
 			 double x3, double y3, bool fgsc=false)
@@ -105,5 +126,5 @@
       x[0] = x1; x[1] = x2; x[2] = x3; 
       y[0] = y1; y[1] = y2; y[2] = y3; 
-      return( ElAdd(PIDEL_Arc, x, y, 3, gatt, fgsc) ); }  
+      return( ElAdd(PIDEL_Arc3P, x, y, 3, gatt, fgsc) ); }  
 
   inline int    ElAddArc(double x1, double y1, double x2, double y2,
@@ -112,5 +133,5 @@
       x[0] = x1; x[1] = x2; x[2] = x3; 
       y[0] = y1; y[1] = y2; y[2] = y3; 
-      return( ElAdd(PIDEL_Arc, x, y, 3, gatt, fgsc) ); }  
+      return( ElAdd(PIDEL_Arc3P, x, y, 3, gatt, fgsc) ); }  
 
   inline int    ElAddFArc(double x1, double y1, double x2, double y2,
@@ -119,5 +140,5 @@
       x[0] = x1; x[1] = x2; x[2] = x3; 
       y[0] = y1; y[1] = y2; y[2] = y3; 
-      return( ElAdd(PIDEL_FArc, x, y, 3, gatt, fgsc) ); }  
+      return( ElAdd(PIDEL_FArc3P, x, y, 3, gatt, fgsc) ); }  
 
   inline int    ElAddFArc(double x1, double y1, double x2, double y2,
@@ -126,5 +147,5 @@
       x[0] = x1; x[1] = x2; x[2] = x3; 
       y[0] = y1; y[1] = y2; y[2] = y3; 
-      return( ElAdd(PIDEL_FArc, x, y, 3, gatt, fgsc) ); }  
+      return( ElAdd(PIDEL_FArc3P, x, y, 3, gatt, fgsc) ); }  
 
   // ---- Ajout de polygones 
@@ -149,5 +170,5 @@
   int                ElAdd(int typ, double x, double y, double dx, double dy, 
                            const char* s, PIGraphicAtt const & att,
-			   unsigned long txtposdir, bool fgsc);
+			   unsigned long txtposdir, bool fgsc, double r=0.);
   int		     ElAdd(double x, double y, const char* s, PIGraphicAtt const & att, 
 			   const char* s_up, const char* s_dn, PIGraphicAtt const * gass, 
@@ -169,5 +190,5 @@
   struct DrwEl{
     int eid, etyp;
-    double ex,ey;
+    double ex,ey,er;
     double edx,edy;
     PIGraphicAtt gatt;
@@ -176,5 +197,5 @@
     PIGrCoord* ypol;
     int npol;
-    bool scc;  // true -> scale coordinate (user-coord : 0..1 1
+    bool scc;  // true -> normalized coordinates ( 0..1 )
   };
 
@@ -184,4 +205,7 @@
   
 };
+
+/*  ------------------- Classe PIElDrawer ------------------------  */
+// Classe de Drawer capable de gerer une liste d'elements a tracer
 
 class PIElDrawer : public PIDrawer 
Index: /trunk/SophyaPI/PI/pigraphuc.cc
===================================================================
--- /trunk/SophyaPI/PI/pigraphuc.cc	(revision 2263)
+++ /trunk/SophyaPI/PI/pigraphuc.cc	(revision 2264)
@@ -638,4 +638,6 @@
   UC2GrC(x0, y0, xf, yf);
   DUC2GrC(dx, dy, dxf, dyf);
+  // $CHECK$ - Reza Nov 2002 , Il faudra aussi tenir compte de l'axe X
+  if (!isAxeYDirUpDown()) degdeb = 360.-(degdeb+deltadeg);
   mGrC->DrawArc(xf, yf, dxf, dyf, degdeb, deltadeg);
 }
@@ -649,4 +651,6 @@
   UC2GrC(x0, y0, xf, yf);
   DUC2GrC(dx, dy, dxf, dyf);
+  // $CHECK$ - Reza Nov 2002 , Il faudra aussi tenir compte de l'axe X
+  if (!isAxeYDirUpDown()) degdeb = 360.-(degdeb+deltadeg);
   mGrC->DrawFArc(xf, yf, dxf, dyf, degdeb, deltadeg);
 }
