[LAD] C/gtk3/cairo meter widget

Patrick Shirkey pshirkey at boosthardware.com
Wed Feb 13 22:11:47 UTC 2013


On Thu, February 14, 2013 3:43 am, Patrick Shirkey wrote:
> On Tue, February 12, 2013 9:00 pm, SxDx wrote:
>> On 02/12/2013 09:56 AM, Patrick Shirkey wrote:
>>>
>>> On Tue, February 12, 2013 3:50 am, Paul Davis wrote:
>>>> On Mon, Feb 11, 2013 at 11:44 AM, Patrick Shirkey <
>>>> pshirkey at boosthardware.com> wrote:
>>>>
>>>>>
>>>>> Thanks for the tip. Will save me some braincells.
>>>>>
>>>>> Found it here:
>>>>>
>>>>>
>>>>> http://guitarix.sourcearchive.com/documentation/0.10.0-2/GtkFastMeter_8cpp-source.html
>>>>>
>>>>> http://guitarix.sourcearchive.com/documentation/0.10.0-2/GtkFastMeter_8h-source.html
>>>>>
>>>>
>>>> the code in ardour3 doesn't use pixbufs and is entirely drawn directly
>>>> with
>>>> cairo. you may or may not care.
>>>>
>>>
>>> It's a multistep process to get it all integrated. I couldn't find
>>> anything specific online for making a custom widget with gtk3 so I have
>>> copied the structure and methods from the gtkscale/gtkrange widgets.
>>>
>>> http://git.gnome.org/browse/gtk+/tree/gtk/gtkscale.c?h=gtk-3-6
>>> http://git.gnome.org/browse/gtk+/tree/gtk/gtkrange.c?h=gtk-3-6
>>>
>>> I got it to the point where it the class is building and init() is
>>> being
>>> called but I am having a problem with assigning the correct TYPE for
>>> GTK_METER and getting the draw/realize methods to fire.
>>>
>>> http://boosthardware.com/code/jamin/
>>
>> Can you provide a small main.c or something?
>> All I see in there are static init functions never called.
>>
>
> Yeah it's just the class, no wrapping.
>
> It can be called like this:
>
> GtkWidget *gtkmeter;
> GtkAdjustment *adjustment = (GtkAdjustment*) gtk_adjustment_new(0.0, -40,
> 6, 0.0, 0.0, 0.0);
>
> meter = gtk_meter_net(adjustment, GTK_METER_UP,  0. -40, 6);
>
>


Turns out there were a couple of small items that needed to be changed. I
had to disable the additional params in the call to g_object_new() in
gtk_meter_init() and fix the Type Declaration.

I have updated the files.    http://boosthardware.com/code/jamin/

At the moment I have a meter that doesn't update which shouldn't take long
to fix. However what I am aiming for is to integrate the different cairo
meters into one class.

fastmeter - ardour
vumeter - scenic
GtkMeter - jackeq

Any ideas or suggestions on how to make that work for the GtkMeter class?





--
Patrick Shirkey
Boost Hardware Ltd


More information about the Linux-audio-dev mailing list