Home NVDI Programmer's Guide Lines and unfilled Graphic Primitives Marker

2.9 Filled Graphic Primitives


2.9.1 FILLED AREA (VDI 9)

This call draws a filled area, for example a complex polygon.

Decl.:  void v_fillarea( WORD handle, WORD count, WORD *xyarr );
Call:   v_fillarea( handle, count, xyarr );

Variable         Arguments           Meaning
Input:

contrl[0]        9                   v_fillarea
contrl[1]        n                   entries in ptsin
contrl[3]        0                   entries in intin
contrl[6]        handle
ptsin[0..2n-1]   xyarr[0..2n-1]      coordinates

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        0                   entries in intout

2.9.2 OUTPUT FILLED BEZIER (VDI 9, 13)

This call draws a filled polygon with bezier curves.

Decl.:  void v_bez_fill( WORD handle, WORD count, WORD *xyarr, UBYTE *bezarr,
                         WORD *extent, WORD *totpts, WORD *totmoves );
Call:   v_bez_fill( handle, count, xyarr, bezarr, extent, totpts, totmoves );

Variable         Arguments           Meaning
Input:

contrl[0]        9                   v_bez_fill
contrl[1]        n                   entries in ptsin
contrl[3]        (n+1)/2             entries in intin
contrl[5]        13                  signalisiert v_bez_fill
contrl[6]        handle
ptsin[0..2n-1]   xyarr[0..2n-1]      Koordinaten
intin[0..(n+1)/2-1] bezarr[0..n-1]   Punkttypen

Output:

contrl[2]        2                   entries in ptsout
contrl[4]        6                   entries in intout

intout[0]        totpts              number of points in the resulting polygon
intout[1]        totmoves            number of moves in the polygon
intout[2..5]                         reserved
ptsout[0..3]     extent[0..3]        coordinates of the bounding box

Meaning of the point-type flags:
bit 0:   first point in a 4-point bezier curve (two anchor points and two
         direction points). The last point of a bezier segment can be the
         first point of the next bezier curve (or it can be a jump point).

bit 1:   jump point - this point and the previous one will not be connected.

Bit 2-7 are reserved. If bit 0 is 0, v_bez_fill() works like v_fillarea() and
fills the area limited by a line between two points.

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

2.9.3 BAR (VDI 11, GDP 1)

This function draws a filled rectangle. In contrast to "FILLED RECTANGLE" a border is drawn.

Decl.:  void v_bar( WORD handle, WORD *rect );
Call:   v_bar( handle, rect );

Variable         Arguments           Meaning
Input:

contrl[0]        11                  GDP
contrl[1]        2                   entries in ptsin
contrl[3]        0                   entries in intin
contrl[5]        1                   v_bar
contrl[6]        handle
ptsin[0..3]      rect[0..3]          coordinates of the rectangle

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        0                   entries in intout

2.9.4 PIE (VDI 11, GDP 3)

This function draws a filled arc, whose start and end angle can be set in tenths of degrees from 0 to 3600.

Decl.:  void v_pieslice( WORD handle, WORD x, WORD y, WORD radius,
                         WORD begang, WORD endang );
Call:   v_pieslice( handle, x, y, radius, begang, endang );

Variable         Arguments           Meaning
Input:

contrl[0]        11                  GDP
contrl[1]        4                   entries in ptsin
contrl[3]        2                   entries in intin
contrl[5]        3                   v_pieslice
contrl[6]        handle
intin[0]         begang              start angle
intin[1]         endang              end angle
ptsin[0]         x
ptsin[1]         y
ptsin[6]         radius              radius

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        0                   entries in intout

2.9.5 CIRCLE (VDI 11, GDP 4)

This call draws a filled circle.

Decl.:  void v_circle( WORD handle, WORD x, WORD y, WORD radius );
Call:   v_circle( handle, x, y, radius );

Variable         Arguments           Meaning
Input:

