From 0dd07456d361736b8f100c45b3edada6ef4f1e42 Mon Sep 17 00:00:00 2001
From: Olof-Joachim Frahm <olof@macrolet.net>
Date: Thu, 4 Oct 2018 02:18:42 +0200
Subject: Add missing EXIF rotations.

---
 src/gib_imlib.c | 12 ++++++++++++
 src/gib_imlib.h |  2 ++
 src/imlib.c     | 14 +++++++++++++-
 3 files changed, 27 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/gib_imlib.c b/src/gib_imlib.c
index 8f401aa..7858cb7 100644
--- a/src/gib_imlib.c
+++ b/src/gib_imlib.c
@@ -717,3 +717,15 @@ void gib_imlib_image_orientate(Imlib_Image im, int orientation)
   imlib_context_set_image(im);
   imlib_image_orientate(orientation);
 }
+
+void gib_imlib_image_flip_horizontal(Imlib_Image im)
+{
+  imlib_context_set_image(im);
+  imlib_image_flip_horizontal();
+}
+
+void gib_imlib_image_flip_vertical(Imlib_Image im)
+{
+  imlib_context_set_image(im);
+  imlib_image_flip_vertical();
+}
diff --git a/src/gib_imlib.h b/src/gib_imlib.h
index 6a16a0c..07daabe 100644
--- a/src/gib_imlib.h
+++ b/src/gib_imlib.h
@@ -181,6 +181,8 @@ void gib_imlib_parse_color(char *col, int *r, int *g, int *b, int *a);
 void gib_imlib_parse_fontpath(char *path);
 Imlib_Font gib_imlib_load_font(char *name);
 void gib_imlib_image_orientate(Imlib_Image im, int orientation);
+void gib_imlib_image_flip_horizontal(Imlib_Image im);
+void gib_imlib_image_flip_vertical(Imlib_Image im);
 
 #ifdef __cplusplus
 }
diff --git a/src/imlib.c b/src/imlib.c
index f41cdcd..18547a9 100644
--- a/src/imlib.c
+++ b/src/imlib.c
@@ -294,10 +294,22 @@ int feh_load_image(Imlib_Image * im, feh_file * file)
 	}
 	file->ed = exifData;
 
-	if (orientation == 3)
+	if (orientation == 2)
+		gib_imlib_image_flip_horizontal(*im);
+	else if (orientation == 3)
 		gib_imlib_image_orientate(*im, 2);
+	else if (orientation == 4)
+		gib_imlib_image_flip_vertical(*im);
+	else if (orientation == 5) {
+		gib_imlib_image_orientate(*im, 3);
+		gib_imlib_image_flip_vertical(*im);
+	}
 	else if (orientation == 6)
 		gib_imlib_image_orientate(*im, 1);
+	else if (orientation == 7) {
+		gib_imlib_image_orientate(*im, 3);
+		gib_imlib_image_flip_horizontal(*im);
+	}
 	else if (orientation == 8)
 		gib_imlib_image_orientate(*im, 3);
 #endif
-- 
cgit v1.2.3