/*
**     $VER: rtgsublibs.h 1.008 (29 Jul 1997)
*/

#ifndef RTGSUBLIBS_H
#define RTGSUBLIBS_H TRUE

#ifndef UTILITY_TAGITEM_H
#include "utility/tagitem.h"
#endif

#ifndef EXEC_TYPES_H
#include "exec/types.h"
#endif

#ifndef EXEC_NODES_H
#include "exec/nodes.h"
#endif

#define rtg_Dummy TAG_USER

#define rtg_Buffers (rtg_Dummy + 0x01)

#define rtg_Interleaved (rtg_Dummy + 0x02)

#define rtg_Draggable (rtg_Dummy + 0x03)

#define rtg_Exclusive (rtg_Dummy + 0x04)


#define ARGB32 1L
#define RGB24  2L
#define RGB16  4L
#define RGB15  8L
#define ABGR32 16L
#define BGR24  32L
#define BGR16  64L
#define BGR15  128L
#define RGBA32 256L
#define LUT8   512L
#define GRAFFITI 1024L
#define RGB15PC  2048L
#define BGR15PC  4096L
#define RGB16PC  8192L
#define BGR16PC  16384L
#define BGRA32   32768L
#define Planar1  1L
#define Planar2  2L
#define Planar3  4L
#define Planar4  8L
#define Planar5  16L
#define Planar6  32L
#define Planar7  64L
#define Planar8  128L
#define Planar1I 1<<16L
#define Planar2I 1<<17L
#define Planar3I 1<<18L
#define Planar4I 1<<19L
#define Planar5I 1<<20L
#define Planar6I 1<<21L
#define Planar7I 1<<22L
#define Planar8I 1<<23L
#define PlanarEHB 1<<15L
#define PlanarEHBI 1<<31L

#define rtg_ZBuffer (rtg_Dummy + 0x07)


#define rtg_Use3D (rtg_Dummy + 0x08)


#define rtg_Workbench (rtg_Dummy + 0x09)

#define rtg_MouseMove (rtg_Dummy+ 0x0A)


#define rtg_DeltaMove (rtg_Dummy+ 0x0B)


#define rtg_PubScreenName (rtg_Dummy+ 0x0C)


#define rtg_ChangeColors (rtg_Dummy+ 0x0D)


struct RtgDimensionInfo
{
    ULONG Width;
    ULONG Height;
};

struct ScreenMode
{
    struct MinNode ScrNode;


    STRPTR Name;
    STRPTR Description;


    ULONG GraphicsBoard;


    ULONG ModeID;


    BYTE Reserved[8];


    ULONG MinWidth;

    ULONG MaxWidth;


    ULONG MinHeight;


    ULONG MaxHeight;


    struct RtgDimensionInfo Default;


    struct RtgDimensionInfo TextOverscan;


    struct RtgDimensionInfo StandardOverscan;


    struct RtgDimensionInfo MaxOverscan;


    ULONG ChunkySupport;


    ULONG PlanarSupport;

 

    ULONG PixelAspect;

 
    ULONG VertScan;


    ULONG HorScan;


    ULONG PixelClock;


    ULONG VertBlank;


    ULONG Buffers;

 
    UWORD BitsRed;



    UWORD BitsGreen;


    UWORD BitsBlue;

};


#define grd_Dummy TAG_USER

#define grd_Width (grd_Dummy + 0x01)


#define grd_Height (grd_Dummy + 0x02)


#define grd_PixelLayout (grd_Dummy + 0x03)


#define grd_ColorSpace (grd_Dummy + 0x04)


#define grd_Depth (grd_Dummy + 0x05)

#define grd_PlaneSize (grd_Dummy + 0x06)

#define grd_BytesPerRow (grd_Dummy + 0x07)

#define grd_MouseX (grd_Dummy + 0x08)



#define grd_MouseY (grd_Dummy + 0x09)

#define grd_BusSystem (grd_Dummy + 0x0A)

#define grd_3DChipset (grd_Dummy + 0x0B)


#define grd_Z3 1
#define grd_Z2 2
#define grd_Custom 3
#define grd_RGBPort 4
#define grd_GVP 5
#define grd_DDirect 6
#define grd_Ateo 7
#define grd_PCI 8



#define grd_PLANAR     0
#define grd_PLANARI    1
#define grd_CHUNKY     2
#define grd_HICOL15    3
#define grd_HICOL16    4
#define grd_TRUECOL24  5
#define grd_TRUECOL24P 6
#define grd_TRUECOL32  7
#define grd_GRAFFITI   8
#define grd_TRUECOL32B 9



#define grd_Palette 0
#define grd_RGB     1
#define grd_BGR     2
#define grd_RGBPC   3
#define grd_BGRPC   4


struct ScreenReq
{
    struct ScreenMode *ScreenMode;



    ULONG Width;



    ULONG Height;



    UWORD Depth;


    UWORD Overscan;



    UBYTE Flags;
};

struct ScreenReqList
{
 struct MinNode SRNode;
 struct ScreenReq *req;
};



#define sq_EHB          (1 << 0)
#define sq_CHUNKYMODE   (1 << 1)
#define sq_DEFAULTX     (1 << 2)
#define sq_DEFAULTY     (1 << 3)
#define sq_WORKBENCH    (1 << 4)



#define sq_NOOVERSCAN       0
#define sq_TEXTOVERSCAN     1
#define sq_STANDARDOVERSCAN 2
#define sq_MAXOVERSCAN      3




struct RtgScreen
{
    ULONG LibBase;
    UWORD LibVersion;
    UWORD Pad1;
    ULONG GraphicsBoard;
    BYTE  Reserved[20];
    ULONG MouseX;
    ULONG MouseY;
    APTR  c2pcode;
    APTR  c2pdata;
    ULONG c2pcurr;
    BYTE  c2pname[30];
};

#endif

