Skip to content

Commit

Permalink
Image overlay configurable font
Browse files Browse the repository at this point in the history
User configurable option to set the font of the Image Overlay text
  • Loading branch information
Colin Clark committed May 18, 2016
1 parent 14c30e3 commit 8b7898a
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 1 deletion.
12 changes: 12 additions & 0 deletions src/image-overlay.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,14 @@ void set_default_image_overlay_template_string(gchar **template_string)
set_image_overlay_template_string(template_string, DEFAULT_OVERLAY_INFO);
}

void set_image_overlay_font_string(gchar **font_string, const gchar *value)
{
g_assert(font_string);

g_free(*font_string);
*font_string = g_strdup(value);
}

static OverlayStateData *image_get_osd_data(ImageWindow *imd)
{
OverlayStateData *osd;
Expand Down Expand Up @@ -493,6 +501,7 @@ static GdkPixbuf *image_osd_info_render(OverlayStateData *osd)
const HistMap *histmap = NULL;
ImageWindow *imd = osd->imd;
FileData *fd = image_get_fd(imd);
PangoFontDescription *font_desc;

if (!fd) return NULL;

Expand Down Expand Up @@ -653,7 +662,10 @@ static GdkPixbuf *image_osd_info_render(OverlayStateData *osd)
}
}

font_desc = pango_font_description_from_string(options->image_overlay.font);
layout = gtk_widget_create_pango_layout(imd->pr, NULL);
pango_layout_set_font_description(layout, font_desc);

pango_layout_set_markup(layout, text, -1);
g_free(text);

Expand Down
1 change: 1 addition & 0 deletions src/options.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ ConfOptions *init_options(ConfOptions *options)
options->image_overlay.template_string = NULL;
options->image_overlay.x = 10;
options->image_overlay.y = -10;
options->image_overlay.font = NULL;

options->lazy_image_sync = FALSE;
options->mousewheel_scrolls = FALSE;
Expand Down
1 change: 1 addition & 0 deletions src/options.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ struct _ConfOptions
gchar *template_string;
gint x;
gint y;
gchar *font;
} image_overlay;

/* properties dialog */
Expand Down
30 changes: 29 additions & 1 deletion src/preferences.c
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,9 @@ static void config_window_apply(void)
if (c_options->image_overlay.template_string)
set_image_overlay_template_string(&options->image_overlay.template_string,
c_options->image_overlay.template_string);

if (c_options->image_overlay.font)
set_image_overlay_font_string(&options->image_overlay.font,
c_options->image_overlay.font);
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;
Expand Down Expand Up @@ -1015,6 +1017,27 @@ static void image_overlay_help_cb(GtkWidget *widget, gpointer data)
help_window_show("overlay");
}

static void image_overlay_set_font_cb(GtkWidget *widget, gpointer data)
{
GenericDialog *dialog;
char *font;
PangoFontDescription *font_desc;

dialog = gtk_font_chooser_dialog_new("Image Overlay Font", gtk_widget_get_toplevel(widget));
gtk_font_chooser_set_font(dialog, options->image_overlay.font);

if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL)
{
font_desc = gtk_font_chooser_get_font_desc(GTK_FONT_CHOOSER(dialog));
font = pango_font_description_to_string(font_desc);
g_free(c_options->image_overlay.font);
c_options->image_overlay.font = g_strdup(font);
g_free(font);
}

gtk_widget_destroy(dialog);
}

static void accel_store_populate(void)
{
LayoutWindow *lw;
Expand Down Expand Up @@ -1451,6 +1474,11 @@ static void config_tab_windows(GtkWidget *notebook)

hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_BUTTON_GAP);

button = pref_button_new(NULL, GTK_STOCK_SELECT_FONT, _("Font"), FALSE,
G_CALLBACK(image_overlay_set_font_cb), notebook);
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, NULL, 0);
gtk_widget_show(button);

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);
Expand Down
2 changes: 2 additions & 0 deletions src/rcfile.c
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,7 @@ static void write_global_attributes(GString *outstr, gint indent)

WRITE_NL(); WRITE_INT(*options, image_overlay.x);
WRITE_NL(); WRITE_INT(*options, image_overlay.y);
WRITE_NL(); WRITE_CHAR(*options, image_overlay.font);

/* Slideshow Options */
WRITE_NL(); WRITE_INT_UNIT(*options, slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION);
Expand Down Expand Up @@ -615,6 +616,7 @@ static gboolean load_global_params(const gchar **attribute_names, const gchar **
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_CHAR(*options, image_overlay.font)) continue;

/* Slideshow options */
if (READ_INT_UNIT(*options, slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION)) continue;
Expand Down

0 comments on commit 8b7898a

Please sign in to comment.