HomeVDIAttribute functionsInquire functions

7.5 Output functions

This library contains a multitude of functions to enable output of various types to be made on an output device. In all, the following routines are available:

v_arc Draws arcs of circles
v_bar Draws filled rectangles
v_bez Draws Bezier-splines
v_bez_fill Draws and fills Bezier-splines
v_cellarray Sets colours by coordinates of colour cells
v_circle Draws filled circle
v_contourfill Fills area up to a given limit
v_ellarc Draws elliptical arc
v_ellipse Draws filled ellipse
v_ellpie Draws filled ellipse segment
v_etext Outputs graphics text
v_fillarea Fills specified area (polygon)
v_ftext Outputs outline text (vector font)
• v_ftext16 Outputs 16-bit Speedo characters
v_ftext_offset Outputs outline text with offset vectors
v_ftext_offset16 Ditto, with 16-bit Speedo characters
v_gtext Outputs graphics text
v_justified Outputs justified text
• v_mono_ftext No information available at present
v_pieslice Draws filled circular segment
v_pline Outputs a polyline
v_pmarker Draws marker(s)
v_rbox Draws rounded rectangle
v_rfbox Draws filled, rounded rectangle
vr_recfl Draws filled rectangle

Note: One can specify the type of output further with the attribute functions.

See also: VDI workstations   Style guidelines

7.5.1 vr_recfl

Name: »Fill rectangle« - Outputs a filled rectangle.
Opcode: 114
Syntax: void vr_recfl ( int16_t handle, int16_t *pxyarray );
Description: The call vr_recfl draws a filled rectangle. The following apply:
Parameter Meaning
   
handle Workstation identifier
pxyarray[0] X-coordinate, and
pxyarray[1] Y-coordinate of a rectangle corner point
pxyarray[2] X-coordinate, and
pxyarray[3] Y-coordinate of the diagonally opposite corner point


Note: The rectangle can be filled with all of the fill area attributes except outline.

The function is not available on all output devices; in case of doubt, therefore, it is better to fall back to the v_bar routine.
Return value: The function does not return a result.
Availability: Supported by all drivers.
Group: Output functions
See also: Binding   v_fillarea   vswr_mode   vs_color   vsf_interior   vsf_style   vsf_color   vsf_udpat   vsf_perimeter

7.5.2 Bindings for vr_recfl

C: void vr_recfl ( int16_t handle, int16_t *pxyarray );
Binding:
void vr_recfl (int16_t handle, int16_t *pxyarray)
{
   ptsin[0..3] = pxyarray[0..3];

   contrl[0] = 114;
   contrl[1] = 2;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 114 # Function Opcode
contrl+2 contrl[1] 2 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] 0 # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+12 contrl[6] handle
ptsin ptsin[0..3] pxyarray[0..3]

7.5.3 v_arc

Name: »Arc« - Draw a circular arc.
Opcode: 11 (GDP 2)
Syntax: void v_arc ( int16_t handle, int16_t x, int16_t y, int16_t radius, int16_t begang, int16_t endang );
Description: The call v_arc draws an arc of a circle. The following apply:
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate of arc's center point
radius Length of arc's radius in X-axis units
begang Starting angle in tenths of degrees (0-3600)
endang Ending angle in tenths of degrees (0-3600)


Note: The lines attributes, the writing mode as well as the actual pixel size are taken into account for drawing. The specification for the radius refers to the X-axis. The angle is specified in 1/10 degrees in the anticlockwise direction.
             900
            |
            |
            |
   ---------+---------
1800        |        0
            |
            |
             2700
Return value: The function does not return a result.
Availability: Supported by all drivers. This function comprises one of the 10 VDI GDP's (Generalized Drawing Primitives). Although all current drivers support all GDP's, their availability is not guaranteed and may vary. To check for a particular GDP refer to the table returned by v_opnvwk or v_opnwk.
Group: Output functions
See also: Binding   vs_color   vswr_mode   vsl_type   vsl_width   vsl_color   vsl_ends   vsl_udsty

7.5.4 Bindings for v_arc

C: void v_arc ( int16_t handle, int16_t x, int16_t y, int16_t radius, int16_t begang, int16_t endang );
Binding:
void v_arc (int16_t handle, int16_t x, int16_t y, int16_t radius,
            int16_t begang, int16_t endang)
{
   ptsin[0] = x;
   ptsin[1] = y;
   ptsin[2] = ptsin[3] = ptsin[4] = ptsin[5] = 0;
   ptsin[6] = radius;
   ptsin[7] = 0;

   intin[0] = begang;
   intin[1] = endgang;

   contrl[0] = 11;
   contrl[1] = 4;
   contrl[3] = 2;
   contrl[5] = 2;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] 4 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] 2 # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+10 contrl[5] 2 GDP-number
contrl+12 contrl[6] handle
intin intin[0] begang
intin+2 intin[1] endgang
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsin+4 ptsin[2..5] 0
ptsin+12 ptsin[6] radius
ptsin+14 ptsin[7] 0

7.5.5 v_bar

Name: »Bar« - Draw a filled rectangle.
Opcode: 11 (GDP 1)
Syntax: void v_bar ( int16_t handle, int16_t *pxyarray );
Description: The call v_bar draws a filled rectangle. The following apply:
Parameter Meaning
   
handle Workstation identifier
pxyarray[0] X-coordinate, and
pxyarray[1] Y-coordinate of a rectangle corner point
pxyarray[2] X-coordinate, and
pxyarray[3] Y-coordinate of the diagonally opposite corner point


Note: The function can be used for the drawing of bar graphs, for instance. The fill attributes as well as the writing mode will be taken into account.
Return value: The function does not return a result.
Availability: Supported by all drivers. This function comprises one of the 10 VDI GDP's (Generalized Drawing Primitives). Although all current drivers support all GDP's, their availability is not guaranteed and may vary. To check for a particular GDP refer to the table returned by v_opnvwk or v_opnwk.
Group: Output functions
See also: Binding   vswr_mode   vs_color   vsf_interior   vsf_style   vsf_color   vsf_udpat   vsf_perimeter

7.5.6 Bindings for v_bar

