From: Colin Clark Date: Thu, 4 Oct 2018 15:16:25 +0000 (+0100) Subject: Ref #160: Replace print dialog by standard GTK dialog X-Git-Tag: v1.5~68 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=9341482f94420d22ec510da3f29b198a1ac0c460 Ref #160: Replace print dialog by standard GTK dialog https://github.com/BestImageViewer/geeqie/issues/160 Rotate to exif orientation --- diff --git a/src/print.c b/src/print.c index 6506ac59..8032ac33 100644 --- a/src/print.c +++ b/src/print.c @@ -21,8 +21,10 @@ #include "main.h" #include "print.h" +#include "exif.h" #include "filedata.h" #include "image-load.h" +#include "pixbuf_util.h" #include "ui_misc.h" #include "ui_fileops.h" @@ -527,6 +529,7 @@ static void draw_page(GtkPrintOperation *operation, GtkPrintContext *context, gdouble height_offset; GdkPixbuf *pixbuf; GdkPixbuf *pixbuf_scaled; + GdkPixbuf *rotated = NULL; PangoLayout *layout_image = NULL; PangoLayout *layout_page = NULL; PangoFontDescription *desc; @@ -543,12 +546,18 @@ static void draw_page(GtkPrintOperation *operation, GtkPrintContext *context, GtkTextIter start, end; gchar *tmp; + fd = g_list_nth_data(pw->source_selection, page_nr); + pixbuf = g_list_nth_data(pw->print_pixbuf_queue, page_nr); + if (fd->exif_orientation != EXIF_ORIENTATION_TOP_LEFT) + { + rotated = pixbuf_apply_orientation(pixbuf, fd->exif_orientation); + pixbuf = rotated; + } + pixbuf_image_width = gdk_pixbuf_get_width(pixbuf); pixbuf_image_height = gdk_pixbuf_get_height(pixbuf); - fd = g_list_nth_data(pw->source_selection, page_nr); - if (options->printer.show_image_text) { if (pw->text_fields & TEXT_INFO_FILENAME) @@ -749,6 +758,7 @@ static void draw_page(GtkPrintOperation *operation, GtkPrintContext *context, } g_object_unref(pixbuf_scaled); + if (rotated) g_object_unref(rotated); return; }