From 7334bdfa51778d143958811bd38d4719fcbf72f0 Mon Sep 17 00:00:00 2001
From: Bert <ber.t@gmx.com>
Date: Sun, 27 Feb 2011 13:03:16 +0100
Subject: [PATCH] Revert "Save rotated png-files with S-key"

This reverts commit 090ee5405b70d6dfa16a8ca3a691dbd556c41bdb.
---
 Makefile |  2 +-
 image.c  | 37 ++++--------------------------
 image.h  |  3 ---
 main.c   | 68 +++++++++++++++++++++++++++++++++-----------------------
 thumbs.c | 18 ++++-----------
 thumbs.h |  3 +--
 6 files changed, 50 insertions(+), 81 deletions(-)

diff --git a/Makefile b/Makefile
index 6a9da5c..e628d72 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 all: sxiv
 
-VERSION=git-20110227
+VERSION=0.7
 
 CC?=gcc
 PREFIX?=/usr/local
diff --git a/image.c b/image.c
index 45e0926..5a69c20 100644
--- a/image.c
+++ b/image.c
@@ -16,7 +16,6 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#include <string.h>
 #include <unistd.h>
 
 #include "config.h"
@@ -29,9 +28,6 @@ int zl_cnt;
 float zoom_min;
 float zoom_max;
 