C: void v_bar ( int16_t handle, int16_t *pxyarray );
Binding:
void v_bar (int16_t handle, int16_t *pxyarray)
{
   ptsin[0..3] = pxyarray[0..3];
   contrl[0] = 11;
   contrl[1] = 2;
   contrl[3] = 0;
   contrl[5] = 1;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] 2 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] 0 # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+10 contrl[5] 1 GDP-number
contrl+12 contrl[6] handle
ptsin ptsin[0..3] pxyarray[0..3]

7.5.7 v_bez

Name: »Output Bezier« - Draw Bezier-spline path.
Opcode: 6 (Sub-Opcode 13)
Syntax: void v_bez ( int16_t handle, int16_t count, int16_t *xyarr, int8_t *bezarr, int16_t *extent, int16_t *totpts, int16_t *totmoves );
Description: The call v_bez draws a Bezier-spline curve path. The following apply:
Parameter Meaning
   
handle Workstation identifier
count Number of vertices in path
xyarr Coordinates of vertices
bezarr Point-type flags:
Bit-0 = First point in a 4-point Bezier curve (2 anchor points points and 2 control points)
Bit-1 = Jump point - this point and the previous one will not be connected; useful for drawing enclaves or exclaves
Bit-2..7 = Reserved, set to 0
extent Coordinates of the bounding box
totpts Number of points in the resulting path
totmoves Number of moves in the path


Note: The last point of a Bezier-segment can be the first point of the next Bezier curve (or it can be a jump point). If bit 0 of bezarr is 0, v_bez works like v_pline and draws a straight line between two points.
Return value: The function does not return a result.
Availability: As of GEM/3 Release 3.1, SpeedoGDOS 4.00 onwards, and NVDI 2.10 onwards.
Group: Output functions
See also: Binding   v_bez_on   v_bez_off   v_bez_fill   v_bez_qual   v_set_app_buff

7.5.8 Bindings for v_bez

C: void v_bez ( int16_t handle, int16_t count, int16_t *xyarr, int8_t *bezarr, int16_t *extent, int16_t *totpts, int16_t *totmoves );
Binding:
void v_bez (int16_t handle, int16_t count, int16_t *xyarr,
            int8_t *bezarr, int16_t *extent, int16_t *totpts,
            int16_t *totmoves)
{
   ptsin[0..2n-1] = xyarr[0..2n-1];
   intin[0..(n+1)/2-1] = bezarr[0..n-1]

   contrl[0] = 6;
   contrl[1] = n;
   contrl[3] = (n+1)/2;
   contrl[5] = 13;
   contrl[6] = handle;

   vdi ();

   *totpts   = intout[0];
   *totmoves = intout[1];
   extent[0..3] = ptsout[0..3];
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 6 # Function Opcode
contrl+2 contrl[1] n # entry in ptsin
contrl+4 contrl[2] 2 # entry in ptsout
contrl+6 contrl[3] (n+1)/2 # entry in intin
contrl+8 contrl[4] 6 # entry in intout
contrl+10 contrl[5] 13 Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0..(n+1)/2-1)] bezarr[0..n-1]
ptsin ptsin[0..2n-1] xyarr[0..2n-1]
intout intout[0] totpts
intout+2 intout[1] totmoves
intout+4 intout[2..5] Reserved
ptsout ptsout[0..3] extent[0..3]


Note: The binding for this function has to swap the bytes in intin because unfortunately this function is compatible with PC-GEM. => bezarr[0] is the low byte of intin[0], bezarr[1] is the high byte of intin[0]...

7.5.9 v_bez_fill

Name: »Output filled Bezier« - Draw and fill Bezier-spline curve.
Opcode: 9 (Sub-Opcode 13)
Syntax: void v_bez_fill ( int16_t handle, int16_t count, int16_t *xyarr, int8_t *bezarr, int16_t *extent, int16_t *totpts, int16_t *totmoves );
Description: The call v_bez_fill draws a Bezier-spline path and then fills this. The following apply:
Parameter Meaning
   
handle Workstation identifier
count Number of vertices in path
xyarr[0..2n-1] Coordinates of vertices
bezarr Point-type flags:
Bit-0 First point in a 4-point Bezier curve (two anchor points and two control points)
Bit-1 Jump point - this point and the previous one will not be connected; useful for drawing enclaves or exclaves
Bit-2..7 Reserved, set to 0
extent[0..3] Coordinates of the bounding box
totpts Number of points in the resulting path
totmoves Number of moves in the path


Note: If bit 0 of bezarr is 0, v_bez_fill works like v_fillarea and fills the area limited by a line between two points.
Return value: The function does not return a result.
Availability: As of GEM/3 Release 3.1, SpeedoGDOS 4.00 onwards, and NVDI 2.10 onwards.
Group: Output functions
See also: Binding   v_bez_on   v_bez_off   v_bez   v_bez_qual   v_set_app_buff   v_fillarea

7.5.10 Bindings for v_bez_fill

