Index: xsane/src/xsane-preview.c diff -u xsane/src/xsane-preview.c:1.1.1.1 xsane/src/xsane-preview.c:1.1.1.1.8.1 --- xsane/src/xsane-preview.c:1.1.1.1 Mon Apr 22 18:38:41 2002 +++ xsane/src/xsane-preview.c Wed Jul 3 17:36:22 2002 @@ -182,6 +182,7 @@ static void preview_preset_area_callback(GtkWidget *widget, gpointer call_data); static void preview_rotation_callback(GtkWidget *widget, gpointer call_data); static void preview_autoselect_scanarea_callback(GtkWidget *window, gpointer data); +static void update_color_labels(Preview *p, int x, int y); void preview_do_gamma_correction(Preview *p); void preview_calculate_raw_histogram(Preview *p, SANE_Int *count_raw, SANE_Int *count_raw_red, SANE_Int *count_raw_green, SANE_Int *count_raw_blue); @@ -2440,6 +2441,8 @@ if (!p->scanning) { + update_color_labels(p, event->button.x, event->button.y); + switch (((GdkEventMotion *)event)->state & GDK_Num_Lock & GDK_Caps_Lock & GDK_Shift_Lock & GDK_Scroll_Lock) /* mask all Locks */ { @@ -3425,10 +3428,30 @@ return; } + +static void update_color_labels(Preview *p, int x, int y) { + int red; + int green; + int blue; + char buf[64]; + + preview_get_color(p, x, y, 1, &red, &green, &blue); + + if ( red >= 0 && red < 256 && + green >= 0 && green < 256 && + blue >= 0 && blue < 256 ) { + snprintf(buf, 64, "r: %03d g: %03d b: %03d", red, green, blue); + } else { + snprintf(buf, 64, "r: --- g: --- b: ---"); + } + gtk_label_set_text(GTK_LABEL(p->rgb_values), buf); +} + /* ---------------------------------------------------------------------------------------------------------------------- */ Preview *preview_new(void) { + GtkStyle *style; GtkWidget *table, *frame; GtkSignalFunc signal_func; GtkWidgetClass *class; @@ -3711,17 +3734,26 @@ p->start = gtk_button_new_with_label(BUTTON_PREVIEW_ACQUIRE); xsane_back_gtk_set_tooltip(xsane.tooltips, p->start, DESC_PREVIEW_ACQUIRE); g_signal_connect(GTK_OBJECT(p->start), "clicked", (GtkSignalFunc) preview_start_button_clicked, p); - gtk_box_pack_start(GTK_BOX(hbox), p->start, TRUE, TRUE, 10); + gtk_box_pack_start(GTK_BOX(hbox), p->start, TRUE, TRUE, 5); gtk_widget_add_accelerator(p->start, "clicked", xsane.accelerator_group, GDK_P, GDK_MOD1_MASK, DEF_GTK_ACCEL_LOCKED); /* Alt P */ /* Cancel button */ p->cancel = gtk_button_new_with_label(BUTTON_PREVIEW_CANCEL); xsane_back_gtk_set_tooltip(xsane.tooltips, p->cancel, DESC_PREVIEW_CANCEL); g_signal_connect(GTK_OBJECT(p->cancel), "clicked", (GtkSignalFunc) preview_cancel_button_clicked, p); - gtk_box_pack_start(GTK_BOX(hbox), p->cancel, TRUE, TRUE, 10); + gtk_box_pack_start(GTK_BOX(hbox), p->cancel, TRUE, TRUE, 5); gtk_widget_add_accelerator(p->cancel, "clicked", xsane.accelerator_group, GDK_Escape, GDK_MOD1_MASK, DEF_GTK_ACCEL_LOCKED); /* Alt ESC */ gtk_widget_set_sensitive(p->cancel, FALSE); + /* red/green/blue values */ + p->rgb_values = gtk_label_new("r: --- g: --- b: ---"); + style = gtk_widget_get_style(p->rgb_values); + style = gtk_style_copy(style); + style->font = gdk_font_load("-misc-fixed-medium-r-normal-*-*-120-*-*-c-*-iso8859-1"); + gtk_widget_set_style(p->rgb_values, style); + gtk_box_pack_start(GTK_BOX(hbox), p->rgb_values, TRUE, TRUE, 0); + gtk_widget_show(p->rgb_values); + gtk_widget_show(p->cancel); gtk_widget_show(p->start); gtk_widget_show(p->viewport); @@ -4410,7 +4442,7 @@ { preview_transform_coordinate_window_to_image(p, x, y, &image_x, &image_y); - if ( (image_x < p->image_width) && (image_y < p->image_height) ) + if ( (image_x >= 0) && (image_x < p->image_width) && (image_y >=0) && (image_y < p->image_height) ) { image_x_min = image_x - range/2; image_y_min = image_y - range/2; Index: xsane/src/xsane-preview.h diff -u xsane/src/xsane-preview.h:1.1.1.1 xsane/src/xsane-preview.h:1.1.1.1.8.1 --- xsane/src/xsane-preview.h:1.1.1.1 Mon Apr 22 18:38:41 2002 +++ xsane/src/xsane-preview.h Wed Jul 3 17:36:22 2002 @@ -156,6 +156,7 @@ GtkWidget *window; /* the preview window */ GtkWidget *start; /* the start button */ GtkWidget *cancel; /* the cancel button */ + GtkWidget *rgb_values; GtkWidget *button_box; /* hbox for the following buttons */ GtkWidget *pipette_white; /* pipette white button */