To continue the discussion from the other thread, I was saying:
- With upcoming projucer, realtime control of component’s features & painting is within reach, which is very good, but at the same time risky, since it can lead to a more fixed design.
(The developer will tweak up to the last pixels of his application, but at the same time the final user will not be able to do so) - CSS proved an efficient way to specify the styling of an application.
- Current look and feel is too “code based” and unless you only want to change the color at runtime, it’s not possible to specify anything else without recompiling.
- Animations and transformations are currently too “manual” in Juce application, if even possible.
On the good side, Juce has a good SVG renderer (even if not complete, it covers 99% of the use case), a good renderer, a good translation engine (but a bad printf’s like string formatting).
I’m proposing the following ideas to improve the end-user configurability:
- CSS is a standard, let’s use a “CSS” compliant language to describe the configurability so no new language is required to change the look & feel of the application.
- Make the component’s class more CSS’s based, by hooking the CSS’s required functionalities in virtual methods that are calling the usual methods if no rule applies to the component.
- Cache the results of computation so CSS’s code is not slower than the current code
- Add a CSSLookAndFeel class that’s perform the rendering of components based on CSS’s rules & features & SVG path description (if any required), that is, no more hand-drawn component in the look and feel.
- Add an animation & transformation framework that’s at least as good as JQuery/CSS3 (including the possibility for a developer specified callback/customization)
I understand Valley’s remark on the CSS box model complexity, and completely agree, but at the same time, we need a way to position components dynamically at a given time & space.