IFND INTUITION_SCREENS_I INTUITION_SCREENS_I SET 1 ** ** $Filename: intuition/screens.i $ ** $Release: 2.04 Includes, V37.4 $ ** $Revision: 36.18 $ ** $Date: 91/10/07 $ ** ** The Screen and NewScreen structures and attributes ** ** (C) Copyright 1985-1999 Amiga, Inc. ** All Rights Reserved ** IFND EXEC_TYPES_I INCLUDE "exec/types.i" ENDC IFND GRAPHICS_GFX_I INCLUDE "graphics/gfx.i" ENDC IFND GRAPHICS_CLIP_I INCLUDE "graphics/clip.i" ENDC IFND GRAPHICS_VIEW_I INCLUDE "graphics/view.i" ENDC IFND GRAPHICS_RASTPORT_I INCLUDE "graphics/rastport.i" ENDC IFND GRAPHICS_LAYERS_I INCLUDE "graphics/layers.i" ENDC IFND UTILITY_TAGITEM_I INCLUDE "utility/tagitem.i" ENDC * * NOTE: intuition/iobsolete.i is included at the END of this file! * ; ======================================================================== ; === DrawInfo ========================================================= ; ======================================================================== * This is a packet of information for graphics rendering. It originates * with a Screen, and is gotten using GetScreenDrawInfo( screen ); * If you find dri_Version >= DRI_VERSION, you know this structure * has at least the fields defined in this version of the include file DRI_VERSION EQU 1 STRUCTURE DrawInfo,0 UWORD dri_Version ; will be DRI_VERSION UWORD dri_NumPens ; guaranteed to be >= NUMDRIPENS APTR dri_Pens ; pointer to pen array APTR dri_Font ; screen default font UWORD dri_Depth ; (initial) depth of screen bitmap ; from DisplayInfo database for initial display mode UWORD dri_ResolutionX UWORD dri_ResolutionY ULONG dri_Flags STRUCT dri_longreserved,28 DRIF_NEWLOOK EQU $00000001 ; specified SA_Pens, full treatment DRIB_NEWLOOK EQU 0 ; rendering pen number indexes into DrawInfo.dri_Pens[] ENUM EITEM DETAILPEN ; compatible Intuition rendering pens EITEM BLOCKPEN, EITEM TEXTPEN ; text on background (pen = 0) EITEM SHINEPEN ; bright edge on bas-relief EITEM SHADOWPEN ; dark edge EITEM FILLPEN ; active window fill EITEM FILLTEXTPEN ; text over FILLPEN EITEM BACKGROUNDPEN ; always color 0 EITEM HIGHLIGHTTEXTPEN ; highlighted text, against BACKGROUNDPEN EITEM NUMDRIPENS ; ======================================================================== ; === Screen ============================================================= ; ======================================================================== STRUCTURE Screen,0 APTR sc_NextScreen ; linked list of screens APTR sc_FirstWindow ; linked list Screen's Windows WORD sc_LeftEdge ; parameters of the screen WORD sc_TopEdge ; parameters of the screen WORD sc_Width ; null-terminated Title text WORD sc_Height ; for Windows without ScreenTitle WORD sc_MouseY ; position relative to upper-left WORD sc_MouseX ; position relative to upper-left WORD sc_Flags ; see definitions below APTR sc_Title APTR sc_DefaultTitle ; Bar sizes for this Screen and all Window's in this Screen BYTE sc_BarHeight BYTE sc_BarVBorder BYTE sc_BarHBorder BYTE sc_MenuVBorder BYTE sc_MenuHBorder BYTE sc_WBorTop BYTE sc_WBorLeft BYTE sc_WBorRight BYTE sc_WBorBottom BYTE sc_KludgeFill00 ; This is strictly for word-alignment ; the display data structures for this Screen APTR sc_Font ; this screen's default font STRUCT sc_ViewPort,vp_SIZEOF ; describing the Screen's display STRUCT sc_RastPort,rp_SIZEOF ; describing Screen rendering STRUCT sc_BitMap,bm_SIZEOF ; auxiliary graphexcess baggage STRUCT sc_LayerInfo,li_SIZEOF ; each screen gets a LayerInfo APTR sc_FirstGadget BYTE sc_DetailPen ; for bar/border/gadget rendering BYTE sc_BlockPen ; for bar/border/gadget rendering ; the following variable(s) are maintained by Intuition to support the ; DisplayBeep() color flashing technique WORD sc_SaveColor0 ; This layer is for the Screen and Menu bars APTR sc_BarLayer ; was "BarLayer" APTR sc_ExtData APTR sc_UserData ; general-purpose pointer to User data LABEL sc_SIZEOF ; actually, you have no business talking about ; or relying on the size of a screen structure ; --- FLAGS SET BY INTUITION ------------------------------------------------- ; The SCREENTYPE bits are reserved for describing various Screen types ; available under Intuition. SCREENTYPE EQU $000F ; all the screens types available ; --- the definitions for the Screen Type ------------------------------------ WBENCHSCREEN EQU $0001 ; identifies the Workbench screen PUBLICSCREEN EQU $0002 ; public shared (custom) screen CUSTOMSCREEN EQU $000F ; for that special look SHOWTITLE EQU $0010 ; this gets set by a call to ShowTitle() BEEPING EQU $0020 ; set when Screen is beeping CUSTOMBITMAP EQU $0040 ; if you are supplying your own BitMap SCREENBEHIND EQU $0080 ; if you want your screen to open behind ; already open screens SCREENQUIET EQU $0100 ; if you do not want Intuition to render ; into your screen (gadgets, title) SCREENHIRES EQU $0200 ; do not use lowres gadgets (set by intuition) STDSCREENHEIGHT EQU -1 ; supply in NewScreen.Height STDSCREENWIDTH EQU -1 ; supply in NewScreen.Width NS_EXTENDED EQU $1000 ; means ns_Extenion is valid AUTOSCROLL EQU $4000 ; automatic scrolling of large raster * Screen attribute tag ID's. These are used in the ti_Tag field of * TagItem arrays passed to OpenScreenTagList() (or in the * ExtNewScreen.Extension field). * Screen attribute tags. Please use these versions, not those in * iobsolete.h. ENUM TAG_USER+33 * * these items specify items equivalent to fields in NewScreen EITEM SA_Left ; traditional screen positions and dimensions EITEM SA_Top EITEM SA_Width EITEM SA_Height EITEM SA_Depth ; screen bitmap depth EITEM SA_DetailPen ; serves as default for windows, too EITEM SA_BlockPen EITEM SA_Title ; default screen title EITEM SA_Colors ; ti_Data is an array of struct ColorSpec, ; terminated by ColorIndex = -1. Specifies ; initial screen palette colors. EITEM SA_ErrorCode ; ti_Data points to LONG error code (values below) EITEM SA_Font ; equiv. to NewScreen.Font EITEM SA_SysFont ; Selects one of the preferences system fonts: ; 0 - old DefaultFont, fixed-width ; 1 - WB Screen preferred font EITEM SA_Type ; equiv. to NewScreen.Type EITEM SA_BitMap ; ti_Data is pointer to custom BitMap. This ; implies type of CUSTOMBITMAP EITEM SA_PubName ; presence of this tag means that the screen ; is to be a public screen. Please specify ; BEFORE the two tags below EITEM SA_PubSig EITEM SA_PubTask ; Task ID and signal for being notified that ; the last window has closed on a public screen. EITEM SA_DisplayID ; ti_Data is new extended display ID from ; <graphics/displayinfo.h>. EITEM SA_DClip ; ti_Data points to a rectangle which defines ; screen display clip region EITEM SA_Overscan ; was S_STDDCLIP. Set to one of the OSCAN_ ; specifiers below to get a system standard ; overscan region for your display clip, ; screen dimensions (unless otherwise specified), ; and automatically centered position (partial ; support only so far). EITEM SA_Obsolete1 ; obsolete S_MONITORNAME * booleans * EITEM SA_ShowTitle ; boolean equivalent to flag SHOWTITLE EITEM SA_Behind ; boolean equivalent to flag SCREENBEHIND EITEM SA_Quiet ; boolean equivalent to flag SCREENQUIET EITEM SA_AutoScroll ; boolean equivalent to flag AUTOSCROLL EITEM SA_Pens ; array as in DrawInfo, terminated by -1 EITEM SA_FullPalette ; boolean: initialize color table to entire ; preferences palette (32 for V36), rather ; than compatible pens 0-3, 17-19, with ; remaining palette as returned by GetColorMap() * OpenScreen error codes, which are returned in the (optional) LONG * pointed to by ti_Data for the SA_ErrorCode tag item OSERR_NOMONITOR EQU (1) ; named monitor spec not available OSERR_NOCHIPS EQU (2) ; you need newer custom chips OSERR_NOMEM EQU (3) ; couldn't get normal memory OSERR_NOCHIPMEM EQU (4) ; couldn't get chipmem OSERR_PUBNOTUNIQUE EQU (5) ; public screen name already used OSERR_UNKNOWNMODE EQU (6) ; don't recognize mode asked for ; ======================================================================== ; === NewScreen ========================================================== ; ======================================================================== ; NOTE: to use Extension field, you need to use ExtNewScreen, below STRUCTURE NewScreen,0 WORD ns_LeftEdge ; initial Screen dimensions WORD ns_TopEdge ; initial Screen dimensions WORD ns_Width ; initial Screen dimensions WORD ns_Height ; initial Screen dimensions WORD ns_Depth ; initial Screen dimensions BYTE ns_DetailPen ; default rendering pens (for Windows too) BYTE ns_BlockPen ; default rendering pens (for Windows too) WORD ns_ViewModes ; display "modes" for this Screen WORD ns_Type ; Intuition Screen Type specifier APTR ns_Font ; default font for Screen and Windows APTR ns_DefaultTitle ; Title when Window doesn't care APTR ns_Gadgets ; UNUSED: Leave this NULL ; if you are opening a CUSTOMSCREEN and already have a BitMap ; that you want used for your Screen, you set the flags CUSTOMBITMAP in ; the Types variable and you set this variable to point to your BitMap ; structure. The structure will be copied into your Screen structure, ; after which you may discard your own BitMap if you want APTR ns_CustomBitMap LABEL ns_SIZEOF ; For compatibility reasons, we need a new structure for extending ; NewScreen. Use this structure is you need to use the new Extension ; field. ; NOTE WELL: this structure may be extended again in the future. ;Writing code which depends on its size is not allowed. STRUCTURE ExtNewScreen,ns_SIZEOF APTR ens_Extension ; struct TagItem * ; more specification data, scanned if ; NS_EXTENDED is set in ns_Type LABEL ens_SIZEOF * === Overscan Types === OSCAN_TEXT EQU 1 ; entirely visible OSCAN_STANDARD EQU 2 ; just past edges OSCAN_MAX EQU 3 ; as much as possible OSCAN_VIDEO EQU 4 ; even more than is possible * === Public Shared Screen Node === * This is the representative of a public shared screen. * This is an internal data structure, but some functions may * present a copy of it to the calling application. In that case, * be aware that the screen pointer of the structure can NOT be * used safely, since there is no guarantee that the referenced * screen will remain open and a valid data structure. STRUCTURE PubScreenNode,LN_SIZE APTR psn_Screen ; pointer to screen itself UWORD psn_Flags ; below WORD psn_Size ; includes name buffer size WORD psn_VisitorCount ; how many visitor windows APTR psn_SigTask ; who to signal when visitors gone UBYTE psn_SigBit ; which signal UBYTE psn_Pad1 ; word align LABEL psn_SIZEOF * psn_Flags values PSNF_PRIVATE EQU $0001 * NOTE: Due to a bug in NextPubScreen(), make sure your buffer * actually has MAXPUBSCREENNAME+1 characters in it! MAXPUBSCREENNAME EQU 139 ; names no longer, please ; pub screen modes SHANGHAI EQU $0001 ; put workbench windows on pub screen POPPUBSCREEN EQU $0002 ; pop pub screen to front when visitor opens * Include obsolete identifiers: IFND INTUITION_IOBSOLETE_I INCLUDE "intuition/iobsolete.i" ENDC ENDC