~fraser-arkhostings/invada-studio/lv2

« back to all changes in this revision

Viewing changes to plugingui/widgets/meter-vu.c

  • Committer: Fraser
  • Date: 2009-08-15 01:37:44 UTC
  • Revision ID: fraser@titan-20090815013744-25kampbsnkswvju9
vu widget looking nearly complete.
updated meter gui glade 
changed font to 'sans-serif'

Show diffs side-by-side

added added

removed removed

Lines of Context:
122
122
        meter->value = 0;
123
123
 
124
124
        gtk_widget_set_tooltip_markup(GTK_WIDGET(meter),"<span size=\"8000\">VU Meter.</span>");
 
125
 
 
126
        meter->cx=91.0;
 
127
        meter->cy=130.0;
 
128
 
 
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
 
133
 
 
134
 
 
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
 
140
 
 
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);
 
147
 
 
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);
 
154
 
 
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);
 
161
 
 
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);
 
168
 
 
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);
 
175
 
 
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);
 
182
 
 
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);
 
189
 
 
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);
 
196
 
 
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);
 
203
 
 
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);
 
210
 
 
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);
 
217
 
 
218
        meter->cp[0].x=60;
 
219
        meter->cp[0].y=104;
 
220
        meter->cp[1].x=122;
 
221
        meter->cp[1].y=104;
 
222
 
125
223
}
126
224
 
127
225
 
134
232
        g_return_if_fail(requisition != NULL);
135
233
 
136
234
        requisition->width = 183;
137
 
        requisition->height = 100;
 
235
        requisition->height = 105;
138
236
}
139
237
 
140
238
 
173
271
        attributes.x = widget->allocation.x;
174
272
        attributes.y = widget->allocation.y;
175
273
        attributes.width = 183;
176
 
        attributes.height = 100;
 
274
        attributes.height = 105;
177
275
 
178
276
        attributes.wclass = GDK_INPUT_OUTPUT;
179
277
        attributes.event_mask = gtk_widget_get_events(widget) | GDK_EXPOSURE_MASK;
219
317
 
220
318
 
221
319
        bypass  = INV_VU_METER(widget)->bypass;
222
 
        value   = INV_VU_METER(widget)->value*4;  //add 12dB
 
320
        value   = INV_VU_METER(widget)->value*4.4668359215096312; //13db
223
321
 
224
322
        style   = gtk_widget_get_style(widget);
225
323
 
227
325
        cr = gdk_cairo_create(widget->window);
228
326
 
229
327
        if(mode==INV_VU_METER_DRAW_ALL) {
230
 
                cairo_set_source_rgb(cr, 1.0, 1.0, 0.9);
 
328
 
 
329
                cairo_set_source_rgb(cr, 1.0, 0.90, 0.65);
231
330
                cairo_paint(cr);
232
331
 
 
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);
 
335
 
 
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);
 
340
                cairo_stroke(cr);
 
341
 
 
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);
 
346
                cairo_stroke(cr);
 
347
 
 
348
                cairo_set_antialias (cr,CAIRO_ANTIALIAS_DEFAULT);
 
349
 
 
350
                cairo_set_line_width(cr,1.5);
 
351
                cairo_set_source_rgb(cr, 0.15, 0.12, 0.08);
 
352
 
 
353
                //VU label
 
354
                cairo_select_font_face(cr,"sans-serif",CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD);
 
355
                cairo_set_font_size(cr,13);
 
356
                strcpy(label,"VU");
 
357
//              cairo_text_extents (cr,label,&extents);
 
358
                cairo_move_to(cr,6,99);
 
359
                cairo_show_text(cr,label);
 
360
 
 
361
                cairo_select_font_face(cr,"sans-serif",CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL);
 
362
                cairo_set_font_size(cr,10);
 
363
 
 
364
 
 
365
                //scale marks
 
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);
 
368
 
 
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);
 
371
 
 
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);
 
374
 
 
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);
 
377
 
 
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);
 
380
 
 
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);
 
383
 
 
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);
 
386
 
 
387
                cairo_stroke(cr);
 
388
 
 
389
                //arc
 
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]);
 
392
                cairo_stroke(cr);
 
393
 
 
394
 
 
395
                //+labels
 
396
                strcpy(label,"20");
 
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);
 
400
 
 
401
                strcpy(label,"10");
 
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);
 
405
 
 
406
                strcpy(label,"7");
 
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);
 
410
 
 
411
                strcpy(label,"5");
 
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);
 
415
 
 
416
                strcpy(label,"3");
 
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);
 
420
 
 
421
                strcpy(label,"2");
 
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);
 
425
 
 
426
                strcpy(label,"1");
 
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);
 
429
 
 
430
 
 
431
                // minus sign
 
432
                cairo_rectangle(cr,6,11,12,2);
 
433
                cairo_fill(cr);
 
434
 
 
435
 
 
436
                //scale marks
 
437
                cairo_set_line_width(cr,1.5);
 
438
                cairo_set_source_rgb(cr, 0.80, 0.22, 0.15);
 
439
 
 
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);
 
442
 
 
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);
 
445
 
 
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);
 
448
 
 
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);
 
451
 
 
452
                cairo_stroke(cr);
 
453
 
 
454
                //arc
 
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]);
 
457
                cairo_stroke(cr);
 
458
 
 
459
 
 
460
                //+labels
 
461
                strcpy(label,"0");
 
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);
 
464
 
 
465
                strcpy(label,"1");
 
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);
 
468
 
 
469
                strcpy(label,"2");
 
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);
 
472
 
 
473
                strcpy(label,"3");
 
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);
 
476
 
 
477
                //plus sign
 
478
                cairo_rectangle(cr,166,11,12,2);
 
479
                cairo_fill(cr);
 
480
                cairo_rectangle(cr,171,6,2,12);
 
481
                cairo_fill(cr);
 
482
 
233
483
        }
234
484
 
235
 
        cairo_set_source_rgb(cr, 1.0, 1.0, 0.9);
236
 
        cairo_paint(cr);
 
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);
 
491
        cairo_clip(cr);
237
492
 
 
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);
242
499
        
243
500
        cairo_destroy(cr);