-const short ori_left[8] = { 8, 7, 6, 5, 2, 1, 4, 3 };
-const short ori_right[8] = { 6, 5, 8, 7, 4, 3, 2, 1 };
-
 Imlib_Image *im_broken;
 
 void img_init(img_t *img, win_t *win) {
@@ -94,8 +90,8 @@ int img_load(img_t *img, const char *filename) {
 		img->scalemode = SCALE_DOWN;
 	}
 
-	img->ori = img->o_ori = 1;
-	img->re = img->checkpan = 0;
+	img->re = 0;
+	img->checkpan = 0;
 
 	img->w = imlib_image_get_width();
 	img->h = imlib_image_get_height();
@@ -103,25 +99,6 @@ int img_load(img_t *img, const char *filename) {
 	return 1;
 }
 
-int img_save(img_t *img) {
-	const char *fmt;
-
-	if (!img || !img->im)
-		return 0;
-
-	imlib_context_set_image(img->im);
-
-	if (img->ori != img->o_ori) {
-		fmt = imlib_image_format();
-		if (strcmp(fmt, "png") == 0) {
-			imlib_save_image(imlib_image_get_filename());
-			return 1;
-		}
-	}
-
-	return 0;
-}
-
 void img_close(img_t *img) {
 	if (img && img->im) {
 		imlib_context_set_image(img->im);
@@ -364,17 +341,11 @@ void img_rotate(img_t *img, win_t *win, int d) {
 }
 
 void img_rotate_left(img_t *img, win_t *win) {
-	if (img) {
-		img_rotate(img, win, 3);
-		img->ori = ori_left[img->ori];
-	}
+	img_rotate(img, win, 3);
 }
 
 void img_rotate_right(img_t *img, win_t *win) {
-	if (img) {
-		img_rotate(img, win, 1);
-		img->ori = ori_right[img->ori];
-	}
+	img_rotate(img, win, 1);
 }
 
 void img_toggle_antialias(img_t *img) {
diff --git a/image.h b/image.h
index 40024a5..8c6beec 100644
--- a/image.h
+++ b/image.h
@@ -41,8 +41,6 @@ typedef struct img_s {
 
 	float zoom;
 	scalemode_t scalemode;
-	short ori;
-	short o_ori;
 
 	unsigned char re;
 	unsigned char checkpan;
@@ -59,7 +57,6 @@ void img_free(img_t*);
 
 int img_check(const char*);
 int img_load(img_t*, const char*);
-int img_save(img_t*);
 void img_close(img_t*);
 
 void img_render(img_t*, win_t*);
diff --git a/main.c b/main.c
index fc98304..a36e5a2 100644
--- a/main.c
+++ b/main.c
@@ -69,11 +69,10 @@ void cleanup() {
 	}
 }
 
-int load_image(int new) {
+int load_image() {
 	struct stat fstats;
 
 	img_close(&img);
-	fileidx = new;
 
 	if (!stat(filenames[fileidx], &fstats))
 		filesize = fstats.st_size;
@@ -141,7 +140,7 @@ int main(int argc, char **argv) {
 	} else {
 		mode = MODE_NORMAL;
 		tns.thumbs = NULL;
-		load_image(fileidx);
+		load_image();
 		img_render(&img, &win);
 	}
 
@@ -308,29 +307,41 @@ void on_keypress(XKeyEvent *kev) {
 			/* navigate image list */
 			case XK_n:
 			case XK_space:
-				if (fileidx + 1 < filecnt)
-					changed = load_image(fileidx + 1);
+				if (fileidx + 1 < filecnt) {
+					++fileidx;
+					changed = load_image();
+				}
 				break;
 			case XK_p:
 			case XK_BackSpace:
-				if (fileidx > 0)
-					changed = load_image(fileidx - 1);
+				if (fileidx > 0) {
+					--fileidx;
+					changed = load_image();
+				}
 				break;
 			case XK_bracketleft:
-				if (fileidx != 0)
-					changed = load_image(MAX(0, fileidx - 10));
+				if (fileidx != 0) {
+					fileidx = MAX(0, fileidx - 10);
+					changed = load_image();
+				}
 				break;
 			case XK_bracketright:
-				if (fileidx != filecnt - 1)
-					changed = load_image(MIN(fileidx + 10, filecnt - 1));
+				if (fileidx != filecnt - 1) {
+					fileidx = MIN(fileidx + 10, filecnt - 1);
+					changed = load_image();
+				}
 				break;
 			case XK_g:
-				if (fileidx != 0)
-					changed = load_image(0);
+				if (fileidx != 0) {
+					fileidx = 0;
+					changed = load_image();
+				}
 				break;
 			case XK_G:
-				if (fileidx != filecnt - 1)
-					changed = load_image(filecnt - 1);
+				if (fileidx != filecnt - 1) {
+					fileidx = filecnt - 1;
+					changed = load_image();
+				}
 				break;
 
 			/* zooming */
@@ -407,11 +418,7 @@ void on_keypress(XKeyEvent *kev) {
 				changed = 1;
 				break;
 			case XK_r:
-				changed = load_image(fileidx);
-				break;
-			case XK_S:
-			  if (img_save(&img))
-					tns_load(&tns, &win, fileidx, filenames[fileidx]);
+				changed = load_image();
 				break;
 		}
 	} else {
@@ -419,7 +426,8 @@ void on_keypress(XKeyEvent *kev) {
 		switch (ksym) {
 			/* open selected image */
 			case XK_Return:
-				load_image(tns.sel);
+				fileidx = tns.sel;
+				load_image();
 				mode = MODE_NORMAL;
 				win_set_cursor(&win, CURSOR_NONE);
 				changed = 1;
@@ -488,8 +496,10 @@ void on_buttonpress(XButtonEvent *bev) {
 	if (mode == MODE_NORMAL) {
 		switch (bev->button) {
 			case Button1:
-				if (fileidx + 1 < filecnt)
-					changed = load_image(fileidx + 1);
+				if (fileidx + 1 < filecnt) {
+					++fileidx;
+					changed = load_image();
+				}
 				break;
 			case Button2:
 				mox = bev->x;
@@ -499,8 +509,10 @@ void on_buttonpress(XButtonEvent *bev) {
 				drag = 1;
 				break;
 			case Button3:
-				if (fileidx > 0)
-					changed = load_image(fileidx - 1);
+				if (fileidx > 0) {
+					--fileidx;
+					changed = load_image();
+				}
 				break;
 			case Button4:
 				if (mask == ControlMask)
@@ -531,7 +543,8 @@ void on_buttonpress(XButtonEvent *bev) {
 			case Button1:
 				if ((sel = tns_translate(&tns, bev->x, bev->y)) >= 0) {
 					if (sel == tns.sel) {
-						load_image(tns.sel);
+						fileidx = tns.sel;
+						load_image();
 						mode = MODE_NORMAL;
 						timo_cursor = TO_CURSOR_HIDE;
 					} else {
@@ -587,8 +600,7 @@ void run() {
 			gettimeofday(&t0, 0);
 
 			while (!XPending(win.env.dpy) && tns.cnt < filecnt) {
-				/* tns.cnt is increased inside tns_load */
-				tns_load(&tns, &win, tns.cnt, filenames[tns.cnt]);
+				tns_load(&tns, &win, filenames[tns.cnt]);
 				gettimeofday(&t1, 0);
 				if (TV_TO_DOUBLE(t1) - TV_TO_DOUBLE(t0) >= 0.25)
 					break;
diff --git a/thumbs.c b/thumbs.c
index df44c6f..e60bdc7 100644
--- a/thumbs.c
+++ b/thumbs.c
@@ -35,7 +35,6 @@ void tns_init(tns_t *tns, int cnt) {
 	tns->cnt = tns->first = tns->sel = 0;
 	tns->thumbs = (thumb_t*) s_malloc(cnt * sizeof(thumb_t));
 	memset(tns->thumbs, 0, cnt * sizeof(thumb_t));
-	tns->cap = cnt;
 	tns->dirty = 0;
 }
 
@@ -52,7 +51,7 @@ void tns_free(tns_t *tns, win_t *win) {
 	tns->thumbs = NULL;
 }
 
-void tns_load(tns_t *tns, win_t *win, int n, const char *filename) {
+void tns_load(tns_t *tns, win_t *win, const char *filename) {
 	int w, h;
 	float z, zw, zh;
 	thumb_t *t;
@@ -61,17 +60,10 @@ void tns_load(tns_t *tns, win_t *win, int n, const char *filename) {
 	if (!tns || !win || !filename)
 		return;
 
-	if (n >= tns->cap)
-		return;
-	else if (n >= tns->cnt)
-		tns->cnt = n + 1;
-
-	if ((im = imlib_load_image(filename))) {
+	if ((im = imlib_load_image(filename)))
 		imlib_context_set_image(im);
-		imlib_image_set_changes_on_disk();
-	} else {
+	else
 		imlib_context_set_image(im_broken);
-	}
 
 	w = imlib_image_get_width();
 	h = imlib_image_get_height();
@@ -81,12 +73,10 @@ void tns_load(tns_t *tns, win_t *win, int n, const char *filename) {
 	if (!im && z > 1.0)
 		z = 1.0;
 
-	t = &tns->thumbs[n];
+	t = &tns->thumbs[tns->cnt++];
 	t->w = z * w;
 	t->h = z * h;
 
-	if (t->pm)
-		win_free_pixmap(win, t->pm);
 	t->pm = win_create_pixmap(win, t->w, t->h);
 	imlib_context_set_drawable(t->pm);
 	imlib_context_set_anti_alias(1);
diff --git a/thumbs.h b/thumbs.h
index 0e3650e..62d2c72 100644
--- a/thumbs.h
+++ b/thumbs.h
@@ -38,7 +38,6 @@ typedef struct thumb_s {
 
 typedef struct tns_s {
 	thumb_t *thumbs;
-	int cap;
 	int cnt;
 	int x;
 	int y;
@@ -52,7 +51,7 @@ typedef struct tns_s {
 void tns_init(tns_t*, int);
 void tns_free(tns_t*, win_t*);
 
-void tns_load(tns_t*, win_t*, int, const char*);
+void tns_load(tns_t*, win_t*, const char*);
 
 void tns_render(tns_t*, win_t*);
 void tns_highlight(tns_t*, win_t*, int, Bool);