Ideas for a new GTK+ theming



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello there,

I've been working on the GTK+ theming issue and there are some thoughts I'd like to publish so we're able to discuss them.

Engine API:
- -----------

At the moment the API provides access to the low level drawing primitives. To get more options into the hand of the designer the API should provide functions which allow the registration of entire widgets. The idea here is to "outsource" the drawing functions. A short and very simplified example:

static void
gtk_register_widget (gchar *widget_identifier);

Now, the theme engine is responsible to find the "drawing function" in the current theme according to the identifier. Besides, every widget becomes "themeable" which uses this API.

When the widget wants to be drawn it calls its drawing function with another API call (also simplified):

static void
gtk_draw_widget (gchar *widget_identifier, GtkImportantWidgetDataToKnow *structure);

So, at the end all responsibility is in the hand of a drawing function which can be loaded dynamically. Now it's up to the developer/designer how she realizes the design, she has full control and the widget data which is might be important. At least Gtk+ could provide standard drawing functions based on Pixmap or even SVG so designers can start to modify images.

See also [1]

Engine API:
- -----------

At the moment the designer can only modify as much details of a theme as the engine provides. That is why I propose a more data driven approach based on SVG. It is standardized and there are a lot of sophisticated tools to create and modify SVG files. It also offers the possibility for the modification via CSS [2]. Even animation would be possible [3].

With librsvg a powerful library exists but it has to become more powerful if it should be usable for theming. I've spoken with the developer, he said he lacks time so it would be on others to provide patches.

- -------------------------------------------------------------------------------------
That is only a starting point! Intensive discussion, opinions and suggestions are appreciated and definitely needed. ;-)


Kind regards,
   Hagen


[1] http://homepages.pathfinder.gr/kazanaki/contrib/ch04s05.html
[2] http://www.w3.org/TR/SVG/styling.html
[3] http://www.w3.org/TR/SVG/animate.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEARECAAYFAkjqMo4ACgkQ1UAqryBcuEWgQQCdHwEoef+RHAV4LShs5NEKT1Kr
phcAnjOwOxAnTmFk73lDpqqNp4afjuHo
=yp0/
-----END PGP SIGNATURE-----


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]