Index: trunk/SophyaPI/PI/psfile.h
===================================================================
--- trunk/SophyaPI/PI/psfile.h	(revision 40)
+++ trunk/SophyaPI/PI/psfile.h	(revision 44)
@@ -12,4 +12,7 @@
  *        Au depart, 1UC == 1cm 
  *     - Les reperes sont orientes a la maniere XWindow
+ * 
+ *  17/02/97 : modification des constructeurs(1-->eps,2-->ps)
+ *             ajout du type enum orientation
  *
  */
@@ -22,4 +25,5 @@
 #endif
 #include "pisysdep.h"
+//#include "piinclude.h"
 
 #include PIBWDG_H      // Types enumeres repris de Peida:PIFontSize...
@@ -29,36 +33,33 @@
 
 
-/* 
- *  Unique format actuellement gere : A4
- *
- */
-enum PIPaperSizes { PI_A3 = 0, PI_A4 = 1, PI_A5 = 2, PI_NotDef = -1};
-
-#define PAGE_WIDTH   21.0   /* == 595 points */
-#define PAGE_HEIGHT  29.7   /* == 842 points */
-
-#define PORTRAIT  1
-#define LANDSCAPE 0
+
+/*
+ *#define PAGE_WIDTH   21.0    == 595 points 
+ *#define PAGE_HEIGHT  29.7    == 842 points 
+ *#define PORTRAIT  1
+ *#define LANDSCAPE 0
+ */
 
 
 
 /* Valable pour une page, ou un bloc */
-typedef struct {
-    float X0;         /* Coordonnes sommet NO  */
-    float Y0;         /*  en unites courantes  */
-    float Tx;         /* Format                */
-    float Ty;         /*  en unites courantes  */
-    float Dx;         /* Coord sommet SE       */
-    float Dy;         /*  en unites courantes  */
-    int orientation;  /* LANDSCAPE OU PORTRAIT */
-} Format;
-
-
-typedef struct{
-    char *Name;
-    int  Tx;     /* En 1/72e de pouce  !!  */
-    int  Ty;     /* unite naturelle de ps  */
-} PIMedia;
-
+/*typedef struct {
+ *  float X0;          Coordonnes sommet NO  
+ *  float Y0;           en unites courantes  
+ *  float Tx;          Format                
+ *  float Ty;           en unites courantes  
+ *  float Dx;          Coord sommet SE       
+ *  float Dy;           en unites courantes  
+ *  int orientation;   LANDSCAPE OU PORTRAIT 
+ *} Format;
+ */
+
+/*
+ *typedef struct{
+ *    char *Name;
+ *    int  Tx;     En 1/72e de pouce  !! 
+ *    int  Ty;     unite naturelle de ps 
+ *} PIMedia;
+ */
 
 
@@ -67,9 +68,10 @@
 
 public:
-
-		  PSFile (char * FileName, float Tx = 0, float Ty = 0,
-			  float Dx = 0, float Dy = 0);
-/*		  PSFile (PSFile *File, int PageNum, int BlocNum);*/
-/*		  PSFile (char * FileName, int PageNum, int BlocNum);*/
+    /* Production fichier eps */
+    PSFile (char * FileName, float sc = 1.0);
+    /* Production fichier ps  */
+    PSFile (char * FileName, PIOrientation orientation, 
+	    PIPaperSize paperSize= PI_A4, 
+	    float marginX = 1.0, float marginY = 1.0 ) ;
 
     virtual      ~PSFile();
@@ -79,11 +81,6 @@
 
 
-    /* A changer ?
-     * Pourrait introduire des incompatibilites
-     * en cas de chgt sur la struct format ?
-     */
-    virtual Format* GetFormat();
-
-    /*Attributs graphiques */
+    /*    virtual Format* GetFormat(); */
+    /* Attributs graphiques */
     virtual PIColors    GetDrawColor();
     virtual PIColors    GetFillColor();
@@ -93,5 +90,5 @@
     virtual PIMarker    GetMarker();
 
-    virtual void  NewPage(float Dx, float Dy, int orientation);
+    virtual void  NewPage(float Dx, float Dy, PIOrientation orientation);
     virtual void  EndPage();
     virtual void  NewBloc(float x0, float y0, float Tx, float Ty,
@@ -130,8 +127,10 @@
     virtual void  DrawMarker  (float x0, float y0, 
 			       PIMarker MrkType    = PI_NotDefMarker, 
-			       PIColors DrawColor  = PI_NotDefColor);
+			       PIColors DrawColor  = PI_NotDefColor,
+			       int MarkerSize=14);
     virtual void  DrawMarkers (float *x0, float *y0, int n,
 			       PIMarker MrkType    = PI_NotDefMarker,
-			       PIColors DrawColor  = PI_NotDefColor); 
+			       PIColors DrawColor  = PI_NotDefColor,
+			       int MarkerSize=14); 
 
     virtual void  Image(float x0, float y0, float Tx, float Ty,
@@ -140,23 +139,20 @@
 			PIColorMap *mColorMap);
 