C: void v_bez_fill ( int16_t handle, int16_t count, int16_t *xyarr, int8_t *bezarr, int16_t *extent, int16_t *totpts, int16_t *totmoves );
Binding:
void v_bez_fill (int16_t handle, int16_t count, int16_t *xyarr,
                 int8_t *bezarr, int16_t *extent,
                 int16_t *totpts, int16_t *totmoves)
{
   ptsin[0..2n-1] = xyarr[0..2n-1];
   intin[0..(n+1)/2-1] = bezarr[0..n-1];

   contrl[0] = 9;
   contrl[1] = n;
   contrl[3] = (n+1)/2;
   contrl[5] = 13;
   contrl[6] = handle;

   vdi ();

   *totpts   = intout[0];
   *totmoves = intout[1];
   extent[0..3] = ptsout[0..3];
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 9 # Function Opcode
contrl+2 contrl[1] n # Entry in ptsin
contrl+4 contrl[2] 2 # Entry in ptsout
contrl+6 contrl[3] (n+1)/2 # Entry in intin
contrl+8 contrl[4] 6 # Entry in intout
contrl+10 contrl[5] 13 # Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0..(n+1)/2-1] bezarr[0..n-1]
ptsin ptsin[0..2n-1] xyarr[0..2n-1]
intout intout[0] totpts
intout+2 intout[1] totmoves
intout+4 intout[2..5] reserviert
ptsout ptsout[0..3] extent[0..3]


Note: The binding for this function has to swap the bytes in intin because unfortunately this function is compatible with PC-GEM. => bezarr[0] is the low byte of intin[0], bezarr[1] is the high byte of intin[0]...

7.5.11 v_cellarray

Name: »Cell array« - Colour setup of the screen by reference to coordinates of coloured cells.
Opcode: 10
Syntax: void v_cellarray ( int16_t handle, int16_t *pxyarray, int16_t row_length, int16_t el_used, int16_t num_rows, int16_t wrt_mode, int16_t *colarray );
Description: The call v_cellarray allows the colour setup of the screen not to depend on the objects being drawn, but on the coordinates of an array of coloured cells instead. The following apply:
Parameter Meaning
   
handle Workstation identifier
pxyarray Coordinates of the bounding rectangle
row_length Line length of colour index array
el_used Number of columns
num_rows Number of lines
wrt_mode Writing mode
colarray Colour index array, contains the colour information for the whole rectangle (line-by-line)


Note: The output device is subdivided into a number of cells, where each cell has a colour allocated to it. If any output occurs in the respective cell, then it will take on the colour allocated to the cell. The function is not available on all output devices.
Return value: The function does not return a result.
Availability: Not supported by any current drivers.

This function is not guaranteed available in any driver and should therefore be avoided unless you are sure the driver you are utilizing understands it.
Group: Output functions
See also: Binding   vswr_mode

7.5.12 Bindings for v_cellarray

C: void v_cellarray ( int16_t handle, int16_t *pxyarray, int16_t row_length, int16_t el_used, int16_t num_rows, int16_t wrt_mode, int16_t *colarray );
Binding:
void v_cellarray (int16_t handle, int16_t *pxyarray,
                  int16_t row_length, int16_t el_used,
                  int16_t num_rows,  int16_t wrt_mode,
                  int16_t *colarray)
{
   int16_t n;

   n = row_length * num_rows;

   intin[0..n-1] = colarray[0..n-1];
   ptsin[0..3] = pxyarray[0..3];

   contrl[0]  = 10;
   contrl[1]  = 2;
   contrl[3]  = n;
   contrl[6]  = handle;
   contrl[7]  = row_length;
   contrl[8]  = el_used;
   contrl[9]  = num_rows;
   contrl[10] = wrt_mode;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 10 # Function Opcode
contrl+2 contrl[1] 2 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] n # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+12 contrl[6] handle
contrl+14 contrl[7] row_length
contrl+16 contrl[8] el_used
contrl+18 contrl[9] num_rows
contrl+20 contrl[10] wrt_mode
intin intin[0..n-1] colarray[0..n-1]
ptsin ptsin[0..3] pxyarray[0..3]


Note: n is here the number of lines * number of columns of the cell array.

7.5.13 v_circle

Name: »Circle« - Draw a circular area.
Opcode: 11 (GDP 4)
Syntax: void v_circle ( int16_t handle, int16_t x, int16_t y, int16_t radius );
Description: The call v_circle draws a filled circular area. The following apply:
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate of center point of circle
radius Radius in X-coordinate units


Note: The fill attributes, the writing mode as well as the pixel size ratio will be respected.
Return value: The function does not return a result.
Availability: Supported by all drivers. This function comprises one of the 10 VDI GDP's (Generalized Drawing Primitives). Although all current drivers support all GDP's, their availability is not guaranteed and may vary. To check for a particular GDP refer to the table returned by v_opnvwk or v_opnwk.
Group: Output functions
See also: Binding   vswr_mode   vs_color   vsf_interior   vsf_style   vsf_color   vsf_udpat   vsf_perimeter

7.5.14 Bindings for v_circle

C: void v_circle ( int16_t handle, int16_t x, int16_t y, int16_t radius );
Binding:
void v_circle (int16_t handle, int16_t x, int16_t y,
               int16_t radius)
{
   ptsin[0]  = x;
   ptsin[1]  = y;
   ptsin[2]  = 0;
   ptsin[3]  = 0;
   ptsin[4]  = radius;
   ptsin[5]  = 0;

   contrl[0] = 11;
   contrl[1] = 3;
   contrl[3] = 0;
   contrl[5] = 4;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] 3 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] 0 # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+10 contrl[5] 4 GDP-number
contrl+12 contrl[6] handle
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsin+4 ptsin[2..3] 0
ptsin+8 ptsin[4] radius
ptsin+10 ptsin[5] 0

7.5.15 v_contourfill

Name: »Countour fill« - Fill a particular area up to a given limit.
Opcode: 103
Syntax: void v_contourfill ( int16_t handle, int16_t x, int16_t y, int16_t index );
Description: The call v_contourfill fills, depending on the starting point, a particular area. The following apply:
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate of starting point
index Colour index of a colour


Notes: The fill area is confined by the screen edge, or by a defined colour.

If the parameter index is negative, filling continues in every direction until a pixel of a different colour to that in x and y is encountered. If the parameter index is positive, then the fill continues in all directions until the colour in index is found. In TrueColor mode, with a positive value for index, the fill spreads until a pixel is found with the same colour as the 'virtual pen' index.

The current fill attributes will be respected during drawing.
Return value: The function returns no direct result.
Availability: The function is not available on all output devices, therefore one should inquire with vq_extnd.
Group: Output functions
See also: Binding   vswr_mode   vs_color   vsf_interior   vsf_style   vsf_color   vsf_udpat   vsf_perimeter

7.5.16 Bindings for v_contourfill

C: void v_contourfill ( int16_t handle, int16_t x, int16_t y, int16_t index );
Binding:
void v_contourfill (int16_t handle, int16_t x, int16_t y,
                    int16_t index)
{
   intin[0]  = index;
   ptsin[0]  = x;
   ptsin[1]  = y;
   contrl[0] = 103;
   contrl[1] = 1;
   contrl[3] = 1;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 103 # Function Opcode
contrl+2 contrl[1] 1 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] 1 # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+12 contrl[6] handle
intin intin[0] index
ptsin ptsin[0] x
ptsin+2 ptsin[1] y

