home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / ace_basic / ace / include / intuition / screens.h < prev    next >
C/C++ Source or Header  |  1977-12-31  |  27KB  |  722 lines

  1. #ifndef INTUITION_SCREENS_H
  2. #define INTUITION_SCREENS_H TRUE
  3. /*
  4. ** screens.h for ACE Basic
  5. **
  6. ** Note: Translated to ACE by ConvertC2ACE
  7. **       @ MapMeadow Software, Nils Sjoholm
  8. **
  9. **
  10. ** Date: 09/01/95
  11. **
  12. ** Note: Fixed a missing kludegefill in Struct _Screen
  13. **       Date 14-Oct-95   Nils Sjoholm
  14. **
  15. */
  16.  
  17. /*
  18. ** This are the StructPointer defines for screens.h
  19. */
  20. #ifndef DrawInfoPtr
  21. #define DrawInfoPtr ADDRESS
  22. #endif
  23. #ifndef ExtNewScreenPtr
  24. #define ExtNewScreenPtr ADDRESS
  25. #endif
  26. #ifndef NewScreenPtr
  27. #define NewScreenPtr ADDRESS
  28. #endif
  29. #ifndef PubScreenNodePtr
  30. #define PubScreenNodePtr ADDRESS
  31. #endif
  32. #ifndef ScreenPtr
  33. #define ScreenPtr ADDRESS
  34. #endif
  35. #ifndef ScreenBufferPtr
  36. #define ScreenBufferPtr ADDRESS
  37. #endif
  38. #ifndef dri_Resolution_StructPtr
  39. #define dri_Resolution_StructPtr ADDRESS
  40. #endif
  41. /*
  42. ** End of StructPointer defines for screens.h
  43. */
  44.  
  45.  
  46. #ifndef EXEC_TYPES_H
  47. #include <exec/types.h>
  48. #endif
  49.  
  50. #ifndef GRAPHICS_GFX_H
  51. #include <graphics/gfx.h>
  52. #endif
  53.  
  54. #ifndef GRAPHICS_CLIP_H
  55. #include <graphics/clip.h>
  56. #endif
  57.  
  58. #ifndef GRAPHICS_VIEW_H
  59. #include <graphics/view.h>
  60. #endif
  61.  
  62. #ifndef GRAPHICS_RASTPORT_H
  63. #include <graphics/rastport.h>
  64. #endif
  65.  
  66. #ifndef GRAPHICS_LAYERS_H
  67. #include <graphics/layers.h>
  68. #endif
  69.  
  70. #ifndef UTILITY_TAGITEM_H
  71. #include <utility/tagitem.h>
  72. #endif
  73.  
  74. #ifndef WindowPtr
  75. #define WindowPtr ADDRESS
  76. #endif
  77.  
  78. /*
  79.  * NOTE:  intuition/iobsolete.h is included at the END of this file!
  80.  */
  81.  
  82. /* ======================================================================== */
  83. /* === DrawInfo ========================================================= */
  84. /* ======================================================================== */
  85.  
  86. /* This is a packet of information for graphics rendering.  It originates
  87.  * with a Screen,  and is gotten using GetScreenDrawInfo( screen ) 
  88.  */
  89.  
  90. /* You can use the Intuition version number to tell which fields are
  91.  * present in this structure.
  92.  *
  93.  * DRI_VERSION of 1 corresponds to V37 release.
  94.  * DRI_VERSION of 2 corresponds to V39,  and includes three new pens
  95.  *  and the dri_CheckMark and dri_AmigaKey fields.
  96.  *
  97.  * Note that sometimes applications need to create their own DrawInfo
  98.  * structures,  in which case the DRI_VERSION won't correspond exactly
  99.  * to the OS version!!!
  100.  */
  101. #define DRI_VERSION (2)
  102.  
  103. STRUCT dri_Resolution_Struct          /* from DisplayInfo database FOR initial display mode */
  104.     SHORTINT   X 
  105.     SHORTINT   Y 
  106. END STRUCT
  107.  
  108. STRUCT DrawInfo
  109.  
  110.     SHORTINT   dri_Version     /* will be  DRI_VERSION         */
  111.     SHORTINT   dri_NumPens     /* guaranteed to be >= 9        */
  112.     ADDRESS   dri_Pens   /* pointer to pen array         */
  113.  
  114.     TextFontPtr  dri_Font   /* screen default font      */
  115.     SHORTINT   dri_Depth   /* (initial) depth of screen bitmap */
  116.  
  117.  
  118.     dri_Resolution_Struct  dri_Resolution
  119.     LONGINT   dri_Flags       /* defined below        */
  120. /* New for V39: dri_CheckMark,  dri_AmigaKey. */
  121.     ImagePtr  dri_CheckMark  /* pointer to scaled checkmark image
  122.                      * Will be NULL if DRI_VERSION < 2
  123.                      */
  124.     ImagePtr  dri_AmigaKey   /* pointer to scaled Amiga-key image
  125.                      * Will be NULL if DRI_VERSION < 2
  126.                      */
  127.     STRING dri_Reserved SIZE 20  /*  5*SIZEOF(LONGINT) */    /* avoid recompilation  ^)  */
  128. END STRUCT 
  129.  
  130. #define DRIF_NEWLOOK    &H00000001  /* specified SA_Pens,  full treatment */
  131.  
  132. /* rendering pen number indexes into DrawInfo.dri_Pens[]    */
  133. #define DETAILPEN    (&H0000)   /* compatible Intuition rendering pens  */
  134. #define BLOCKPEN     (&H0001)   /* compatible Intuition rendering pens  */
  135. #define TEXTPEN      (&H0002)   /* text on background           */
  136. #define SHINEPEN     (&H0003)   /* bright edge on 3D objects        */
  137. #define SHADOWPEN    (&H0004)   /* dark edge on 3D objects      */
  138. #define FILLPEN      (&H0005)   /* active-window/selected-gadget fill   */
  139. #define FILLTEXTPEN  (&H0006)   /* text over FILLPEN            */
  140. #define BACKGROUNDPEN    (&H0007)   /* always color 0           */
  141. #define HIGHLIGHTTEXTPEN (&H0008)   /* special color text,  on background    */
  142. /* New for V39,  only present if DRI_VERSION >= 2: */
  143. #define BARDETAILPEN     (&H0009)   /* text/detail in screen-bar/menus */
  144. #define BARBLOCKPEN  (&H000A)   /* screen-bar/menus fill */
  145. #define BARTRIMPEN   (&H000B)   /* trim under screen-bar */
  146.  
  147. #define NUMDRIPENS   (&H000C)
  148.  
  149.  
  150. /* New for V39:  It is sometimes useful to specify that a pen value
  151.  * is to be the complement of color zero to three.  The "magic" numbers
  152.  * serve that purpose:
  153.  */
  154. #define PEN_C3      &HFEFC      /* Complement of color 3 */
  155. #define PEN_C2      &HFEFD      /* Complement of color 2 */
  156. #define PEN_C1      &HFEFE      /* Complement of color 1 */
  157. #define PEN_C0      &HFEFF      /* Complement of color 0 */
  158.  
  159. /* ======================================================================== */
  160. /* === Screen ============================================================= */
  161. /* ======================================================================== */
  162.  
  163. /* VERY IMPORTANT NOTE ABOUT Screen->BitMap.  In the future,  bitmaps
  164.  * will need to grow.  The embedded instance of a bitmap in the screen
  165.  * will no longer be large enough to hold the whole description of
  166.  * the bitmap.
  167.  *
  168.  * YOU ARE STRONGLY URGED to use Screen->RastPort.BitMap in place of
  169.  * &Screen->BitMap whenever and whereever possible.
  170.  */
  171.  
  172. STRUCT _Screen
  173.  
  174.     ScreenPtr  NextScreen       /* linked list of screens */
  175.     WindowPtr  FirstWindow      /* linked list Screen's Windows */
  176.  
  177.     SHORTINT LeftEdge 
  178.     SHORTINT   TopEdge      /* parameters of the screen */
  179.     SHORTINT _Width 
  180.     SHORTINT   Height          /* parameters of the screen */
  181.  
  182.     SHORTINT MouseY 
  183.     SHORTINT   MouseX         /* position relative to upper-left */
  184.  
  185.     SHORTINT Flags             /* see definitions below */
  186.  
  187.     ADDRESS   Title            /* null-terminated Title text */
  188.     ADDRESS   DefaultTitle         /* for Windows without ScreenTitle */
  189.  
  190.     /* Bar sizes for this Screen and all Window's in this Screen */
  191.     /* Note that BarHeight is one less than the actual menu bar
  192.      * height.  We're going to keep this in V36 for compatibility, 
  193.      * although V36 artwork might use that extra pixel
  194.      *
  195.      * Also,  the title bar height of a window is calculated from the
  196.      * screen's WBorTop field,  plus the font height,  plus one.
  197.      */
  198.     BYTE BarHeight 
  199.     BYTE   BarVBorder 
  200.     BYTE   BarHBorder 
  201.     BYTE   MenuVBorder 
  202.     BYTE   MenuHBorder 
  203.     BYTE WBorTop 
  204.     BYTE   WBorLeft 
  205.     BYTE   WBorRight 
  206.     BYTE   WBorBottom 
  207.     BYTE   KludgeFill00
  208.     TextAttrPtr  _Font       /* this screen's default font      */
  209.  
  210.     /* the display data structures for this Screen */
  211.     ViewPort ViewPort        /* describing the Screen's display */
  212.     RastPort RastPort        /* describing Screen rendering     */
  213.     BitMap BitMap        /* SEE WARNING ABOVE!          */
  214.     Layer_Info LayerInfo     /* each screen gets a LayerInfo    */
  215.  
  216.     /* Only system gadgets may be attached to a screen.
  217.      *  You get the standard system Screen Gadgets automatically
  218.      */
  219.     GadgetPtr  FirstGadget 
  220.  
  221.     BYTE  DetailPen 
  222.     BYTE   BlockPen       /* for bar/border/gadget rendering */
  223.  
  224.     /* the following variable(s) are maintained by Intuition to support the
  225.      * DisplayBeep() color flashing technique
  226.      */
  227.     SHORTINT SaveColor0 
  228.  
  229.     /* This layer is for the Screen and Menu bars */
  230.     LayerPtr  BarLayer 
  231.  
  232.     ADDRESS   ExtData 
  233.  
  234.     ADDRESS   UserData     /* general-purpose pointer to User data extension */
  235.  
  236.     /**** Data below this point are SYSTEM PRIVATE ****/
  237. END STRUCT 
  238.  
  239.  
  240. /* --- FLAGS SET BY INTUITION --------------------------------------------- */
  241. /* The SCREENTYPE bits are reserved for describing various Screen types
  242.  * available under Intuition.
  243.  */
  244. #define SCREENTYPE  &H000F  /* all the screens types available  */
  245. /* --- the definitions for the Screen Type ------------------------------- */
  246. #define WBENCHSCREEN    &H0001  /* identifies the Workbench screen  */
  247. #define PUBLICSCREEN    &H0002  /* public shared (custom) screen    */
  248. #define CUSTOMSCREEN    &H000F  /* original custom screens      */
  249.  
  250. #define SHOWTITLE   &H0010  /* this gets set by a call to ShowTitle() */
  251.  
  252. #define BEEPING     &H0020  /* set when Screen is beeping (private) */
  253.  
  254. #define CUSTOMBITMAP    &H0040  /* if you are supplying your own BitMap */
  255.  
  256. #define SCREENBEHIND    &H0080  /* if you want your screen to open behind
  257.                  * already open screens
  258.                  */
  259. #define SCREENQUIET &H0100  /* if you do not want Intuition to render
  260.                  * into your screen (gadgets,  title)
  261.                  */
  262. #define SCREENHIRES &H0200  /* do not use lowres gadgets  (private) */
  263.  
  264. #define NS_EXTENDED &H1000      /* ExtNewScreen.Extension is valid  */
  265. /* V36 applications can use OpenScreenTagList() instead of NS_EXTENDED  */
  266.  
  267. #define AUTOSCROLL  &H4000  /* screen is to autoscoll       */
  268.  
  269. /* New for V39: */
  270. #define PENSHARED   &H0400  /* Screen opener set  SA_SharePens, TRUEEND STRUCT */
  271.  
  272.  
  273.  
  274.  
  275. #define STDSCREENHEIGHT -1  /* supply in NewScreen.Height       */
  276. #define STDSCREENWIDTH -1   /* supply in NewScreen.Width        */
  277.  
  278. /*
  279.  * Screen attribute tag ID's.  These are used in the ti_Tag field of
  280.  * TagItem arrays passed to OpenScreenTagList() (or in the
  281.  * ExtNewScreen.Extension field).
  282.  */
  283.  
  284. /* Screen attribute tags.  Please use these versions,  not those in
  285.  * iobsolete.h.
  286.  */
  287.  
  288. #define SA_Dummy    (TAG_USER + 32)
  289. /*
  290.  * these items specify items equivalent to fields in NewScreen
  291.  */
  292. #define SA_Left     (SA_Dummy + &H0001)
  293. #define SA_Top      (SA_Dummy + &H0002)
  294. #define SA_Width    (SA_Dummy + &H0003)
  295. #define SA_Height   (SA_Dummy + &H0004)
  296.             /* traditional screen positions and dimensions  */
  297. #define SA_Depth    (SA_Dummy + &H0005)
  298.             /* screen bitmap depth              */
  299. #define SA_DetailPen    (SA_Dummy + &H0006)
  300.             /* serves as default for windows,  too       */
  301. #define SA_BlockPen (SA_Dummy + &H0007)
  302. #define SA_Title    (SA_Dummy + &H0008)
  303.             /* default screen title             */
  304. #define SA_Colors   (SA_Dummy + &H0009)
  305.             /* ti_Data is an array of STRUCT ColorSpec, 
  306.              * terminated by ColorIndex = -1.  Specifies
  307.              * initial screen palette colors.
  308.              * Also see SA_Colors32 for use under V39.
  309.              */
  310. #define SA_ErrorCode    (SA_Dummy + &H000A)
  311.             /* ti_Data points to LONGINT error code (values below)*/
  312. #define SA_Font     (SA_Dummy + &H000B)
  313.             /* equiv. to NewScreen.Font         */
  314. #define SA_SysFont  (SA_Dummy + &H000C)
  315.             /* Selects one of the preferences system fonts:
  316.              *  0 - old DefaultFont,  fixed-width
  317.              *  1 - WB Screen preferred font
  318.              */
  319. #define SA_Type     (SA_Dummy + &H000D)
  320.             /* ti_Data is PUBLICSCREEN or CUSTOMSCREEN.  For other
  321.              * fields of NewScreen.Type,  see individual tags, 
  322.              * eg. SA_Behind,  SA_Quiet.
  323.              */
  324. #define SA_BitMap   (SA_Dummy + &H000E)
  325.             /* ti_Data is pointer to custom BitMap.  This
  326.              * implies type of CUSTOMBITMAP
  327.              */
  328. #define SA_PubName  (SA_Dummy + &H000F)
  329.             /* presence of this tag means that the screen
  330.              * is to be a public screen.  Please specify
  331.              * BEFORE the two tags below
  332.              */
  333. #define SA_PubSig   (SA_Dummy + &H0010)
  334. #define SA_PubTask  (SA_Dummy + &H0011)
  335.             /* Task ID and signal for being notified that
  336.              * the last window has closed on a public screen.
  337.              */
  338. #define SA_DisplayID    (SA_Dummy + &H0012)
  339.             /* ti_Data is new extended display ID from
  340.              * <graphics/displayinfo.h> (V37) or from
  341.              * <graphics/modeid.h> (V39 and up)
  342.              */
  343. #define SA_DClip    (SA_Dummy + &H0013)
  344.             /* ti_Data points to a rectangle which defines
  345.              * screen display clip region
  346.              */
  347. #define SA_Overscan (SA_Dummy + &H0014)
  348.             /* Set to one of the OSCAN_
  349.              * specifiers below to get a system standard
  350.              * overscan region for your display clip, 
  351.              * screen dimensions (unless otherwise specified), 
  352.              * and automatically centered position (partial
  353.              * support only so far).
  354.              * If you use this,  you shouldn't specify
  355.              * SA_DClip.  SA_Overscan is for "standard"
  356.              * overscan dimensions,  SA_DClip is for
  357.              * your custom numeric specifications.
  358.              */
  359. #define SA_Obsolete1    (SA_Dummy + &H0015)
  360.             /* obsolete S_MONITORNAME           */
  361.  
  362. /** booleans **/
  363. #define SA_ShowTitle    (SA_Dummy + &H0016)
  364.             /* boolean equivalent to flag SHOWTITLE     */
  365. #define SA_Behind   (SA_Dummy + &H0017)
  366.             /* boolean equivalent to flag SCREENBEHIND  */
  367. #define SA_Quiet    (SA_Dummy + &H0018)
  368.             /* boolean equivalent to flag SCREENQUIET   */
  369. #define SA_AutoScroll   (SA_Dummy + &H0019)
  370.             /* boolean equivalent to flag AUTOSCROLL    */
  371. #define SA_Pens     (SA_Dummy + &H001A)
  372.             /* pointer to ~0 terminated SHORTINT array,  as
  373.              * found in STRUCT DrawInfo
  374.              */
  375. #define SA_FullPalette  (SA_Dummy + &H001B)
  376.             /* boolean: initialize color table to entire
  377.              *  preferences palette (32 for V36),  rather
  378.              * than compatible pens 0-3,  17-19,  with
  379.              * remaining palette as returned by GetColorMap()
  380.              */
  381.  
  382. #define SA_ColorMapEntries (SA_Dummy + &H001C)
  383.             /* New for V39:
  384.              * Allows you to override the number of entries
  385.              * in the ColorMap for your screen.  Intuition
  386.              * normally allocates (1) or 32,  whichever
  387.              * is more,  but you may require even more if you
  388.              * use certain V39 graphics.library features
  389.              * (eg. palette-banking).
  390.              */
  391.  
  392. #define SA_Parent   (SA_Dummy + &H001D)
  393.             /* New for V39:
  394.              * ti_Data is a pointer to a "parent" screen to
  395.              * attach this one to.  Attached screens slide
  396.              * and depth-arrange together.
  397.              */
  398.  
  399. #define SA_Draggable    (SA_Dummy + &H001E)
  400.             /* New for V39:
  401.              * Boolean tag allowing non-draggable screens.
  402.              * Do not use without good reason!
  403.              * (Defaults to TRUE).
  404.              */
  405.  
  406. #define SA_Exclusive    (SA_Dummy + &H001F)
  407.             /* New for V39:
  408.              * Boolean tag allowing screens that won't share
  409.              * the display.  Use sparingly!  Starting with 3.01, 
  410.              * attached screens may be SA_Exclusive.  Setting
  411.              * SA_Exclusive for each screen will produce an
  412.              * exclusive family.   (Defaults to FALSE).
  413.              */
  414.  
  415. #define SA_SharePens    (SA_Dummy + &H0020)
  416.             /* New for V39:
  417.              * For those pens in the screen's DrawInfo->dri_Pens, 
  418.              * Intuition obtains them in shared mode (see
  419.              * graphics.library/ObtainPen()).  For compatibility, 
  420.              * Intuition obtains the other pens of a public
  421.              * screen as PEN_EXCLUSIVE.  Screens that wish to
  422.              * manage the pens themselves should generally set
  423.              * this tag to TRUE.  This instructs Intuition to
  424.              * leave the other pens unallocated.
  425.              */
  426.  
  427. #define SA_BackFill (SA_Dummy + &H0021)
  428.             /* New for V39:
  429.              * provides a "backfill hook" for your screen's
  430.              * Layer_Info.
  431.              * See layers.library/InstallLayerInfoHook()
  432.              */
  433.  
  434. #define SA_Interleaved  (SA_Dummy + &H0022)
  435.             /* New for V39:
  436.              * Boolean tag requesting that the bitmap
  437.              * allocated for you be interleaved.
  438.              * (Defaults to FALSE).
  439.              */
  440.  
  441. #define SA_Colors32 (SA_Dummy + &H0023)
  442.             /* New for V39:
  443.              * Tag to set the screen's initial palette colors
  444.              * at 32 bits-per-gun.  ti_Data is a pointer
  445.              * to a table to be passed to the
  446.              * graphics.library/LoadRGB32() function.
  447.              * This format supports both runs of color
  448.              * registers and sparse registers.  See the
  449.              * autodoc for that function for full details.
  450.              * Any color set here has precedence over
  451.              * the same register set by SA_Colors.
  452.              */
  453.  
  454. #define SA_VideoControl (SA_Dummy + &H0024)
  455.             /* New for V39:
  456.              * ti_Data is a pointer to a taglist that Intuition
  457.              * will pass to graphics.library/VideoControl(), 
  458.              * upon opening the screen.
  459.              */
  460.  
  461. #define SA_FrontChild   (SA_Dummy + &H0025)
  462.             /* New for V39:
  463.              * ti_Data is a pointer to an already open screen
  464.              * that is to be the child of the screen being
  465.              * opened.  The child screen will be moved to the
  466.              * front of its family.
  467.              */
  468.  
  469. #define SA_BackChild    (SA_Dummy + &H0026)
  470.             /* New for V39:
  471.              * ti_Data is a pointer to an already open screen
  472.              * that is to be the child of the screen being
  473.              * opened.  The child screen will be moved to the
  474.              * back of its family.
  475.              */
  476.  
  477. #define SA_LikeWorkbench    (SA_Dummy + &H0027)
  478.             /* New for V39:
  479.              * Set ti_Data to 1 to request a screen which
  480.              * is just like the Workbench.  This gives
  481.              * you the same screen mode,  depth,  size, 
  482.              * colors,  etc.,  as the Workbench screen.
  483.              */
  484.  
  485. #define SA_Reserved     (SA_Dummy + &H0028)
  486.             /* Reserved for private Intuition use */
  487.  
  488. #define SA_MinimizeISG      (SA_Dummy + &H0029)
  489.             /* New for V40:
  490.              * For compatibility,  Intuition always ensures
  491.              * that the inter-screen gap is at least three
  492.              * non-interlaced lines.  If your application
  493.              * would look best with the smallest possible
  494.              * inter-screen gap,  set ti_Data to TRUE.
  495.              * If you use the new graphics VideoControl()
  496.              * VC_NoColorPaletteLoad tag for your screen's
  497.              * ViewPort,  you should also set this tag.
  498.              */
  499.  
  500. /* this is an obsolete tag included only for compatibility with V35
  501.  * interim release for the A2024 and Viking monitors
  502.  */
  503. #ifndef NSTAG_EXT_VPMODE
  504. #define NSTAG_EXT_VPMODE (TAG_USER OR 1)
  505. #endif
  506.  
  507.  
  508. /* OpenScreen error codes,  which are returned in the (optional) LONGINT
  509.  * pointed to by ti_Data for the SA_ErrorCode tag item
  510.  */
  511. #define OSERR_NOMONITOR    (1)  /* named monitor spec not available */
  512. #define OSERR_NOCHIPS      (2)  /* you need newer custom chips      */
  513. #define OSERR_NOMEM    (3)  /* couldn't get normal memory       */
  514. #define OSERR_NOCHIPMEM    (4)  /* couldn't get chipmem         */
  515. #define OSERR_PUBNOTUNIQUE (5)  /* public screen name already used  */
  516. #define OSERR_UNKNOWNMODE  (6)  /* don't recognize mode asked for   */
  517. #define OSERR_TOODEEP      (7)  /* Screen deeper than HW supports   */
  518. #define OSERR_ATTACHFAIL   (8)  /* Failed to attach screens     */
  519. #define OSERR_NOTAVAILABLE (9)  /* Mode not available for other reason  */
  520.  
  521. /* ======================================================================== */
  522. /* === NewScreen ========================================================== */
  523. /* ======================================================================== */
  524. /* note: to use the Extended field,  you must use the
  525.  * new ExtNewScreen structure,  below
  526.  */
  527. STRUCT NewScreen
  528.  
  529.     SHORTINT LeftEdge 
  530.     SHORTINT   TopEdge 
  531.     SHORTINT   _Width 
  532.     SHORTINT   Height 
  533.     SHORTINT   Depth   /* screen dimensions */
  534.  
  535.     BYTE  DetailPen 
  536.     BYTE   BlockPen   /* for bar/border/gadget rendering  */
  537.  
  538.     SHORTINT ViewModes         /* the Modes for the ViewPort (and View) */
  539.  
  540.     SHORTINT _Type          /* the Screen type (see defines above)  */
  541.  
  542.     TextAttrPtr  _Font   /* this Screen's default text attributes */
  543.  
  544.     ADDRESS   DefaultTitle     /* the default title for this Screen    */
  545.  
  546.     GadgetPtr  Gadgets  /* UNUSED:  Leave this NULL     */
  547.  
  548.     /* if you are opening a CUSTOMSCREEN and already have a BitMap
  549.      * that you want used for your Screen,  you set the flags CUSTOMBITMAP in
  550.      * the Type field and you set this variable to point to your BitMap
  551.      * structure.  The structure will be copied into your Screen structure, 
  552.      * after which you may discard your own BitMap if you want
  553.      */
  554.     BitMapPtr  CustomBitMap 
  555. END STRUCT 
  556.  
  557. /*
  558.  * For compatibility reasons,  we need a new structure for extending
  559.  * NewScreen.  Use this structure is you need to use the new Extension
  560.  * field.
  561.  *
  562.  * NOTE: V36-specific applications should use the
  563.  * OpenScreenTagList( newscreen,  tags ) version of OpenScreen().
  564.  * Applications that want to be V34-compatible as well may safely use the
  565.  * ExtNewScreen structure.  Its tags will be ignored by V34 Intuition.
  566.  *
  567.  */
  568. STRUCT ExtNewScreen
  569.  
  570.     SHORTINT LeftEdge 
  571.     SHORTINT   TopEdge 
  572.     SHORTINT   _Width 
  573.     SHORTINT   Height 
  574.     SHORTINT   Depth 
  575.     BYTE  DetailPen 
  576.     BYTE   BlockPen 
  577.     SHORTINT ViewModes 
  578.     SHORTINT _Type 
  579.     TextAttrPtr  _Font 
  580.     ADDRESS   DefaultTitle 
  581.     GadgetPtr  Gadgets 
  582.     BitMapPtr  CustomBitMap 
  583.  
  584.     TagItemPtr  Extension 
  585.                 /* more specification data,  scanned if
  586.                  * NS_EXTENDED is set in NewScreen.Type
  587.                  */
  588. END STRUCT 
  589.  
  590. /* === Overscan Types ===   */
  591. #define OSCAN_TEXT  (1) /* entirely visible */
  592. #define OSCAN_STANDARD  (2) /* just past edges  */
  593. #define OSCAN_MAX   (3) /* as much as possible  */
  594. #define OSCAN_VIDEO (4) /* even more than is possible   */
  595.  
  596.  
  597. /* === Public Shared Screen Node ===    */
  598.  
  599. /* This is the representative of a public shared screen.
  600.  * This is an internal data structure,  but some functions may
  601.  * present a copy of it to the calling application.  In that case, 
  602.  * be aware that the screen pointer of the structure can NOT be
  603.  * used safely,  since there is no guarantee that the referenced
  604.  * screen will remain open and a valid data structure.
  605.  *
  606.  * Never change one of these.
  607.  */
  608.  
  609. STRUCT PubScreenNode     
  610.     Node psn_Node    /* ln_Name is screen name */
  611.     ScreenPtr  psn_Screen 
  612.     SHORTINT       psn_Flags   /* below        */
  613.     SHORTINT        psn_Size    /* includes name buffer */
  614.     SHORTINT        psn_VisitorCount  /* how many visitor windows */
  615.     TaskPtr  psn_SigTask    /* who to signal when visitors gone */
  616.     BYTE        psn_SigBit  /* which signal */
  617. END STRUCT 
  618.  
  619. #define PSNF_PRIVATE    (&H0001)
  620.  
  621. /* NOTE: Due to a bug in NextPubScreen(),  make sure your buffer
  622.  * actually has MAXPUBSCREENNAME+1 characters in it!
  623.  */
  624. #define MAXPUBSCREENNAME    (139)   /* names no longer,  please  */
  625.  
  626. /* pub screen modes */
  627. #define SHANGHAI    &H0001  /* put workbench windows on pub screen */
  628. #define POPPUBSCREEN    &H0002  /* pop pub screen to front when visitor opens */
  629.  
  630. /* New for V39:  Intuition has new screen depth-arrangement and movement
  631.  * functions called ScreenDepth() and ScreenPosition() respectively.
  632.  * These functions permit the old behavior of ScreenToFront(), 
  633.  * ScreenToBack(),  and MoveScreen().  ScreenDepth() also allows
  634.  * independent depth control of attached screens.  ScreenPosition()
  635.  * optionally allows positioning screens even though they were opened
  636.  *  SA_Draggable, FALSEEND STRUCT.
  637.  */
  638.  
  639. /* For ScreenDepth(),  specify one of SDEPTH_TOFRONT or SDEPTH_TOBACK, 
  640.  * and optionally also SDEPTH_INFAMILY.
  641.  *
  642.  * NOTE: ONLY THE OWNER OF THE SCREEN should ever specify
  643.  * SDEPTH_INFAMILY.  Commodities,  "input helper" programs, 
  644.  * or any other program that did not open a screen should never
  645.  * use that flag.  (Note that this is a style-behavior
  646.  * requirement   there is no technical requirement that the
  647.  * task calling this function need be the task which opened
  648.  * the screen).
  649.  */
  650.  
  651. #define SDEPTH_TOFRONT          (0) /* Bring screen to front */
  652. #define SDEPTH_TOBACK       (1) /* Send screen to back */
  653. #define SDEPTH_INFAMILY     (2) /* Move an attached screen with
  654.                      * respect to other screens of
  655.                      * its family
  656.                      */
  657.  
  658. /* Here's an obsolete name equivalent to SDEPTH_INFAMILY: */
  659. #define SDEPTH_CHILDONLY    SDEPTH_INFAMILY
  660.  
  661.  
  662. /* For ScreenPosition(),  specify one of SPOS_RELATIVE,  SPOS_ABSOLUTE, 
  663.  * or SPOS_MAKEVISIBLE to describe the kind of screen positioning you
  664.  * wish to perform:
  665.  *
  666.  * SPOS_RELATIVE: The x1 and y1 parameters to ScreenPosition() describe
  667.  *  the offset in coordinates you wish to move the screen by.
  668.  * SPOS_ABSOLUTE: The x1 and y1 parameters to ScreenPosition() describe
  669.  *  the absolute coordinates you wish to move the screen to.
  670.  * SPOS_MAKEVISIBLE: (x1, y1)-(x2, y2) describes a rectangle on the
  671.  *  screen which you would like autoscrolled into view.
  672.  *
  673.  * You may additionally set SPOS_FORCEDRAG along with any of the
  674.  * above.  Set this if you wish to reposition an  SA_Draggable, FALSEEND STRUCT
  675.  * screen that you opened.
  676.  *
  677.  * NOTE: ONLY THE OWNER OF THE SCREEN should ever specify
  678.  * SPOS_FORCEDRAG.  Commodities,  "input helper" programs, 
  679.  * or any other program that did not open a screen should never
  680.  * use that flag.
  681.  */
  682.  
  683. #define SPOS_RELATIVE       (0) /* Coordinates are relative */
  684.  
  685. #define SPOS_ABSOLUTE       (1) /* Coordinates are expressed as
  686.                      * absolutes,  not relatives.
  687.                      */
  688.  
  689. #define SPOS_MAKEVISIBLE    (2) /* Coordinates describe a box on
  690.                      * the screen you wish to be
  691.                      * made visible by autoscrolling
  692.                      */
  693.  
  694. #define SPOS_FORCEDRAG      (4) /* Move non-draggable screen */
  695.  
  696. /* New for V39: Intuition supports double-buffering in screens, 
  697.  * with friendly interaction with menus and certain gadgets.
  698.  * For each buffer,  you need to get one of these structures
  699.  * from the AllocScreenBuffer() call.  Never allocate your
  700.  * own ScreenBuffer structures!
  701.  *
  702.  * The sb_DBufInfo field is for your use.  See the graphics.library
  703.  * AllocDBufInfo() autodoc for details.
  704.  */
  705. STRUCT ScreenBuffer
  706.  
  707.     BitMapPtr  sb_BitMap        /* BitMap of this buffer */
  708.     DBufInfoPtr  sb_DBufInfo    /* DBufInfo for this buffer */
  709. END STRUCT 
  710.  
  711. /* These are the flags that may be passed to AllocScreenBuffer().
  712.  */
  713. #define SB_SCREEN_BITMAP    1
  714. #define SB_COPY_BITMAP      2
  715.  
  716. /* Include obsolete identifiers: */
  717. #ifndef INTUITION_IOBSOLETE_H
  718. #include <intuition/iobsolete.h>
  719. #endif
  720.  
  721. #endif
  722.