The Amanith Framework is a cross-platform (Linux, Win32, MacOS X, FreeBSD and IRIX) open source C++ framework for vector graphics. The new 0.3 release adds a full SVG 1.2-compliant enhanced alpha compositing layer, supporting all 24 compositing operations (base and extended Porter-Duff) in pure OpenGL. This makes Amanith the first opensource and crossplatform library that supports all of them in hardware (15 of 24 are available also without fragment programs). In addition a full geometry caching system has been introduced to speed up all drawing tasks. Version 0.3 has been released today.
Other main features, taken from the changelog, are:
Added extended Porter-Duff compositing model to the drawboard class. Supported operations are: CLEAR, SRC, DST, SRC_OVER, DST_OVER, SRC_IN, DST_IN, SRC_OUT, DST_OUT, SRC_ATOP, DST_ATOP, XOR, PLUS, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, DIFFERENCE, EXCLUSION.
All operations works, independently, on stroke and fill, so each drawing operation will be affected by the current settings. A separate, orthogonal group compositing operation can be also specified (coupled to the already existing group opacity feature). This operation tells how the entire group is composite over the background. In the OpenGL implementation, all 24 compositing operation are available on those boards equipped with fragment programs. When they are not supported, only 15 compositing operations can be used (CLEAR, SRC, DST, SRC_OVER, DST_OVER, SRC_IN, DST_IN, SRC_OUT, DST_OUT, SRC_ATOP, DST_ATOP, XOR, PLUS, SCREEN, EXCLUSION).
Added caching API, now three new target modes are available: CACHE, COLOR_AND_CACHE, CLIP_AND_CACHE. When one of them is specified all drawing operations return the cache slot index into the current cache bank. Only the geometry is cached, so the users can redraw cached primitives changing paint types, colors/opacity, gradients, patterns and matrices.
Extended GroupBegin/GroupEnd semantic also for clip paths. So with the same API, users can draw complex clip shapes in union.
Added support for REFLECT color-ramp spread mode and REFLECT pattern tiling mode for those graphic boards where "mirrored repeat" OpenGL extension is not available (OpenGL drawboard class).
Added a color string conversion function inside GOpenGLBoard class. It supports HTML format and SVG color keywords.
Added a new example that shows Amanith compositing.
Added a new drawboard example, a simple GL clock to show caching API.