It's been about a month since the last release, so it's about time for another. Woopsi 0.26 is now available on the SourceForge site:
Here's a screenshot of the lastest demo:
(I know the version number in the screengrab is wrong.)
There are a huge number of changes, mainly aimed at improving the API for developers. Changes are:
- Added clip-to-physical-screen code back in.
- Fixed inconsistency in screen _flags.borderless variable.
- Fixed warning in gadget.cpp (bug 1826584).
- Removed parent pointers from gadget constructors.
- Removed eventhandler.cpp and rolled the functionality into the header.
- Removed font bitmap check from TextWriter (feature 1830307).
- Renamed "addXXX()" gadget creation functions to "newXXX()" (feature 1830242).
- Added check for null parent pointer before adding gadgets to child vector (bug 1830241).
- Fixed flicker in top display when flipping screens.
- Fixed border size confusion in Window class.
- Fixed problem with height and width to y2 and x2 conversion in TextWriter.
- Fixed scroll limit problem in TextViewer.
- Fixed drawing problems in TextViewer.
- Removed _deleteQueueActive from Gadget class and rely on vector size instead (bug 1843784).
- Made destructors virtual where appropriate.
- Set gadgets to be invisible until added to a parent gadget to prevent them being drawn to arbitrary positions on the screen.
- Removed "removeOverlappedRects" from Woopsi class.
- Changed Gadget::eraseGadget() so that the parent is responsible for erasing children instead of passing call up to Woopsi instance.
- Fixed Woopsi constructor parameter order.
- New Features:
- Screen and window borders can be enabled/disabled with setBorderless().
- Gadgets now have a flags bitmask instead of individual bools to control properties (request 1826433).
- Added addGadget() and insertGadget() for more control over children.
- Added an ID number ("refcon") to the base gadget class (request 1828519).
- Added getClientRect() function to gadget/window/screen classes.
- Added GraphicsPort class to handle drawing within gadgets.
- Gadgets now cache their visible regions to improve drawing speed.
- Pong demo uses a GraphicsPort instead of a SuperBitmap.
- Added "removeGadget" function for deleting gadgets from vectors.
- Added gadget decoration concept to handle borders, etc.
- Removed all usage of Gadget::getType() to aid subclassing.
- BitmapButton draws its bitmap using GraphicsPort.
- Window uses parent screen's GraphicsPort to draw its XOR rectangles (fixes bug in which XOR rectangle overlaps other screens, but no longer relevant since screens automatically depth-sort when clicked).
- Window border gadgets use GraphicsPort for their output.
- Screen title gadget uses GraphicsPort for its output.
- Removed most drawing functions from Gadget class.
- Added hardware-accelerated horizontal line drawing.
- Improved speed of filled rect by using faster horizontal line routine.
- Renamed bool getters from "getXXX()" to "isXXX()".
- Added clip-to-parents into Gadget::cacheVisibleRects and Gadget::splitRects.
- Removed glyph font and added support routines to allow single font.
- Added font inheritance system.
- Added Gradient background class.
- Removed background image from demo and replaced with gradient.