#ifndef SDL_gradd_h_
#define SDL_gradd_h_
typedef struct _INITPROCOUT {
ULONG ulLength;
ULONG ulVRAMVirt;
} INITPROCOUT;
typedef INITPROCOUT *PINITPROCOUT;
#define RC_SUCCESS 0
typedef ULONG GID;
typedef ULONG (_System FNVMIENTRY) (
GID gid, ULONG ulFunction,
PVOID pIn,
PVOID pOut
);
#define VMI_CMD_INITPROC 1
#define VMI_CMD_TERMPROC 3
#define VMI_CMD_QUERYMODES 5
#define VMI_CMD_SETMODE 6
#define VMI_CMD_PALETTE 7
#define VMI_CMD_BITBLT 8
#define VMI_CMD_LINE 9
#define VMI_CMD_REQUESTHW 14
#define VMI_CMD_QUERYCURRENTMODE 0x1001
#define QUERYMODE_NUM_MODES 0x01
#define QUERYMODE_MODE_DATA 0x02
typedef struct _HWPALETTEINFO {
ULONG ulLength;
ULONG fFlags;
ULONG ulStartIndex;
ULONG ulNumEntries;
PRGB2 pRGBs;
} HWPALETTEINFO;
typedef HWPALETTEINFO *PHWPALETTEINFO;
#define PALETTE_GET 0x01
#define PALETTE_SET 0x02
typedef struct _BMAPINFO {
ULONG ulLength;
ULONG ulType;
ULONG ulWidth;
ULONG ulHeight;
ULONG ulBpp;
ULONG ulBytesPerLine;
PBYTE pBits;
} BMAPINFO;
typedef BMAPINFO *PBMAPINFO;
#define BMAP_VRAM 0
#define BMAP_MEMORY 1
typedef struct _LINEPACK {
ULONG ulStyleStep;
ULONG ulStyleValue;
ULONG ulFlags;
struct _LINEPACK *plpkNext;
ULONG ulAbsDeltaX;
ULONG ulAbsDeltaY;
POINTL ptlClipStart;
POINTL ptlClipEnd;
POINTL ptlStart;
POINTL ptlEnd;
LONG lClipStartError;
} LINEPACK;
typedef LINEPACK *PLINEPACK;
typedef struct _LINEINFO {
ULONG ulLength;
ULONG ulType;
ULONG ulStyleMask;
ULONG cLines;
ULONG ulFGColor;
ULONG ulBGColor;
USHORT usForeROP;
USHORT usBackROP;
PBMAPINFO pDstBmapInfo;
PLINEPACK alpkLinePack;
PRECTL prclBounds;
} LINEINFO;
typedef LINEINFO *PLINEINFO;
#define LINE_DO_FIRST_PEL 0x02
#define LINE_DIR_Y_POSITIVE 0x04
#define LINE_HORIZONTAL 0x08
#define LINE_DIR_X_POSITIVE 0x20
#define LINE_VERTICAL 0x1000
#define LINE_DO_LAST_PEL 0x4000
#define LINE_SOLID 0x01
typedef struct _BLTRECT {
ULONG ulXOrg;
ULONG ulYOrg;
ULONG ulXExt;
ULONG ulYExt;
} BLTRECT;
typedef BLTRECT *PBLTRECT;
typedef struct _BITBLTINFO {
ULONG ulLength;
ULONG ulBltFlags;
ULONG cBlits;
ULONG ulROP;
ULONG ulMonoBackROP;
ULONG ulSrcFGColor;
ULONG ulSrcBGColor;
ULONG ulPatFGColor;
ULONG ulPatBGColor;
PBYTE abColors;
PBMAPINFO pSrcBmapInfo;
PBMAPINFO pDstBmapInfo;
PBMAPINFO pPatBmapInfo;
PPOINTL aptlSrcOrg;
PPOINTL aptlPatOrg;
PBLTRECT abrDst;
PRECTL prclSrcBounds;
PRECTL prclDstBounds;
} BITBLTINFO;
typedef BITBLTINFO *PBITBLTINFO;
#define BF_DEFAULT_STATE 0x0
#define BF_ROP_INCL_SRC (0x01 << 2)
#define BF_PAT_HOLLOW (0x01 << 8)
typedef struct _GDDMODEINFO {
ULONG ulLength;
ULONG ulModeId;
ULONG ulBpp;
ULONG ulHorizResolution;
ULONG ulVertResolution;
ULONG ulRefreshRate;
PBYTE pbVRAMPhys;
ULONG ulApertureSize;
ULONG ulScanLineSize;
ULONG fccColorEncoding, ulTotalVRAMSize, cColors;
} GDDMODEINFO;
typedef GDDMODEINFO *PGDDMODEINFO;
typedef struct _HWREQIN {
ULONG ulLength;
ULONG ulFlags;
ULONG cScrChangeRects;
PRECTL arectlScreen;
} HWREQIN;
typedef HWREQIN *PHWREQIN;
#define REQUEST_HW 0x01
#define GreDeath(h) (BOOL)Gre32Entry3((ULONG)(h), 0, 0x40B7L)
#define GreResurrection(h,n,r) (LONG)Gre32Entry5((ULONG)(h), (ULONG)(n), (ULONG)(r), 0, 0x40B8L)
ULONG _System Gre32Entry3(ULONG, ULONG, ULONG);
ULONG _System Gre32Entry5(ULONG, ULONG, ULONG, ULONG, ULONG);
#endif