And so does Kaffeeklatsch. Now, anyway.
First, I added preset saving and loading a few days ago but never wrote about it. Since then I gave the design of this project some serious thought, and moved some classes around into strictly defined layers:
- Kaffeeklatsch Visualization Platform. The generic components of the platform: the effect interface, effect registry, display controller, and preset serialization methods.
- Core effect library. Basic effects that most users would expect, and a few small examples.
- Preset designer. Gtk# visual preset designer.
I moved as much common functionality as possible into the platform layer. Preset serialization, which was originally in the designer, was moved there to ensure a common preset format across different software that uses the platform. The controller was also in the designer -- I'm still not sure why I put it there to start with.
There is still one loose end: media player connectivity. Currently that is split between the platform and designer layers. It'll probably all be moved into the platform, with an extension mechanism for talking to different media players.
Kaffeeklatsch is quickly becoming exactly what I wanted it to be: cross platform, media player neutral, human controlled visualization. Huzzah!