I think the properties in LookNFeel are exactly what is needed here. One example I've been considering is a button made up of "bubble" particles that float around the perimeter of the button.
These classes can be created to use properties (added from the LookNFeel), such as:
Code: Select all
PropertyHelper::stringToUint(getProperty("BubbleCount"));
Ok so far. The button can then display this number of bubble particles that float around in whatever way. The speed of the bubbles and their lifetime could even be specified, allowing "angry" bubble buttons and more sedate variations.
However, for the image of the "bubble" to use, I'm not sure the best way of grabbing the information from the LookNFeel. I guess you could do it with 2 more properties (you'd need an imageset name property, and an image name property). You could also use the existing state imagery, and grab the image from that while ignoring the coordinate data.
An advanced alternative would be to allow users to create their own LayerSpecification classes that have a virtual render method. This would actually allow more customisation. You could have a Falagard static image background layer, the "bubble layer" using particles, and on the top, a Falagard text layer with the title. That would require a bit more of a rework though.