- Renamed GfxPanel to GfxCanvas. this class no longer extends JPanel, it is now a regular JComponent subclass.
- Caching of shape information was too aggressive, it hindered animations. This problem has been fixed.
- Added missing HSL properties to griffon.builder.gfx.Colors.
- Added a new node: rawNode. It grants you direct access to underlying graphics context.
As you can see (pause at 00:12 for a better look) there is a red rectangle that changes size as the shape scales and rotates itself. There is also a visible white border, which of course moves along with the shape. However there are two static outlines. The cyan outline matching the shape and the yellow rectangle that matches the former's bounds. Now let's look at the code
Decided to show the code as a regular standalone Groovy script, you can run it via the Groovy shell or the Groovy console, if all required libs and dependencies have been previously placed at ~/.groovy/lib. These are the main differences from the previous version:
- The main group sets 'none' as the border color, this means not outlines will be drawn unless explicitly told so.
- The background is set to black rather than white.
- The secondary group (the one that holds the actual shape) now has an id, it will become useful in the next step.
- A rawNode is used to draw the static and dynamic shapes related to the secondary group.
Another advantage of rawNode is that you may be able to insert any Graphics related code directly into the rendering pipeline, say, like those Clojure powered fractals

Feedback is always appreciated.
Keep on Groovying!