/libagar

Cross-Platform GUI Toolkit

Primary LanguageCBSD 2-Clause "Simplified" LicenseBSD-2-Clause

    _       _       _     ___  
  / _ \   / _ \   / _ \  |  _ \ 
 | |_| | | (_| | | |_| | | |_) |
 |_| |_|  \__, | |_| |_| |_| |_|
          |___/                 

What is it?
-----------
Agar is a type of sugar polymer obtained from seaweed and red algae. Agar
becomes gelatinous in water and is primarly used as a culture medium for
microbiological work. Agar is also the name of an open source GUI toolkit.

Agar works with a wide variety of platforms and graphics systems, from modern
OpenGL-capable desktops to classic consoles and embedded devices. Using the
AG_Driver(3) interface, developers can easily port Agar to new systems
and graphics APIs. Some Agar drivers are designed to work with a native
window system (e.g., "glx", "wgl" and "cocoa"). Others (such as "sdlfb"
and "sdlgl") work with a single display, with Agar providing a built-in
window manager. Since Agar provides a consistent programming interface,
developers need not necessarily be aware of the underlying platform.

A set of general-purpose widgets are included in the Agar distribution.
Agar's class registration interface allows new widgets to be implemented
as part of an application or library. The appearance of GUI elements can
be set using a CSS-style syntax (see gui/style.css).

The ag_core library implements Agar's object system, AG_Object(3), as well
as several cross-platform interfaces for accessing operating system services
such as files, dynamic library loading, network services, etc. The object
system provides inheritance, serialization, virtual filesystems and timer
functionality. The core library contains no GUI-related code. Non-graphical
applications can link to ag_core without using ag_gui.

Agar is thread-safe when built with threads support. See the API reference
and AG_Threads(3) for more information about thread safety.

Documentation
-------------
- The online API Reference. This is a detailed description of all
  public Agar structures, objects and functions, at:
  http://libagar.org/man3
- On Unix-like platforms, the API reference is also available in
  traditional manual page format; see AG_Intro(3).
- The Agar Manual (work in progress), at:
  http://libagar.org/man/.

Installation
------------
Step-by-step installation guides are available for various platforms.
Refer to the "Installation Guides" section of the Agar documentation
page at: http://libagar.org/docs/.

Availability
------------
Download the most recent Agar version from the Agar home page at:
http://libagar.org/download.html.

Portability
-----------
Agar is portable to many different platforms, including FreeBSD, IRIX,
Linux, MacOS Classic, MacOS X, NetBSD, OpenBSD, Solaris and Windows. Agar
has been used on ARM embedded devices. It has even been ported to game
consoles such as the GP2x, the Nintendo Gamecube/Wii and the Xbox. See:
http://libagar.org/portable.html.

License
-------
Agar is freely distributable under the terms the "new" BSD license:
http://libagar.org/license.html.

How to contribute
-----------------
See: http://libagar.org/contribute.html.

Agar-based libraries and toolkits
---------------------------------
Here are some useful libraries built on top of ag_core and ag_gui which
extend Agar's functionality towards more specific applications:

Agar-AU	   Portable audio interface        (bundled as `agar-au-config`)
Agar-DEV   Developer/debugging tools       (bundled as `agar-dev-config`)
Agar-MAP   Feature-based tile map engine   (bundled as `agar-map-config`)
Agar-MATH  General-purpose math library    (bundled as `agar-math-config`)
Agar-RG    Feature-based pixel graphics    (bundled as `agar-rg-config`)
Agar-SG    Scene graph and 3D engine       (bundled as `agar-sg-config`)
Agar-SK    Dimensioned 2D sketching engine (bundled as `agar-sk-config`)
Agar-VG    Vector graphics library         (bundled as `agar-vg-config`)
Edacious   Electronics design              (http://edacious.org/)
CADTools   Computer-aided design           (http://cadtools.hypertriton.com/)