libggi : A fast, simple, small and flexible user-space graphics library
LibGGI is a fast, simple, small and flexible user-space graphics library developed by the GGI Project. It attempts to abstract the many different graphics output systems existing under Unix (and in the future, other platforms). The support for all of these different types of displays and hardware are provided by dynamically-loaded mini-libraries.
LibGGI can transparently (to the LibGGI-using application) display graphics on an X window, under SVGAlib, fbcon (Linux framebuffer driver), or the glide library, through their respective graphics drivers, or targets. There are also some other targets which display through another target, such as multi to display simultaneously on multiple displays at once, and tile to tile your display to different monitors.
LibGGI supports acceleration of graphics primitives where possible.
LibGGI is a very generic piece of software, that will run on about every platform that has remotely heard of POSIX (ports to other systems such as Win32 are underway) and on many display subsystems.
The following outlines the environment variables, intended for the user, which affect the behaviour of LibGGI:
Specifies the default target used when the application calls ggiOpen with NULL argument.
The default target is specified using a target-spec: target:targetargs where :p:`target` is the name of the target, and :p:`targetargs` are any target-specific arguments.
If neither this variable nor DISPLAY is set, then the following targets are tried in order until one works: fbdev, svga, aa
GGI_INPUT_target specifies extra LibGII input sources and/or filters for visuals using :p:`target`
Multiple inputs can be specified by enclosing each input-spec in parentheses and separating them with semicolons: (i1):(i2):...
The inputs specified by GGI_INPUT_target_n are only opened at the :p:`n`th call of `ggiOpen`. This is used for misbehaving applications that do not allow the user to specify inputs for the different targets that it opens.
The GGI_INPUT variable specifies input settings for all other targets not specified using the other two variable forms.
Specifies the default mode, which is used for mode negotiation with LibGGI applications. Specifically, when GGI_AUTO or GT_AUTO are specified in a mode setting call they will be replaced with values from GGI_DEFMODE before calling the target's own ggiSetMode implementation.
The format is: (all on one line) S w x h x depth V w x h D w x h F frames [scheme depth size] Anything and everything can be omitted, except tokens indicating what the next token is.
Any omitted values default to GGI_AUTO (or GT_AUTO for the graphtype). Whitespace and '.' symbols are ignored. Character tokens are case-insensitive. If certain values are not possible, they are overridden by the target.
Denotes the visible size of the visual. Totally optional, as dimensions without a specifier are considered to be the visible dimensions.
Delimits the graphic type.
One of:
Pixel depth in number of bits.
Size of pixel in number of bits, including padding.
Instead of :p:`scheme`, :p:`depth`, :p:`size`, it is also possible to specify the graphtype by using one of the following:
The debugging level for LibGGI:
You may also bitwise-or any of the following together:
The debugging output can be quite verbose and in most cases you should redirect stderr so that it does not interfere with your program's output.
Example GGI_DISPLAY settings:
# see ASCII art flying GGIs $ GGI_DISPLAY=aa ./flying_ggis # see demo on both machine next door and local # X at the same time $ GGI_DISPLAY=multi:(Xlib:crono:0.0):(X::0.0) ./demo
Example GGI_INPUT string:
$ export GGI_INPUT=linux-mouse:auto # for "multi" target only $ export GGI_INPUT_multi=linux-mouse:auto
Examples of GGI_DEFMODE strings:
:man:`libgii(7)`, :man:`ggiInit(3)`, :man:`display-aa(7)`, :man:`display-dga(7)`, :man:`display-directx(7)`, :man:`display-fbdev(7)`, :man:`display-file(7)`, :man:`display-glide(7)`, :man:`display-macosx(7)`, :man:`display-memory(7)`, :man:`display-monotext(7)`, :man:`display-multi(7)`, :man:`display-palemu(7)`, :man:`display-sub(7)`, :man:`display-svgalib(7)`, :man:`display-tele(7)`, :man:`display-tile(7)`, :man:`display-trueemu(7)`, :man:`display-vcsa(7)`, :man:`display-vgl(7)`, :man:`display-x(7)`