enum    linecap
{
       CAP_BUTT = 0 ,
       CAP_ROUND = 1 ,
       CAP_PROJSQUARE = 2 ,
} ;

enum    linejoin
{
       JOIN_MITER = 0 ,
       JOIN_ROUND = 1 ,
       JOIN_BEVEL = 2 ,
} ;

struct  color
{
       int     red ;
       int     green ;
       int     blue ;
} ;

struct  dash
{
       int             count ;
       double          offset ;
       double          dash[DASH_LIMIT] ;
} ;

struct  device
{
       struct  object  proc ;
       int             height ;
       int             width ;
       double          matrix[CTM_SIZE] ;
} ;

struct  screen
{
       double          frequency ;
       double          angle ;
       struct  object  proc ;
       int     levels;
       struct  Bitmap  *bitmap[GRAYLEVELS] ;
} ;


struct  hta
{
       int     x ;
       int     y ;
       double  order ;
} ;

struct  graphics
{
       double          CTM[CTM_SIZE] ;
       struct  color   color ;
       struct  path    path ;
       struct  path    clippath ;
       int clipchanged;
       int iminx, iminy, imaxx, imaxy;
       struct  dict    *font ;
       double          linewidth ;
       enum    linecap linecap ;
       enum   linejoin linejoin ;
       struct  screen  screen ;
       struct  object  transfer ;
       double          graytab[GRAYLEVELS] ;
       double          flat ;
       double          miterlimit ;
       struct  dash    dash ;
       struct  device  device ;
       struct  pspoint width ;
       int             inshow ;
       int             incharpath;
       struct pspoint  origin;
       struct  save    *save ;
} ;

struct  x {
       double  left, right ;
       int     direction ;
} ;

struct x intercepts(struct element *, struct element *, double);
int sxcomp(struct x *, struct x *);

struct color hsb2rgb(double, double, double);
double currentgray(void);
void paint(int, int, int, int);
int htcomp(struct hta *, struct hta *);
int gcd(int, int);
int rem(int, int);

# define E(m,p) m.value.v_array.object[p].value.v_real
# define I(m,p) m.value.v_array.object[p].value.v_int
# define G      Graphics.CTM

extern  struct graphics Graphics ;
void mybinit(void);
#ifdef HIRES
void fwr_bm_g4(int, Bitmap *);
#endif
#ifdef FAX
long fwr_bm_g31(FILE *, Bitmap *);
#ifdef AHMDAL
void aswab(unsigned char[]);
void vswab(unsigned long *);
#else
void vswab(unsigned long *);
void aswab(unsigned char[]);
#endif
#endif