Ok, got a new release out. Some big, if not obvious, changes to the Mac code in this one. Also a new JuceAudioPlugin version to go with it.
The precompiled mac demo and jucer executables should now be universal binaries, though I’ve not got an Intel Mac to try them on, so if anyone has, let me know if it works!
Here’s the changelist:
* added a simple SVG parser to the Drawable class - this can parse SVG into a graph of Drawable objects that you can then render. The parser's pretty basic, and doesn't support much of the (very large) SVG spec, but I'll keep adding features to it as they're needed
* fixed the updating of ToggleButtons that are connected to app commands so that they correctly reflect the command's 'ticked' state.
* fixed the XML parser's handling of non-text element entities
* added a few handy static methods to AffineTransform
* gradient fills can now have a transform matrix specified, to deform their shape
* new class: RectanglePlacement, which is a bit like Justification, but specifically for fitting rectangular graphics within a viewport with various positioning options. This will break a few places where you call methods like drawImageWithin(), but is easy to update and the result is more readable code.
* new method Colours::findColourForName() for looking up colour names from a string
* added a flag to ApplicationCommandInfo to stop menus and buttons getting flashed when particular commands are invoked
* new class: CharacterFunctions, which contains a set of static functions for manipulating ascii and unicode characters and null-terminated strings. This is intended to replace any use of functions like strlen, etc, with a set of safe, platform-independent ones.
* some fixes and optimisations to the file chooser components
* altered the Graphics and LowLevelGraphicsContext classes to use a stack for pushing and popping the clip regions, instead of setting these explicitly with a RectangleList. (This change is needed for future support of OS contexts that can't retrieve the clip path as a set of rectangles)
* removed the Graphics class's copy constructor (use the saveState/restoreState methods instead of a temporary copy)
* added method String::indexOfWholeWord()
* tidied up some of the header files, moving all inline functions (like jlimit, jmax, etc) into the juce namespace
* Mac: complete rewite of the windowing code. Components are now placed in HIViews, rather than directly in Windows. As well as being more futureproof, this is vital for support of AudioUnits and VSTs on Intel Macs.
* Mac: tidied up the build environment. It now compiles a universal binary which is compatible with any system from 10.2 onwards, including intel on 10.4
* Windows: new ActiveXControlComponent class, which lets you embed an ActiveX control in a Juce window. I wrote this to get the new Quicktime control working, but made it generic so you could use it for other things like embedding a web browser, etc.
* Windows: completely rewritten Quicktime support. This now requires QT7 (on windows, not Mac), but it now uses the new ActiveX QT control, which is much better than the archaic way it used to be done. Would like to update the Mac version too, but that'd only work on 10.4, so will wait until older OS versions are less common.
* Windows: fixes for non-western keyboard input sometimes not working in textboxes
* Linux: added a MIDI input device, using ALSA
* Linux: made launching of URLs in the default browser work properly
* Jucer: added an option to view a semi-transparent overlay of the components while editing the background graphics
* Jucer: better positioning of new objects when zoomed-in
* Jucer: added a "common background" graphics layer to buttons, which is drawn behind all the other button states
* Jucer: added key shortcuts for nudging component's position and size around
* JuceAudioPlugin: rewrote the mac VST and AU wrappers to embed a HIView rather than the old window hackery it was using.