#ifndef INTUITION_SCREENS_H
#define INTUITION_SCREENS_H

/*******************************************************************
 pOS / Amiga adapt
*******************************************************************/

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef __INC_POS_PSCREEN_SCREEN_H
#include <pScreen/Screen.h>
#endif
#ifndef __INC_POS_PSCREEN_SCRTAGS_H
#include <pScreen/ScrTags.h>
#endif
#ifndef __INC_POS_PGFX_MODEID_H
#include <pGFX/ModeID.h>
#endif
#ifndef __INC_POS_PDOS_DOSERRORS_H
#include <pDOS/DosErrors.h>
#endif
#ifndef GRAPHICS_GFX_H
#include <graphics/gfx.h>
#endif
#ifndef GRAPHICS_CLIP_H
#include <graphics/clip.h>
#endif
#ifndef GRAPHICS_VIEW_H
#include <graphics/view.h>
#endif
#ifndef GRAPHICS_RASTPORT_H
#include <graphics/rastport.h>
#endif
#ifndef GRAPHICS_LAYERS_H
#include <graphics/layers.h>
#endif
#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif



struct DrawInfo
{
  UBYTE           dri_Version;
  UBYTE           dri_Design;
  UWORD           dri_NumPens;    /* ==SCRPEN_MAX  */
  UWORD          *dri_Pens;       /* (enum pOS_ScreenPens) pointer to pen array */
  UWORD  dri_Pad0;
  ULONG  dri_Pad1;
  struct TextFont *dri_Font;       /* screen default font */
  struct Screen   *dri_Screen;     /* for graphics datas */
  ULONG  dri_Pad2;
  struct {
    ULONG X;
    ULONG Y;
  }  dri_Resolution;
};


#define DRIF_NEWLOOK    0x00  /* dummy */

#define TEXTPEN          SCRPEN_Text
#define SHINEPEN         SCRPEN_Shine
#define SHADOWPEN        SCRPEN_Shadow
#define FILLPEN          SCRPEN_Fill
#define FILLTEXTPEN      SCRPEN_FillText
#define BACKGROUNDPEN    SCRPEN_Background
#define HIGHLIGHTTEXTPEN SCRPEN_HighLightText
#define BARDETAILPEN     SCRPEN_BarDetail
#define BARBLOCKPEN      SCRPEN_BarBlock
#define BARTRIMPEN       SCRPEN_BarTrim
#define NUMDRIPENS       SCRPEN_MAX



struct Screen
{
  struct Node scr_Node;
  SLONG       LeftEdge, TopEdge;
  SLONG       Width, Height;
  SLONG       MouseY, MouseX;

  UBYTE           *Title;
  struct RastPort *RastPort;
  UBYTE            Reserved1[32];
  UBYTE           *UserData;
  ULONG            UserData1;
  ULONG            Flags;
  UBYTE            _Pad2[4];
  UBYTE           *DefaultTitle;
  struct List      scr_WinList;
  struct MinList   scr_GadList;

  UBYTE BarHeight, BarVBorder, BarHBorder, MenuVBorder, MenuHBorder;
  UBYTE WBorTop, WBorLeft, WBorRight, WBorBottom;
  UBYTE scr_WGadWidth,scr_WGadHeight;
  UWORD scr_WIconWidth;

  struct Layer_Info *LayerInfo;
  struct Layer      *BarLayer;
  struct Rectangle   scr_ViewRect;
  struct TextFont   *Font;
  struct DrawInfo   *scr_DrawInfo;
  struct ViewPort   *ViewPort;
};




#define STDSCREENHEIGHT -1
#define STDSCREENWIDTH -1