contrl[0]        11                  GDP
contrl[1]        3                   entries in ptsin
contrl[3]        0                   entries in intin
contrl[5]        4                   v_circle
contrl[6]        handle
ptsin[0]         x
ptsin[1]         y
ptsin[4]         radius              radius

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        0                   entries in intout

2.9.6 ELLIPSE (VDI 11, GDP 5)

...

Decl.:  void v_ellipse( WORD handle, WORD x, WORD y,
                        WORD x_radius, WORD y_radius  );
Call:   v_ellipse( handle, x, y, x_radius, y_radius );

Variable         Arguments           Meaning
Input:

contrl[0]        11                  GDP
contrl[1]        2                   entries in ptsin
contrl[3]        0                   entries in intin
contrl[5]        5                   v_ellipse
contrl[6]        handle
ptsin[0]         x
ptsin[1]         y
ptsin[2]         x_radius            horizontal radius
ptsin[3]         y_radius            vertical radius

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        0                   entries in intout

2.9.7 ELLIPTICAL PIE (VDI 11, GDP 7))

"ELLIPTICAL PIE" draws a filled elliptical arc, whose start and end angle can be selected in tenths of degrees from 0 to 3600.

Decl.:  void v_ellpie( WORD handle, WORD x, WORD y, WORD x_radius,
                       WORD y_radius, WORD begang, WORD endang );
Call:   v_ellpie( handle, x, y, x_radius, y_radius, begang, endang );

Variable         Arguments           Meaning
Input:

contrl[0]        11                  GDP
contrl[1]        2                   entries in ptsin
contrl[3]        2                   entries in intin
contrl[5]        7                   v_ellpie
contrl[6]        handle
intin[0]         begang              start angle
intin[1]         endang              end angle
ptsin[0]         x
ptsin[1]         y
ptsin[2]         x_radius            horizontal radius
ptsin[3]         y_radius            vertical radius

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        0                   entries in intout

2.9.8 FILLED ROUNDED RECTANGLE (VDI 11, GDP 9)

A filled rectangle with rounded corners is drawn by this function.

Decl.:  void v_rfbox( WORD handle, WORD *rect );
Call:   v_rfbox( handle, rect );

Variable         Arguments           Meaning
Input:

contrl[0]        11                  GDP
contrl[1]        2                   entries in ptsin
contrl[3]        0                   entries in intin
contrl[5]        9                   v_rfbox
contrl[6]        handle
ptsin[0..3]      rect[0..3]          Koordinaten

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        0                   entries in intout

2.9.9 SET FILL INTERIOR INDEX (VDI 23)

This function selects the fill type for filled graphic objects. If the requested type is invalid, type 0 (hollow) will be selected.

Decl.:  WORD vsf_interior( WORD handle, WORD interior );
Call:   set_interior = vsf_interior( handle, interior );

Variable         Arguments           Meaning
Input:

contrl[0]        23                  vsf_interior
contrl[1]        0                   entries in ptsin
contrl[3]        1                   entries in intin
contrl[6]        handle
intin[0]         interior            requested fill type

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        1                   entries in intout
intout[0]        set_interior        selected fill type

Meaning of interior:
0: hollow
1: solid
2: pattern
3: hatch
4: user-defined style

2.9.10 SET FILL STYLE INDEX (VDI 24)

This call sets the style index which is corresponding to the type.

Decl.:  WORD vsf_style( WORD handle, WORD style_index );
Call:   set_style = vsf_style( handle, style_index );

Variable         Arguments           Meaning
Input:

contrl[0]        24                  vsf_style
contrl[1]        0                   entries in ptsin
contrl[3]        1                   entries in intin
contrl[6]        handle
intin[0]         style_index         requested index

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        1                   entries in intout
intout[0]        set_sytle           selected index

2.9.11 SET FILL COLOR INDEX (VDI 25)

...sets the color index for filled areas. If the index is invalid, color index 1 will be selected. If you use a colored pattern (see vsf_udpat) the color index will be ignored; you should set it to 1.

Decl.:  WORD vsf_color( WORD handle, WORD color_index );
Call:   set_color = vsf_color( handle, color_index );

