polygon and marker line for mono panner
git-svn-id: svn://localhost/ardour2/branches/3.0@8476 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
669247a4c4
commit
db79f711f8
@ -1922,17 +1922,7 @@ MixerStrip::on_key_release_event (GdkEventKey* ev)
|
|||||||
bool
|
bool
|
||||||
MixerStrip::on_enter_notify_event (GdkEventCrossing*)
|
MixerStrip::on_enter_notify_event (GdkEventCrossing*)
|
||||||
{
|
{
|
||||||
Keyboard::magic_widget_grab_focus ();
|
Keyboard::magic_widget_grab_focus ();
|
||||||
|
|
||||||
if (!panners._bar_spinner_active) {
|
|
||||||
/* This next grab_focus() causes a focus-out event to be sent to, amongst
|
|
||||||
* other things, panner BarControllers. When they receive it, they abort
|
|
||||||
* the use of any SpinButton that might be in use to change pan settings.
|
|
||||||
* Hence we have this horrific hack which stops the grab_focus () call
|
|
||||||
* happening if a bar spinner is active.
|
|
||||||
*/
|
|
||||||
grab_focus ();
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ using namespace std;
|
|||||||
using namespace Gtk;
|
using namespace Gtk;
|
||||||
using namespace Gtkmm2ext;
|
using namespace Gtkmm2ext;
|
||||||
|
|
||||||
static const int pos_box_size = 10;
|
static const int pos_box_size = 9;
|
||||||
static const int lr_box_size = 15;
|
static const int lr_box_size = 15;
|
||||||
static const int step_down = 10;
|
static const int step_down = 10;
|
||||||
static const int top_step = 2;
|
static const int top_step = 2;
|
||||||
@ -144,12 +144,7 @@ MonoPanner::on_expose_event (GdkEventExpose* ev)
|
|||||||
cairo_rectangle (cr, 0, 0, width, height);
|
cairo_rectangle (cr, 0, 0, width, height);
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
|
|
||||||
/* the usable width is reduced from the real width, because we need space for
|
double usable_width = width - pos_box_size;
|
||||||
the two halves of LR boxes that will extend past the actual left/right
|
|
||||||
positions (indicated by the vertical line segment above them).
|
|
||||||
*/
|
|
||||||
|
|
||||||
double usable_width = width - lr_box_size;
|
|
||||||
|
|
||||||
/* compute the centers of the L/R boxes based on the current stereo width */
|
/* compute the centers of the L/R boxes based on the current stereo width */
|
||||||
|
|
||||||
@ -161,7 +156,6 @@ MonoPanner::on_expose_event (GdkEventExpose* ev)
|
|||||||
cairo_translate (cr, 1.0, 0.0);
|
cairo_translate (cr, 1.0, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
double center = (lr_box_size/2.0) + (usable_width * pos);
|
|
||||||
const double half_lr_box = lr_box_size/2.0;
|
const double half_lr_box = lr_box_size/2.0;
|
||||||
double left;
|
double left;
|
||||||
double right;
|
double right;
|
||||||
@ -172,10 +166,10 @@ MonoPanner::on_expose_event (GdkEventExpose* ev)
|
|||||||
/* center line */
|
/* center line */
|
||||||
cairo_set_source_rgba (cr, UINT_RGBA_R_FLT(o), UINT_RGBA_G_FLT(o), UINT_RGBA_B_FLT(o), UINT_RGBA_A_FLT(o));
|
cairo_set_source_rgba (cr, UINT_RGBA_R_FLT(o), UINT_RGBA_G_FLT(o), UINT_RGBA_B_FLT(o), UINT_RGBA_A_FLT(o));
|
||||||
cairo_set_line_width (cr, 1.0);
|
cairo_set_line_width (cr, 1.0);
|
||||||
cairo_move_to (cr, width/2.0, 0);
|
cairo_move_to (cr, (pos_box_size/2.0) + (usable_width/2.0), 0);
|
||||||
cairo_line_to (cr, width/2.0, height);
|
cairo_line_to (cr, (pos_box_size/2.0) + (usable_width/2.0), height);
|
||||||
cairo_stroke (cr);
|
cairo_stroke (cr);
|
||||||
|
|
||||||
/* left box */
|
/* left box */
|
||||||
|
|
||||||
cairo_rectangle (cr,
|
cairo_rectangle (cr,
|
||||||
@ -229,13 +223,30 @@ MonoPanner::on_expose_event (GdkEventExpose* ev)
|
|||||||
|
|
||||||
/* draw the position indicator */
|
/* draw the position indicator */
|
||||||
|
|
||||||
|
double spos = (pos_box_size/2.0) + (usable_width * pos);
|
||||||
|
|
||||||
cairo_set_line_width (cr, 2.0);
|
cairo_set_line_width (cr, 2.0);
|
||||||
cairo_rectangle (cr, lrint (center - (pos_box_size/2.0)), top_step, pos_box_size, pos_box_size);
|
cairo_move_to (cr, spos + (pos_box_size/2.0), top_step); /* top right */
|
||||||
|
cairo_rel_line_to (cr, 0.0, pos_box_size); /* lower right */
|
||||||
|
cairo_rel_line_to (cr, -pos_box_size/2.0, 4.0); /* bottom point */
|
||||||
|
cairo_rel_line_to (cr, -pos_box_size/2.0, -4.0); /* lower left */
|
||||||
|
cairo_rel_line_to (cr, 0.0, -pos_box_size); /* upper left */
|
||||||
|
cairo_close_path (cr);
|
||||||
|
|
||||||
|
|
||||||
cairo_set_source_rgba (cr, UINT_RGBA_R_FLT(po), UINT_RGBA_G_FLT(po), UINT_RGBA_B_FLT(po), UINT_RGBA_A_FLT(po));
|
cairo_set_source_rgba (cr, UINT_RGBA_R_FLT(po), UINT_RGBA_G_FLT(po), UINT_RGBA_B_FLT(po), UINT_RGBA_A_FLT(po));
|
||||||
cairo_stroke_preserve (cr);
|
cairo_stroke_preserve (cr);
|
||||||
cairo_set_source_rgba (cr, UINT_RGBA_R_FLT(pf), UINT_RGBA_G_FLT(pf), UINT_RGBA_B_FLT(pf), UINT_RGBA_A_FLT(pf));
|
cairo_set_source_rgba (cr, UINT_RGBA_R_FLT(pf), UINT_RGBA_G_FLT(pf), UINT_RGBA_B_FLT(pf), UINT_RGBA_A_FLT(pf));
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
|
|
||||||
|
/* marker line */
|
||||||
|
|
||||||
|
cairo_set_line_width (cr, 1.0);
|
||||||
|
cairo_move_to (cr, spos, pos_box_size+4);
|
||||||
|
cairo_rel_line_to (cr, 0, height - (pos_box_size+4));
|
||||||
|
cairo_set_source_rgba (cr, UINT_RGBA_R_FLT(po), UINT_RGBA_G_FLT(po), UINT_RGBA_B_FLT(po), UINT_RGBA_A_FLT(po));
|
||||||
|
cairo_stroke (cr);
|
||||||
|
|
||||||
/* done */
|
/* done */
|
||||||
|
|
||||||
cairo_destroy (cr);
|
cairo_destroy (cr);
|
||||||
|
Loading…
Reference in New Issue
Block a user