Agar-1.4

From Agar

Jump to: navigation, search

Release Information

(Previous releases)

The Agar-1.4.0 release is the first of the 1.4 series. It includes major feature enhancements, optimizations and bug fixes.

This release preserves backward compatibility with Agar-1.3.4, but it is recommended to compile Agar with the --disable-legacy configure option, ensuring that existing applications are not using deprecated API calls.

Changes since Agar-1.3.4

  • Added support for multiple "native" windows; rework of the low-level graphics and input device interfaces. As of this release, the available drivers are:
    • glx (OpenGL rendering via X Window System; multiple windows)
    • wgl (OpenGL rendering under Windows; multiple windows)
    • sdlfb (framebuffer rendering via SDL; internal WM)
    • sdlgl (GL rendering via SDL; internal WM).
  • New drivers can also be implemented as part of an application, the driver API is documented in AG_Driver(3).
  • Applications should now use AG_InitGraphics() to initialize the graphical interface. Backward compatibility is preserved, but AG_InitVideo() will only select among single-window graphics drivers.
  • Agar can now be built without the SDL library, where the SDL graphics driver is not needed.
  • Many improvements to the AG_Surface(3) interface, no longer rely on SDL.
  • Implement generic AG_Keyboard and AG_Mouse interfaces; allow for multiple input devices.
  • Implement widget "actions" as a generic method of handling mouse and keyboard actions per user preferences (see AG_Widget(WIDGET_ACTIONS) ).
  • Agar windows are now attached and detached using AG_ObjectAttach() and AG_ObjectDetach() against a parent AG_Driver(3); the AG_ViewDetach() function is now deprecated.
  • Added AG_Tbl(3), AG_Tree(3) interfaces to ag_core.
  • Fix handling of dynamically-allocated strings in AG_CopyVariable().
  • Implement AG_TlistUniq(), AG_TlistAddHead().
  • Important optimizations to AG_LookupClass().
  • Consistently provide plain string variants for every function accepting format string arguments. This allows for more efficient code, and avoids complications with language bindings.
  • As the window-* prefixes in events such as window-mousemotion is no longer relevant, mark them deprecated in favor of mouse-* and key-*.
  • The integer typedefs Uint8, Sint8, Uint16, Sint16, etc. are no longer made public unless _USE_AGAR_TYPES is explicitely defined.
  • Widgets such as AG_Textbox(3) now embed AG_Label(3) widgets to display their associated text labels.
  • Added AG_TextboxSetFont(), AG_EditableSetFont(), AG_ConsoleSetFont().
  • Various additions to AG_Console(3).
  • It is now possible to have the AG_Scrollbar(3) control size scaled automatically from the "visible" binding, by enabling AG_SCROLLBAR_AUTOSIZE.
  • Consistently represent color values using AG_Color(3) throughout the API.
  • Many additions and updates to the API reference.
  • Added various size hint routines: AG_ProgressBarSetLength(), AG_ScrollbarSizeHint().
  • Fixed a few memory leaks on AG_Destroy(); added demos/reinit/ test case.
  • Cursor changes are no longer performed directly from widget code. Instead, widgets now register "cursor change areas" via the AG_Cursor(3) interface.
  • Introduce AG_EventQ structure,
  • Added AG_ObjectSetAttachFn(), AG_ObjectSetDetachFn(), AG_ObjectMoveToHead() and AG_ObjectMoveToTail() functions, allowing the order of child objects to be controlled. This is used by AG_Window(3) where order is important.
  • Implemented AG_ShortFilename() utility routine.
  • VG: Implemented VG_Status(), VG_TextString(). VG_View(3) now uses widget actions.
  • The default theme now allows transparency in the color scheme.
Personal tools