From Agar
The Agar-1.3.4 release includes major feature enhancements,
optimizations and bug fixes.
- Continued improvements to the API reference.
- Overall improved handling of out-of-memory conditions.
- Implement simpler, unified AG_Variable(3) interface at the AG_Object(3) level in ag_core. This renders the AG_Widget(3)-level "AG_WidgetBinding" and the "AG_Prop" interfaces obsolete, as well as the AG_Event(3) argument lists, which all used different structures and interfaces. Backwards compatibility is preserved.
- GUI: Implemented word-wrapping in AG_Editable(3) and AG_Textbox(3). Thanks to CoKinetic Systems for sponsoring this feature!
- Perl XS bindings improved to the level that they are now useful, thanks to Mat Sutcliffe!
- Continued improvements to the Ada bindings; added ada-demos/ (thanks rothwell!)
- Remove unnecessary --disable-utf8 switch, always use Unicode.
- Removed DEV_GuiDebugger() from ag_dev library. Reimplemented a more useful debugging tool, AG_GuiDebugger(), in ag_gui itself.
- Fixed font engine initialization/clean-up issue which prevented Agar from being destroyed and re-initialized later (thanks naiina!)
- CORE: Eliminate unnecessary list traversals when scheduling timeouts. AG_ScheduleTimeout() is now preferred over AG_AddTimeout() and ReplaceTimeout().
- CORE: Added AG_LookupDSO() to AG_DSO(3) interface.
- CORE: Added public AG_ObjectReadHeader() routine, for checking object file metadata prior to loading.
- CORE: Added AG_Time(3) interface.
- CORE: Implemented support for database-bound objects with AG_Db(3) and AG_DbObject(3).
- CORE: Added AG_List(3) interface to complement AG_Variable(3).
- CORE: Agar datafiles now support debugging information and optional runtime type-safety. Added agar-disasm utility for dumping contents of Agar object datafiles with debug information (see AG_SetSourceDebug()).
- CORE: Implemented "AutoCore" (dynamically-grown memory) data source into AG_DataSource(3).
- CORE: Much improved error handling in AG_DataSource(3). Added AG_DataSourceSetErrorFn(), and error-return variants for all standard AG_ReadFoo() routines.
- CORE: Added simpler AG_ConfigLoad() and AG_ConfigSave().
- Merged NS/NC library ("ag_net") into ag_core.
- Updated build system components with latest BSDBuild.
- GUI: Added widget: AG_FontSelector(3).
- GUI: Added widget: AG_Scrollview(3).
- GUI: Added widget: AG_Treetbl(3) (based on previous "AG_Tableview").
- GUI: Added advisory AG_Widget(3) flag AG_WIDGET_TABLE_EMBEDDABLE.
- GUI: Added AG_TextFontPts(), AG_TextFontPct(), AG_TextFontLookup(), AG_TextValign(), AG_ButtonValign(). Fixes to AG_Label(3) clipping when partially occluded.
- GUI: Added AG_TextInfo() (similar to AG_TextWarning(), with disable key).
- GUI: Cosmetic fixes in AG_Menu(3).
- GUI: Implemented AG_InitGUI(), AG_QuitGUI().
- GUI: Implemented AG_VIDEO_OVERLAY option to simplify rendering of Agar GUI elements over an existing OpenGL scene when a custom event loop is needed.
- GUI: Avoid the slow recursive searches needed by functions such as AG_WindowUpdate() by storing a "window" pointer in the Widget structure.
- GUI: Clean up focus-related code. Allow AG_WidgetFocus() to fail. Add separate AG_WidgetIsFocusedInWindow() routine in addition to AG_WidgetIsFocused().
- GUI: Fix a potential problem on platforms where the GL context is lost following a window resize.
- GUI: Allow widgets to request geometry updates asynchronously with AG_WidgetUpdate(). This avoids redundant, expensive searches. Use of AG_WindowUpdate() within widget implementations is now strongly deprecated.
- GUI: Fix incorrect parsing of "Npx" size specifications in AG_WidgetParseSizeSpec().
- GUI: Implement AG_WidgetSurface(), for rendering widgets to an AG_Surface(3).
- GUI: Fix improper initialization and cleanup of embedded widget cells, improve handling of out-of-memory conditions.
- GUI: Fix scrolling behavior of AG_Console(3), add AG_ConsoleClear(), AG_ConsoleMsgIcon() and AG_ConsoleMsgPtr().
- Removed remaining SDL dependencies in GUI rendering code and ag_core.
- GUI: Use stippled polygons in GL mode for "disabled" widget controls. Add AG_DrawArrowLeft(), AG_DrawArrowRight().
- GUI: Embed AG_Label(3) in AG_Button(3) instead of rendering text. Added constructors AG_ButtonNewUint8(), AG_ButtonNewUint16(), AG_ButtonNewUint32().
- GUI: Embed AG_Label(3) in AG_Checkbox(3) instead of rendering text.
- GUI: Some small optimizations to text rendering system.
- GUI: Cosmetic fixes to decorative window frames and rendering of "resize" controls.
- GUI: Added auto-completion and pattern matching support in AG_FileDlg(3) on platforms where glob(3) is available.
- GUI: AG_FileDlg(3) now displays OS-specific directory shortcuts. Display drive letters on win32.
- GUI: AG_Slider(3): added AG_SliderNewFooR constructor variants, added AG_SliderSetControlSize().
- GUI: Implemented AG_PixmapFromTexture() constructor and AG_PixmapFooCurrentSurface in the AG_Pixmap(3) widget.
- GUI: Added support for caption text in AG_Box(3).
- GUI: Added AG_HSVPAL_NOALPHA and AG_HSVPAL_NOPREVIEW options to AG_HSVPal(3).
- GUI: Added AG_WIDGET_NOSPACING flag to request that parent container widgets do not apply spacing around the widget.
- GUI: The polling rate of AG_Tlist(3) is now controllable with AG_TlistSetRefresh() and AG_TlistRefresh(). Added AG_TlistScrollToStart() and AG_TlistScrollToEnd() routines.
- GUI: Added AG_TableSetColHeight(), AG_TableSetRowHeight(), AG_TableSetColMin(), AG_TableSetSelectionMode() and AG_TableSetSelectionColor().
- GUI: Added AG_RadioNewUint(). Fixed clipping in AG_Radio(3).
- GUI: Added AG_ProgressBarNewInt().
- GUI: Implicitely glPushAttrib(GL_TRANSFORM_BIT) in AG_GLView(3).
- GUI: Rework of the "modal window" system to keep modal windows in a stack. This fixes a bug that would occur with cascading modal windows (e.g., a modal window created from an event handler of another modal window).
- GUI: Rework of the logic responsible for cycling focus between widgets with the "tab" key. The new version is more efficient and fixes focusing bugs that would occur when using certain container configurations.
- GUI: Added public AG_WindowFocusAtPos() (was previously an internal).
- GUI: Implemented AG_WindowSetGeometryRect(), AG_WindowSetMinSizePct(), AG_WindowSetSideBorders(), AG_WindowSetBottomBorder().
- GUI: Fixed many issues with AG_Pane(3). AG_PaneMoveDivider() now works pre-WindowShow(), added AG_PaneMoveDividerPct(). Fixed incorrect documentation of the AG_PANE_DIV flag (actually divides area by two). Added AG_PANE_UNMOVABLE option. The divider is now resizable to 0 pixels.
- VG: Fixed rendering of VG_Polygon(3).
- VG: Implemented general-purpose "select" tool (adapted from Edacious).
- VG: Added VG_ViewSetScalePreset(), VG_ClearEditAreas(), VG_EditNode(), VG_DrawSurface(), VG_ToolCommandExec() to VG_View(3) widget. Improvements to "text" tool, such as font selection.
- VG: Library is now usable without Agar-GUI.
- VG: Added VG_Merge().
- VG: Added variable substitution and removed complex parser from "polled" VG_Text element, thanks to the new AG_Variable(3) system.
- VG: Added missing manual pages.
- MATH: The math library is now official and documented; see AG_Intro(AGAR-MATH) .
SEE ALSO