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 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	 para-
	      meter 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, AC-
	      CELFLAG_DRAWLINE,	 ACCELFLAG_SETFGCOLOR,	 ACCELFLAG_SETBGCOLOR,
	      ACCELFLAG_SETTRANSPARENCY, ACCELFLAG_SETRASTEROP,	ACCELFLAG_PUT-
	      BITMAP, ACCELFLAG_SCREENCOPYBITMAP, ACCELFLAG_DRAWHLINELIST, AC-
	      CELFLAG_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_SE-
	      TRASTEROP, ...)  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(AC-
	      CEL_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 ex-
	      ample:

	      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  sv-
	      galib  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 ALSO
       svgalib(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-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
       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)

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+14.3.quarterly>

home | help