[Contents] [index] [Help] [Retrace] [browse <] [Browse >]

The structures mentioned above are unified along with other information in
Intuition's Screen data structure defined in the include file
<intuition/screens.h>.  notice that the screen structure contains
instances of a ViewPort, RastPort and BitMap.


struct Screen
    {
    struct Screen *NextScreen;
    struct Window *FirstWindow;
    WORD LeftEdge, TopEdge, Width, Height;
    WORD MouseY, MouseX;
    UWORD Flags;
    UBYTE *Title, *DefaultTitle;
    BYTE BarHeight, BarVBorder, BarHBorder, MenuVBorder, MenuHBorder;
    BYTE WBorTop, WBorLeft, WBorRight, WBorBottom;
    struct TextAttr *Font;
    struct ViewPort ViewPort;
    struct RastPort RastPort;
    struct BitMap BitMap;
    struct Layer_Info LayerInfo;
    struct Gadget *FirstGadget;
    UBYTE DetailPen, BlockPen;
    UWORD SaveColor0;
    struct Layer *BarLayer;
    UBYTE *ExtData, *UserData;
    };


In general, applications don't need to access the fields in the Screen
structure directly; they use Intuition functions to manipulate the screen
instead.  Likewise, applications do not set up the Screen themselves; they
use one of the openscreen() calls.  here is a description of some of the
more interesting members of the Screen structure (it is not meant to be a
complete description of all the fields).

LeftEdge, TopEdge
    The LeftEdge and TopEdge variables give the position of the screen
    relative to the upper left corner of the monitor's visible display
    (as set by the user in the overscan preferences editor).  if it is
    positioned down or to the right, the values are positive.  If the
    screen is positioned up or to the left, the values are negative.  The
    values are in screen resolution pixels.  In systems prior to v36,
    LeftEdge positioning is ignored and negative TopEdge positions are
    illegal.

    The screen position may be set when the screen is opened or later by
    calling the movescreen() function. note that the screen's actual
    display position may not exactly equal the coordinates given in the
    LeftEdge and TopEdge fields of the Screen structure.  This can cause
    a window which is opened in the visible part of the screen to be
    incorrectly positioned by a few pixels in each direction.  This
    complication is due to hardware constraints that limit the fineness
    of screen positioning.  For instance, high resolution screens can
    only be positioned in low resolution pixel coordinates, yet the
    values in the LeftEdge and TopEdge use high resolution pixel
    coordinates.  So when the screen is displayed, its position is
    rounded to a position available for the monitor.

MouseX, MouseY
    Position of the mouse with respect to the upper left corner of the
    screen.

ViewPort, RastPort, BitMap, LayerInfo
    Actual instances of the graphics library data structures associated
    with this screen (not pointers to structures).  For normal use of
    custom screens, these structures may be ignored.

BarLayer
    A pointer to the layer structure for the screen's title bar.

WBorTop, WBorLeft, WBorRight, WBorBottom
    Window border values, see the "intuition windows" chapter for
    information on pre-calculating the size of window borders for windows
    that open in this screen.

Font
    The default screen font, this can be used to pre-calculate the size
    of the window borders for windows that open in this screen.

UserData
    Free for application use.

Other Screen structure members provide information on the title bar layer,
and attributes of menus and windows opened in the screen.  of particular
interest are the values that allow precalculation of window border size.
These variables will be discussed in the chapter "intuition windows".