7.5.17 v_ellarc

Name: »Elliptical arc« - Draw an elliptical arc segment.
Opcode: 11 (GDP 6)
Syntax: void v_ellarc ( int16_t handle, int16_t x, int16_t y, int16_t xradius, int16_t yradius, int16_t begang, int16_t endang );
Description: The call v_ellarc draws a segment of an elliptical arc. The following apply:
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate of arc's center point
xradius Radius in X-axis units
yradius Radius in Y-axis units
begang Staring angle in tenths of degrees (0-3600)
endang Ending angle in tenths of degrees (0-3600)


Note: The lines attributes and the writing mode will be respected during drawing, but the pixel size ratio will be ignored. The angle is specified in 1/10 degree and anticlockwise:
             900
            |
            |
            |
   ---------+---------
1800        |        0
            |
            |
             2700
Return value: The function does not return a result.
Availability: Supported by all drivers. This function comprises one of the 10 VDI GDP's (Generalized Drawing Primitives). Although all current drivers support all GDP's, their availability is not guaranteed and may vary. To check for a particular GDP refer to the table returned by v_opnvwk or v_opnwk.
Group: Output functions
See also: Binding   vs_color   vswr_mode   vsl_type   vsl_width   vsl_color   vsl_ends   vsl_udsty

7.5.18 Bindings for v_ellarc

C: void v_ellarc ( int16_t handle, int16_t x, int16_t y, int16_t xradius, int16_t yradius, int16_t begang, int16_t endang );
Binding:
void v_ellarc (int16_t handle, int16_t x, int16_t y,
               int16_t xradius, int16_t yradius, int16_t begang,
               int16_t endang)
{
   ptsin[0]  = x;
   ptsin[1]  = y;
   ptsin[2]  = xradius;
   ptsin[3]  = yradius;

   intin[0] = begang;
   intin[1] = endang;

   contrl[0] = 11;
   contrl[1] = 2;
   contrl[3] = 2;
   contrl[5] = 6;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] 2 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] 2 # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+10 contrl[5] 6 GDP-Nummer
contrl+12 contrl[6] handle
intin intin[0] begang
intin+2 intin[1] endang
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsin+4 ptsin[2] xradius
ptsin+6 ptsin[3] yradius

7.5.19 v_ellipse

Name: »Ellipse« - Draw a filled elliptical area.
Opcode: 11 (GDP 5)
Syntax: void v_ellipse ( int16_t handle, int16_t x, int16_t y, int16_t xradius, int16_t yradius );
Description: The call v_ellipse draws a filled elliptical area. The following apply:
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate of center point of ellipse
xradius Radius of X-axis
yradius Radius of Y-axis


Note: The fill attributes and the writing mode will be respected during drawing, but the pixel size ratio will be ignored.
Return value: The function does not return a result.
Availability: Supported by all drivers. This function comprises one of the 10 VDI GDP's (Generalized Drawing Primitives). Although all current drivers support all GDP's, their availability is not guaranteed and may vary. To check for a particular GDP refer to the table returned by v_opnvwk or v_opnwk.
Group: Output functions
See also: Binding   vswr_mode   vs_color   vsf_interior   vsf_style   vsf_color   vsf_udpat   vsf_perimeter

7.5.20 Bindings for v_ellipse

C: void v_ellipse ( int16_t handle, int16_t x, int16_t y, int16_t xradius, int16_t yradius );
Binding:
void v_ellipse (int16_t handle, int16_t x, int16_t y, int16_t xradius,
                int16_t yradius)
{
   ptsin[0]  = x;
   ptsin[1]  = y;
   ptsin[2]  = xradius;
   ptsin[3]  = yradius;

   contrl[0] = 11;
   contrl[1] = 2;
   contrl[3] = 0;
   contrl[5] = 5;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] 2 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] 0 # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+10 contrl[5] 5 GDP-number
contrl+12 contrl[6] handle
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsin+4 ptsin[2] xradius
ptsin+6 ptsin[3] yradius

7.5.21 v_ellpie

Name: »Elliptical pie« - Draw a filled elliptical arc segment.
Opcode: 11 (GDP 7)
Syntax: void v_ellpie ( int16_t handle, int16_t x, int16_t y, int16_t xradius, int16_t yradius, int16_t begang, int16_t endang );
Description: The call v_ellpie draws a segment of a filled elliptical area ("pie segment"), such as those used for pie-slice graphics. The following apply:
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate of center point of arc
xradius Radius of X-axis
yradius Radius of Y-axis
begang Starting angle (in tenths of degrees 0-3600)
endang Ending angle (in tenths of degrees 0-3600)


Note: The fill attributes and the writing mode will be respected during drawing, but the pixel size ratio will be ignored. The angle is specified in 1/10 degree and anticlockwise:
             900
            |
            |
            |
   ---------+---------
1800        |        0
            |
            |
             2700
Return value: The function does not return a result.
Availability: Supported by all drivers. This function comprises one of the 10 VDI GDP's (Generalized Drawing Primitives). Although all current drivers support all GDP's, their availability is not guaranteed and may vary. To check for a particular GDP refer to the table returned by v_opnvwk or v_opnwk.
Group: Output functions
See also: Binding   vswr_mode   vs_color   vsf_interior   vsf_style   vsf_color   vsf_udpat   vsf_perimeter

7.5.22 Bindings for v_ellpie

C: void v_ellpie ( int16_t handle, int16_t x, int16_t y, int16_t xradius, int16_t yradius, int16_t begang, int16_t endang );
Binding:
void v_ellpie (int16_t handle, int16_t x, int16_t y,
               int16_t xradius, int16_t yradius, int16_t begang,
               int16_t endang)
{
   ptsin[0]  = x;
   ptsin[1]  = y;
   ptsin[2]  = xradius;
   ptsin[3]  = yradius;

   intin[0] = begang;
   intin[1] = endang;

   contrl[0] = 11;
   contrl[1] = 2;
   contrl[3] = 2;
   contrl[5] = 7;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] 2 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] 2 # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+10 contrl[5] 7 GDP-number