Variable         Arguments           Meaning
Input:

contrl[0]        25                  vsf_color
contrl[1]        0                   entries in ptsin
contrl[3]        1                   entries in intin
contrl[6]        handle
intin[0]         color_index         requested fill color

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        1                   entries in intout
intout[0]        set_color           realized color

2.9.12 INQUIRE CURRENT FILL AREA ATTRIBUTES (VDI 37)

This function reports back the current attributes for filled objects.

Decl.:  void vqf_attributes( WORD handle, WORD *attrib );
Call:   vqf_attributes( handle, attrib );

Variable         Arguments           Meaning
Input:

contrl[0]        37                  vqm_attributes
contrl[1]        0                   entries in ptsin
contrl[3]        0                   entries in intin
contrl[6]        handle

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        5                   entries in intout
intout[0]        attrib[0]           fill type
intout[1]        attrib[1]           fill color
intout[2]        attrib[2]           fill style index
intout[3]        attrib[3]           writing mode
intout[4]        attrib[4]           perimeter flag

2.9.13 CONTOUR FILL (VDI 103)

This call fills an area which is limited by another color or the edges of the display. Use this function on the screen only!

Decl.: void v_contourfill( WORD handle, WORD x, WORD y, WORD color_index ); Call: v_contourfill( handle, x, y, color_index );

Variable         Arguments           Meaning
Input:

contrl[0]        103                 v_contourfill
contrl[1]        1                   entries in ptsin
contrl[3]        1                   entries in intin
contrl[6]        handle
intin[0]         color_index         color index
ptsin[0]         x
ptsin[1]         y

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        0                   entries in intout

2.9.14 SET FILL PERIMETER VISIBILITY (VDI 104)

This function turns the outline of a filled area (rectangle, polygone, ellipse, ...) on or off.

Decl.:  WORD vsf_perimeter( WORD handle, WORD flag );
Call:   set_perimeter = vsf_perimter( handle, flag );

Variable         Arguments           Meaning
Input:

contrl[0]        104                 vsf_perimeter
contrl[1]        0                   entries in ptsin
contrl[3]        1                   entries in intin
contrl[6]        handle
intin[0]         flag                perimeter flag

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        1                   entries in intout
intout[0]        set_perimeter       perimeter flag

Meaning of flag:
0: invisible
1: visible

2.9.15 SET USER-DEFINED FILL PATTERN (VDI 112)

"SET USER-DEFINED FILL PATTERN" is the function which allows you to set a user-defined 16*16 pixel pattern. Patterns with multiple colors have to be stored in standard format and must have the same number of planes as the device. Exception: If the device is a Hicolor or Truecolor device (direct color mapping) you always pass a pattern width 32-bit pixels (xrgb).

Decl.:  void vsf_udpat( WORD handle, WORD *pattern, WORD planes );
Call:   vsf_udpat( handle, pattern, planes );

Variable         Arguments           Meaning
Input:

contrl[0]        112                 vsf_udpat
contrl[1]        0                   entries in ptsin
contrl[3]        16n                 entries in intin (planes * 16)
contrl[6]        handle
intin[0..16n-1]  pattern[0..16n-1]   planes

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        0                   entries in intout

Note: If you use a pattern with multiple colors you should select color index 1 and writing mode 1.

2.9.16 FILLED RECTANGLE (VDI 114)

"FILLED RECTANGLE" draw a filled rectangle (without outline).

Decl.:  void vr_recfl( WORD handle, WORD *rect );
Call:   vr_recfl( handle, rect );

Variable         Arguments           Meaning
Input:

contrl[0]        114                 vr_recfl
contrl[1]        2                   entries in ptsin
contrl[3]        0                   entries in intin
contrl[6]        handle
ptsin[0..3]      rect[0..3]          coordinates

Output:

contrl[2]        0                   entries in ptsout
contrl[4]        0                   entries in intout

Home NVDI Programmer's Guide Lines and unfilled Graphic Primitives Marker