[LAD] pixmap based knob widgets and theme integration.

Patrick Shirkey pshirkey at boosthardware.com
Mon Sep 27 14:23:03 UTC 2010

On Mon, September 27, 2010 6:46 am, Olivier Guilyardi wrote:
> On 09/27/2010 01:44 PM, Patrick Shirkey wrote:
>> On Sun, September 26, 2010 1:35 pm, pete shorthose wrote:
>>> WRT the recent discussion about pixmap knob widgets and theme
>>> conformance (that i can't reply to since i wasn't on the list
>>> at the time, sorry)
> AFAICS, no one mentioned themable pixmap knobs. When it came to supporting
> themes, it was all about vector drawing, especially with Cairo.
> [...]
>>> another possibility that was briefly discussed for use with
>>> phat was that of a composite widget with different layers that
>>> could be drawn separately, one on top of the other. eg render an SVG
>>> or pixmap as a background on the first pass, then draw something
>>> with cairo (a value indicator..) on top.
> Yes, I did mention this SVG idea, but it was pointed out that it won't
> work
> because some lines/borders need to be 1px or so, no matter what the scale
> factor is.
> [...}
>>> there are obvious limits to what you can achieve with this kind of
>>> thing,
>> Like what exactly? Pretty much only what the mind can think of. Anything
>> you can achieve in inkscape or gimp will be possible with cairo. That is
>> much more than most widgets will ever need.
> Agreed. IMO, for proper scaling and theme support, the only solution is to
> draw
> everything in code, with Cairo for instance.
> Thus, the most obvious possibility is simplified knobs as those designed
> by
> Thorwil, which use very few colors.
> Another solution, for more graphical knobs, would be to expose specific
> style properties, which themes would have to explicitly support. That
> could
> allow for all sort pretty rendering, with theme-specific gradients and so
> on.

Yes it does allow for some more advanced control but if you want to get
really flash and support scaling without all the hassle of integrating an
svg handler then afaik with gtk you only have that one option of drawing
the widgets with code.

Doing things like 1px borders is with the internals scaled is entirely

> One thing though, as you seem to be into gtk engine development, is that
> the whole Cairo idea defeats the general principle of engines which seem
> to rely
> on the fact that widgets are drawn with gtk_paint_*() functions. Is this
> correct?

IIUC, gtk_paint_*() functions are not needed if you use cairo directly.

I'm not sure what you are meaning with the engines in this context though.
Sorry if it has already been discussed I have just started following this

I have become more interested in the possibilities available with drawing
widgets in cairo though. 3d layering ala blender becomes completely
possible. With enough time one could even go so far as to have a
completely 3d or even poly dimensional ui. With buttons and layers all
over the place responding to different actions. Add in multi touch support
and things become very interesting for the user. Especially in the context
of musical performance.

You are really only limited by your imagination and ability to visualise
and translate those ideas to the dimensional space.

The more research I do on how to work quickly with blender and inkscape
the more possibilities open up in front of me for really impressive ui
design. I highly recommend taking the time to figure out cairo if you are
interested in taking ui's to another level. There are many online video
tutorials for how to use the image tools and they are very enlightening
from a ui design perspective too. Watching professionals build 3d models
for example shows me how to recreate the same effect in code.

Of course there is also opengl for the 3d space too and I feel if enough
time is spent working with both options there will be some very amazing
interfaces designed over the next decade now that multi touch is available
to us all.

Patrick Shirkey
Boost Hardware Ltd.

More information about the Linux-audio-dev mailing list