Re: [LAD] pixmap based knob widgets and theme integration.

From: Patrick Shirkey <pshirkey@email-addr-hidden>
Date: Tue Sep 28 2010 - 13:52:08 EEST

On Mon, September 27, 2010 8:39 am, pete shorthose wrote:
> 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.
>

IIUC, you can write your own function to load a pixmap defined in a
specific folder or xml etc... Then just draw it in the background layer of
the widget. I did something similar with a custom mouse cursor in python
recently. The code is about 5 lines in the end. I can post it if you are
interested.

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

The way they handle this in ex. cocoa is expand the borders of the image.
I'm not sure if they provide complete support in for a circular image or
an image with a gradient though.

I haven't seen this in cairo but it is certainly possible to write a
custom widget for that purpose if the need arose.

The trade off is how much time you want to spend on it I guess.

-- 
Patrick Shirkey
Boost Hardware Ltd.
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Tue Sep 28 16:15:04 2010

This archive was generated by hypermail 2.1.8 : Tue Sep 28 2010 - 16:15:05 EEST