#define SA_Left         SCRTAG_LeftEdge
#define SA_Top          SCRTAG_TopEdge
#define SA_Width        SCRTAG_Width
#define SA_Height       SCRTAG_Height
#define SA_Depth         _PxA_IGNORE
#define SA_DetailPen     _PxA_IGNORE
#define SA_BlockPen      _PxA_IGNORE
#define SA_Title        SCRTAG_Title
#define SA_Colors        _PxA_IGNORE
#define SA_ErrorCode     _PxA_IGNORE
#define SA_Font          _PxA_IGNORE
#define SA_SysFont       _PxA_IGNORE
#define SA_Type          _PxA_IGNORE
#define SA_BitMap       SCRTAG_GfxMap
#define SA_PubName      SCRTAG_PubName
#define SA_PubSig       SCRTAG_PubSignal
#define SA_PubTask      SCRTAG_PubTask
#define SA_DisplayID     _PxA_IGNORE
#define SA_DClip         _PxA_IGNORE
#define SA_Overscan      _PxA_IGNORE
#define SA_ShowTitle     _PxA_IGNORE
#define SA_Behind        _PxA_IGNORE
#define SA_Quiet         _PxA_IGNORE
#define SA_AutoScroll    _PxA_IGNORE
#define SA_Pens          _PxA_IGNORE
#define SA_FullPalette   _PxA_IGNORE
#define SA_ColorMapEntries _PxA_IGNORE
#define SA_Parent        _PxA_IGNORE
#define SA_Draggable     _PxA_IGNORE
#define SA_Exclusive     _PxA_IGNORE
#define SA_SharePens     _PxA_IGNORE
#define SA_BackFill      _PxA_IGNORE
#define SA_Interleaved   _PxA_IGNORE
#define SA_Colors32      _PxA_IGNORE
#define SA_VideoControl  _PxA_IGNORE
#define SA_FrontChild    _PxA_IGNORE
#define SA_BackChild     _PxA_IGNORE
#define SA_LikeWorkbench _PxA_IGNORE
#define SA_MinimizeISG   _PxA_IGNORE

#define OSERR_NOMONITOR    DOSERR_NotAvailable
#define OSERR_NOCHIPS      DOSERR_NoChips
#define OSERR_NOMEM        DOSERR_NoMem
#define OSERR_NOCHIPMEM    DOSERR_NoGfxMem
#define OSERR_PUBNOTUNIQUE DOSERR_PubNotUnique
#define OSERR_UNKNOWNMODE  DOSERR_UnknownMode
#define OSERR_TOODEEP      DOSERR_Unknown
#define OSERR_ATTACHFAIL   DOSERR_AttachFail
#define OSERR_NOTAVAILABLE DOSERR_NotAvailable


#define OSCAN_TEXT      OSCANTYP_Text
#define OSCAN_STANDARD  OSCANTYP_Standard
#define OSCAN_MAX       OSCANTYP_Maximal
#define OSCAN_VIDEO     OSCANTYP_Video


struct PubScreenNode
{
  struct Node      psn_Node;
  struct Screen  *psn_Screen;
  UWORD           psn_Flags;
  UWORD           psn_VisitorCount;
  UBYTE           psn_Reserved[16];
  struct Task    *psn_SigTask;
  UBYTE           psn_SigBit;
  CHAR            psn_NameBuf[1];
};


#define PSNF_PRIVATE    PUBSCRF_Private

#define MAXPUBSCREENNAME        (139)   /* names no longer, please      */








#ifdef __IGNORE_NOT_SUPPORTED__

 #define DETAILPEN        0x00
 #define BLOCKPEN         0x01
 #define PEN_C3  0xFEFC
 #define PEN_C2  0xFEFD
 #define PEN_C1  0xFEFE
 #define PEN_C0  0xFEFF

 #define SCREENTYPE      0
 #define WBENCHSCREEN    0
 #define PUBLICSCREEN    0
 #define CUSTOMSCREEN    0
 #define SHOWTITLE       0
 #define BEEPING         0
 #define CUSTOMBITMAP    0
 #define SCREENBEHIND    0
 #define SCREENQUIET     0
 #define SCREENHIRES     0
 #define NS_EXTENDED     0
 #define AUTOSCROLL      0
 #define PENSHARED       0

 #define SHANGHAI        0x0001
 #define POPPUBSCREEN    0x0002




#endif /** __IGNORE_NOT_SUPPORTED__ **/




#endif
