CGK version 7.7.19 has now been published to the Cincom public StORE. Here are some highlights:
- I refactored CairoTransformWrapper (again…). The refactoring was to further abstract the transform instance variable into its own set of transform matrix classes. I am still experimenting with the refactoring and more is likely on the way.
- The unfortunate result of this refactoring is that any windowSpec or literal array that contains a CairoTransformWrapper from a previous version of the CGK will need to be ported. In other words, you’ll need to rebuild your UI if you are using any of the visual components in the CGK.
- I changed how CairoTransformWrapper reports damage. Prior to the change, the CairoTransformWrapper would report its bounds as its entire area. This wasn’t a problem if it was only wrapping one component, but if it was being used as a composite, then performance suffered since it had to redraw its entire area even if just a small portion had been damaged by one of its components. It’s now a lot smarter about how it deals with the entire damage repair cycle. A lot of work went into this so I may decide to dedicate a post to the new damage repair process.
- I corrected the localPointToGlobal: and globalPointToLocal: methods in the CairoTransformWrapper to properly deal with the applied transform. These repairs are critical as I start to move my development efforts toward more active components that interact with the mouse.
- I introduced my first active component. This release of the CGK now includes a CairoActionButton. Yup…a button!! So exciting! Ok, so a button isn’t that big of a deal, but would you be interested to know that you can “skin” it with PNG images? Not good enough? How about a controller that correctly deals with any applied transformation on that button? Rotate, scale…no problem, the “hit test” can deal with it.
That’s about it for major changes. Next up are some changes to CairoVisualRegion to support more than just circles and squares. I am also working on a gradient fill tool for the GUI painter slices.