Provided by: libsvga1-dev_1.4.3-31_i386 bug

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 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_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
              parameter 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,
              ACCELFLAG_DRAWLINE, ACCELFLAG_SETFGCOLOR,  ACCELFLAG_SETBGCOLOR,
              ACCELFLAG_SETTRANSPARENCY,                ACCELFLAG_SETRASTEROP,
              ACCELFLAG_PUTBITMAP,                 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
              listing   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
              listing   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_TRANSPARENCY).  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
       supported 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_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  requires  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 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
              properly  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_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_setpalette(3),         vga_setpalvec(3),         vga_getpalette(3),
       vga_getpalvec(3),  vga_setlinearaddressing(3),  vga_setdisplaystart(3),
       vga_setpage(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.