home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / cbm / nduk-v37.lha / V37 / include / intuition / screens.h < prev    next >
C/C++ Source or Header  |  1991-11-27  |  14KB  |  410 lines

  1. #ifndef INTUITION_SCREENS_H
  2. #define INTUITION_SCREENS_H TRUE
  3. /*
  4. **  $Filename: intuition/screens.h $
  5. **  $Release: 2.04 Includes, V37.4 $
  6. **  $Revision: 36.36 $
  7. **  $Date: 91/10/07 $
  8. **
  9. **  The Screen and NewScreen structures and attributes
  10. **
  11. **  (C) Copyright 1985-1991 Commodore-Amiga, Inc.
  12. **        All Rights Reserved
  13. */
  14.  
  15. #ifndef EXEC_TYPES_H
  16. #include <exec/types.h>
  17. #endif
  18.  
  19. #ifndef GRAPHICS_GFX_H
  20. #include <graphics/gfx.h>
  21. #endif
  22.  
  23. #ifndef GRAPHICS_CLIP_H
  24. #include <graphics/clip.h>
  25. #endif
  26.  
  27. #ifndef GRAPHICS_VIEW_H
  28. #include <graphics/view.h>
  29. #endif
  30.  
  31. #ifndef GRAPHICS_RASTPORT_H
  32. #include <graphics/rastport.h>
  33. #endif
  34.  
  35. #ifndef GRAPHICS_LAYERS_H
  36. #include <graphics/layers.h>
  37. #endif
  38.  
  39. #ifndef UTILITY_TAGITEM_H
  40. #include <utility/tagitem.h>
  41. #endif
  42.  
  43. /*
  44.  * NOTE:  intuition/iobsolete.h is included at the END of this file!
  45.  */
  46.  
  47. /* ======================================================================== */
  48. /* === DrawInfo ========================================================= */
  49. /* ======================================================================== */
  50.  
  51. /* This is a packet of information for graphics rendering.  It originates
  52.  * with a Screen, and is gotten using GetScreenDrawInfo( screen );
  53.  */
  54.  
  55. /* If you find dri_Version >= DRI_VERSION, you know this structure
  56.  * has at least the fields defined in this version of the include file
  57.  */
  58. #define RI_VERSION    (1)    /* obsolete, will be removed        */
  59. #define DRI_VERSION    (1)
  60.  
  61. struct DrawInfo
  62. {
  63.     UWORD    dri_Version;    /* will be  DRI_VERSION            */
  64.     UWORD    dri_NumPens;    /* guaranteed to be >= numDrIPens    */
  65.     UWORD    *dri_Pens;    /* pointer to pen array            */
  66.  
  67.     struct TextFont    *dri_Font;    /* screen default font        */
  68.     UWORD    dri_Depth;    /* (initial) depth of screen bitmap    */
  69.  
  70.     struct {      /* from DisplayInfo database for initial display mode    */
  71.     UWORD    X;
  72.     UWORD    Y;
  73.     }        dri_Resolution;
  74.  
  75.     ULONG    dri_Flags;        /* defined below        */
  76.     ULONG    dri_Reserved[7];    /* avoid recompilation ;^)    */
  77. };
  78.  
  79. #define DRIF_NEWLOOK    0x00000001    /* specified SA_Pens, full treatment */
  80.  
  81. /* rendering pen number indexes into DrawInfo.dri_Pens[]    */
  82. #define DETAILPEN     (0x0000)    /* compatible Intuition rendering pens    */
  83. #define BLOCKPEN     (0x0001)    /* compatible Intuition rendering pens    */
  84. #define TEXTPEN         (0x0002)    /* text on background            */
  85. #define SHINEPEN     (0x0003)    /* bright edge on 3D objects        */
  86. #define SHADOWPEN     (0x0004)    /* dark edge on 3D objects        */
  87. #define FILLPEN         (0x0005)    /* active-window/selected-gadget fill    */
  88. #define FILLTEXTPEN     (0x0006)    /* text over FILLPEN            */
  89. #define BACKGROUNDPEN     (0x0007)    /* always color 0            */
  90. #define HIGHLIGHTTEXTPEN (0x0008)    /* special color text, on background    */
  91.  
  92. #define NUMDRIPENS     (0x0009)
  93.  
  94.  
  95. /* ======================================================================== */
  96. /* === Screen ============================================================= */
  97. /* ======================================================================== */
  98. struct Screen
  99. {
  100.     struct Screen *NextScreen;        /* linked list of screens */
  101.     struct Window *FirstWindow;        /* linked list Screen's Windows */
  102.  
  103.     WORD LeftEdge, TopEdge;        /* parameters of the screen */
  104.     WORD Width, Height;            /* parameters of the screen */
  105.  
  106.     WORD MouseY, MouseX;        /* position relative to upper-left */
  107.  
  108.     UWORD Flags;            /* see definitions below */
  109.  
  110.     UBYTE *Title;            /* null-terminated Title text */
  111.     UBYTE *DefaultTitle;        /* for Windows without ScreenTitle */
  112.  
  113.     /* Bar sizes for this Screen and all Window's in this Screen */
  114.     /* Note that BarHeight is one less than the actual menu bar
  115.      * height.    We're going to keep this in V36 for compatibility,
  116.      * although V36 artwork might use that extra pixel
  117.      *
  118.      * Also, the title bar height of a window is calculated from the
  119.      * screen's WBorTop field, plus the font height, plus one.
  120.      */
  121.     BYTE BarHeight, BarVBorder, BarHBorder, MenuVBorder, MenuHBorder;
  122.     BYTE WBorTop, WBorLeft, WBorRight, WBorBottom;
  123.  
  124.     struct TextAttr *Font;        /* this screen's default font       */
  125.  
  126.     /* the display data structures for this Screen */
  127.     struct ViewPort ViewPort;        /* describing the Screen's display */
  128.     struct RastPort RastPort;        /* describing Screen rendering       */
  129.     struct BitMap BitMap;        /* extra copy of RastPort BitMap   */
  130.     struct Layer_Info LayerInfo;    /* each screen gets a LayerInfo    */
  131.  
  132.     /* Only system gadgets may be attached to a screen.
  133.      *    You get the standard system Screen Gadgets automatically
  134.      */
  135.     struct Gadget *FirstGadget;
  136.  
  137.     UBYTE DetailPen, BlockPen;        /* for bar/border/gadget rendering */
  138.  
  139.     /* the following variable(s) are maintained by Intuition to support the
  140.      * DisplayBeep() color flashing technique
  141.      */
  142.     UWORD SaveColor0;
  143.  
  144.     /* This layer is for the Screen and Menu bars */
  145.     struct Layer *BarLayer;
  146.  
  147.     UBYTE *ExtData;
  148.  
  149.     UBYTE *UserData;    /* general-purpose pointer to User data extension */
  150.  
  151.     /**** Data below this point are SYSTEM PRIVATE ****/
  152. };
  153.  
  154.  
  155. /* --- FLAGS SET BY INTUITION --------------------------------------------- */
  156. /* The SCREENTYPE bits are reserved for describing various Screen types
  157.  * available under Intuition.
  158.  */
  159. #define SCREENTYPE    0x000F    /* all the screens types available    */
  160. /* --- the definitions for the Screen Type ------------------------------- */
  161. #define WBENCHSCREEN    0x0001    /* identifies the Workbench screen    */
  162. #define PUBLICSCREEN    0x0002    /* public shared (custom) screen    */
  163. #define CUSTOMSCREEN    0x000F    /* original custom screens        */
  164.  
  165. #define SHOWTITLE    0x0010    /* this gets set by a call to ShowTitle() */
  166.  
  167. #define BEEPING        0x0020    /* set when Screen is beeping (private)    */
  168.  
  169. #define CUSTOMBITMAP    0x0040    /* if you are supplying your own BitMap */
  170.  
  171. #define SCREENBEHIND    0x0080    /* if you want your screen to open behind
  172.                  * already open screens
  173.                  */
  174. #define SCREENQUIET    0x0100    /* if you do not want Intuition to render
  175.                  * into your screen (gadgets, title)
  176.                  */
  177. #define SCREENHIRES    0x0200    /* do not use lowres gadgets  (private)    */
  178.  
  179. #define NS_EXTENDED    0x1000        /* ExtNewScreen.Extension is valid    */
  180. /* V36 applications can use OpenScreenTagList() instead of NS_EXTENDED    */
  181.  
  182. #define AUTOSCROLL    0x4000    /* screen is to autoscoll        */
  183.  
  184. #define STDSCREENHEIGHT -1    /* supply in NewScreen.Height        */
  185. #define STDSCREENWIDTH -1    /* supply in NewScreen.Width        */
  186.  
  187. /*
  188.  * Screen attribute tag ID's.  These are used in the ti_Tag field of
  189.  * TagItem arrays passed to OpenScreenTagList() (or in the
  190.  * ExtNewScreen.Extension field).
  191.  */
  192.  
  193. /* Screen attribute tags.  Please use these versions, not those in
  194.  * iobsolete.h.
  195.  */
  196.  
  197. #define SA_Dummy    (TAG_USER + 32)
  198. /*
  199.  * these items specify items equivalent to fields in NewScreen
  200.  */
  201. #define SA_Left        (SA_Dummy + 0x0001)
  202. #define SA_Top        (SA_Dummy + 0x0002)
  203. #define SA_Width    (SA_Dummy + 0x0003)
  204. #define SA_Height    (SA_Dummy + 0x0004)
  205.             /* traditional screen positions    and dimensions    */
  206. #define SA_Depth    (SA_Dummy + 0x0005)
  207.             /* screen bitmap depth                */
  208. #define SA_DetailPen    (SA_Dummy + 0x0006)
  209.             /* serves as default for windows, too        */
  210. #define SA_BlockPen    (SA_Dummy + 0x0007)
  211. #define SA_Title    (SA_Dummy + 0x0008)
  212.             /* default screen title                */
  213. #define SA_Colors    (SA_Dummy + 0x0009)
  214.             /* ti_Data is an array of struct ColorSpec,
  215.              * terminated by ColorIndex = -1.  Specifies
  216.              * initial screen palette colors.
  217.              */
  218. #define SA_ErrorCode    (SA_Dummy + 0x000A)
  219.             /* ti_Data points to LONG error code (values below)*/
  220. #define SA_Font        (SA_Dummy + 0x000B)
  221.             /* equiv. to NewScreen.Font            */
  222. #define SA_SysFont    (SA_Dummy + 0x000C)
  223.             /* Selects one of the preferences system fonts:
  224.              *    0 - old DefaultFont, fixed-width
  225.              *    1 - WB Screen preferred font
  226.              */
  227. #define SA_Type        (SA_Dummy + 0x000D)
  228.             /* equiv. to NewScreen.Type            */
  229. #define SA_BitMap    (SA_Dummy + 0x000E)
  230.             /* ti_Data is pointer to custom BitMap.  This
  231.              * implies type of CUSTOMBITMAP
  232.              */
  233. #define SA_PubName    (SA_Dummy + 0x000F)
  234.             /* presence of this tag means that the screen
  235.              * is to be a public screen.  Please specify
  236.              * BEFORE the two tags below
  237.              */
  238. #define SA_PubSig    (SA_Dummy + 0x0010)
  239. #define SA_PubTask    (SA_Dummy + 0x0011)
  240.             /* Task ID and signal for being notified that
  241.              * the last window has closed on a public screen