Agar

Hypertriton, Inc.
( Francais )
HOME | SCREENSHOTS | DOWNLOAD | DOCS | FORUMS/LISTS | CHAT | CONTRIBUTE | REPORT BUG | TWITTER | WIKI
About Agar

Agar is a modern open-source, cross-platform toolkit for graphical applications implemented in C, C++, Perl and Ada (with bindings to other languages in development). Designed for ease of integration, it follows the philosophy of building the GUI around the application and not the other way around. Unlike most other GUI toolkits, Agar takes maximum advantage of hardware graphics acceleration when it is available via OpenGL, but it also supports traditional framebuffer interfaces such as SDL direct video. The Agar API is entirely thread-safe when Agar is compiled with optional threads support.

The distribution includes two libraries: Agar-GUI implements the base Agar GUI system and a comprehensive set of standard widgets. Agar-GUI is object-oriented and relies heavily on inheritance, virtual functions and virtual filesystems. This functionality is implemented by the GUI-independent Agar-Core library, which also includes various utility and portability interfaces. The Agar distribution also includes some more specialized libraries aimed at specific applications (see below).

Agar is free software. Its source code is freely usable and re-usable by everyone under a BSD license, which allows use in commercial applications free of charge. Agar is stable, well-maintained and has been growing organically since early 2002. The Agar project is sponsored by Csoft.net: Security conscious, high-availability Unix hosting on redundant server arrays.

Agar-GUI

The Agar GUI library is designed to work under almost any platform that provides a graphic display and some kind of input device. Currently, there are drivers for SDL and OpenGL. The OpenGL mode makes efficient use of hardware acceleration. The API is simple, object-oriented and unobtrusive. For instance, the need for event handler functions is reduced to a minimum through the use of bindings. Implementing new widgets (or derived widget classes) as part of a third-party application or library is an easy, straightforward task.


Agar-MATH

A general-purpose math library with focus on performance and portability. It implements the most common structures and operations in basic linear algebra, complex numbers and computational geometry. The library can be compiled with support for different architecture extensions (e.g., SSE), and different solver backends (e.g., Sparse), and the interface remains consistent across them. This library also extends Agar-GUI with extra variable binding types and widgets such as M_Plotter.


Agar-DEV

The Agar-DEV library is normally only included in debug builds and used from applications compiled in debug mode. It implements a number of tools useful to developpers.

Agar-Core

An object system which allows libraries (such as Agar-GUI) to provide equally good object-oriented programming support to applications in multiple languages. Its functions include a virtual filesystem implementation, a variable system, object inheritance, virtual functions (i.e., events), timers and portable archiving features. Agar-Core also includes portability interfaces to DSOs, filesystems and threads.


Agar-RG

A library for generating and manipulating feature-based pixmap elements (either static or animated). It uses an image format which allows directives, transformations and instancing of graphical elements.


Agar-VG

A simple 2D vector graphics library which allows developers to specify hierarchical sketches consisting of elements such as lines, curves and text. It was designed mainly for editors (the schematics editor in in Edacious is an example application). The library is extensible, such that new sketch elements may be implemented as part of your own application or library. It includes a powerful visualization widget for Agar-GUI called VG_View.
For geometrically-constrained technical drawings, the SK library (in FreeSG) is a better option than Agar-VG (although still under development).

Announcements
10/23/2009 Most of the major code changes for the Agar 1.4 release have been committed to Subversion. Please test! Since Agar 1.4 includes new drivers interfacing with low-level graphics systems, it requires thorough testing under as many different platforms as possible.
08/30/2009 New stable release: 1.3.4 (Pandemonic Incantation)
[ Download | What's new ]
06/03/2009 Due to some changes in the build system, users of the latest development version of Agar (as of r8187) who rely on the make proj feature, must upgrade to BSDBuild-2.5.
01/05/2009 New patch to stable: 005_windows.patch (Fix AG_WindowNewNamed() and AG_WINDOW_KEEPBELOW features)
12/25/2008 New patch to stable: 003_table.patch (Fix bug related to embedded widgets in AG_Table)
10/30/2008 New stable release: 1.3.3 (Blackened Soil Remains)
[ Download | What's new ]
03/02/2008 New stable release: 1.3.2 (Landscapes Turn To Ash)
[ Download | What's new ]
03/02/2008 Created agar-commits mailing list for automated commit notifications of the Agar source code exlusively. Note that the previous source-diff list will continue to receive notices as well. The new list provides a RSS feed.

[Previous announcements]

How to get help

If you have any questions, comments or suggestions, don't hesitate to contact the maintainer. There are also forums and an #agar channel on irc.freenode.net (here is a web interface to it).

Your feedback and contributions help us build a better library with better documentation. Don't hesitate to send us your bug reports and enhancement/feature requests with Bugzilla.


"A display connected to a digital computer gives us a chance to gain familiarity with concepts not realizable in the physical world. It is like a looking glass into a mathematical wonderland." -- Ivan Sutherland