vga_ext_set(3) Svgalib User Manual vga_ext_set(3)NAMEvga_ext_set - set and query several extended features
SYNOPSIS
#include <vga.h>
int vga_ext_set(unsigned what, ...);
DESCRIPTION
sets and several extended features. Before trying to call vga_ext_set()
you should check if it is available in vga_getmodeinfo(3) for compati‐
bility with old svgalib versions. In addition, the availability of cer‐
tain features will depend on the current graphics mode.
However, the VGA_EXT_PAGE_OFFSET and VGA_EXT_FONT_SIZE features are
features of the base module of svgalib and are always available if your
version of svgalib supports them. Actually the result of vga_getmode‐
info(3) shows the availability of enhancements of vga_ext_set() in the
given SVGA graphics mode. Hence, these base features may be supported
even if svgalib does not admit it. Since version 1.2.13 you can check
vga_getmodeinfo(TEXT) to see if basic vga_ext_set() functionality is
available. The VGA_EXT_PAGE_OFFSET and VGA_EXT_FONT_SIZE calls are then
available in any mode even if vga_getmodeinfo(3) states that you should
not call vga_ext_set() at all.
As of now, the following calls are defined:
Query availability of features
vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_SET)
returns an int with the i-th bit set if i is a valid what param‐
eter for vga_ext_set().
vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_ACCEL)
returns an integer with the i-th bit set if i is a valid what
parameter for vga_accel(3). For nicer code, the following inte‐
gers are predefined to have a bit set in the right position:
ACCELFLAG_FILLBOX, ACCELFLAG_SCREENCOPY, ACCELFLAG_PUTIMAGE,
ACCELFLAG_DRAWLINE, ACCELFLAG_SETFGCOLOR, ACCELFLAG_SETBGCOLOR,
ACCELFLAG_SETTRANSPARENCY, ACCELFLAG_SETRASTEROP, ACCELFLAG_PUT‐
BITMAP, ACCELFLAG_SCREENCOPYBITMAP, ACCELFLAG_DRAWHLINELIST,
ACCELFLAG_SETMODE, and ACCELFLAG_SYNC.
vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_ROP)
returns an integer as VGA_AVAIL_ACCEL does, but this time list‐
ing the vga_accel(3) operations which obey a
vga_accel(ACCEL_SETRASTEROP, ...) setting.
vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_TRANSPARENCY)
returns an integer as VGA_AVAIL_ACCEL does, but this time list‐
ing the vga_accel(3) operations which obey a
vga_accel(ACCEL_SETTRANSPARENCY, ...) setting.
vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_ROPMODES)
returns an integer with the i-th bit set if i is a valid mode
parameter for a vga_accel(ACCEL_SETRASTEROP, mode) call. For
example:
if (vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_ROPMODES) & (1 <<
ROP_XOR))
vga_accel(ACCEL_SETRASTEROP, ROP_XOR);
else
/* do something else */
vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_TRANSMODES)
returns an integer with the i-th bit set if i is a valid mode
parameter for a vga_accel(ACCEL_SETTRANSPARENCY, mode, ...)
call. The function lists only the supported enable functions
(currently ENABLE_TRANSPARENCY_COLOR and ENABLE_BITMAP_TRANS‐
PARENCY). It is assumed the corresponding disable functions
will then exist as well.
vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_FLAGS)
returns an int with one bit on/off flags. Bits that are set are
supported refer to special features which can be enabled in the
current mode.
Operations with one bit flags
A certain mode might have a special feature which can be turned on or
off by the applications. These functions allow to handle such features.
You can always set flags, and their settings are remembered if not sup‐
ported in the current mode. This is to avoid problems when switching
VC's.
vga_ext_set(VGA_EXT_SET, int bitflags)
set all flags that are set in bitflags, do not touch any other
flags. Returns previous setting of all flags.
vga_ext_set(VGA_EXT_CLEAR, int bitflags)
clear all flags that are set in bitflags, do not touch any other
flags. Returns previous setting of all flags.
vga_ext_set(VGA_EXT_RESET, int bitflags)
set all flags to the corresponding bits of bitflags. Returns
previous setting of all flags.
One bit flags for special features
As of now, we only support
VGA_CLUT8
which is set by calling vga_ext_set(VGA_EXT_SET, VGA_CLUT8).
This makes the color lookup table for 16 and 256 color lookup
table modes work with 8 bit per red, green, blue part instead of
the ordinary 6 bits.
As of now this feature is only availabl for Mach32 cards with
type 2 DAC's. 8 bit per red, green, blue wide in all (even VGA)
256 color modes. This mean, however, that all calls to vga_set‐
palette(3) and vga_setpalvec(3) need to be adjuste accordingly
as well as that the interpretation of the return values of
vga_getpalette(3) and vga_getpalvec(3) changes.
The testaccel(6) demos makes use of this to show a smooth 256
blue shades scale.
Miscanellous features
vga_ext_set(VGA_EXT_PAGE_OFFSET, int offset)
for all following vga_set*page(n) calls (even those implicitly
done by svgalib drawing functions) do vga_set*page(n + offset)
instead. This is very nice for drawing in an offscreen area.
However, it requires the mode being able to use more than one
page at all as well as not having called vga_setlinearaddress‐
ing(3).
A better approach would be to just use higher y values for all
draw operations to have them end up in offscreen regions that
may be displayed later (cf. vga_setdisplaystart(3)).
The previously set value for VGA_EXT_PAGE_OFFSET (which defaults
to 0 at startup) is returned.
vga_ext_set(VGA_EXT_FONT_SIZE, int size)
sets the size of the buffer which the application passes to
vga_gettextfont(3) and vga_puttextfont(3). Old versions of
svgalib used a fixed size of 8192 which is still the default.
Newer versions of svgalib use a larger size internally to prop‐
erly support the extended font capabilities of newer kernels.
Calling vga_ext_set(VGA_EXT_FONT_SIZE, 0) returns the size of
the internal buffers of svgalib. It is recommended to use this
(or a larger size) for any font (re)storing application. If this
differs from the size of the applications buffers set vga_get‐
textfont(3) and vga_puttextfont(3) truncate and zero-pad all
buffers accordingly.
Otherwise the previously set buffer size is returned.
SEE ALSOsvgalib(7), vgagl(7), libvga.config(5), accel(6), testaccel(6),
vga_setpalette(3), vga_setpalvec(3), vga_getpalette(3), vga_get‐
palvec(3), vga_setlinearaddressing(3), vga_setdisplaystart(3), vga_set‐
page(3), vga_setreadpage(3), vga_setwritepage(3), vga_gettextfont(3),
vga_puttextfont(3).
AUTHOR
This manual page was edited by Michael Weller <eowmob@exp-math.uni-
essen.de>. The exact source of the referenced function as well as of
the original documentation is unknown.
It is very likely that both are at least to some extent are due to Harm
Hanemaayer <H.Hanemaayer@inter.nl.net>.
Occasionally this might be wrong. I hereby asked to be excused by the
original author and will happily accept any additions or corrections to
this first version of the svgalib manual.
Svgalib (>= 1.2.11) 27 July 1997 vga_ext_set(3)