Woopsi is a Nintendo DS GUI library for rapidly creating user interfaces for homebrew software. Modelled after the AmigaOS windowing system.

Release notes:

A few more changes, the most interesting being:

– No need for PALib. SteveH from the GBADev forum kindly wrote a patch to remove it. Woopsi now ships with two makefiles – one lets you use it with libnds (no PALib required), and one lets you use it with PALib.
– Skinnable screens and windows.
– Animation class and animated buttons.
– Support for 1bpp font bitmaps.

Here’s the complete changelog:

– Fixes:
– Gadget::hideChild() was only hiding previously-hidden children.
– Gadget::hideChild() was moving an iterator in the wrong direction.
– Gadget::closeChild() was moving an iterator in the wrong direction.
– Gadget destructor closes children correctly.
– Gadget::moveChildToHiddenList() was incorrectly reducing the decoration count.
– Gadget::moveChildToDeletedList() was incorrectly reducing the decoration count.
– Gadget destructor did not close hidden children.
– Children and hidden children deregistered from VBL when destructed.
– Woopsi no longer automatically switches screen focus when a screen closes.
– Renamed screenbase and windowbase files back to screen and window.
– Renamed WindowBase class back to Window.
– Swapped Bitmap class for Bitmap struct.
– GraphicsPort now works with const references to clipping rects.
– Fixed GraphicsPort::drawBitmap() clipping on top screen.
– Fixed GraphicsPort::drawFilledRect() clipping on top screen.
– Removed SuperBitmap::newBitmapGraphicsPort() as the top screen offset code in the GraphicsPort made it unworkable.
– VBL count increased before child VBL functions called.
– Font class initialises _isMonochrome variable correctly.
– GraphicsPort and SuperBitmap reset font colour correctly when using colour parameter.
– Window drag initialisation moved into WindowBorderTop gadget.
– Removed Window::checkTitleBarClicked().
– Added const-correctness and implementation hiding to Font classes.
– Removed Gadget::GadgetType enum and all references to it.
– Improved const-correctness of GraphicsPort class.
– BitmapButton works with const u16* bitmap data instead of non-const.
– Swapped bool cast for flag setting in Gadget constructor with PALib-style double logical NOT construct.

– New Features:
– Skinning system.
– Added MonoFont class for 1bpp font support.
– Split Font class into Font and FontBase classes.
– Added Animation class.
– Added GraphicsPort::drawRect().
– PALib is optional.
– Added AnimButton.
– Added GraphicsPort::drawBevelledRect().
– Removed Gadget::drawIntOutline() and replaced with GraphicsPort::drawBevelledRect().
– Added Gadget::getXXXColour() functions.
– Added Gadget::getOutlineType().
– Added AnimButton test.
– Added new ROM icon.