static void draw_action_volume (GsdMediaKeysWindow *window, cairo_t *cr) { int window_width; int window_height; double icon_box_width; double icon_box_height; double icon_box_x0; double icon_box_y0; double volume_box_x0; double volume_box_y0; double volume_box_width; double volume_box_height; gboolean res; gtk_window_get_size (GTK_WINDOW (window), &window_width, &window_height); icon_box_width = window_width * 0.65; icon_box_height = window_height * 0.65; volume_box_width = icon_box_width; volume_box_height = window_height * 0.05; icon_box_x0 = (window_width - icon_box_width) / 2; icon_box_y0 = (window_height - icon_box_height - volume_box_height) / 2; volume_box_x0 = icon_box_x0; volume_box_y0 = icon_box_height + icon_box_y0; #if 0 g_message ("icon box: w=%f h=%f x0=%f y0=%f", icon_box_width, icon_box_height, icon_box_x0, icon_box_y0); g_message ("volume box: w=%f h=%f x0=%f y0=%f", volume_box_width, volume_box_height, volume_box_x0, volume_box_y0); #endif res = render_speaker (window, cr, icon_box_x0, icon_box_y0, icon_box_width, icon_box_height); if (! res) { double speaker_width; double speaker_height; double speaker_cx; double speaker_cy; double wave_x0; double wave_y0; double wave_radius; speaker_width = icon_box_width * 0.5; speaker_height = icon_box_height * 0.75; speaker_cx = icon_box_x0 + speaker_width / 2; speaker_cy = icon_box_y0 + speaker_height / 2; wave_x0 = window_width / 2; wave_y0 = speaker_cy; wave_radius = icon_box_width / 2; #if 0 g_message ("speaker box: w=%f h=%f cx=%f cy=%f", speaker_width, speaker_height, speaker_cx, speaker_cy); #endif /* draw speaker symbol */ draw_speaker (cr, speaker_cx, speaker_cy, speaker_width, speaker_height); /* draw sound waves */ if (! window->priv->volume_muted) { draw_waves (cr, wave_x0, wave_y0, wave_radius); } } /* draw volume meter */ draw_volume_boxes (window, cr, (double)window->priv->volume_level / 100.0, volume_box_x0, volume_box_y0, volume_box_width, volume_box_height); }
static void draw_action_volume (GsdMediaKeysWindow *window, cairo_t *cr) { int window_width; int window_height; double icon_box_width; double icon_box_height; double icon_box_x0; double icon_box_y0; double volume_box_x0; double volume_box_y0; double volume_box_width; double volume_box_height; gboolean res; gtk_window_get_size (GTK_WINDOW (window), &window_width, &window_height); icon_box_width = round (window_width * ICON_SCALE); icon_box_height = round (window_height * ICON_SCALE); volume_box_width = icon_box_width; volume_box_height = round (window_height * 0.05); icon_box_x0 = round ((window_width - icon_box_width) / 2); icon_box_y0 = round ((window_height - icon_box_height - volume_box_height) / 2 - volume_box_height); volume_box_x0 = round (icon_box_x0); volume_box_y0 = round (icon_box_height + icon_box_y0) + volume_box_height; #if 0 g_message ("icon box: w=%f h=%f _x0=%f _y0=%f", icon_box_width, icon_box_height, icon_box_x0, icon_box_y0); g_message ("volume box: w=%f h=%f _x0=%f _y0=%f", volume_box_width, volume_box_height, volume_box_x0, volume_box_y0); #endif res = render_speaker (window, cr, icon_box_x0, icon_box_y0, icon_box_width, icon_box_height); if (! res) { double speaker_width; double speaker_height; double speaker_cx; double speaker_cy; speaker_width = icon_box_width * 0.5; speaker_height = icon_box_height * 0.75; speaker_cx = icon_box_x0 + speaker_width / 2; speaker_cy = icon_box_y0 + speaker_height / 2; #if 0 g_message ("speaker box: w=%f h=%f cx=%f cy=%f", speaker_width, speaker_height, speaker_cx, speaker_cy); #endif /* draw speaker symbol */ draw_speaker (cr, speaker_cx, speaker_cy, speaker_width, speaker_height); if (! window->priv->volume_muted) { /* draw sound waves */ double wave_x0; double wave_y0; double wave_radius; wave_x0 = window_width / 2; wave_y0 = speaker_cy; wave_radius = icon_box_width / 2; draw_waves (cr, wave_x0, wave_y0, wave_radius, window->priv->volume_level); } else { /* draw 'mute' cross */ double cross_x0; double cross_y0; double cross_size; cross_size = speaker_width * 3 / 4; cross_x0 = icon_box_x0 + icon_box_width - cross_size; cross_y0 = speaker_cy; draw_cross (cr, cross_x0, cross_y0, cross_size); } } /* draw volume meter */ draw_volume_boxes (window, cr, (double)window->priv->volume_level / 100.0, volume_box_x0, volume_box_y0, volume_box_width, volume_box_height); }
void Panner::draw ( void ) { draw_box(); // draw_box( FL_FLAT_BOX, x(), y(), w(), h(), FL_BLACK ); draw_label(); if ( _bypassed ) { fl_color( 0 ); fl_font( FL_HELVETICA, 12 ); fl_draw( "(bypass)", x(), y(), w(), h(), FL_ALIGN_CENTER ); return; } int tw, th, tx, ty; bbox( tx, ty, tw, th ); fl_push_clip( tx, ty, tw, th ); fl_color( FL_RED ); const int b = 10; tx += b; ty += b; tw -= b * 2; th -= b * 2; /* draw perimeter */ { Fl_Color c1, c2; int iter; if ( Fl::belowmouse() == this ) { iter = 12; c1 = fl_darker( FL_RED ); c2 = FL_GRAY; } else { iter = 6; c1 = FL_GRAY; c2 = FL_BLACK; } Fl_Color c = c1; for ( int i = iter; i--; ) { fl_color( c ); fl_arc( tx + (i * (tw / iter)) / 2, ty + (i * (th / iter)) / 2, tw - (i * (tw / iter)), th - (i * ( th / iter )), 0, 360 ); c = fl_color_average( c1, c2, (float)i / iter); } } /* fl_color( FL_WHITE ); */ /* fl_arc( tx, ty, tw, th, 0, 360 ); */ if ( _configs[ _outs ][0] >= 0 ) { for ( int i = _outs; i--; ) { int a = _configs[ _outs ][ i ]; Point p( 1.2f, (float)a ); float px, py; p.axes( &px, &py ); fl_push_matrix(); const int bx = tx + ((tw / 2) * px + (tw / 2)); const int by = ty + ((th / 2) * py + (th / 2)); fl_translate( bx, by ); fl_scale( 5, 5 ); a = 90 - a; fl_rotate( a ); draw_speaker( FL_WHITE ); fl_rotate( -a ); fl_pop_matrix(); } } /* ensure that points are drawn *inside* the circle */ for ( int i = _ins; i--; ) { Point *p = &_points[ i ]; Fl_Color c = (Fl_Color)(10 + i); int px, py, pw, ph; point_bbox( p, &px, &py, &pw, &ph ); /* draw point */ if ( p != drag ) fl_color( c ); else fl_color( FL_WHITE ); fl_pie( px, py, pw, ph, 0, 360 ); /* draw echo */ fl_color( c = fl_darker( c ) ); fl_arc( px - 5, py - 5, pw + 10, ph + 10, 0, 360 ); if ( Fl::belowmouse() == this ) { fl_color( c = fl_darker( c ) ); fl_arc( px - 10, py - 10, pw + 20, ph + 20, 0, 360 ); fl_color( c = fl_darker( c ) ); fl_arc( px - 30, py - 30, pw + 60, ph + 60, 0, 360 ); } /* draw number */ char pat[4]; snprintf( pat, 4, "%d", i + 1 ); fl_color( FL_BLACK ); fl_font( FL_HELVETICA, ph + 2 ); fl_draw( pat, px + 1, py + 1, pw - 1, ph - 1, FL_ALIGN_CENTER ); /* draw line */ /* fl_color( FL_WHITE ); */ /* fl_line( bx + pw() / 2, by + ph() / 2, tx + (tw / 2), ty + (th / 2) ); */ } fl_pop_clip(); }