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

When working directly with graphics, the interface is based on view and
viewport structures, rather than on intuition's screen structure.  as
previously mentioned, new information must be associated with the ViewPort
to specify the new Release 2 modes, and also with the View to specify what
virtual monitor the whole View will be displayed on.  There is also a lot
of information to associate with a ViewPort regarding enhanced genlock
capabilities.

This association of this new data with the view is made through a display
database system which has been added to the Release 2 graphics library.
All correctly written programs that allocate a colormap structure for a
viewport use the getcolormap() function to do it.  hence, in release 2 the
ColorMap structure is used as the general purpose black box extension of
the ViewPort data.

To set or obtain the data in the extended structures, Release 2 provides a
new function named videocontrol() which takes a colormap as an argument.
This allows the setting and getting of the new extended display data.
This mechanism is used to associate a displayinfo handle (not a modeid)
with a viewport.  a displayinfo handle is an abstract link to the display
database area associated with a particular ModeID.  This handle is passed
to the graphics database functions when getting or setting information
about the mode. Using VideoControl(), a program can enable, disable, or
obtain the state of a ViewPort's ColorMap, mode, genlock and other
features.  The function uses a tag based interface and returns NULL if no
error occurred.

    error = BOOL VideoControl( struct ColorMap *cm, struct TagItem *tag );

The first argument is a pointer to a colormap structure as returned by the
getcolormap() function.  the second argument is a pointer to an array of
video control tag items, used to indicate whether information is being
given or requested as well as to pass (or receive the information).  The
tags you can use with videocontrol() include the following:

VTAG_ATTACH_CM_GET (or _SET) is used to obtain the colormap structure from
the indicated viewport or attach a given colormap to it.

VTAG_VIEWPORTEXTRA_GET (or _SET) is used to obtain the viewportextra
structure from the indicated colormap structure or attach a given
ViewPortExtra to it.  A ViewPortExtra structure is an extension of the
viewport structure and should be allocated and freed with gfxnew() and
gfxfree() and associated with the viewport with videocontrol().

VTAG_NORMAL_DISP_GET (or _SET) is used to obtain or set the displayinfo
structure for the standard or "normal" mode.

See <graphics/videocontrol.h> for a list of all the available tags.  see
the section on genlocking for information on using videocontrol() to
interact with the Amiga's genlock capabilities.  Note that the graphics
library will modify the tag list passed to VideoControl().