/***********************************************************/
/*      _  __ __                                           */
/*  /_//_)/_ (                                             */
/* / //( (_/__)|/STEM   written by H.Raaf © 1992-93        */
/*             /                                           */
/*                           ProDev / X-Pert               */
/*                                                         */
/***********************************************************/
/*                                                         */
/* The prototypes for hrgsystem.library V38                */
/*                                                         */
/***********************************************************/

#ifndef HRG_HRGSYSTEM_PROTOS_H
#define HRG_HRGSYSTEM_PROTOS_H

#ifndef HRG_HRGSYSTEM_H
#include <hrg/hrgsystem.h>
#endif

/* PRIVATE and not for Public */

ULONG hrSetHardwareTagList(struct TagItem *);
ULONG hrSetHardwareTags(ULONG, ...);

void hrDoBanking(struct HRBitMap *,ULONG);

/* PUBLIC Functions of the Library */

struct HRList * hrLockHRList(void);
void hrUnlockHRList(struct HRList *);

struct HRHardwareInfo * hrGetHardwareInfo(void);

struct HRBitMap * hrAllocBitMap(ULONG);
void hrFreeBitMap(struct HRBitMap *);
void hrFlushBitMaps(void);

UBYTE * hrLockBitMap(struct HRBitMap *);
void hrSLockBitMap(struct HRBitMap *);
void hrUnlockBitMap(struct HRBitMap *);

struct HRHandle * hrOpenScreenTagList(struct TagItem *);
struct HRHandle * hrOpenScreenTags(ULONG, ...);
void hrCloseScreen(struct HRHandle * );

void hrSetRGBA(struct HRHandle *, UBYTE, HRCOL_RGBA );
HRCOL_RGBA hrGetRGBA(struct HRHandle *, UBYTE );
void hrSetRGB8(struct HRHandle *, UBYTE, UBYTE, UBYTE, UBYTE);
void hrSetRGB32(struct HRHandle *, UBYTE, ULONG, ULONG, ULONG);
void hrSetPaletteRGBA(struct HRHandle *, HRCOL_RGBA *, UBYTE, UBYTE );
void hrGetPaletteRGBA(struct HRHandle *, HRCOL_RGBA *, UBYTE, UBYTE );
void hrClearScreen(struct HRHandle *);
BOOL hrSetPresetPalette(struct HRHandle *, ULONG );

void hrSwitchDisplay(struct HRHandle *, UBYTE );

struct HRModeInfo * hrLockModeInfoList(void);
void hrUnlockModeInfoList(void);
LONG hrAddModeInfo(struct HRModeInfo *);
LONG hrDelModeInfo(struct HRModeInfo *);

struct HRModeInfo * hrRequestModeTagList(struct TagItem *);
struct HRModeInfo * hrRequestModeTags(ULONG, ...);

BOOL hrCalcVirtualSize(struct HRModeInfo *mi,UWORD *width,UWORD *height);

struct HRModeInfo * hrMatchModeInfoTagList(UWORD, UWORD *, UWORD *, struct TagItem * );
struct HRModeInfo * hrMatchModeInfoTags(UWORD, UWORD *, UWORD *, ULONG, ...);

void hrSetCursorData(struct HRHandle *, struct HRCursor *);
struct HRCursor *hrGetDefaultCursor(UBYTE);
void hrSetCursorPos(struct HRHandle *,WORD, WORD);
void hrSwitchCursor(struct HRHandle *,UBYTE);

struct HRHandle * hrAllocScreen(struct HRModeInfo *, UWORD, UWORD, STRPTR, ULONG * );
void hrFreeScreen(struct HRHandle * );
BOOL hrAttachScreen(struct HRHandle *, struct Screen * );
void hrRemoveScreen(struct HRHandle * );

struct HRColorMap *hrAllocColorMap(UWORD Colors);
void hrFreeColorMap(struct HRColorMap *hrcm);
void hrSetColorMap(struct HRHandle *,struct HRColorMap *hrcm);

void hrSetDispPos(struct HRHandle *, WORD, WORD);
void hrSetBlanking(struct HRHandle *, BOOL );
void hrSetBorderColor(struct HRHandle *, ULONG );

struct HRHandle * hrEazyOpenScreen(struct HRModeInfo *, UWORD, UWORD, ULONG, STRPTR, ULONG * );
struct HRHandle * hrEazyScreenAttach(struct HRHandle *, struct Screen *, ULONG, ULONG * );
BOOL hrCheckVSizeMatch(struct HRModeInfo *, UWORD, UWORD, ULONG);
ULONG hrCheckScreenState(struct Screen * );

void hrLockScreenBase(struct HRHandle * );
void hrUnlockScreenBase(struct HRHandle * );

ULONG hrEazyCheckAbort(struct HRHandle * );
ULONG hrEazyWaitClose(struct HRHandle *, ULONG);

void hrSLockBitMap(struct HRBitMap *);

UBYTE *hrNameBitMapType(UWORD bmtype,BOOL mode);

void hrSetGfxAccel(ULONG magic);

BOOL hrAdjustVirtSize(struct HRModeInfo *,UWORD *,UWORD *);
STRPTR hrGetErrorText(ULONG error);

LONG hrModifyHDCMP(struct HRHandle *,ULONG);
void hrModifySpeeder(struct HRHandle *, UWORD, UBYTE, UBYTE);
ULONG hrCloseAutoScreen(UBYTE *pattern);
ULONG hrFindScreen(UBYTE *pattern);

ULONG hrAllocSecondView(struct HRHandle *, UWORD, UWORD, UBYTE);
void hrResizeSecondView(struct HRHandle *, UWORD, UWORD);
void hrMoveSecondView(struct HRHandle *, UWORD, UWORD);
void hrSwitchSecondView(struct HRHandle *, BOOL);
void hrScrollSecondView(struct HRHandle *, UWORD, UWORD);
void hrFreeSecondView(struct HRHandle *);

#endif

