#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#ifndef _psout_
#define _psout_
#include <stdio.h>
typedef enum PsCapEnum_ { PsCButt=0, PsCRound, PsCSquare } PsCapEnum;
typedef enum PsJoinEnum_ { PsJMiter=0, PsJRound, PsJBevel } PsJoinEnum;
typedef enum PsArcEnum_ { PsChord, PsPieSlice } PsArcEnum;
typedef enum PsRuleEnum_ { PsEvenOdd, PsNZWinding } PsRuleEnum;
typedef enum PsFillEnum_ { PsSolid=0, PsTile, PsStip, PsOpStip } PsFillEnum;
typedef struct PsPointRec_
{
int x;
int y;
} PsPointRec;
typedef PsPointRec *PsPointPtr;
typedef struct PsRectRec_
{
int x;
int y;
int w;
int h;
} PsRectRec;
typedef PsRectRec *PsRectPtr;
typedef struct PsArcRec_
{
int x;
int y;
int w;
int h;
int a1;
int a2;
PsArcEnum style;
} PsArcRec;
typedef PsArcRec *PsArcPtr;
#define PSOUT_RECT 0
#define PSOUT_ARC 1
#define PSOUT_POINTS 2
typedef struct PsElmRec_
{
int type;
int nPoints;
union
{
PsRectRec rect;
PsArcRec arc;
PsPointPtr points;
} c;
} PsElmRec;
typedef PsElmRec *PsElmPtr;
typedef struct PsClipRec_
{
int nRects;
PsRectPtr rects;
int nElms;
PsElmPtr elms;
int nOutterClips;
PsRectPtr outterClips;
} PsClipRec;
typedef PsClipRec *PsClipPtr;
typedef enum PsFTDownloadFontType_
{
PsFontBitmap=0,
PsFontType1,
PsFontType3
} PsFTDownloadFontType;
#ifdef PSOUT_USE_DEEPCOLOR
#ifdef WIN32
typedef signed __int64 PsOutColor;
#else
# if defined(__alpha__) || defined(__alpha) || \
defined(ia64) || defined(__ia64__) || \
defined(__sparc64__) || defined(_LP64) || \
defined(__s390x__) || \
defined(amd64) || defined (__amd64__) || \
defined (__powerpc64__) || \
(defined(sgi) && (_MIPS_SZLONG == 64))
typedef signed long PsOutColor;
# else
typedef signed long long PsOutColor;
# endif
#endif
#define PSOUTCOLOR_TO_REDBITS(clr) ((clr) >> 32)
#define PSOUTCOLOR_TO_GREENBITS(clr) (((clr) >> 16) & 0xFFFF)
#define PSOUTCOLOR_TO_BLUEBITS(clr) ((clr) & 0xFFFF)
#define PSOUTCOLOR_BITS_TO_PSFLOAT(b) ((float)(b) / 65535.)
#define PSOUTCOLOR_WHITE (0xFFFFFFFFFFFFLL)
#define PSOUTCOLOR_NOCOLOR (-1LL)
#define PSOUTCOLOR_TO_RGB24BIT(clr) (((PSOUTCOLOR_TO_REDBITS(clr) >> 8) << 16) | \
((PSOUTCOLOR_TO_GREENBITS(clr) >> 8) << 8) | \
((PSOUTCOLOR_TO_BLUEBITS(clr) >> 8) << 0))
#else
typedef signed long PsOutColor;
#define PSOUTCOLOR_TO_REDBITS(clr) ((clr) >> 16)
#define PSOUTCOLOR_TO_GREENBITS(clr) (((clr) >> 8) & 0xFF)
#define PSOUTCOLOR_TO_BLUEBITS(clr) ((clr) & 0xFF)
#define PSOUTCOLOR_BITS_TO_PSFLOAT(b) ((float)(b) / 255.)
#define PSOUTCOLOR_WHITE (0xFFFFFF)
#define PSOUTCOLOR_NOCOLOR (-1)
#define PSOUTCOLOR_TO_RGB24BIT(clr) ((PSOUTCOLOR_TO_REDBITS(clr) << 16) | \
(PSOUTCOLOR_TO_GREENBITS(clr) << 8) | \
(PSOUTCOLOR_TO_BLUEBITS(clr) << 0))
#endif
#ifdef USE_PSOUT_PRIVATE
typedef void *voidPtr;
typedef struct PsPatRec_
{
PsFillEnum type;
voidPtr tag;
} PsPatRec;
typedef PsPatRec *PsPatPtr;
typedef struct PsOutRec_
{
FILE *Fp;
char Buf[16384];
PsOutColor CurColor;
int LineWidth;
PsCapEnum LineCap;
PsJoinEnum LineJoin;
int NDashes;
int *Dashes;
int DashOffset;
PsOutColor LineBClr;
PsRuleEnum FillRule;
char *FontName;
int FontSize;
float FontMtx[4];
int ImageFormat;
int RevImage;
int NPatterns;
int MxPatterns;
PsPatPtr Patterns;
int ClipType;
PsClipRec Clip;
int InFrame;
int XOff;
int YOff;
PsFillEnum InTile;
int ImgSkip;
PsOutColor ImgBClr;
PsOutColor ImgFClr;
int ImgX;
int ImgY;
int ImgW;
int ImgH;
int SclW;
int SclH;
Bool isRaw;
int pagenum;
int start_image;
} PsOutRec;
typedef struct PsOutRec_ *PsOutPtr;
extern void S_Flush(PsOutPtr self);
extern void S_OutNum(PsOutPtr self, float num);
extern void S_OutTok(PsOutPtr self, char *tok, int cr);
#else
typedef struct PsOutRec_ *PsOutPtr;
#endif
extern FILE * PsOut_ChangeFile(PsOutPtr self, FILE *fp);
extern PsOutPtr PsOut_BeginFile(FILE *fp, char *title, int orient, int count, int plex,
int res, int wd, int ht, Bool raw);
extern void PsOut_EndFile(PsOutPtr self, int closeFile);
extern void PsOut_BeginPage(PsOutPtr self, int orient, int count, int plex,
int res, int wd, int ht);
extern void PsOut_EndPage(PsOutPtr self);
extern void PsOut_DirtyAttributes(PsOutPtr self);
extern void PsOut_Comment(PsOutPtr self, char *comment);
extern void PsOut_Offset(PsOutPtr self, int x, int y);
extern void PsOut_Clip(PsOutPtr self, int clpTyp, PsClipPtr clpinf);
extern void PsOut_Color(PsOutPtr self, PsOutColor clr);
extern void PsOut_FillRule(PsOutPtr self, PsRuleEnum rule);
extern void PsOut_LineAttrs(PsOutPtr self, int wd, PsCapEnum cap,
PsJoinEnum join, int nDsh, int *dsh, int dshOff,
PsOutColor bclr);
extern void PsOut_TextAttrs(PsOutPtr self, char *fnam, int siz, int iso);
extern void PsOut_TextAttrsMtx(PsOutPtr self, char *fnam, float *mtx, int iso);
extern void PsOut_Polygon(PsOutPtr self, int nPts, PsPointPtr pts);
extern void PsOut_FillRect(PsOutPtr self, int x, int y, int w, int h);
extern void PsOut_FillArc(PsOutPtr self, int x, int y, int w, int h,
float ang1, float ang2, PsArcEnum style);
extern void PsOut_Lines(PsOutPtr self, int nPts, PsPointPtr pts);
extern void PsOut_Points(PsOutPtr self, int nPts, PsPointPtr pts);
extern void PsOut_DrawRect(PsOutPtr self, int x, int y, int w, int h);
extern void PsOut_DrawArc(PsOutPtr self, int x, int y, int w, int h,
float ang1, float ang2);
extern void PsOut_Text(PsOutPtr self, int x, int y, char *text, int textl,
PsOutColor bclr);
extern void PsOut_Text16(PsOutPtr self, int x, int y, unsigned short *text, int textl, PsOutColor bclr);
extern void PsOut_BeginImage(PsOutPtr self, PsOutColor bclr, PsOutColor fclr, int x, int y,
int w, int h, int sw, int sh, int format);
extern void PsOut_BeginImageIM(PsOutPtr self, PsOutColor bclr, PsOutColor fclr, int x, int y,
int w, int h, int sw, int sh, int format);
extern void PsOut_EndImage(PsOutPtr self);
extern void PsOut_OutImageBytes(PsOutPtr self, int nBytes, char *bytes);
extern void PsOut_BeginFrame(PsOutPtr self, int xoff, int yoff, int x, int y,
int w, int h);
extern void PsOut_EndFrame(PsOutPtr self);
extern int PsOut_BeginPattern(PsOutPtr self, void *tag, int w, int h,
PsFillEnum type, PsOutColor bclr, PsOutColor fclr);
extern void PsOut_EndPattern(PsOutPtr self);
extern void PsOut_SetPattern(PsOutPtr self, void *tag, PsFillEnum type);
extern void PsOut_RawData(PsOutPtr self, char *data, int len);
extern int PsOut_DownloadType1(PsOutPtr self, const char *auditmsg, const char *name, const char *fname);
extern int PsOut_DownloadFreeType1(PsOutPtr self, const char *psfontname, FontPtr pFont, long block_offset);
extern int PsOut_DownloadFreeType3(PsOutPtr self, const char *psfontname, FontPtr pFont, long block_offset);
extern int PsOut_DownloadFreeType(PsOutPtr self, PsFTDownloadFontType downloadfonttype, const char *psfontname, FontPtr pFont, long block_offset);
extern void PsOut_Get_FreeType_Glyph_Name( char *destbuf, FontPtr pFont, unsigned long x11fontindex);
extern void PsOut_FreeType_Text(FontPtr pFont, PsOutPtr self, int x, int y, char *text, int textl);
extern void PsOut_FreeType_Text16(FontPtr pFont, PsOutPtr self, int x, int y, unsigned short *text, int textl);
extern void PsOut_FreeType_TextAttrs16(PsOutPtr self, char *fnam, int siz, int iso);
extern void PsOut_FreeType_TextAttrsMtx16(PsOutPtr self, char *fnam, float *mtx, int iso);
#endif