Agar-1.3 Released


Hi,

We are pleased to announce the official release of Agar 1.3 (The Birth of
an Era Obscured by Sulfur and Flames).

The source code is available from:
	http://stable.csoft.org/agar/agar-1.3.tar.gz
	http://stable.csoft.org/agar/agar-1.3.tar.gz.asc
	http://stable.csoft.org/agar/agar-1.3.tar.gz.md5
	http://stable.csoft.org/agar/agar-1.3.zip
	http://stable.csoft.org/agar/agar-1.3.zip.asc
	http://stable.csoft.org/agar/agar-1.3.zip.md5

Binary packages will begin to appear in a few minutes on the download page:
	http://libagar.org/download.html

As always, your comments, suggestions and bug reports are most welcome.

Release Notes for Agar 1.3 
--------------------------

Here are some of the notable changes since Agar 1.2 in no particular order.
This excludes the numerous cosmetic changes that were made. For a complete
list of all changes, see ChangeLog-1.3.txt.

- Merged Agar-MAP (http://hypertriton.com/agar-map/) into the main Agar source
  distribution as a separate library.
- Merged Agar-NET (http://hypertriton.com/agar-net/) into the main Agar source
  distribution as a separate library disabled by default.
- Merged Agar-SC (http://hypertriton.com/agar-sc/) into the main Agar source
  distribution as a separate library.
- Moved all code useful for development and debugging purposes (e.g.,
  AG_ObjMgr, and everything that was in core/monitor) to a separate library
  named Agar-DEV.
- Added a couple of new demos.
- Work around a compilation issue due to recent SDL versions polluting namespace
  with defines such as HAVE_STDLIB_H.
- GUI: Moved Animview widget to RG.
- CORE: Removed all code that had anything to do with graphics.
- RG: Implemented transform chains and caching, based on previous code.
- Add "agarpaint" to the distribution. agarpaint is a pixmap/animation editor
  that demonstrates the use of Agar-RG. All icon sets used by the various
  Agar libraries have been written in agarpaint.
- Removed "core-icons.den" entirely. Icon resources are now built into the
  library and no external files are needed. Implemented "header export"
  function into agarpaint so that other applications and libraries can use
  the same method.
- GUI: Added support for built-in fonts (fonts bundled into the library or
       applications). This is useful for consoles and platforms where files
       are inconvenient (such as Windows when using Cygwin/MSYS build).
- MAP: Implemented MAP_Actor object.
- RG: Added static tile/animation tables, so that external objects can
      rely on names not changing as items are added or removed.
- CORE: Simplify class registration with AG_RegisterClass().
- GUI: In AG_FileDlg(3), use stat(2) where available to determine if files
       are accessible, instead of open(2) which may cause problems with large
       directories (thanks KOC!).
- GUI: Add Flags (bitmask) bindings to AG_Checkbox(3) and AG_Button(3).
- GUI: In AG_Table(3), enforce minimum column width when resizing.
- In the manual pages, avoid using "void *" when referring to Object
  arguments, use the base class instead.
- Implement thread safety in OpenGL mode. The main issue was avoiding texture
  operations outside of widget Draw() operations (i.e., in initializers), so
  a number of widgets were modified to postpone surface mapping operations
  until Draw().
- Introduce an _AGAR_INTERNAL define; clean up header files.
- Change the way internal headers are included so that the build process
  no longer requires symlinks. This fixes non-concurrent building on
  platforms such as MSYS.
- Move from csoft-mk to our new build system, BSDBuild
  (http://hypertriton.com/bsdbuild/). 
- GUI: Eliminate some subtle differences (mostly off-by-ones) in the way
       primitives are rendered in OpenGL vs SDL mode.
- GUI: Implement AG_LABEL_NOMINSIZE flag in AG_Label(3), and use it by
       default in widgets like AG_Titlebar(3). This flag causes the label
       to display a "..." if it is too small to display a string fully.
- GUI: Implement Flag description tables and bitmask bindings in AG_Label(3).
- GUI: Renamed the (previously undocumented) AG_Graph widget to AG_FixedPlotter.
       AG_Graph(3) is now used by another widget to display edges/vertices
       structures.
- CORE: Rework of the Object API for better inheritance support. The Object
        system now automatically invokes object operations (e.g., init,
	destroy, etc) for all parent classes. Of course, all classes now need
	to be registered with AG_RegisterClass().
- CORE: Renamed AG_ObjectOps -> AG_ObjectClass.
- CORE: AG_ObjectLoad() now automatically does version checking, and the
        load() operation now accepts an AG_Version argument.
- CORE: AG_ObjectDestroy() now automatically uses free(3) on objects that
        did not have the AG_OBJECT_STATIC flag.
- GUI: The AG_Text(3) interface now acts like a state machine in the way
       fonts, colors and other text attributes are specified. Add support
       for multiline text, background colors and justification.
- GUI: Add FooNODUP() variants to various widget functions using surfaces.
- GUI: Implement AG_Graph(3) widget which displays graphs (as in vertices
       and edges). The autoplacer algorithm is still very crude.
- GUI: Add various convenient variants for widget constructor functions.
- GUI: AG_WidgetEnable() and AG_WidgetDisable() is now the preferred way of
       setting widget states.
- GUI: Add more precise left/right/top/bottom padding and spacing parameters
       to various widgets.
- CORE: Add "sender" argument to AG_ForwardEvent().
- GUI: Add Text antialiasing setting.
- GUI: Greatly improve the behavior of widgets when they are scaled to
       extremely small sizes.
- GUI: Implement garbage collection of text glyphs based on time.
- GUI: Implement AG_TextWarning() canned dialog with built-in persistent
       "Don't show again" setting for convenience.
- GUI: Implement AG_WidgetBlitSurfaceGL(), when blitting to transformed
       coordinates is necessary.
- GUI: Improve the behavior of modal windows. Multiple modal windows are
       now allowed.
- GUI: Introduce AG_Numerical(3) as a replacement for both AG_FSpinbutton(3)
       and AG_Spinbutton(3), that can handle both integral and floating-point
       bindings.
- GUI: In AG_Menu(3), store items a single tree instead of multiple trees;
       improve dynamic item support; implement item "state" flag.
- GUI: Provide AG_FileDlgCheck(Read|Write)Access() functions, provide means
       of overriding default ok/cancel behavior.
- CORE: Simplify the Object load/save routines. Provide separate
        AG_ObjectLoadGenericFromFile() and AG_ObjectLoadDataFromFile()
	functions.
- CORE: Implement AG_ObjectGenName() and AG_OBJECT_NAME_ONATTACH flag.
- GUI: Remove (previously undocumented) AG_HPane and AG_VPane widgets, they
       are replaced by AG_Pane(3).
- DEV: Make the GUI debugger more useful.
- CORE: Add "tmp-path" and "initial-run" settings to AG_Config(3)
- CORE: Implement AG_Object(Get|Set)ArchivePath(), for use by editors.
- CORE: Rework AG_ObjectChanged() to do an exact comparison instead of
        using checksums.
- CORE: Add portable AG_GetSystemTempDir() and AG_FileDelete() functions
        to compat.
- GUI: Rework the interface for widget sizing. Instead of a single scale()
       operation, we now have size_request() for requisition and
       size_allocate() as a callback for allocation.
- GUI: Make page increment configurable.
- GUI: Implement AG_FileDlgSetDirectoryMRU(3).
- GUI: Widget objects are now provided with unique name strings.
- Import agarrcsd into the main Agar distribution. agarrcsd is the server
  for the built-in AG_Object revision control system which is available when
  compiling with --enable-network.
- GUI: Allow windows to be moved outside of the view area; suggestion
       by phip.
- GUI: On window resize events in OpenGL mode, release and regenerate all
       textures since preservation of the GL context through window resizes
       is a platform-specific matter.
- CORE: Implement AG_GetCPUInfo(), to obtain information about architecture
        extensions in a portable manner.
- GUI: Implement AG_Socket and drag-and-droppable AG_Icon widgets (a frequent
       request by game developers); add ./demos/sockets.
- Provide "project files" for those pesky IDEs. We do this using <build.proj.mk>
  from the new BSDBuild which generates those files for us.
- Merge ag_compat library into ag_core.
- Remove a preposterous amount of unused variables throughout the Agar code.
- Add a number of portability fixes for proper compilation under Visual Studio.
- MAP: Fix crash bug when resizing node attribute grids.
- RG: Fix alpha blending of controls in OpenGL mode.
- CORE: Replace AG_Netbuf with a new API called AG_DataSource, which allows
        new types of data sources to be readily implemented.
- GUI: Implement a new themeing API, AG_Style(3). It allows theme designers
       to change every possible cosmetic aspect of the GUI. Added
       AG_SetStyle(3) function.
- GUI: Improve the AG_Radio(3) API; add hotkey support.
- The manual pages now include a "STRUCTURE DATA" section for structures that
  make some of their members public; suggestion by Julien Clement.
- GUI: Introduce AG_Rect structure.
- GUI: New widget: AG_ProgressBar(3).

Gmane