+ cairo_set_source_rgba (cr, 0.282, 0.517, 0.662, 0.8);
+ }
+ cairo_new_path (cr);
+ cairo_arc (cr, radius, radius, radius * sin(M_PI * (float) rad / 180.0), 0, 2.0 * M_PI);
+ cairo_stroke (cr);
+ }
+
+ if (!panner_shell->bypassed()) {
+ /* convention top == front ^= azimuth == .5 (same as stereo/mono panners) */
+
+ if (signals.size() > 1) {
+ /* arc to show "diffusion" */
+
+ double width_angle = fabs (panner_shell->pannable()->pan_width_control->get_value()) * 2 * M_PI;
+ double position_angle = panner_shell->pannable()->pan_azimuth_control->get_value() * 2 * M_PI;
+
+ cairo_save (cr);
+ cairo_translate (cr, radius, radius);
+ cairo_rotate (cr, M_PI / 2.0);
+ cairo_rotate (cr, position_angle - (width_angle/2.0));
+ cairo_move_to (cr, 0, 0);
+ cairo_arc_negative (cr, 0, 0, radius, width_angle, 0.0);
+ cairo_close_path (cr);
+ if (panner_shell->pannable()->pan_width_control->get_value() >= 0.0) {
+ /* normal width */
+ cairo_set_source_rgba (cr, 0.282, 0.517, 0.662, 0.45);
+ } else {
+ /* inverse width */
+ cairo_set_source_rgba (cr, 1.0, 0.419, 0.419, 0.45);
+ }
+ cairo_fill (cr);
+ cairo_restore (cr);