development copy of http://libagar.org/ -- please use the upstream version unless you know what you are doing
Remove any active EventSink on "widget-hidden".
We can bump EVENT_ARGS_MAX to 7.
Use a safe tailq traversal for FSEVENT/PROCEVENT-type EventSink callbacks.

refs

master
browse log

clone

read-only
https://git.sr.ht/~charles/libagar
read/write
git@git.sr.ht:~charles/libagar

You can also use your local clone with git send-email.

Agar

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, a set of software libraries for building graphical user interfaces.

Agar works with a wide variety of platforms and graphics systems, from modern desktops to classic consoles and embedded devices. Agar's low-level layers are modular, extensible and easily ported to new hardware platforms and graphics systems. Standard drivers include:

  • sdlfb (SDL, frame-buffer)
  • sdlgl (SDL, OpenGL)
  • glx (X11, OpenGL)
  • cocoa (MacOS X, OpenGL)
  • wgl (Windows, OpenGL)

For graphics systems without window capabilities, a single-window mode is provided (in which case Agar provides an internal window manager).

A set of general-purpose widgets are included in the Agar distribution. Agar's class registration interface allows new widgets to be implemented externally (i.e., as part of an application or library). GUI elements are styled with Cascading Stylesheets.

Agar is thread-safe when built with threads support.

Libraries Included

  • CORE: Platform, I/O, Object System
  • GUI (Base): GUI Framework
  • GUI (Widgets): GUI Standard Widgets
  • MATH: Matrices, Vectors, Advanced Rendering Methods
  • SG: 3D Engine
  • SK: 2D Sketch and Constraint Solver
  • RG: Feature-based Tileable Graphics
  • AU: Audio Interface Library
  • MAP: Simple Tile Engine
  • VG: Simple 2D Vector Graphics

CORE implements Agar's Object System, a single-inheritance system that can be used from different languages (for example, it is possible to subclass an Agar class written in C with one written in Ada and vice-versa). Agar objects are serializable (and CORE provides serialization routines to help with that). A tree of Agar objects is referred to as a VFS or virtual filesystem. The CORE library is non-graphical and usable by command-line programs or daemons. It provides simple interfaces to operating system services such as filesystem access, dynamic library loading, network services, process execution, I/O multiplexing, timers and threads.

Installation

Availability

Latest Stable Release
Latest Development Sources
Portability

Agar is portable to 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.

License
Contributing