Woopsi v0.27: Woopsi GUI dev lib gets an upgrade

Woopsi v0.27 released - Image 1Ant512 has released a new version of Woopsi, now called Woopsi v0.27. For those who haven’t heard of it, Woopsi v0.27 is a GUI Development Library based on the AmigaOS windowing system. In other words, it helps coders make user interfaces for their homebrew projects.

The full changelog after the jump!

Woopsi v0.27 released - Image 1Ant512 has released a new version of Woopsi, now called Woopsi v0.27. For those who haven’t heard of it, Woopsi v0.27 is a GUI Development Library based on the AmigaOS windowing system. In other words, it helps coders make user interfaces for their homebrew projects.

Below, you’ll find the full changelog for the application, as well as download links for the source and the demo of the application. We invite all the DS coders out in QJ land to try out this new version. In the meantime, learn about the extensive changes below!

Fixes:

  • Renamed “font” to “sysfont”.
  • Moved font includes out of “all_gfx.h”.
  • Removed font inheritance (problematic with many gadgets).
  • Made font an optional parameter in all gadget constructors.
  • Removed font from constructors of window border gadgets that do not use a font.
  • Woopsi height based on top screen offset instead of an arbitrary number.
  • Private class members set to protected where appropriate.
  • “Gadget::setBorderless()” now invalidates rect cache.
  • Removed “Gadget::removeGadget()” function (request 1846590).
  • “Window::createBorder()” sets border focus correctly.
  • Window border gadgets base their colour on the parent’s active flag rather than by abusing the focus system and their own active flags.
  • GraphicsPort was using SCREEN_WIDTH instead of _bitmapWidth when blitting bitmaps.
  • Fonts work with const u16* bitmap data instead of plain u16*.
  • Woopsi clears its background correctly when a screen closes.
  • Gadgets draw only those regions not obscured by children (previously broken by switch to region caching).
  • Gradient cache uses new instead of malloc.
  • Removed support for external bitmaps from SuperBitmap.
  • Renamed Gadget::getRectClippedToParent to Gadget::getRectClippedToHierarchy.
  • Making a gadget invisible makes its children invisible.
  • Fixed off-by-one error in Gadget::checkCollision() functions.
  • Fixed gadget-space to display-space co-ordinate problem in GraphicsPort clipping routines.
  • Removed GraphicsPort::clipXORRect() and replaced with bugfixed alternative.
  • Various functions in Gadget class now check isVisible() instead of _flags.visible.
  • focus() functions ignore the call unless the gadget is not active.
  • GraphicsPort will no longer draw to deleted/invisible gadgets.
  • Tidied up ambiguities in Gadget::closeChild().
  • Gadget::closeChild() function setting the active gadget pointer to top gadget in the stack, but the top gadget could have been the gadget being closed.
  • Fixed same problem in Gadget::hideChild().

New Features:

  • Added static system font routines to Woopsi class.
  • Gadgets automatically use system font if no font specified (bug 1846003).
  • Added “floodFill()” function to SuperBitmap (request 1816931).
  • Added “drawBitmap()” function to SuperBitmap (request 1813792).
  • Added “newBitmapGraphicsPort()” function to SuperBitmap.
  • Added “setFont()” function to Text.
  • Split Screen class into ScreenBase, AmigaScreen and SimpleScreen classes.
  • Added “permeable” flag to gadgets – if set to “true”, child gadgets can be dragged to exceed the borders of their parents (ie. windows can be dragged off-screen).
  • Gadget::getRectClippedToHierarchy clips to entire ancestor tree.
  • Gadget::moveTo() enforces permeability of parent gadgets.
  • Gadget::resize() enforces permeability of parent gadgets.
  • Window::resize() enforces permeability of parent gadgets.
  • Changed VBL events so gadgets must register with Woopsi to receive them (request 1847147).
  • Centralised gadget deletion queue handling into static Woopsi functions.
  • Added Gadget::hideChild() function.
  • Added VBL counting and static getVBLCount() function to Woopsi class (request 1847147).
  • Split Window class into WindowBase, AmigaWindow and SimpleWindow classes.
  • Added text output methods with colour parameter to GraphicsPort and SuperBitmap classes.

Download: Woopsi v0.27 Source
Download: Woopsi v0.27 Demo

Add a Comment

Your email address will not be published. Required fields are marked *