Provided by: libsvga1-dev_1.4.3-31_amd64 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.