- /* 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);
- cairo_stroke (cr);
-
- /* speed text */
-
- char buf[32];
+ /* marker */
+ float visual_fraction = std::max (-1.0f, std::min (1.0f, speed / shuttle_max_speed));
+ float marker_size = round (get_height() * 0.66);
+ float avail_width = get_width() - marker_size;
+ float x = 0.5 * (get_width() + visual_fraction * avail_width - marker_size);