-
-
-
-
-
-
-    typedef struct {
-	off_t begin;
-	off_t end;
-    } Offset;
-    
+#ifndef __DECCXX
+private:
+#endif
+
+
     /* Blocs */
     typedef struct {
 	int    num;
 	char*  label;
-	Format format;
-	Offset offset;
-    } Bloc;
+	float  X0, Y0;            /* coordonnees sommet NO */
+	float  Tx, Ty;            /* Format */
+	float  Dx, Dy;            /* Repere utilisateur */
+	long  begin,end,tmp;   /* offsets dans le fichier */
+    } Bloc ;
     typedef list<Bloc> BlocList;  /* STL */
+
 
     /* Pages */
@@ -164,56 +160,41 @@
 	int num;
 	int BlocCounter;
-	Format format;
-	Offset offset;
-	BlocList mBlocList;       /* Page == Liste de blocs */
-    } Page;
+	float Dx,Dy;              /* Sommet SE (unites utilisateur) */ 
+	PIOrientation orientation;
+	long  begin, end, tmp;    /* Offsets dans le fichier */
+	BlocList mBlocList;       /* Page == Liste de blocs  */
+    } Page ;
     typedef list<Page> PageList;  /* STL */
 
+#ifdef __DECCXX
 private:
-
-    /* --> Toute la classe */
-    static PSFile** PSFiles;      /* Tableau des PSFiles existants */
-
-    /* --> le fichier */
+#endif
+
+    /* Fichier ps/eps */
     FILE *   mPSFile;
     char *   mPSFileName;
+    float    Tw,Th ;              /* Format, en cm */
+    float    WMargin,HMargin ;    /* Marges minimales */
     int      isEPS;               /* Vrai si PostScript Encapsule */
-    Format   mFormat;             /* Format par defaut */
-    int      PageCounter;         /* Nbre de pages */
-    PageList mPageList;           /* Fichier == Liste de pages */
-
-    /* Attributs graphiques */
+    long     boundingBox;         /* Endroit ou est specifiee la bb */
+    float    scale;               /* boundingbox = Dx*scale ; Dy*scale */
+    PIPaperSize mPaperSize ; 
+    int      PageCounter;         /* nbr pages */
+    int      FileEmpty;
+    Page*    currentPage;        /* Avant empilage */
+    Bloc*    currentBloc;        /* Avant empilage */
+    PageList mPageList;          /* Fichier == Liste de pages */
+
+
+    /* Attributs graphiques, initialises par constructeur */
     enum PIColors    mDrawColor;  /* Couleur de trace courante */
     enum PIColors    mFillColor;  /* Couleur de remplissage courante */
-    enum PIFontAtt   mFontAtt;
-    enum PIFontSize  mFontSize;
+    enum PIFontAtt   mFontAtt; 
+    enum PIFontSize  mFontSize; 
     enum PILineAtt   mLineAtt;    /* Epaisseur d une ligne */
     enum PIMarker    mMarker;     /* Marker courant */
-
-
-    /* Ecriture du PostScript dans le fichier Physique */
-    /* Le code se trouve ds PSDict.cc                  */
-    virtual void  WriteHeader();
-    virtual void  WriteTrailer();
-    virtual void  WriteNewPage(Page *mPage);
-    virtual void  WriteEndPage(Page *mPage);
-    virtual void  WriteNewBloc(Bloc *mBloc);
-    virtual void  WriteEndBloc(Bloc *mBloc);
-    virtual void  WriteDrawString(float x, float y, char* s);
-    virtual void  WriteDrawLine(float x1, float y1, float x2, float y2);
-    virtual void  WriteDrawBox(float x0, float y0, float Tx, float Ty);
-    virtual void  WriteDrawFBox(float x0, float y0, float Tx, float Ty);
-    virtual void  WriteDrawCircle(float x0, float y0, float r);
-    virtual void  WriteDrawFCircle(float x0, float y0, float r);
-    virtual void  WriteDrawPolygon(float *x, float *y, int n);
-    virtual void  WriteDrawFPolygon(float *x, float *y, int n);
-    virtual void  WriteDrawMarker(float x0, float y0);
-    virtual void  WriteDrawMarkers(float *x0, float *y0, int n);
-    virtual void  WriteImage(float x0, float y0, float Tx, float Ty,
-		     int Nx, int Ny, unsigned char *pict, PIColorMap *mColorMap);
-    virtual void  WriteSetColor(PIColors mDrawColor);
-    virtual void  WriteSetFont(PIFontAtt mFontAtt, int mFontSize);
-    virtual void  WriteSetLineWidth(PILineAtt mLineAtt);
-};  /* End class PSFile */
+    int              mMarkerSize; /* Taille (en points) du marker courant */
+} ;
+
 
 #endif/* PSFILE_H_SEEN */
