/*
**     $VER: rtgmaster_protos.h 1.014 (17 Oct 1996)
*/

#ifndef CLIB_RTGMASTER_PROTOS_H
#define CLIB_RTGMASTER_PROTOS_H

#ifndef RTGSUBLIBS_H
#include <rtgmaster/rtgsublibs.h>
#endif

#ifndef RTGMASTER_H
#include <rtgmaster/rtgmaster.h>
#endif

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif

#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif

#ifndef RTGMASTER_RTGTCPIP_H
#include <rtgmaster/rtgTCPIP.h>
#endif

struct RtgScreen * OpenRtgScreen(struct ScreenReq *sreq, struct TagItem *taglist);
void   CloseRtgScreen(struct RtgScreen *MyScreen);
void   SwitchScreens(struct RtgScreen *MyScreen, ULONG Buffer);
void   LoadRGBRtg(struct RtgScreen *MyScreen, void *Table);
void   *LockRtgScreen(struct RtgScreen *MyScreen);
void   UnlockRtgScreen(struct RtgScreen *MyScreen);
void   *GetBufAdr(struct RtgScreen *MyScreen, ULONG Buffer);
void   GetRtgScreenData(struct RtgScreen *MyScreen, struct TagItem *taglist);
ULONG  GetSegment(struct RtgScreen *MyScreen);
void   SetSegment(struct RtgScreen *MyScreen, ULONG segnum);
ULONG  RtgScreenAtFront(struct RtgScreen *MyScreen);
struct ScreenReq * RtgScreenModeReq(struct TagItem *taglist);
void   FreeRtgScreenModeReq(struct ScreenReq *myreq);
void   WriteRtgPixel(struct RtgScreen *MyScreen, APTR BufferAdr, ULONG XPos, ULONG YPos, UWORD Color);
void   WriteRtgPixelRGB(struct RtgScreen *MyScreen, APTR BufferAdr, ULONG XPos, ULONG YPos, ULONG Pixel);
void   FillRtgRect(struct RtgScreen *MyScreen, APTR BufferAdr, ULONG Color, ULONG Left, ULONG Top, ULONG Width, ULONG Height);
void   FillRtgRectRGB(struct RtgScreen *MyScreen, APTR BufferAdr, ULONG Color, ULONG Left, ULONG Top, ULONG Width, ULONG Height);
void   WriteRtgPixelArray(struct RtgScreen *MyScreen, APTR BufferAdr, APTR Array, ULONG Left, ULONG Top, ULONG Width, ULONG Height);
void   WriteRtgPixelRGBArray(struct RtgScreen *MyScreen, APTR BufferAdr, APTR Array, ULONG Left, ULONG Top, ULONG Width, ULONG Height);
void   CopyRtgPixelArray(struct RtgScreen *MyScreen, APTR BufferAdr, APTR Array, ULONG Left, ULONG Top, ULONG Width, ULONG Height,ULONG SrcX,ULONG SrcY,ULONG SrcWidth,ULONG SrcHeight);
APTR   GetGfxCardData(struct RtgScreen *MyScreen, struct TagItem *tagitems);
void   DrawRtgLine(struct RtgScreen *MyScreen, APTR BufferAdr, ULONG Color, ULONG X1, ULONG Y1, ULONG X2, ULONG Y2);
void   DrawRtgLineRGB(struct RtgScreen *MyScreen, APTR BufferAdr, ULONG Color, ULONG X1, ULONG Y1, ULONG X2, ULONG Y2);
void   WaitRtgSwitch(struct RtgScreen *MyScreen);
void   WaitRtgBlit(struct RtgScreen *MyScreen);
void   RtgWaitTOF(struct RtgScreen *MyScreen);
void   RtgBlit(struct RtgScreen *MyScreen, int SrcBuf, int DstBuf, ULONG SrcX, ULONG SrcY, ULONG DstX, ULONG DstY, ULONG Width, ULONG Height,UBYTE minterm);
void   RtgBltClear(struct RtgScreen *MyScreen, int BufNum,ULONG xpos, ULONG ypos, ULONG width, ULONG height);
int    CallRtgC2P(struct RtgScreen *MyScreen, APTR BufAdr,APTR Array, ULONG signal, ULONG xpos, ULONG ypos, ULONG width, ULONG height, ULONG mode);
struct RTG_Socket  *OpenClient(struct Library *SBase, char *host, int port, int mode, int protocol);
struct RTG_Socket *OpenServer(struct Library *SBase, int port, int mode, int protocol);
void CloseClient(struct Library *SBase, struct RTG_Socket *s);
void CloseServer(struct Library *SBase, struct RTG_Socket *s);
struct RTG_Socket *RunServer(struct Library *SBase, struct RTG_Socket *s, struct RTG_Buff *in_buffer, struct RTG_Buff *out_buffer, int maxplayers);
int RtgSend(struct Library *SBase, struct RTG_Socket *s, char *message, struct sockaddr_in *receiver, int len);
int RtgRecv(struct Library *SBase, struct RTG_Socket *s, char *message, struct sockaddr_in *sender, int len);
struct RTG_Socket *RtgAccept(struct Library *SBase, struct RTG_Socket *s);
int RtgIoctl(struct Library *SBase,struct RTG_Socket *s,long *arg);
struct sockaddr_in *GetUDPName(struct Library *SBase, struct RTG_Socket *s);
char *RtgInAdr(struct Library *SBase, struct sockaddr_in *si);
void RtgText(struct RtgScreen *MyScreen,void *map, char *mytext,WORD length,SHORT xpos,SHORT ypos);
void RtgSetFont(struct RtgScreen *MyScreen,void *myfont);
void RtgClearPointer(struct RtgScreen *MyScreen);
void RtgSetPointer(struct RtgScreen *MyScreen,UWORD *pointer,WORD Height,WORD Width,WORD XOffset,WORD YOffset);
void RtgSetTextMode(struct RtgScreen *MyScreen,UBYTE fgcolor,UBYTE bgcolor,UBYTE drmode);
void *RtgOpenFont(struct RtgScreen *MyScreen,struct TextAttr *ta);
void RtgCloseFont(struct RtgScreen *MyScreen,void *myfont);
void RtgSetTextModeRGB(struct RtgScreen *MyScreen,ULONG fgcolor,ULONG bgcolor,UBYTE drmode);
#endif
