[Sorry for sending again.
Hopefully with 'simpler' mail-client text will be shown
and not hidden by 'Message as HTML' link]
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