  Glossary of GGI Terms
  Steve Cheng, Hartmut Niemann
  $Date: 1998/06/29 17:07:24 $

  This document describes a few specific terms used by the GGI project.
  ______________________________________________________________________

  Table of Contents


  1. The GGI architecture

  2. Graphics terms

  3. GGI Console (former: EvStack)



  ______________________________________________________________________

  1.  The GGI architecture



     Target
        A target or display target is a collection of libraries used to
        connect LibGGI to some other graphical input/output system with
        the purpose of letting LibGGI make use of the drivers in the
        target system. As an example, the X target will use the X
        protocol to open up an X window which is then used to display a
        GGI application.


     Wrapper-lib
        As the opposite of that a wrapper-lib (or simply wrapper is
        something that makes LibGGI look like some other graphics
        library. E.g.  there is the svgalib wrapper-lib which allows us
        to run traditional SDOOM on GGI.



     Driver-library
        LibGGI makes use of driver-libraries to adapt to the specific
        features of the underlying hardware or protocol. Examples of
        that are the various linear-*.so files. Note that a target uses
        and can in itself be a driver-library.


     Extension
        LibGGI allows the registration of extensions which are systems
        designed to add capabilities to LibGGI. The only existing
        extension so far is GGIMesa. An extension may make use of
        standard driver-libraries as well as extension-driver-libraries
        which are supposed to come with the extension. Normally there is
        a extension-driver-library for any normal driver-library.


     Bridge
        A bridge is a way to make KGI drivers resemble a foreign driver
        model. This is normally done by changing the "kernel-driver" of
        a kgi module.

        The SUID bridge would make a special "module" which gets loaded
        as a dynamically loadable library by a yet-to-be-made LibGGI
        target in userspace.

        This requires the application to be suid-root, as the loaded
        module will whack at the hardware directly. Please note, that
        this is not possible with every hardware (IRQs, DMA and
        simulating non-native membuffer gemometry is not possible), but
        with the right helper libs this target would give maximum speed
        (no kernel mode ...) and usability under non-KGI kernels at the
        cost of stability.


     EvStack
        This term is superseded by GGI Console.

     GGI Console
        The GGI console is a new general console handling system that
        makes the console-subsystems (keymapper, drivers, /dev/tty, ...)
        communicate using events instead of function calls.


  2.  Graphics terms


     Pixel
        or 'picture element' refers to a small rectangular part of an
        image.  It has some attributes associated, e.g. a certain color,
        texture etc, which are assumed to be constant over the whole
        area covered by it. All pixels are assumed to have the same
        shape and size. A pixel is the smallest element of a picture
        that can be controlled independently of the other pixels in its
        attributes.


     Dot
        is the smallest unit that can be addressed for an image. For
        uniform pixels this may be the pixel itself; for textured
        pixels, such as character glyphs, a dot is a pixel of the
        texture which is assumed to be uniform. We will use this to
        refer to sub-pixel coordinates, e.g. for a graphical pointer in
        textmode. As with pixels, dots are assumed to have the same
        shape, size, color and intensity over the whole area covered.
        They have only a uniform texture.



  3.  GGI Console (former: EvStack)

  (By Jason McMullan, for linux-kermel)


     event
        A keypress, mouse movement, or command that is passed through an
        evstack

     evstack
        A handler that processes/filters/ acts on events sent to it.


     stack tree
        A tree of evstacks


     /dev/event
        At any point in the tree, a /dev/event `hook' can be inserted
        that reads events from the parent of the node, and can write
        events to the child.  Allows for user-space implementation of
        what would normally be kernel code.

     scroller
        An interface to control text consoles.  Provides mode setting,
        scrolling, font control, text display, etc.  Display can be KGI
        driver, `null', a Braille display, etc...


     input device
        A special evstack that generates keypress/mouse/etc events and
        receives control (head switch, capslock, etc) events.


     output device
        (ie, pc speaker) receives control events.


     input_stack
        The stack tree that processes events from input devices.


     console_stack
        The stack tree that recieves CmdTtyWrite events


     termstack
        A VT's emulation stack. Recieves CmdTtyWrite events, draws on a
        scroller.




       head[0]
         |
         |----input devices ----------\
         |                             |
         |                         input_stack
         |                             |
         |                       console_stack         <- hold active VT#
         |                     /       |       \
         |                   xterm   xterm    xterm    <- xterm emu termstacks
         |                     |       |       |
         |                   VT1      VT2     VT3      <- scrollers
         |                     |       |       |
         |                      \      |      /
         |                        \    |    /
         |                        KGI Head 0
         |
         \-----output_devices



















