Attached is a home-made patch to allow printing of pixel info to standard output.
regards -- yotam
diff --git a/src/layout.c b/src/layout.c index b0958f6..7e5e90f 100644 --- a/src/layout.c +++ b/src/layout.c @@ -2269,6 +2269,8 @@ void layout_write_attributes(LayoutOptions *layout, GString *outstr, gint indent WRITE_NL(); WRITE_BOOL(*layout, toolbar_hidden); WRITE_NL(); WRITE_BOOL(*layout, show_info_pixel); + WRITE_NL(); write_bool_option(outstr, indent, "output_pixel_info", + options->image.output_pixel_info); WRITE_NL(); WRITE_UINT(*layout, image_overlay.state); WRITE_NL(); WRITE_INT(*layout, image_overlay.histogram_channel); @@ -2340,6 +2342,11 @@ void layout_load_attributes(LayoutOptions *layout, const gchar **attribute_names if (READ_BOOL(*layout, tools_hidden)) continue; if (READ_BOOL(*layout, toolbar_hidden)) continue; if (READ_BOOL(*layout, show_info_pixel)) continue; + if (read_bool_option(option, "output_pixel_info", value, + &options->image.output_pixel_info)) + { + continue; + } if (READ_UINT(*layout, image_overlay.state)) continue; if (READ_INT(*layout, image_overlay.histogram_channel)) continue; diff --git a/src/layout_image.c b/src/layout_image.c index c6db03e..6c62326 100644 --- a/src/layout_image.c +++ b/src/layout_image.c @@ -1352,6 +1352,11 @@ static void layout_image_button_cb(ImageWindow *imd, GdkEventButton *event, gpoi LayoutWindow *lw = data; GtkWidget *menu; + if (options->image.output_pixel_info) + { + return; + } + switch (event->button) { case MOUSE_BUTTON_LEFT: diff --git a/src/layout_util.c b/src/layout_util.c index 491194e..bdaf8fc 100644 --- a/src/layout_util.c +++ b/src/layout_util.c @@ -47,6 +47,7 @@ #include "metadata.h" #include "rcfile.h" #include "desktop_file.h" +#include "options.h" #include <gdk/gdkkeysyms.h> /* for keyboard values */ @@ -800,6 +801,16 @@ static void layout_menu_info_pixel_cb(GtkToggleAction *action, gpointer data) layout_info_pixel_set(lw, !lw->options.show_info_pixel); } +static void layout_menu_output_pixel_cb(GtkToggleAction *action, gpointer data) +{ + LayoutWindow *lw = data; + + if (options->image.output_pixel_info != gtk_toggle_action_get_active(action)) + { + options->image.output_pixel_info = !options->image.output_pixel_info; + } +} + /* NOTE: these callbacks are called also from layout_util_sync_views */ static void layout_menu_bar_cb(GtkToggleAction *action, gpointer data) { @@ -1362,6 +1373,7 @@ static GtkToggleActionEntry menu_toggle_entries[] = { { "Thumbnails", PIXBUF_INLINE_ICON_THUMB,N_("Show _Thumbnails"), "T", N_("Show Thumbnails"), CB(layout_menu_thumb_cb), FALSE }, { "ShowMarks", NULL, N_("Show _Marks"), "M", N_("Show Marks"), CB(layout_menu_marks_cb), FALSE }, { "ShowInfoPixel", GTK_STOCK_COLOR_PICKER, N_("Pi_xel Info"), NULL, N_("Show Pixel Info"), CB(layout_menu_info_pixel_cb), FALSE }, + { "OutputPixelInfo", NULL, N_("Pixel _Output"), NULL, N_("Output Pixel Info"), CB(layout_menu_output_pixel_cb), FALSE }, { "FloatTools", PIXBUF_INLINE_ICON_FLOAT,N_("_Float file list"), "L", N_("Float file list"), CB(layout_menu_float_cb), FALSE }, { "HideToolbar", NULL, N_("Hide tool_bar"), NULL, N_("Hide toolbar"), CB(layout_menu_toolbar_cb), FALSE }, { "SBar", NULL, N_("_Info sidebar"), "<control>K", N_("Info sidebar"), CB(layout_menu_bar_cb), FALSE }, @@ -1585,6 +1597,7 @@ static const gchar *menu_ui_description = " <menuitem action='SBar'/>" " <menuitem action='SBarSort'/>" " <menuitem action='ShowInfoPixel'/>" +" <menuitem action='OutputPixelInfo'/>" " <placeholder name='ToolsSection'/>" " <separator/>" " <menuitem action='SlideShow'/>" @@ -2350,6 +2363,9 @@ static void layout_util_sync_views(LayoutWindow *lw) action = gtk_action_group_get_action(lw->action_group, "ShowInfoPixel"); gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.show_info_pixel); + action = gtk_action_group_get_action(lw->action_group, "OutputPixelInfo"); + gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), options->image.output_pixel_info); + action = gtk_action_group_get_action(lw->action_group, "ShowMarks"); gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.show_marks); diff --git a/src/options.c b/src/options.c index ea652c3..4d0fffc 100644 --- a/src/options.c +++ b/src/options.c @@ -81,6 +81,7 @@ ConfOptions *init_options(ConfOptions *options) options->image.zoom_mode = ZOOM_RESET_NONE; options->image.zoom_quality = GDK_INTERP_BILINEAR; options->image.zoom_to_fit_allow_expand = FALSE; + options->image.output_pixel_info = FALSE; options->image_overlay.template_string = NULL; options->image_overlay.x = 10; diff --git a/src/options.h b/src/options.h index da59a44..762de4c 100644 --- a/src/options.h +++ b/src/options.h @@ -67,6 +67,7 @@ struct _ConfOptions gboolean zoom_to_fit_allow_expand; guint zoom_quality; gint zoom_increment; /* 10 is 1.0, 5 is 0.05, 20 is 2.0, etc. */ + gboolean output_pixel_info; gboolean use_custom_border_color_in_fullscreen; gboolean use_custom_border_color; diff --git a/src/pixbuf-renderer.c b/src/pixbuf-renderer.c index c553f59..dd94e50 100644 --- a/src/pixbuf-renderer.c +++ b/src/pixbuf-renderer.c @@ -19,7 +19,6 @@ #include "pixbuf-renderer.h" #include "intl.h" -#include "layout.h" #include <gtk/gtk.h> @@ -3922,6 +3921,20 @@ static gboolean pr_mouse_release_cb(GtkWidget *widget, GdkEventButton *bevent, g pr = PIXBUF_RENDERER(widget); + if (options->image.output_pixel_info) + { + gint x_pixel, y_pixel; + pixbuf_renderer_get_mouse_position(pr, &x_pixel, &y_pixel); + if (x_pixel >= 0 && y_pixel >= 0) + { + gint r_mouse, g_mouse, b_mouse; + pixbuf_renderer_get_pixel_colors(pr, x_pixel, y_pixel, + &r_mouse, &g_mouse, &b_mouse); + printf("%d %d [rgb %02x %02x %02x]\n", + x_pixel, y_pixel, r_mouse, g_mouse, b_mouse); + } + } + if (pr->scroller_id) { pr_scroller_stop(pr);
------------------------------------------------------------------------------
_______________________________________________ Geeqie-devel mailing list Geeqie-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geeqie-devel