Agar

Hypertriton, Inc.
( Francais )
HOME | SCREENSHOTS | DOWNLOAD | DOCS | SUPPORT | CHAT | CONTRIBUTE | REPORT BUG | WIKI
About Agar

Agar is a modern open-source, cross-platform toolkit for graphical applications implemented in C, C++ 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, such as Agar-MATH, Agar-RG, Agar-VG and Agar-DEV. Some of our other toolkits which extend (and rely on) Agar include FreeSG, Edacious and cadtools.

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 (e.g., bindings reduce the need for event handlers to the minimum). Implementing new widgets as part of an application or library is easy, and the Agar object system provides you with inheritance, even if you are only using C. See the Agar FAQ for more details.



Agar-MATH (stable)

A portable, general-purpose math library with focus on performance. It can be compiled against specific precisions and architecture extensions. It provides a consistent interface for common operations in basic linear algebra, complex numbers and computational geometry, independent of storage format and solver backend.

For example, for the task of solving linear equations it is possible to switch between ordinary LU decomposition / backsubstitution and a sparse matrix solver (one based on the excellent Sparse1.4 is included).

Agar-MATH also extends the Agar-GUI library with bindings support for its basic types and widgets such as M_Plotter and M_Matview.

Agar-Core

An object system which allows libraries to provide equally good object-oriented programming support to applications in multiple languages. Its functions include a virtual filesystem implementation, inheritance, virtual functions (i.e., events), property tables, timers, thread management and archiving features.



Agar-RG (stable)

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.

Website: hypertriton.com/agar-rg/



Agar-VG (stable)

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). For dimensioned/constrained technical drawings, the SK library (in FreeSG) is a better option than Agar-VG (although still under development).

Website: hypertriton.com/agar-vg/

Announcements
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