[LAD] pixmap based knob widgets and theme integration.

pete shorthose pshorthose at gmail.com
Mon Sep 27 15:39:45 UTC 2010


On 27/09/10 12:44, Patrick Shirkey wrote:
> On Sun, September 26, 2010 1:35 pm, pete shorthose wrote:
>    
>>
>> 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.
>>
>>      
> Well I have found that this will only work with recent gtk (it may have
> been fixed by now) if the widget is not being updated often. There was a
> memory bug in wither the font or vector functions when drawing text on top
> of a dynamically rendered and frequently updated layer.
>
> There are ways around this but they require a bit of flexibility and I
> didn't have the time when I was working on my code to figure it out. One
> of the methods would have just minimised the bug but not actually fixed
> it. That required redrawing only the parts of the widget that need to be
> updated.
>    

i've not seen this myself. if you shoot me the code i'd be happy to have 
a look.

>> 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.
>    

limits to what you can achieve with a composite widget, not cairo alone. 
when you mix methods you
gain the advantages and disadvantages of both at once.

>> but you could get some complex effects on a knob while still
>> maintaining procedural control over the size, colour and shape of the
>> vector elements. (tick marks around the knob, value indicator size
>> and colour etc). IIRC we discarded the idea due to it's complexity.
>> we wanted a generally configurable knob and the vector elements would
>> need anything from extensive widget options right up to a full blown
>> markup language to describe them (not a problem for app specific
>> widgets).
>>
>>      
> Drawing with cairo is pretty easy once you get the hang of it. It helps if
> you have some working knowledge of gimp or inkscape so you can visualise
> the steps required to create the effects. Do you have examples of the kind
> of visuals were you interested in creating
>    

sorry, i wasn't very clear. we were thinking about a themeable combo 
knob. with pixmaps that's easy. supply
a pixmap animation that can look like what ever you want. for cairo.. 
how do you do that since the design
is in code?. there is no file format containing a design specification 
nor an interpretor to load it. note i'm not
talking about a native cairo knob that respects themes here. i'm talking 
about the combo widget.

tbh, i think that the best way to handle knob themes may well be to 
sidestep the issue entirely. provide a plugin
API, and have the widget load plugins that do all the drawing.  then 
interested parties can do what ever the
hell they like provided they write the code and ship the plugin 
themselves. a gtk theme author might then just specify a
plugin if they cared about how the knobs looked with the the rest of 
their widgets. similar to the way theme
engines work but for a 3rd party widget library. ship some sensible 
defaults/examples and leave people to it.



cheers,
pete.



More information about the Linux-audio-dev mailing list