#ifndef _DRAWTYPE_H #define _DRAWTYPE_H typedef union { struct { char reserved; char red; char green; char blue; } components; unsigned int colour; } DrawColour; #define TRANSPARENT ~0 #define COLOUR(r,g,b) (((unsigned int)(b)<<24)+((unsigned int)(g)<<16)+((unsigned int)(r)<<8)) #define GREY(x) COLOUR(x,x,x) #define BLACK GREY((unsigned int)0) #define WHITE GREY((unsigned int)255) typedef struct { int x,y; } DrawPoint; typedef struct { DrawPoint lowerLeft; DrawPoint upperRight; } DrawBox; typedef struct { int magic; int major; int minor; char creator[12]; DrawBox bounding; } DrawFileHeader; typedef struct { int type; int size; } DrawHeader; #define DRAW_FONTTABLEOBJECT 0 typedef struct { DrawHeader header; } DrawFontTableObject; #define DRAW_TEXTOBJECT 1 typedef struct { DrawHeader header; DrawBox bounding; DrawColour forground; DrawColour background; unsigned int fontNumber; unsigned int xSize; unsigned int ySize; DrawPoint start; } DrawTextObject; #define DRAW_TRANSTEXTOBJECT 12 #define KernedFont 1 #define RightToLeft 2 typedef struct { int xfx,xfy; int yfx,yfy; int tx,ty; } TransMat; typedef struct { DrawHeader header; DrawBox bounding; TransMat trans; unsigned int fontFlag; DrawColour forground; DrawColour background; unsigned int fontNumber; unsigned int xSize; unsigned int ySize; DrawPoint start; } DrawTransTextObject; #define TRANS_SIZE 28 #define DRAW_PATHOBJECT 2 #define mitredJoind 0 #define roundJoin 1 #define bevelledJoin 2 #define buttCap 0 #define roundCap 1 #define squareCap 2 #define triCap 3 typedef struct { unsigned int joinStyle :2; unsigned int endCapStyle :2; unsigned int startCapStyle :2; unsigned int evenOddWinding :1; unsigned int useDashPattern :1; unsigned int unused :8; unsigned int triCapWidth :8; unsigned int triCapLength :8; } PathStyle; typedef struct { DrawHeader header; DrawBox bounding; DrawColour fill; DrawColour outline; unsigned int outlineWidth; PathStyle pathStyle; } DrawPathObject; typedef struct { int type; DrawPoint p[3]; } DrawPathObject3; typedef struct { int type; DrawPoint p[2]; } DrawPathObject2; typedef struct { int type; DrawPoint p[1]; } DrawPathObject1; typedef struct { int type; } DrawPathObject0; #define DRAWPATH_END 0 #define DRAWPATH_MOVE 2 #define DRAWPATH_CLOSE 5 #define DRAWPATH_DRAW 8 #define DRAWPATH_BEIZER 6 #define SIZE_DRAWPATH_END sizeof(DrawPathObject0) #define SIZE_DRAWPATH_MOVE sizeof(DrawPathObject1) #define SIZE_DRAWPATH_CLOSE sizeof(DrawPathObject0) #define SIZE_DRAWPATH_DRAW sizeof(DrawPathObject1) #define SIZE_DRAWPATH_BEIZER sizeof(DrawPathObject3) typedef struct { unsigned int offset; unsigned int size; unsigned int len[1]; } DashPattern; #define MM(n) ((n)*1800) #endif