ant512 rilascia una nuova versione del suo Woopsi, libreria per la creazione di interfacce grafiche.
L'archivio contiene i sorgenti e la demo in formato [.nds]

Siamo giunti così alla versione 1.2, le novità non sono poche:

» Clicca per leggere lo Spoiler! «
Fixes:
- Screen flipping/ordering does not occur if only one screen is visible.
- Removed ability to set font draw colour/monochrome from font classes;
replaced with explicit "colour" parameter to all draw methods.
- Removed height member from FontBase and transplanted all methods to
PackedFontBase, making FontBase data free.
- Minor tidying in gadget.cpp.
- Removed width and height members from BitmapBase and transplanted to
BitmapWrapper, FrameBuffer and Bitmap.
- Removed constructor from FontBase.
- Gadget::checkCollision(Gadget*) will ignore collisions with hidden
gadgets.
- Gadget::checkCollision(Gadget*) now accepts a const Gadget*.
- Replaced Gadget::swapGadgetDepth() with Gadget::changeGadgetDepth().
- Rewrote Gadget::swapDepth() to be more intelligent.
- The index to which Gadget::swapDepth() moves the gadget is now determined
by swapDepth() instead of the parent's swapGadgetDepth() method.
- Clicking the depth button in an AmigaWindow no longer results in graphical
corruption.
- Removed Screen::swapGadgetDepth().
- Removed Woopsi::swapGadgetDepth().
- Minor tidying and optimisations.
- Gadget::_decorationCount is an s32 instead of a u8.
- Fixed array index confusion in RectCache::markRectDamaged().
- Fixed bugs in Graphics::floodFill().
- Stack methods in Graphics class expect a reference to a stack as a
parameter instead of pointer.
- Removed static variables from Woopsi class.
- Gadget::checkCollision(Gadget*) shortcuts if a gadget is being compared
with itself.
- Removed unused Gadget::GADGET_NO_RAISE_EVENTS flag.
- Removed redundant Woopsi::goModal() method.
- Replaced AmigaScreen-specific flags with extra constructor parameters.
- Replaced AmigaWindow-specific flags with extra constructor parameters.
- Woopsi::handleClick() correctly interprets clicks on children of the
context menu.
- Sliders choose a more appropriate size when max value == min value; fixes
scrollbars in empty ScrollingListBoxes.
- AmigaScreen doesn't lose focus when depth gadget is clicked if it is not
lowered to the bottom of the screen stack (ie. only one screen).
- Removed concept of "close type" from Gadget.
- ListBox::onClick() won't crash if the area clicked doesn't contain an
option.
- Woopsi gadget passes its style object to the two background screens it
creates.
- ProgressBar accepts a style object in its constructor.
- Removed GadgetFlagTypes from Gadget class.
- Removed flags from all gadget constructors.
- Changing label borderless state correctly repositions text.
- Gadget::setBorderless() is virtual.
- Label redraws minimal amount when text is changed.
- TextBox redraws minimal amount when cursor moves.
- Gadget::raiseGadgetToTop() parameter name in header file agrees with
source file.
- Fixed consistency of Gadget method names:
- moveChildToDeleteQueue() renamed to moveGadgetToDeleteQueue().
- moveChildToShelvedList() renamed to moveGadgetToShelvedList().
- moveShelvedToChildList() renamed to moveShelvedToGadgetList().
- removeChild() renamed to removeGadget().
- getChild() renamed to getGadget().
- getChildCount() renamed to getGadgetCount().
- closeChild() renamed to closeGadget().
- shelveChild() renamed to shelveGadget().

New Features:
- Added Gadget::getHighestCollidingGadgetIndex().
- Added Gadget::getLowestCollidingGadgetIndex().
- Added text member to GadgetColours class - text colour can be defined
individually.
- Added Gadget::getTextColor().
- Added Gadget::setTextColour().
- Added Gadget::setDecoration().
- Added Label::setBorderless().
- Added Label::markTextRectDamaged().
- Added Bitmap::setDimensions().
- Added Bitmap copy constructor.