Mercurial > hg > forks > geeqie
changeset 2335:aa2e9d37193b
Image overlay configurable colours
User configurable options to set the colours of the Image Overlay text
and background
author | Colin Clark <cclark@mcb.net> |
---|---|
date | Wed, 18 May 2016 20:36:07 +0100 |
parents | e38178f556f6 |
children | 04692d128264 |
files | src/image-overlay.c src/options.c src/options.h src/preferences.c src/rcfile.c |
diffstat | 5 files changed, 114 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/image-overlay.c Wed May 18 12:13:12 2016 +0100 +++ b/src/image-overlay.c Wed May 18 20:36:07 2016 +0100 @@ -686,9 +686,9 @@ if (width > 0 && height > 0) { - /* TODO: make osd color configurable --Zas */ pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, width, height); - pixbuf_set_rect_fill(pixbuf, 3, 3, width-6, height-6, 240, 240, 240, 210); + pixbuf_set_rect_fill(pixbuf, 3, 3, width-6, height-6, options->image_overlay.background_red, options->image_overlay.background_green, + options->image_overlay.background_blue, options->image_overlay.background_alpha); pixbuf_set_rect(pixbuf, 0, 0, width, height, 240, 240, 240, 80, 1, 1, 1, 1); pixbuf_set_rect(pixbuf, 1, 1, width-2, height-2, 240, 240, 240, 130, 1, 1, 1, 1); pixbuf_set_rect(pixbuf, 2, 2, width-4, height-4, 240, 240, 240, 180, 1, 1, 1, 1); @@ -706,7 +706,8 @@ pixbuf_set_rect_fill(pixbuf, x, y, w, HISTOGRAM_HEIGHT, 220, 220, 220, 210); histogram_draw(osd->histogram, histmap, pixbuf, x, y, w, HISTOGRAM_HEIGHT); } - pixbuf_draw_layout(pixbuf, layout, imd->pr, 5, 5, 0, 0, 0, 255); + pixbuf_draw_layout(pixbuf, layout, imd->pr, 5, 5, options->image_overlay.text_red, options->image_overlay.text_green, + options->image_overlay.text_blue, options->image_overlay.text_alpha); } g_object_unref(G_OBJECT(layout));
--- a/src/options.c Wed May 18 12:13:12 2016 +0100 +++ b/src/options.c Wed May 18 20:36:07 2016 +0100 @@ -89,6 +89,14 @@ options->image_overlay.x = 10; options->image_overlay.y = -10; options->image_overlay.font = NULL; + options->image_overlay.text_red = 0; + options->image_overlay.text_green = 0; + options->image_overlay.text_blue = 0; + options->image_overlay.text_alpha = 255; + options->image_overlay.background_red = 240; + options->image_overlay.background_green = 240; + options->image_overlay.background_blue = 240; + options->image_overlay.background_alpha = 210; options->lazy_image_sync = FALSE; options->mousewheel_scrolls = FALSE;
--- a/src/options.h Wed May 18 12:13:12 2016 +0100 +++ b/src/options.h Wed May 18 20:36:07 2016 +0100 @@ -138,6 +138,14 @@ gchar *template_string; gint x; gint y; + gint text_red; + gint text_green; + gint text_blue; + gint text_alpha; + gint background_red; + gint background_green; + gint background_blue; + gint background_alpha; gchar *font; } image_overlay;
--- a/src/preferences.c Wed May 18 12:13:12 2016 +0100 +++ b/src/preferences.c Wed May 18 20:36:07 2016 +0100 @@ -44,6 +44,7 @@ #define EDITOR_NAME_MAX_LENGTH 32 #define EDITOR_COMMAND_MAX_LENGTH 1024 +static void image_overlay_set_text_colours(); typedef struct _ThumbSize ThumbSize; struct _ThumbSize @@ -287,6 +288,14 @@ if (c_options->image_overlay.font) set_image_overlay_font_string(&options->image_overlay.font, c_options->image_overlay.font); + options->image_overlay.text_red = c_options->image_overlay.text_red; + options->image_overlay.text_green = c_options->image_overlay.text_green; + options->image_overlay.text_blue = c_options->image_overlay.text_blue; + options->image_overlay.text_alpha = c_options->image_overlay.text_alpha; + options->image_overlay.background_red = c_options->image_overlay.background_red; + options->image_overlay.background_green = c_options->image_overlay.background_green; + options->image_overlay.background_blue = c_options->image_overlay.background_blue; + options->image_overlay.background_alpha = c_options->image_overlay.background_alpha; options->update_on_time_change = c_options->update_on_time_change; options->image.exif_rotate_enable = c_options->image.exif_rotate_enable; options->image.exif_proof_rotate_enable = c_options->image.exif_proof_rotate_enable; @@ -1038,6 +1047,52 @@ gtk_widget_destroy(dialog); } +static void image_overlay_set_text_colour_cb(GtkWidget *widget, gpointer data) +{ + GenericDialog *dialog; + GdkRGBA colour; + + dialog = gtk_color_chooser_dialog_new("Image Overlay Text Colour", gtk_widget_get_toplevel(widget)); + colour.red = options->image_overlay.text_red; + colour.green = options->image_overlay.text_green; + colour.blue = options->image_overlay.text_blue; + colour.alpha = options->image_overlay.text_alpha; + gtk_color_chooser_set_rgba(dialog, &colour); + + if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL) + { + gtk_color_chooser_get_rgba(dialog, &colour); + c_options->image_overlay.text_red = colour.red*255; + c_options->image_overlay.text_green = colour.green*255; + c_options->image_overlay.text_blue = colour.blue*255; + c_options->image_overlay.text_alpha = colour.alpha*255; + } + gtk_widget_destroy (dialog); +} + +static void image_overlay_set_background_colour_cb(GtkWidget *widget, gpointer data) +{ + GenericDialog *dialog; + GdkRGBA colour; + + dialog = gtk_color_chooser_dialog_new("Image Overlay Background Colour", gtk_widget_get_toplevel(widget)); + colour.red = options->image_overlay.background_red; + colour.green = options->image_overlay.background_green; + colour.blue = options->image_overlay.background_blue; + colour.alpha = options->image_overlay.background_alpha; + gtk_color_chooser_set_rgba(dialog, &colour); + + if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL) + { + gtk_color_chooser_get_rgba(dialog, &colour); + c_options->image_overlay.background_red = colour.red*255; + c_options->image_overlay.background_green = colour.green*255; + c_options->image_overlay.background_blue = colour.blue*255; + c_options->image_overlay.background_alpha = colour.alpha*255; + } + gtk_widget_destroy (dialog); +} + static void accel_store_populate(void) { LayoutWindow *lw; @@ -1479,6 +1534,17 @@ gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, NULL, 0); gtk_widget_show(button); + button = pref_button_new(NULL, GTK_STOCK_COLOR_PICKER, _("Text"), FALSE, + G_CALLBACK(image_overlay_set_text_colour_cb), NULL); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_widget_show(button); + + button = pref_button_new(NULL, GTK_STOCK_COLOR_PICKER, _("Background"), FALSE, + G_CALLBACK(image_overlay_set_background_colour_cb), NULL); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_widget_show(button); + image_overlay_set_text_colours(); + button = pref_button_new(NULL, NULL, _("Defaults"), FALSE, G_CALLBACK(image_overlay_default_template_cb), image_overlay_template_view); gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); @@ -2306,4 +2372,16 @@ gtk_widget_show(about); } + +static void image_overlay_set_text_colours() +{ + c_options->image_overlay.text_red = options->image_overlay.text_red; + c_options->image_overlay.text_green = options->image_overlay.text_green; + c_options->image_overlay.text_blue = options->image_overlay.text_blue; + c_options->image_overlay.text_alpha = options->image_overlay.text_alpha; + c_options->image_overlay.background_red = options->image_overlay.background_red; + c_options->image_overlay.background_green = options->image_overlay.background_green; + c_options->image_overlay.background_blue = options->image_overlay.background_blue; + c_options->image_overlay.background_alpha = options->image_overlay.background_alpha; +} /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
--- a/src/rcfile.c Wed May 18 12:13:12 2016 +0100 +++ b/src/rcfile.c Wed May 18 20:36:07 2016 +0100 @@ -354,6 +354,14 @@ WRITE_NL(); WRITE_INT(*options, image_overlay.x); WRITE_NL(); WRITE_INT(*options, image_overlay.y); + WRITE_NL(); WRITE_INT(*options, image_overlay.text_red); + WRITE_NL(); WRITE_INT(*options, image_overlay.text_green); + WRITE_NL(); WRITE_INT(*options, image_overlay.text_blue); + WRITE_NL(); WRITE_INT(*options, image_overlay.text_alpha); + WRITE_NL(); WRITE_INT(*options, image_overlay.background_red); + WRITE_NL(); WRITE_INT(*options, image_overlay.background_green); + WRITE_NL(); WRITE_INT(*options, image_overlay.background_blue); + WRITE_NL(); WRITE_INT(*options, image_overlay.background_alpha); WRITE_NL(); WRITE_CHAR(*options, image_overlay.font); /* Slideshow Options */ @@ -616,6 +624,14 @@ if (READ_CHAR(*options, image_overlay.template_string)) continue; if (READ_INT(*options, image_overlay.x)) continue; if (READ_INT(*options, image_overlay.y)) continue; + if (READ_INT(*options, image_overlay.text_red)) continue; + if (READ_INT(*options, image_overlay.text_green)) continue; + if (READ_INT(*options, image_overlay.text_blue)) continue; + if (READ_INT(*options, image_overlay.text_alpha)) continue; + if (READ_INT(*options, image_overlay.background_red)) continue; + if (READ_INT(*options, image_overlay.background_green)) continue; + if (READ_INT(*options, image_overlay.background_blue)) continue; + if (READ_INT(*options, image_overlay.background_alpha)) continue; if (READ_CHAR(*options, image_overlay.font)) continue; /* Slideshow options */