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);
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));
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;
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;
#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
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;
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;
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);
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: */
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 */
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 */