contrl+12 contrl[6] handle
intin intin[0] begang
intin+2 intin[1] endang
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsin+4 ptsin[2] xradius
ptsin+6 ptsin[3] yradius

7.5.23 v_etext

Name: »?« - Output text graphically at a given position.
Opcode: 11 (GDP 11)
Syntax: void v_etext( int16_t handle, int16_t x, int16_t y, int16_t *string, int16_t *offsets);
Description: The call v_etext writes each character of a text string relative to the specified starting position. It is used typically to override the driver's default method of justification. This function applies to printers and plotters only.
Parameter Meaning
   
handle Workstation identifier
count Number of points
x X-coordinate of starting position
y Y-coordinate of starting position
string Address of NULL-terminated text string
offsets Address of int16_t array of position offsets.

Each offset is a x,y pair of signed integers that indicate the position of the next character in the string relative to the starting position. The first offset pair affects the position of the first character in the string. Some drivers ignore the y component of each pair, in which case y is assumed to equal zero.
Return value: The function does not return a result.
Availability: GEM/3 Release 3.1
Group: Output functions
See also: Binding

7.5.24 Bindings for v_etext

C: void v_etext( int16_t handle, int16_t x, int16_t y, int16_t *string, int16_t *offsets);
Binding:
void v_etext( int16_t handle, int16_t x, int16_t y,
              int16_t *string, int16_t *offsets)
{
   ptsin[0]  = x;
   ptsin[1]  = y;
   ptsin[2]  = offsets[0];
   ptsin[3]  = offsets[2];
   .
   .
   ptsin[2n+1]  = offsets[2n-1];

   i = 0;
   while (intin[i++] = *string++)
      ;

   contrl[0] = 11;
   contrl[1] = length og string + 1 ;
   contrl[3] = lenght of string;
   contrl[4] = 11;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] n + 1 # Entry in ptsin
contrl+4 contrl[2] 0 # Entry in ptsout
contrl+6 contrl[3] n # Entry in intin
contrl+8 contrl[4] 0 # Entry in intout
contrl+10 contrl[5] 11
contrl+12 contrl[6] handle
intin intin[0..n-1] string[0..n-1]
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsin+4 ptsin[2..2n+1] offsets[0..2n-1]

7.5.25 v_fillarea

Name: »Filled area« - Fill an area.
Opcode: 9
Syntax: void v_fillarea ( int16_t handle, int16_t count, int16_t *pxyarray );
Description: The call v_fillarea fills an area that is surrounded by a polygon. The following apply:
Parameter Meaning
   
handle Workstation identifier
count Number of vertices
pxyarray[0] X-coordinate, and
pxyarray[1] Y-coordinate of first point
...  
...  
pxyarray[2*count-2] X-coordinate, and
pxyarray[2*count-1] Y-coordinate of last point


Note: If a device does not have area fill capability, GEM VDI outlines the polygon using the current fill area colour.

At least three coordinate pairs have to be passed. The device driver ensures that the fill area is closed by connecting the first point to the last point. A single coordinate pair will be drawn as a point only if the automatic outlining of the fill area has been switched on with vsf_perimeter.

The current fill attributes will be respected.
Return value: The function does not return a result.
Availability: Supported by all drivers.
Group: Output functions
See also: Binding   vswr_mode   vs_color   vsf_interior   vsf_style   vsf_color   vsf_udpat   vsf_perimeter

7.5.26 Bindings for v_fillarea

