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".