diff --git a/img/window-levels-4th-gen.gif b/img/window-levels-4th-gen.gif index 3bbc579..3d42c05 100644 Binary files a/img/window-levels-4th-gen.gif and b/img/window-levels-4th-gen.gif differ diff --git a/src/gtkdial.c b/src/gtkdial.c index fce6bcb..a4afaf1 100644 --- a/src/gtkdial.c +++ b/src/gtkdial.c @@ -771,6 +771,30 @@ static void draw_peak(GtkDial *dial, cairo_t *cr, double radius) { cairo_stroke(cr); } +static void show_peak_value(GtkDial *dial, cairo_t *cr) { + double value = round(dial->current_peak); + + if (value <= gtk_adjustment_get_lower(dial->adj)) + return; + + char s[20]; + char *p = s; + if (value < 0) + p += sprintf(p, "−"); + snprintf(p, 10, "%.0f", fabs(value)); + + cairo_text_extents_t extents; + cairo_text_extents(cr, s, &extents); + + cairo_set_source_rgba_dim(cr, 1, 1, 1, 0.5, dial->dim); + cairo_move_to( + cr, + dial->cx - extents.width / 2, + dial->cy + extents.height / 2 + ); + cairo_show_text(cr, s); +} + static void draw_slider( GtkDial *dial, cairo_t *cr, @@ -910,6 +934,10 @@ static void dial_snapshot(GtkWidget *widget, GtkSnapshot *snapshot) { cairo_set_line_width(cr, 2); cairo_stroke(cr); + // show the peak value + if (dial->peak_hold) + show_peak_value(dial, cr); + // if focussed if (has_focus) { cairo_set_source_rgba(cr, 1, 0.125, 0.125, 0.5);