Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
vga_ext_set(3)		       Svgalib User Manual		  vga_ext_set(3)

NAME
     vga_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 compatibility
     with old svgalib versions. In addition, the availability  of  certain  fea-
     tures will depend on the current graphics mode.

     However,  the  VGA_EXT_PAGE_OFFSET  and VGA_EXT_FONT_SIZE features are fea-
     tures of the base module of svgalib and are always available if  your  ver-
     sion  of  svgalib	supports them. Actually the result of vga_getmodeinfo(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 parameter
	    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  para-
	    meter  for vga_accel(3).  For nicer code, the following integers are
	    predefined to have a bit set in the right position:

	    ACCELFLAG_FILLBOX,	ACCELFLAG_SCREENCOPY,  ACCELFLAG_PUTIMAGE,   AC-
	    CELFLAG_DRAWLINE,  ACCELFLAG_SETFGCOLOR,  ACCELFLAG_SETBGCOLOR,  AC-
	    CELFLAG_SETTRANSPARENCY, ACCELFLAG_SETRASTEROP, ACCELFLAG_PUTBITMAP,
	    ACCELFLAG_SCREENCOPYBITMAP, ACCELFLAG_DRAWHLINELIST,  ACCELFLAG_SET-
	    MODE, and ACCELFLAG_SYNC.

     vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_ROP)
	    returns  an  integer  as VGA_AVAIL_ACCEL does, but this time listing
	    the vga_accel(3) operations  which	obey  a  vga_accel(ACCEL_SETRAS-
	    TEROP, ...)  setting.

     vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_TRANSPARENCY)
	    returns  an  integer  as VGA_AVAIL_ACCEL does, but this time listing
	    the vga_accel(3) operations which obey  a  vga_accel(ACCEL_SETTRANS-
	    PARENCY, ...)  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 para-
	    meter 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 para-
	    meter for a vga_accel(ACCEL_SETTRANSPARENCY, mode, ...)   call.  The
	    function  lists  only  the supported enable functions (currently EN-
	    ABLE_TRANSPARENCY_COLOR and ENABLE_BITMAP_TRANSPARENCY).  It is  as-
	    sumed 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 sup-
	    ported 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 previ-
	    ous 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_setpalette(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  re-
	    quires  the mode being able to use more than one page at all as well
	    as not having called vga_setlinearaddressing(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 dis-
	    played 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_get-
	    textfont(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  properly  support	the  ex-
	    tended 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_gettextfont(3) and
	    vga_puttextfont(3) truncate and zero-pad all buffers accordingly.

	    Otherwise the previously set buffer size is returned.

SEE ALSO
     svgalib(7), vgagl(7), libvga.config(5),  accel(6),  testaccel(6),	vga_set-
     palette(3), vga_setpalvec(3), vga_getpalette(3), vga_getpalvec(3), vga_set-
     linearaddressing(3),  vga_setdisplaystart(3),  vga_setpage(3), vga_setread-
     page(3), vga_setwritepage(3), vga_gettextfont(3), vga_puttextfont(3).

AUTHOR
     This manual page was  edited  by  Michael	Weller	<eowmob@exp-math.uni-es-
     sen.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 orig-
     inal  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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=vga_ext_set&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help