Topic : The ATARI Compendium
Author : Scott Sanders / JAY Software
Version : 1.25 (20/6/2003)
Subject : Documentation
Nodes : 1117
Index Size : 32614
HCP-Version : 6
Compiled on : Atari
@charset : UTF-8
@lang : en
@default :
@help : %About
@options : +g -i -t4 +y +z
@width : 100
View Ref-Filevr_trnfm()vrt_cpyfm()vro_cpyfm() VDISyntaxVOID vro_cpyfm( handle, mode, pxy, src, dest )
WORD handle, mode;
WORD *pxy;
MFDB *src, *dest;
Function vro_cpyfm() 'blits' a screen or memory block from one
location to another.
Opcode 109
Availability Supported by all screen drivers.
Parameters handle specifies valid workstation handle. mode specifies
the writing mode as follows:
Name Mode Result
ALL_WHITE 0 All zeros.
S_AND_D 1 source AND destination
S_AND_NOTD 2 source AND (NOT destination)
S_ONLY 3 source
(* Replace mode *)
NOTS_AND_D 4 (NOT source) AND destination
(* Erase mode *)
D_ONLY 5 destination
S_XOR_D 6 source XOR destination
(* XOR Mode *)
S_OR_D 7 source OR destination
NOT_SORD 8 NOT (source OR destination)
NOT_SXORD 9 NOT (source XOR destination)
NOT_D 10 NOT destination
S_OR_NOTD 11 source OR (NOT destination)
NOT_S 12 NOT source
NOTS_OR_D 13 (NOT source) OR destination
NOT_SANDD 14 NOT (source AND destination)
ALL_BLACK 15 All ones.
pxy points to an array of eight WORDs.
pxy[0-3] contains the bounding rectangle of the source block.
pxy[4-7] contains the bounding rectangle of the dest. block.
src and dest each point to an MFDB structure which describes
the source and destination memory form.
MFDB is defined as follows:
typedef struct
{
/* Memory address (NULL = current screen). If you specify
a value of NULL, the rest of the structure will be
filled out for you. */
VOID *fd_addr;
/* Form width in pixels */
WORD fd_width;
/* Form height in pixels */
WORD fd_height;
/* Form width in WORDs (fd_width + 15)/16 */
WORD fd_wdwidth;
/* Format (0 = device-specific, 1 = VDI format) */
WORD fd_stand;
/* Number of memory planes */
WORD fd_planes;
/* Reserved (set to 0) */
WORD reserved1;
WORD reserved2;
WORD reserved3;
} MFDB;
Binding contrl[0] = 109;
contrl[1] = 4;
contrl[3] = 1;
contrl[6] = handle;
contrl[7] = (WORD)((LONG)src >> 16);
contrl[8] = (WORD)src;
contrl[9] = (WORD)((LONG)dest >> 16);
contrl[10] = (WORD)dest;
intin[0] = mode;
ptsin[0] = pxy[0];
ptsin[1] = pxy[1];
ptsin[2] = pxy[2];
ptsin[3] = pxy[3];
ptsin[4] = pxy[4];
ptsin[5] = pxy[5];
ptsin[6] = pxy[6];
ptsin[7] = pxy[7];
vdi();
Comments To 'blit' a single-plane form to a multi-plane destination,
use vrt_cpyfm().
See Also vr_trnfm(), vrt_cpyfm()Group VDI Raster