- if (_session) {
- speed = _session->transport_speed ();
- }
-
- /* Marker */
- float visual_fraction = std::min (1.0f, speed / shuttle_max_speed);
- float marker_size = get_height() - 5.0;
- float avail_width = get_width() - marker_size - 4;
- float x = get_width() * 0.5 + visual_fraction * avail_width * 0.5;
-// cairo_set_source_rgb (cr, 0, 1, 0.0);
- cairo_set_source (cr, pattern);
- if (speed == 1.0) {
- cairo_move_to( cr, x, 2.5);
- cairo_line_to( cr, x + marker_size * .577, 2.5 + marker_size * 0.5);
- cairo_line_to( cr, x, 2.5 + marker_size);
- cairo_close_path(cr);
- } else if ( speed ==0.0 )
- rounded_rectangle (cr, x, 2.5, marker_size, marker_size, 1);
- else
- cairo_arc (cr, x, 2.5 + marker_size * .5, marker_size * 0.47, 0, 2.0 * M_PI);
- cairo_set_line_width (cr, 1.75);
+void
+ShuttleControl::render (Cairo::RefPtr<Cairo::Context> const& ctx, cairo_rectangle_t*)
+{
+ cairo_t* cr = ctx->cobj();
+ // center slider line
+ float yc = get_height() / 2;
+ float lw = 3;
+ cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
+ cairo_set_line_width (cr, 3);
+ cairo_move_to (cr, lw, yc);
+ cairo_line_to (cr, get_width () - lw, yc);
+ cairo_set_source_rgb (cr, bg_r, bg_g, bg_b);
+ if (UIConfiguration::instance().get_widget_prelight() && _hovering) {
+ cairo_stroke_preserve (cr);
+ cairo_set_source_rgba (cr, 1, 1, 1, 0.15);
+ }