C: void v_fillarea ( int16_t handle, int16_t count, int16_t *pxyarray );
Binding:
void v_fillarea (int16_t handle, int16_t count,
                 int16_t *pxyarray)
{
   ptsin[0..2*count-1]  = pxyarray[0..2*count-1];
   contrl[0] = 9;
   contrl[1] = count;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 9 # Function Opcode
contrl+2 contrl[1] n # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] 0 # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+12 contrl[6] handle
ptsin ptsin[0..2n-1] pxyarray[0..2n-1]


Note: Here n = count;

7.5.27 v_ftext

Name: »Text« - Output an outline (vector) font text.
Opcode: 241
Syntax: void v_ftext ( int16_t handle, int16_t x, int16_t y, int8_t *string );
Description: The call v_ftext outputs an outline (vector) text string (NULL-terminated) to a workstation, paying regard to spacing remainders. The following apply:
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate of starting position
string Pointer to text string (NULL-terminated)


Notes: In contrast to v_gtext, the function respects also the set kerning attributes, and takes the remainder amounts from vqt_f_extent into account; it also calculates internally with a precision of 1/65536 pixels, both of which ensure better positioning of the individual characters.

To output 16-bit Speedo character strings, you can use v_ftext16.
Return value: The function does not return a result.
Availability: FSMGDOS, SpeedoGDOS 4.00 onwards, and as of NVDI 3.00.
Group: Output functions
See also: Binding   v_gtext   v_ftext_offset   SpeedoGDOS   NVDI   fix31

7.5.28 Bindings for v_ftext

C: void v_ftext ( int16_t handle, int16_t x, int16_t y, int8_t *string );
Binding:
void v_ftext (int16_t handle, int16_t x, int16_t y,
              int8_t *string)
{
   int16_t i;

   ptsin[0]  = x;
   ptsin[1]  = y;

   i = 0;
   while (intin[i++] = *string++)
      ;

   contrl[0] = 241;
   contrl[1] = 1;
   contrl[3] = strlen(string);
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 241 # Function Opcode
contrl+2 contrl[1] 1 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] n # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+12 contrl[6] handle
intin intin[0..n-1] string[0..n-1]
ptsin ptsin[0] x
ptsin+2 ptsin[1] y


Note: Here n = strlen(string);

7.5.29 v_ftext_offset

Name: »Outline font text offset« - Output an 8-bit ASCII outline text, using character offset vectors.
Opcode: 241
Syntax: void v_ftext_offset ( int16_t handle, int16_t x, int16_t y, int8_t *string, int16_t *offset );
Description: The call v_ftext_offset is a variant of v_ftext for use under SpeedoGDOS, outputting an 8-bit ASCII character string to a workstation; one can specify an offset vector for each character.
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate of starting position
string Pointer to the string (NULL-terminated)
offset[0] X-offset of the first character
offset[1] Y-offset of the first character
...  
...  
offset[2n-2] X-offset of the last character
offset[2n-1] Y-offset of the last character


The parameter offset permits setting your own offsets in place of the character values calculated by the system; this permits substantially better control for positioning the characters on the output device.

Notes: The text attributes as well as the kerning settings will be respected.

To output 16-bit Speedo character strings, you can use v_ftext_offset16.
Return value: The function does not return a result.
Availability: As of SpeedoGDOS 4.00, and NVDI 3.00 onwards.
Group: Output functions
See also: Binding   v_gtext   v_ftext   SpeedoGDOS   NVDI

7.5.30 Bindings for v_ftext_offset

C: void v_ftext_offset ( int16_t handle, int16_t x, int16_t y, int8_t *string, int16_t *offset );
Binding:
void v_ftext_offset (int16_t handle, int16_t x, int16_t y,
                     int8_t *string, int16_t *offset)
{
   ptsin[0]  = x;
   ptsin[1]  = y;
   ptsin[2]  = offset[0];
   ptsin[3]  = offset[1];
   ptsin[4..2*n+1] = offset[2..(2*n)-1]

   intin[0..n-1] = string[0..n-1];

   contrl[0] = 241;
   contrl[1] = 1+n;
   contrl[3] = n;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 241 # Function Opcode
contrl+2 contrl[1] 1+n # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] n # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+12 contrl[6] handle
intin intin[0..n-1] string[0..n-1]
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsin+4 ptsin[2] offset[0] # X-offset 1st character
ptsin+6 ptsin[3] offset[1] # Y-offset 1st character
ptsin+8 ptsin[4..2n+1] offset[2..2n-1] # ditto for rest


Note: Here n = strlen(string);

7.5.31 v_gtext

Name: »Graphic text« - Output a graphic text.
Opcode: 8
Syntax: void v_gtext ( int16_t handle, int16_t x, int16_t y, int8_t *string );
Description: The call v_gtext outputs graphically a NULL-terminated text string on a workstation. The following apply:
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate of alignment point of text
string Character string as ASCII-codes (NULL-terminated)


Notes: The speed of the output can be increased if the following points are respected:
  • Output with byte alignment.
  • Preferably do not use clipping.
  • With non-proportional, 8 pixel wide fonts output in Replace mode and without clipping, else in Transparent mode.


The text attributes and the writing mode will be respected. If a vector font has been selected, then neither pair nor track kerning will be respected; thus it may be better to fall back on the v_ftext function. In addition, character positioning is pixel-by-pixel, i.e. vqt_width supplies the required step sizes.
Return value: The function does not return a result.
Availability: Supported by all drivers.
Group: Output functions
See also: Binding   vswr_mode   vs_color   vst_alignment   vst_height   vst_point   vst_rotation   vst_font   vst_color   vst_effects   v_ftext

7.5.32 Bindings for v_gtext

C: void v_gtext ( int16_t handle, int16_t x, int16_t y, int8_t *string );
Binding:
void v_gtext (int16_t handle, int16_t x, int16_t y,
              int8_t *string)
{
   int16_t i;

   ptsin[0]  = x;
   ptsin[1]  = y;

   i = 0;
   while (intin[i++] = *string++)
      ;

   contrl[0] = 8;
   contrl[1] = 1;
   contrl[3] = -i;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 8 # Function Opcode
contrl+2 contrl[1] 1 # Entry in ptsin
contrl+4 contrl[2] 0 # Entry in ptsout
contrl+6 contrl[3] n # Entry in intin
contrl+8 contrl[4] 0 # Entry in intout
contrl+12 contrl[6] handle
intin intin[0..n-1] string[0..n-1]
ptsin ptsin[0] x
ptsin+2 ptsin[1] y

7.5.33 v_justified

Name: »Justified graphics text« - Outputs positioned graphic text.
Opcode: 11 (GDP 10)
Syntax: void v_justified ( int16_t handle, int16_t x, int16_t y, int8_t *string, int16_t length, int16_t word_space, int16_t char_space, [int16_t *char_width] );
Description: The call v_justified outputs graphic text on a workstation, lengthening or shortening the text string to a specified length by modifying the inter-word or inter-character spacing. If using a vector font, the requested width of the string refers to the sum of the character widths; it does not take remainder data or characters extending outside the edges of the emsquare into account. The following apply:
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate of the text start point
string Character string as ASCII-codes (NULL-terminated)
length Requested length of the string, in X-axis pixels
word_space Inter-word spacing:
  0 = Do not allow VDI to modify inter-word spacing
<>0 = Allow VDI to modify inter-word spacing
char_space Inter-character spacing:
  0 = Do not allow VDI to modify inter-character spacing
<>0 = Allow VDI to modify inter-character spacing


The text will be aligned left and right with reference to the start point and the length. To bring the text to the desired length, one has the choice of stretching the word and/or the character interspaces.

The text attributes and the writing mode will be respected. Characters that are missing in the font will be substituted by a replacement symbol (e.g. the question-mark).

For vector fonts the length specification refers to the sum of the character widths - overhangs to left and right are not taken into account.

From GEM/3 on the function was changed appreciably. The parameter char_width was added. It returns the number of pixels of each character in the output character string. With this, there has also been a change in the parameters of word_space and char_space as follows:
Parameter Meaning
   
word_space Inter-word spacing:
0x0000 = No stretching of interspaces, no output information returned
0x0001 = Stretch interspaces, no output information returned
0x8000 = No stretching of interspaces, output information (char_space) is returned
0x8001 = Stretch interspaces, output information (char_space) is returned
char_space Inter-character spacing
0x0000 = No stretching of interspaces
0x0001 = Stretch interspaces
Return value: The function does not return a result.
Availability: Supported by all drivers. This function comprises one of the 10 VDI GDP's (Generalized Drawing Primitives). Although all current drivers support all GDP's, their availability is not guaranteed and may vary. To check for a particular GDP refer to the table returned by v_opnvwk or v_opnwk.
Group: Output functions
See also: Binding   vswr_mode   vs_color   vst_alignment   vst_height   vst_point   vst_rotation   vst_font   vst_color   vst_effects

7.5.34 Bindings for v_justified

C: void v_justified ( int16_t handle, int16_t x, int16_t y, int8_t *string, int16_t length, int16_t word_space, int16_t char_space, [int16_t *char_width] );
Binding:
void v_justified (int16_t handle, int16_t x, int16_t y,
                  int8_t *string, int16_t length,
                  int16_t word_space, int16_t char_space,
                  [int16_t *char_width] )
{
   int16_t *tmp;

   ptsin[0]  = x;
   ptsin[1]  = y;
   ptsin[2]  = length;
   ptsin[3]  = 0;

   intin[0] = word_space;
   intin[1] = char_space;

   tmp = &(intin[2]);
   while (*tmp++ = *string++)
      ;

   contrl[0] = 11;
   contrl[1] = 2;
   contrl[3] = (int16_t) (tmp-&(intin))-1;

   contrl[4] = 0;       /* If word_space equals 0x0000 or 0x0001  */
   contrl[4] = n;       /* If word_space equals 0x8000 or 0x8001  */

   contrl[5] = 10;
   contrl[6] = handle;

   vdi ();

   char_with[0..n-1] = intout[0..n-1];  /* If word_space equals   */
                                        /*      0x8000 or 0x8001  */

}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] 2 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] n+2 # entry in intin
contrl+8 contrl[4] 0 # entry in intout;
            word_space is 0x0000 or 0x0001
contrl+8 contrl[4] n # entry in intout;
            number is 0x8000 or 0x8001
contrl+10 contrl[5] 10 GDP-Nummer
contrl+12 contrl[6] handle
intin intin[0] word_space
intin+2 intin[1] char_space
intin+4 intin[2..n+1] string[0..n-1]
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsin+4 ptsin[2] length
ptsin+6 ptsin[3] 0
intout intout[0..n-1] char_with[0..n-1]
            if word_space is 0x8000 or 0x8001

7.5.35 v_pieslice

Name: »Pie-slice« - Draw a filled circular "pie-slice" segment.
Opcode: 11 (GDP 3)
Syntax: void v_pieslice ( int16_t handle, int16_t x, int16_t y, int16_t radius, int16_t begang, int16_t endang );
Description: The call v_pieslice draws a filled circular arc, such as used in pie-slice graphics, for instance. The following apply:
Parameter Meaning
   
handle Workstation identifier
x X-coordinate, and
y Y-coordinate for the centre point
radius Radius in x-coordinate units
begang Start angle (in tenths of degrees 0-3600)
endang End angle (in tenths of degrees 0-3600)


Note: The fill attributes and the writing mode will be respected during drawing. The angle is specified in 1/10 degree and anticlockwise:
             900
            |
            |
            |
   ---------+---------
1800        |        0
            |
            |
             2700
Return value: The function does not return a result.
Availability: Supported by all drivers. This function comprises one of the 10 VDI GDP's (Generalized Drawing Primitives). Although all current drivers support all GDP's, their availability is not guaranteed and may vary. To check for a particular GDP refer to the table returned by v_opnvwk or v_opnwk.
Group: Output functions
See also: Binding   vswr_mode   vs_color   vsf_interior   vsf_style   vsf_color   vsf_udpat   vsf_perimeter

7.5.36 Bindings for v_pieslice

C: void v_pieslice ( int16_t handle, int16_t x, int16_t y, int16_t radius, int16_t begang, int16_t endang );
Binding:
void v_pieslice (int16_t handle, int16_t x, int16_t y,
                 int16_t radius, int16_t begang, int16_t endang)
{
   ptsin[0] = x;
   ptsin[1] = y;
   ptsin[2] = ptsin[3] = ptsin[4] = ptsin[5] = 0;
   ptsin[6] = radius;
   ptsin[7] = 0;

   intin[0] = begang;
   intin[1] = endang;

   contrl[0] = 11;
   contrl[1] = 4;
   contrl[3] = 2;
   contrl[5] = 3;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] 4 # entry in ptsin
contrl+4 contrl[2] 0 # entry in ptsout
contrl+6 contrl[3] 2 # entry in intin
contrl+8 contrl[4] 0 # entry in intout
contrl+10 contrl[5] 3 GDP-number
contrl+12 contrl[6] handle
intin intin[0] begang
intin+2 intin[1] endang
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsin+4 ptsin[2..5] 0
ptsin+12 ptsin[6] radius
ptsin+14 ptsin[7] 0

7.5.37 v_pline

Name: »Polyline« - Draw a polyline.
Opcode: 6
Syntax: void v_pline ( int16_t handle, int16_t count, int16_t *pxyarray );
Description: The call v_pline draws a polyline (one, or a group of several connected lines).
Parameter Meaning
   
handle Workstation identifier
count Number of input vertices (n)
pxyarray[0] X-coordinate, and
pxyarray[1] Y-coordinate of first point
...  
...  
pxyarray[2*count-2] X-coordinate, and
pxyarray[2*count-1] Y-coordinate of last point


Note: Any set line attributes and the current writing mode will be used.

Notes: The starting point is set by the first coordinate pair. After this all further points will be connected by a line. Single points can not be drawn by a single coordinate pair, but can be drawn by a line of zero length, i.e. two equal coordinate pairs.
Return value: The function does not return a result.
Availability: Supported by all drivers.
Group: Output functions
See also: Binding   vs_color   vswr_mode   vsl_type   vsl_width   vsl_color   vsl_ends   vsl_udsty

7.5.38 Bindings for v_pline

C: void v_pline ( int16_t handle, int16_t count, int16_t *pxyarray );
Binding:
void v_pline (int16_t handle, int16_t count, int16_t *pxyarray)
{
   ptsin[0..2*count-1] = pxyarray[0..2*count-1];

   contrl[0] = 6;
   contrl[1] = count;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 6 # Function Opcode
contrl+2 contrl[1] count # Entry in ptsin
contrl+4 contrl[2] 0 # Entry in ptsout
contrl+6 contrl[3] 0 # Entry in intin
contrl+8 contrl[4] 0 # Entry in intout
contrl+12 contrl[6] handle
ptsin ptsin[0..2n-1] pxyarray[0..2n-1]


Note: Here n = count.

7.5.39 v_pmarker

Name: »Polymarker« - Draw a marker.
Opcode: 7
Syntax: void v_pmarker ( int16_t handle, int16_t count, int16_t *pxyarray );
Description: The call v_pmarker draws one or more markers.
Parameter Meaning
   
handle Workstation identifier
count Number of markers
pxyarray[0] X-coordinate, and
pxyarray[1] Y-coordinate of first marker
...  
...  
pxyarray[2*count-2] X-coordinate, and
pxyarray[2*count-1] Y-coordinate of last marker


Notes: The marker attributes and the set writing mode will be respected. Markers are used, for instance, by the program XACT for the graphical display of statistics.

This function allows quick plotting of single points by selecting an appropriate marker type with vsm_type.
Return value: The function does not return a result.
Availability: Supported by all drivers.
Group: Output functions
See also: Binding   vs_color   vswr_mode   vsm_type   vsm_height   vsm_color   pxyarray

7.5.40 Bindings for v_pmarker

C: void v_pmarker ( int16_t handle, int16_t count, int16_t *pxyarray );
Binding:
void v_pmarker (int16_t handle, int16_t count,
                int16_t *pxyarray)
{
   ptsin[0..2*count-1] = pxyarray[0..2*count-1];

   contrl[0] = 7;
   contrl[1] = count;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 7 # Function Opcode
contrl+2 contrl[1] count # Entry in ptsin
contrl+4 contrl[2] 0 # Entry in ptsout
contrl+6 contrl[3] 0 # Entry in intin
contrl+8 contrl[4] 0 # Entry in intout
contrl+12 contrl[6] handle
ptsin ptsin[0..2n-1] pxyarray[0..2n-1]


Note: Here n = count.

7.5.41 v_rbox

Name: »Rounded rectangle« - Draw a rectange with rounded corners.
Opcode: 11 (GDP 8)
Syntax: void v_rbox ( int16_t handle, int16_t *pxyarray );
Description: The call v_rbox draws an unfilled rectangle with rounded corners.
Parameter Meaning
   
handle Workstation identifier
pxyarray[0] X-coordinate, and
pxyarray[1] Y-coordinate of a rectangle corner
pxyarray[2] Y-coordinate, and
pxyarray[3] Y-coordinate of the diagonally opposite corner


Notes: The line attributes and current writing mode as well as the pixel size ratio will be respected.

The corners above are understood as the points at which the horizontal and vertial lines would meet if they were extended.

There is no way to define the radius (i.e. "roundness") of the corners.
Return value: The function does not return a result.
Availability: Supported by all drivers. This function comprises one of the 10 VDI GDP's (Generalized Drawing Primitives). Although all current drivers support all GDP's, their availability is not guaranteed and may vary. To check for a particular GDP refer to the table returned by v_opnvwk or v_opnwk.
Group: Output functions
See also: Binding   vs_color   vswr_mode   vsl_type   vsl_width   vsl_color   vsl_ends   vsl_udsty

7.5.42 Bindings for v_rbox

C: void v_rbox ( int16_t handle, int16_t *pxyarray );
Binding:
void v_rbox (int16_t handle, int16_t *pxyarray)
{
   ptsin[0..3] = pxyarray[0..3];

   contrl[0] = 11;
   contrl[1] = 2;
   contrl[3] = 0;
   contrl[5] = 8;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] 2 # Entry in ptsin
contrl+4 contrl[2] 0 # Entry in ptsout
contrl+6 contrl[3] 0 # Entry in intin
contrl+8 contrl[4] 0 # Entry in intout
contrl+10 contrl[5] 8 GDP-Nummer
contrl+12 contrl[6] handle
ptsin ptsin[0..3] pxyarray[0..3]

7.5.43 v_rfbox

Name: »Filled rounded rectangle« - Draw a filled rectangular area with rounded corners.
Opcode: 11 (GDP 9)
Syntax: void v_rfbox ( int16_t handle, int16_t *pxyarray );
Description: The call v_rfbox draws a filled rectangle with rounded corners. The following apply:
Parameter Meaning
   
handle Workstation identifier
pxyarray[0] X-coordinate, and
pxyarray[1] Y-coordinate of a rectangle corner
pxyarray[2] X-coordinate, and
pxyarray[3] Y-coordinate of the diagonally opposite corner


Notes: The line attributes and current writing mode as well as the pixel size ratio will be respected.

The corners above are understood as the points at which the horizontal and vertial lines would meet if they were extended.

There is no way to define the radius (i.e. "roundness") of the corners.
Return value: The function does not return a result.
Availability: Supported by all drivers. This function comprises one of the 10 VDI GDP's (Generalized Drawing Primitives). Although all current drivers support all GDP's, their availability is not guaranteed and may vary. To check for a particular GDP refer to the table returned by v_opnvwk or v_opnwk.
Group: Output functions
See also: Binding   vswr_mode   vs_color   vsf_interior   vsf_style   vsf_color   vsf_udpat   vsf_perimeter   v_rbox

7.5.44 Bindings for v_rfbox

C: void v_rfbox ( int16_t handle, int16_t *pxyarray );
Binding:
void v_rfbox (int16_t handle, int16_t *pxyarray)
{
   ptsin[0..3] = pxyarray[0..3];

   contrl[0] = 11;
   contrl[1] = 2;
   contrl[3] = 0;
   contrl[5] = 9;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Address Element Contents
contrl contrl[0] 11 # Function Opcode
contrl+2 contrl[1] 2 # Entry in ptsin
contrl+4 contrl[2] 0 # Entry in ptsout
contrl+6 contrl[3] 0 # Entry in intin
contrl+8 contrl[4] 0 # Entry in intout
contrl+10 contrl[5] 9 GDP-number
contrl+12 contrl[6] handle
ptsin ptsin[0..3] pxyarray[0..3]

HomeVDIAttribute functionsInquire functions