122
122
meter->value = 0;
124
124
gtk_widget_set_tooltip_markup(GTK_WIDGET(meter),"<span size=\"8000\">VU Meter.</span>");
129
meter->r[0]=101.0; //needle
130
meter->r[1]=104.0; //markings lower
131
meter->r[2]=112.0; //markings upper
132
meter->r[3]=114.0; //labels
135
meter->a[0]=(-INV_PI/2)-0.7943; //-inf db
136
meter->a[1]=(-INV_PI/2)+(1-0.7943); //0db
137
meter->a[2]=(-INV_PI/2)+0.7943; //max scale (approx +4db)
138
meter->a[3]=(-INV_PI/2)-0.83; //- needle clip
139
meter->a[4]=(-INV_PI/2)+0.83; //+ needle clip
141
meter->dbm20[0].x=meter->cx+meter->r[1]*sin(0.1-0.7943);
142
meter->dbm20[0].y=meter->cy-meter->r[1]*cos(0.1-0.7943);
143
meter->dbm20[1].x=meter->cx+meter->r[2]*sin(0.1-0.7943);
144
meter->dbm20[1].y=meter->cy-meter->r[2]*cos(0.1-0.7943);
145
meter->dbm20[2].x=meter->cx+meter->r[3]*sin(0.1-0.7943);
146
meter->dbm20[2].y=meter->cy-meter->r[3]*cos(0.1-0.7943);
148
meter->dbm10[0].x=meter->cx+meter->r[1]*sin(0.3162277-0.7943);
149
meter->dbm10[0].y=meter->cy-meter->r[1]*cos(0.3162277-0.7943);
150
meter->dbm10[1].x=meter->cx+meter->r[2]*sin(0.3162277-0.7943);
151
meter->dbm10[1].y=meter->cy-meter->r[2]*cos(0.3162277-0.7943);
152
meter->dbm10[2].x=meter->cx+meter->r[3]*sin(0.3162277-0.7943);
153
meter->dbm10[2].y=meter->cy-meter->r[3]*cos(0.3162277-0.7943);
155
meter->dbm07[0].x=meter->cx+meter->r[1]*sin(0.4466835-0.7943);
156
meter->dbm07[0].y=meter->cy-meter->r[1]*cos(0.4466835-0.7943);
157
meter->dbm07[1].x=meter->cx+meter->r[2]*sin(0.4466835-0.7943);
158
meter->dbm07[1].y=meter->cy-meter->r[2]*cos(0.4466835-0.7943);
159
meter->dbm07[2].x=meter->cx+meter->r[3]*sin(0.4466835-0.7943);
160
meter->dbm07[2].y=meter->cy-meter->r[3]*cos(0.4466835-0.7943);
162
meter->dbm05[0].x=meter->cx+meter->r[1]*sin(0.5623413-0.7943);
163
meter->dbm05[0].y=meter->cy-meter->r[1]*cos(0.5623413-0.7943);
164
meter->dbm05[1].x=meter->cx+meter->r[2]*sin(0.5623413-0.7943);
165
meter->dbm05[1].y=meter->cy-meter->r[2]*cos(0.5623413-0.7943);
166
meter->dbm05[2].x=meter->cx+meter->r[3]*sin(0.5623413-0.7943);
167
meter->dbm05[2].y=meter->cy-meter->r[3]*cos(0.5623413-0.7943);
169
meter->dbm03[0].x=meter->cx+meter->r[1]*sin(0.7079457-0.7943);
170
meter->dbm03[0].y=meter->cy-meter->r[1]*cos(0.7079457-0.7943);
171
meter->dbm03[1].x=meter->cx+meter->r[2]*sin(0.7079457-0.7943);
172
meter->dbm03[1].y=meter->cy-meter->r[2]*cos(0.7079457-0.7943);
173
meter->dbm03[2].x=meter->cx+meter->r[3]*sin(0.7079457-0.7943);
174
meter->dbm03[2].y=meter->cy-meter->r[3]*cos(0.7079457-0.7943);
176
meter->dbm02[0].x=meter->cx+meter->r[1]*sin(0.7943282-0.7943);
177
meter->dbm02[0].y=meter->cy-meter->r[1]*cos(0.7943282-0.7943);
178
meter->dbm02[1].x=meter->cx+meter->r[2]*sin(0.7943282-0.7943);
179
meter->dbm02[1].y=meter->cy-meter->r[2]*cos(0.7943282-0.7943);
180
meter->dbm02[2].x=meter->cx+meter->r[3]*sin(0.7943282-0.7943);
181
meter->dbm02[2].y=meter->cy-meter->r[3]*cos(0.7943282-0.7943);
183
meter->dbm01[0].x=meter->cx+meter->r[1]*sin(0.8912509-0.7943);
184
meter->dbm01[0].y=meter->cy-meter->r[1]*cos(0.8912509-0.7943);
185
meter->dbm01[1].x=meter->cx+meter->r[2]*sin(0.8912509-0.7943);
186
meter->dbm01[1].y=meter->cy-meter->r[2]*cos(0.8912509-0.7943);
187
meter->dbm01[2].x=meter->cx+meter->r[3]*sin(0.8912509-0.7943);
188
meter->dbm01[2].y=meter->cy-meter->r[3]*cos(0.8912509-0.7943);
190
meter->db00[0].x=meter->cx+meter->r[1]*sin(1.0-0.7943);
191
meter->db00[0].y=meter->cy-meter->r[1]*cos(1.0-0.7943);
192
meter->db00[1].x=meter->cx+meter->r[2]*sin(1.0-0.7943);
193
meter->db00[1].y=meter->cy-meter->r[2]*cos(1.0-0.7943);
194
meter->db00[2].x=meter->cx+meter->r[3]*sin(1.0-0.7943);
195
meter->db00[2].y=meter->cy-meter->r[3]*cos(1.0-0.7943);
197
meter->dbp01[0].x=meter->cx+meter->r[1]*sin(1.1220184-0.7943);
198
meter->dbp01[0].y=meter->cy-meter->r[1]*cos(1.1220184-0.7943);
199
meter->dbp01[1].x=meter->cx+meter->r[2]*sin(1.1220184-0.7943);
200
meter->dbp01[1].y=meter->cy-meter->r[2]*cos(1.1220184-0.7943);
201
meter->dbp01[2].x=meter->cx+meter->r[3]*sin(1.1220184-0.7943);
202
meter->dbp01[2].y=meter->cy-meter->r[3]*cos(1.1220184-0.7943);
204
meter->dbp02[0].x=meter->cx+meter->r[1]*sin(1.2589254-0.7943);
205
meter->dbp02[0].y=meter->cy-meter->r[1]*cos(1.2589254-0.7943);
206
meter->dbp02[1].x=meter->cx+meter->r[2]*sin(1.2589254-0.7943);
207
meter->dbp02[1].y=meter->cy-meter->r[2]*cos(1.2589254-0.7943);
208
meter->dbp02[2].x=meter->cx+meter->r[3]*sin(1.2589254-0.7943);
209
meter->dbp02[2].y=meter->cy-meter->r[3]*cos(1.2589254-0.7943);
211
meter->dbp03[0].x=meter->cx+meter->r[1]*sin(1.4125375-0.7943);
212
meter->dbp03[0].y=meter->cy-meter->r[1]*cos(1.4125375-0.7943);
213
meter->dbp03[1].x=meter->cx+meter->r[2]*sin(1.4125375-0.7943);
214
meter->dbp03[1].y=meter->cy-meter->r[2]*cos(1.4125375-0.7943);
215
meter->dbp03[2].x=meter->cx+meter->r[3]*sin(1.4125375-0.7943);
216
meter->dbp03[2].y=meter->cy-meter->r[3]*cos(1.4125375-0.7943);
227
325
cr = gdk_cairo_create(widget->window);
229
327
if(mode==INV_VU_METER_DRAW_ALL) {
230
cairo_set_source_rgb(cr, 1.0, 1.0, 0.9);
329
cairo_set_source_rgb(cr, 1.0, 0.90, 0.65);
332
cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER);
333
cairo_set_antialias (cr,CAIRO_ANTIALIAS_NONE);
334
cairo_set_line_width(cr,1);
336
gdk_cairo_set_source_color(cr,&style->dark[GTK_STATE_NORMAL]);
337
cairo_move_to(cr, 0, 104);
338
cairo_line_to(cr, 0, 0);
339
cairo_line_to(cr, 182, 0);
342
gdk_cairo_set_source_color(cr,&style->light[GTK_STATE_NORMAL]);
343
cairo_move_to(cr, 0, 104);
344
cairo_line_to(cr, 182, 104);
345
cairo_line_to(cr, 182, 0);
348
cairo_set_antialias (cr,CAIRO_ANTIALIAS_DEFAULT);
350
cairo_set_line_width(cr,1.5);
351
cairo_set_source_rgb(cr, 0.15, 0.12, 0.08);
354
cairo_select_font_face(cr,"sans-serif",CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD);
355
cairo_set_font_size(cr,13);
357
// cairo_text_extents (cr,label,&extents);
358
cairo_move_to(cr,6,99);
359
cairo_show_text(cr,label);
361
cairo_select_font_face(cr,"sans-serif",CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL);
362
cairo_set_font_size(cr,10);
366
cairo_move_to(cr,INV_VU_METER(widget)->dbm20[0].x,INV_VU_METER(widget)->dbm20[0].y);
367
cairo_line_to(cr,INV_VU_METER(widget)->dbm20[1].x,INV_VU_METER(widget)->dbm20[1].y);
369
cairo_move_to(cr,INV_VU_METER(widget)->dbm10[0].x,INV_VU_METER(widget)->dbm10[0].y);
370
cairo_line_to(cr,INV_VU_METER(widget)->dbm10[1].x,INV_VU_METER(widget)->dbm10[1].y);
372
cairo_move_to(cr,INV_VU_METER(widget)->dbm07[0].x,INV_VU_METER(widget)->dbm07[0].y);
373
cairo_line_to(cr,INV_VU_METER(widget)->dbm07[1].x,INV_VU_METER(widget)->dbm07[1].y);
375
cairo_move_to(cr,INV_VU_METER(widget)->dbm05[0].x,INV_VU_METER(widget)->dbm05[0].y);
376
cairo_line_to(cr,INV_VU_METER(widget)->dbm05[1].x,INV_VU_METER(widget)->dbm05[1].y);
378
cairo_move_to(cr,INV_VU_METER(widget)->dbm03[0].x,INV_VU_METER(widget)->dbm03[0].y);
379
cairo_line_to(cr,INV_VU_METER(widget)->dbm03[1].x,INV_VU_METER(widget)->dbm03[1].y);
381
cairo_move_to(cr,INV_VU_METER(widget)->dbm02[0].x,INV_VU_METER(widget)->dbm02[0].y);
382
cairo_line_to(cr,INV_VU_METER(widget)->dbm02[1].x,INV_VU_METER(widget)->dbm02[1].y);
384
cairo_move_to(cr,INV_VU_METER(widget)->dbm01[0].x,INV_VU_METER(widget)->dbm01[0].y);
385
cairo_line_to(cr,INV_VU_METER(widget)->dbm01[1].x,INV_VU_METER(widget)->dbm01[1].y);
390
cairo_set_line_width(cr,2);
391
cairo_arc(cr,INV_VU_METER(widget)->cx,INV_VU_METER(widget)->cy,INV_VU_METER(widget)->r[1],INV_VU_METER(widget)->a[0],INV_VU_METER(widget)->a[1]);
397
cairo_text_extents (cr,label,&extents);
398
cairo_move_to(cr,INV_VU_METER(widget)->dbm20[2].x-extents.width,INV_VU_METER(widget)->dbm20[2].y);
399
cairo_show_text(cr,label);
402
cairo_text_extents (cr,label,&extents);
403
cairo_move_to(cr,INV_VU_METER(widget)->dbm10[2].x-extents.width,INV_VU_METER(widget)->dbm10[2].y);
404
cairo_show_text(cr,label);
407
cairo_text_extents (cr,label,&extents);
408
cairo_move_to(cr,INV_VU_METER(widget)->dbm07[2].x-extents.width,INV_VU_METER(widget)->dbm07[2].y);
409
cairo_show_text(cr,label);
412
cairo_text_extents (cr,label,&extents);
413
cairo_move_to(cr,INV_VU_METER(widget)->dbm05[2].x-extents.width,INV_VU_METER(widget)->dbm05[2].y);
414
cairo_show_text(cr,label);
417
cairo_text_extents (cr,label,&extents);
418
cairo_move_to(cr,INV_VU_METER(widget)->dbm03[2].x-extents.width,INV_VU_METER(widget)->dbm03[2].y);
419
cairo_show_text(cr,label);
422
cairo_text_extents (cr,label,&extents);
423
cairo_move_to(cr,INV_VU_METER(widget)->dbm02[2].x-(extents.width/2),INV_VU_METER(widget)->dbm02[2].y);
424
cairo_show_text(cr,label);
427
cairo_move_to(cr,INV_VU_METER(widget)->dbm01[2].x,INV_VU_METER(widget)->dbm01[2].y);
428
cairo_show_text(cr,label);
432
cairo_rectangle(cr,6,11,12,2);
437
cairo_set_line_width(cr,1.5);
438
cairo_set_source_rgb(cr, 0.80, 0.22, 0.15);
440
cairo_move_to(cr,INV_VU_METER(widget)->db00[0].x,INV_VU_METER(widget)->db00[0].y);
441
cairo_line_to(cr,INV_VU_METER(widget)->db00[1].x,INV_VU_METER(widget)->db00[1].y);
443
cairo_move_to(cr,INV_VU_METER(widget)->dbp01[0].x,INV_VU_METER(widget)->dbp01[0].y);
444
cairo_line_to(cr,INV_VU_METER(widget)->dbp01[1].x,INV_VU_METER(widget)->dbp01[1].y);
446
cairo_move_to(cr,INV_VU_METER(widget)->dbp02[0].x,INV_VU_METER(widget)->dbp02[0].y);
447
cairo_line_to(cr,INV_VU_METER(widget)->dbp02[1].x,INV_VU_METER(widget)->dbp02[1].y);
449
cairo_move_to(cr,INV_VU_METER(widget)->dbp03[0].x,INV_VU_METER(widget)->dbp03[0].y);
450
cairo_line_to(cr,INV_VU_METER(widget)->dbp03[1].x,INV_VU_METER(widget)->dbp03[1].y);
455
cairo_set_line_width(cr,4);
456
cairo_arc(cr,INV_VU_METER(widget)->cx,INV_VU_METER(widget)->cy,INV_VU_METER(widget)->r[1]+1,INV_VU_METER(widget)->a[1],INV_VU_METER(widget)->a[2]);
462
cairo_move_to(cr,INV_VU_METER(widget)->db00[2].x,INV_VU_METER(widget)->db00[2].y);
463
cairo_show_text(cr,label);
466
cairo_move_to(cr,INV_VU_METER(widget)->dbp01[2].x,INV_VU_METER(widget)->dbp01[2].y);
467
cairo_show_text(cr,label);
470
cairo_move_to(cr,INV_VU_METER(widget)->dbp02[2].x,INV_VU_METER(widget)->dbp02[2].y);
471
cairo_show_text(cr,label);
474
cairo_move_to(cr,INV_VU_METER(widget)->dbp03[2].x,INV_VU_METER(widget)->dbp03[2].y);
475
cairo_show_text(cr,label);
478
cairo_rectangle(cr,166,11,12,2);
480
cairo_rectangle(cr,171,6,2,12);
235
cairo_set_source_rgb(cr, 1.0, 1.0, 0.9);
485
cairo_set_source_rgb(cr, 1.0, 0.90, 0.65);
486
cairo_move_to(cr,INV_VU_METER(widget)->cp[0].x,INV_VU_METER(widget)->cp[0].y);
487
cairo_arc(cr,INV_VU_METER(widget)->cx,INV_VU_METER(widget)->cy,INV_VU_METER(widget)->r[0]+1,INV_VU_METER(widget)->a[3],INV_VU_METER(widget)->a[4]);
488
cairo_line_to(cr,INV_VU_METER(widget)->cp[1].x,INV_VU_METER(widget)->cp[1].y);
489
cairo_line_to(cr,INV_VU_METER(widget)->cp[0].x,INV_VU_METER(widget)->cp[0].y);
490
cairo_fill_preserve(cr);
493
cairo_set_line_width(cr,1.5);
238
494
cairo_set_source_rgb(cr, 0, 0, 0);
239
cairo_move_to(cr,91,100);
240
cairo_line_to(cr,91+80*(sin(value-0.7943)),100-80*cos(value-0.7943));
495
cairo_move_to(cr,INV_VU_METER(widget)->cx,INV_VU_METER(widget)->cy);
496
cairo_line_to(cr,INV_VU_METER(widget)->cx+INV_VU_METER(widget)->r[0]*(sin(value-0.7943)),
497
INV_VU_METER(widget)->cy-INV_VU_METER(widget)->r[0]*cos(value-0.7943));
241
498
cairo_stroke(cr);
243
500
cairo_destroy(cr);