diff options
| -rw-r--r-- | commands.c | 216 | ||||
| -rw-r--r-- | commands.h | 58 | ||||
| -rw-r--r-- | config.def.h | 154 | ||||
| -rw-r--r-- | image.c | 169 | ||||
| -rw-r--r-- | image.h | 38 | ||||
| -rw-r--r-- | main.c | 85 | ||||
| -rw-r--r-- | options.c | 33 | ||||
| -rw-r--r-- | options.h | 16 | ||||
| -rw-r--r-- | thumbs.c | 79 | ||||
| -rw-r--r-- | thumbs.h | 12 | ||||
| -rw-r--r-- | types.h | 7 | ||||
| -rw-r--r-- | window.c | 29 | ||||
| -rw-r--r-- | window.h | 10 | 
13 files changed, 454 insertions, 452 deletions
@@ -26,17 +26,16 @@  #include "commands.h"  #include "image.h"  #include "thumbs.h" -#include "types.h"  #include "util.h"  void cleanup(); -void remove_file(int, unsigned char); +void remove_file(int, bool);  void load_image(int);  void redraw();  void reset_cursor();  void animate();  void slideshow(); -void set_timeout(timeout_f, int, int); +void set_timeout(timeout_f, int, bool);  void reset_timeout(timeout_f);  extern appmode_t mode; @@ -47,73 +46,73 @@ extern win_t win;  extern fileinfo_t *files;  extern int filecnt, fileidx; -int it_quit(arg_t a) { +bool it_quit(arg_t a) {  	cleanup();  	exit(0);  } -int it_switch_mode(arg_t a) { +bool it_switch_mode(arg_t a) {  	if (mode == MODE_IMAGE) {  		if (!tns.thumbs)  			tns_init(&tns, filecnt); -		img_close(&img, 0); +		img_close(&img, false);  		reset_timeout(reset_cursor);  		if (img.slideshow) { -			img.slideshow = 0; +			img.slideshow = false;  			reset_timeout(slideshow);  		}  		tns.sel = fileidx; -		tns.dirty = 1; +		tns.dirty = true;  		mode = MODE_THUMB;  	} else {  		load_image(tns.sel);  		mode = MODE_IMAGE;  	} -	return 1; +	return true;  } -int it_toggle_fullscreen(arg_t a) { +bool it_toggle_fullscreen(arg_t a) {  	win_toggle_fullscreen(&win); -	set_timeout(redraw, TO_REDRAW_RESIZE, 0); +	set_timeout(redraw, TO_REDRAW_RESIZE, false);  	if (mode == MODE_IMAGE) -		img.checkpan = 1; +		img.checkpan = true;  	else -		tns.dirty = 1; -	return 0; +		tns.dirty = true; +	return false;  } -int it_reload_image(arg_t a) { +bool it_reload_image(arg_t a) {  	if (mode == MODE_IMAGE) {  		load_image(fileidx);  	} else {  		win_set_cursor(&win, CURSOR_WATCH); -		if (!tns_load(&tns, tns.sel, &files[tns.sel], True, False)) { -			remove_file(tns.sel, 0); -			tns.dirty = 1; +		if (!tns_load(&tns, tns.sel, &files[tns.sel], true, false)) { +			remove_file(tns.sel, false); +			tns.dirty = true;  			if (tns.sel >= tns.cnt)  				tns.sel = tns.cnt - 1;  		}  	} -	return 1; +	return true;  } -int it_remove_image(arg_t a) { +bool it_remove_image(arg_t a) {  	if (mode == MODE_IMAGE) { -		remove_file(fileidx, 1); +		remove_file(fileidx, true);  		load_image(fileidx >= filecnt ? filecnt - 1 : fileidx); -		return 1; +		return true;  	} else if (tns.sel < tns.cnt) { -		remove_file(tns.sel, 1); -		tns.dirty = 1; +		remove_file(tns.sel, true); +		tns.dirty = true;  		if (tns.sel >= tns.cnt)  			tns.sel = tns.cnt - 1; -		return 1; +		return true;  	} else { -		return 0; +		return false;  	}  } -int i_navigate(arg_t a) { +bool i_navigate(arg_t a) {  	long n = (long) a;  	if (mode == MODE_IMAGE) { @@ -125,86 +124,83 @@ int i_navigate(arg_t a) {  		if (n != fileidx) {  			load_image(n); -			return 1; +			return true;  		}  	} -	return 0; +	return false;  } -int it_first(arg_t a) { +bool it_first(arg_t a) {  	if (mode == MODE_IMAGE && fileidx != 0) {  		load_image(0); -		return 1; +		return true;  	} else if (mode == MODE_THUMB && tns.sel != 0) {  		tns.sel = 0; -		tns.dirty = 1; -		return 1; +		tns.dirty = true; +		return true;  	} else { -		return 0; +		return false;  	}  } -int it_last(arg_t a) { +bool it_last(arg_t a) {  	if (mode == MODE_IMAGE && fileidx != filecnt - 1) {  		load_image(filecnt - 1); -		return 1; +		return true;  	} else if (mode == MODE_THUMB && tns.sel != tns.cnt - 1) {  		tns.sel = tns.cnt - 1; -		tns.dirty = 1; -		return 1; +		tns.dirty = true; +		return true;  	} else { -		return 0; +		return false;  	}  } -int i_navigate_frame(arg_t a) { +bool i_navigate_frame(arg_t a) {  	if (mode == MODE_IMAGE && !img.multi.animate)  		return img_frame_navigate(&img, (long) a);  	else -		return 0; +		return false;  } -int i_toggle_animation(arg_t a) { -	int delay; - +bool i_toggle_animation(arg_t a) {  	if (mode != MODE_IMAGE) -		return 0; +		return false;  	if (img.multi.animate) {  		reset_timeout(animate); -		img.multi.animate = 0; -	} else { -		delay = img_frame_animate(&img, 1); -		set_timeout(animate, delay, 1); +		img.multi.animate = false; +	} else if (img_frame_animate(&img, true)) { +		set_timeout(animate, img.multi.frames[img.multi.sel].delay, true);  	} -	return 1; +	return true;  } -int it_move(arg_t a) { +bool it_move(arg_t a) {  	direction_t dir = (direction_t) a;  	if (mode == MODE_IMAGE) -		return img_pan(&img, &win, dir, 0); +		return img_pan(&img, &win, dir, false);  	else  		return tns_move_selection(&tns, &win, dir);  } -int i_pan_screen(arg_t a) { +bool i_pan_screen(arg_t a) {  	direction_t dir = (direction_t) a;  	if (mode == MODE_IMAGE) -		return img_pan(&img, &win, dir, 1); +		return img_pan(&img, &win, dir, true);  	else -		return 0; +		return false;  } -int i_pan_edge(arg_t a) { +bool i_pan_edge(arg_t a) {  	direction_t dir = (direction_t) a;  	if (mode == MODE_IMAGE)  		return img_pan_edge(&img, &win, dir);  	else -		return 0; +		return false;  }  /* Xlib helper function for i_drag() */ @@ -212,17 +208,17 @@ Bool is_motionnotify(Display *d, XEvent *e, XPointer a) {  	return e != NULL && e->type == MotionNotify;  } -int i_drag(arg_t a) { +bool i_drag(arg_t a) {  	int dx = 0, dy = 0, i, ox, oy, x, y;  	unsigned int ui; -	Bool dragging = True, next = False; +	bool dragging = true, next = false;  	XEvent e;  	Window w;  	if (mode != MODE_IMAGE) -		return 0; +		return false;  	if (!XQueryPointer(win.env.dpy, win.xwin, &w, &w, &i, &i, &ox, &oy, &ui)) -		return 0; +		return false;  	win_set_cursor(&win, CURSOR_HAND); @@ -233,7 +229,7 @@ int i_drag(arg_t a) {  		switch (e.type) {  			case ButtonPress:  			case ButtonRelease: -				dragging = False; +				dragging = false;  				break;  			case MotionNotify:  				x = e.xmotion.x; @@ -256,17 +252,17 @@ int i_drag(arg_t a) {  	}  	win_set_cursor(&win, CURSOR_ARROW); -	set_timeout(reset_cursor, TO_CURSOR_HIDE, 1); +	set_timeout(reset_cursor, TO_CURSOR_HIDE, true);  	reset_timeout(redraw); -	return 0; +	return false;  } -int i_zoom(arg_t a) { +bool i_zoom(arg_t a) {  	long scale = (long) a;  	if (mode != MODE_IMAGE) -		return 0; +		return false;  	if (scale > 0)  		return img_zoom_in(&img, &win); @@ -276,21 +272,22 @@ int i_zoom(arg_t a) {  		return img_zoom(&img, &win, 1.0);  } -int i_fit_to_win(arg_t a) { -	int ret; +bool i_fit_to_win(arg_t a) { +	bool ret;  	if (mode == MODE_IMAGE) {  		if ((ret = img_fit_win(&img, &win)))  			img_center(&img, &win);  		return ret;  	} else { -		return 0; +		return false;  	}  } -int i_fit_to_img(arg_t a) { -	int ret, x, y; +bool i_fit_to_img(arg_t a) { +	int x, y;  	unsigned int w, h; +	bool ret;  	if (mode == MODE_IMAGE) {  		x = MAX(0, win.x + img.x); @@ -303,90 +300,91 @@ int i_fit_to_img(arg_t a) {  		}  		return ret;  	} else { -		return 0; +		return false;  	}  } -int i_rotate(arg_t a) { +bool i_rotate(arg_t a) {  	direction_t dir = (direction_t) a;  	if (mode == MODE_IMAGE) {  		if (dir == DIR_LEFT) {  			img_rotate_left(&img, &win); -			return 1; +			return true;  		} else if (dir == DIR_RIGHT) {  			img_rotate_right(&img, &win); -			return 1; +			return true;  		}  	} -	return 0; +	return false;  } -int i_toggle_slideshow(arg_t a) { +bool i_toggle_slideshow(arg_t a) {  	if (mode == MODE_IMAGE) {  		if (img.slideshow) { -			img.slideshow = 0; +			img.slideshow = false;  			reset_timeout(slideshow); -			return 1; +			return true;  		} else if (fileidx + 1 < filecnt) { -			img.slideshow = 1; -			set_timeout(slideshow, img.ss_delay, 1); -			return 1; +			img.slideshow = true; +			set_timeout(slideshow, img.ss_delay, true); +			return true;  		}  	} -	return 0; +	return false;  } -int i_adjust_slideshow(arg_t a) { +bool i_adjust_slideshow(arg_t a) {  	long d = (long) a;  	int i, delays[] = { 1, 2, 3, 5, 10, 15, 20, 30, 60, 120, 180, 300, 600 };  	if (mode != MODE_IMAGE || !img.slideshow) -		return 0; +		return false;  	if (d < 0) {  		for (i = ARRLEN(delays) - 2; i >= 0; i--) {  			if (img.ss_delay > delays[i] * 1000) {  				img.ss_delay = delays[i] * 1000; -				return 1; +				return true;  			}  		}  	} else {  		for (i = 1; i < ARRLEN(delays); i++) {  			if (img.ss_delay < delays[i] * 1000) {  				img.ss_delay = delays[i] * 1000; -				return 1; +				return true;  			}  		}  	} -	return 0; +	return false;  } -int i_toggle_antialias(arg_t a) { +bool i_toggle_antialias(arg_t a) {  	if (mode == MODE_IMAGE) {  		img_toggle_antialias(&img); -		return 1; +		return true;  	} else { -		return 0; +		return false;  	}  } -int it_toggle_alpha(arg_t a) { -	img.alpha ^= 1; -	tns.alpha = img.alpha; -	if (mode == MODE_THUMB) -		tns.dirty = 1; -	return 1; +bool it_toggle_alpha(arg_t a) { +	img.alpha = tns.alpha = !img.alpha; +	if (mode == MODE_IMAGE) +		img.dirty = true; +	else +		tns.dirty = true; +	return true;  } -int it_open_with(arg_t a) { +bool it_open_with(arg_t a) {  	const char *prog = (const char*) a;  	pid_t pid;  	if (!prog || !*prog) -		return 0; +		return false; -	if((pid = fork()) == 0) { +	if ((pid = fork()) == 0) {  		execlp(prog, prog,  		       files[mode == MODE_IMAGE ? fileidx : tns.sel].path, NULL);  		warn("could not exec: %s", prog); @@ -395,10 +393,10 @@ int it_open_with(arg_t a) {  		warn("could not fork. program was: %s", prog);  	} -	return 0; +	return false;  } -int it_shell_cmd(arg_t a) { +bool it_shell_cmd(arg_t a) {  	int n, status;  	const char *cmdline = (const char*) a;  	pid_t pid; @@ -411,7 +409,7 @@ int it_shell_cmd(arg_t a) {  	if (setenv("SXIV_IMG", files[n].path, 1) < 0) {  		warn("could not set env.-variable: SXIV_IMG. command line was: %s",  		     cmdline); -		return 0; +		return false;  	}  	if ((pid = fork()) == 0) { @@ -420,7 +418,7 @@ int it_shell_cmd(arg_t a) {  		exit(1);  	} else if (pid < 0) {  		warn("could not fork. command line was: %s", cmdline); -		return 0; +		return false;  	}  	win_set_cursor(&win, CURSOR_WATCH); @@ -431,17 +429,17 @@ int it_shell_cmd(arg_t a) {  		     WEXITSTATUS(status), cmdline);  	if (mode == MODE_IMAGE) { -		img_close(&img, 1); +		img_close(&img, true);  		load_image(fileidx);  	} -	if (!tns_load(&tns, n, &files[n], True, mode == MODE_IMAGE) && +	if (!tns_load(&tns, n, &files[n], true, mode == MODE_IMAGE) &&  	    mode == MODE_THUMB)  	{ -		remove_file(tns.sel, 0); -		tns.dirty = 1; +		remove_file(tns.sel, false); +		tns.dirty = true;  		if (tns.sel >= tns.cnt)  			tns.sel = tns.cnt - 1;  	} -	return 1; +	return true;  } @@ -21,47 +21,49 @@  #include <X11/Xlib.h> +#include "types.h" +  typedef void* arg_t; -typedef int (*command_f)(arg_t); +typedef bool (*command_f)(arg_t);  typedef struct { -	Bool ctrl; +	bool ctrl;  	KeySym ksym;  	command_f cmd;  	arg_t arg;  } keymap_t;  typedef struct { -	Bool ctrl; -	Bool shift; +	bool ctrl; +	bool shift;  	unsigned int button;  	command_f cmd;  	arg_t arg;  } button_t; -int it_quit(arg_t); -int it_switch_mode(arg_t); -int it_toggle_fullscreen(arg_t); -int it_reload_image(arg_t); -int it_remove_image(arg_t); -int i_navigate(arg_t); -int it_first(arg_t); -int it_last(arg_t); -int i_navigate_frame(arg_t); -int i_toggle_animation(arg_t); -int it_move(arg_t); -int i_pan_screen(arg_t); -int i_pan_edge(arg_t); -int i_drag(arg_t); -int i_zoom(arg_t); -int i_fit_to_win(arg_t); -int i_fit_to_img(arg_t); -int i_rotate(arg_t); -int i_toggle_slideshow(arg_t); -int i_adjust_slideshow(arg_t); -int i_toggle_antialias(arg_t); -int it_toggle_alpha(arg_t); -int it_open_with(arg_t); -int it_shell_cmd(arg_t); +bool it_quit(arg_t); +bool it_switch_mode(arg_t); +bool it_toggle_fullscreen(arg_t); +bool it_reload_image(arg_t); +bool it_remove_image(arg_t); +bool i_navigate(arg_t); +bool it_first(arg_t); +bool it_last(arg_t); +bool i_navigate_frame(arg_t); +bool i_toggle_animation(arg_t); +bool it_move(arg_t); +bool i_pan_screen(arg_t); +bool i_pan_edge(arg_t); +bool i_drag(arg_t); +bool i_zoom(arg_t); +bool i_fit_to_win(arg_t); +bool i_fit_to_img(arg_t); +bool i_rotate(arg_t); +bool i_toggle_slideshow(arg_t); +bool i_adjust_slideshow(arg_t); +bool i_toggle_antialias(arg_t); +bool it_toggle_alpha(arg_t); +bool it_open_with(arg_t); +bool it_shell_cmd(arg_t);  #endif /* COMMANDS_H */ diff --git a/config.def.h b/config.def.h index 50cecb8..022bf9a 100644 --- a/config.def.h +++ b/config.def.h @@ -51,96 +51,96 @@ enum { THUMB_SIZE = 60 };  /* keyboard mappings for image and thumbnail mode: */  static const keymap_t keys[] = {  	/* ctrl   key               function              argument */ -	{ False,  XK_q,             it_quit,              (arg_t) None }, -	{ False,  XK_Return,        it_switch_mode,       (arg_t) None }, -	{ False,  XK_f,             it_toggle_fullscreen, (arg_t) None }, - -	{ False,  XK_r,             it_reload_image,      (arg_t) None }, -	{ False,  XK_D,             it_remove_image,      (arg_t) None }, - -	{ False,  XK_n,             i_navigate,           (arg_t) +1 }, -	{ False,  XK_space,         i_navigate,           (arg_t) +1 }, -	{ False,  XK_p,             i_navigate,           (arg_t) -1 }, -	{ False,  XK_BackSpace,     i_navigate,           (arg_t) -1 }, -	{ False,  XK_bracketright,  i_navigate,           (arg_t) +10 }, -	{ False,  XK_bracketleft,   i_navigate,           (arg_t) -10 }, -	{ False,  XK_g,             it_first,             (arg_t) None }, -	{ False,  XK_G,             it_last,              (arg_t) None }, - -	{ True,   XK_n,             i_navigate_frame,     (arg_t) +1 }, -	{ True,   XK_p,             i_navigate_frame,     (arg_t) -1 }, -	{ True,   XK_space,         i_toggle_animation,   (arg_t) None }, - -	{ False,  XK_h,             it_move,              (arg_t) DIR_LEFT }, -	{ False,  XK_Left,          it_move,              (arg_t) DIR_LEFT }, -	{ False,  XK_j,             it_move,              (arg_t) DIR_DOWN }, -	{ False,  XK_Down,          it_move,              (arg_t) DIR_DOWN }, -	{ False,  XK_k,             it_move,              (arg_t) DIR_UP }, -	{ False,  XK_Up,            it_move,              (arg_t) DIR_UP }, -	{ False,  XK_l,             it_move,              (arg_t) DIR_RIGHT }, -	{ False,  XK_Right,         it_move,              (arg_t) DIR_RIGHT }, - -	{ True,   XK_h,             i_pan_screen,         (arg_t) DIR_LEFT }, -	{ True,   XK_Left,          i_pan_screen,         (arg_t) DIR_LEFT }, -	{ True,   XK_j,             i_pan_screen,         (arg_t) DIR_DOWN }, -	{ True,   XK_Down,          i_pan_screen,         (arg_t) DIR_DOWN }, -	{ True,   XK_k,             i_pan_screen,         (arg_t) DIR_UP }, -	{ True,   XK_Up,            i_pan_screen,         (arg_t) DIR_UP }, -	{ True,   XK_l,             i_pan_screen,         (arg_t) DIR_RIGHT }, -	{ True,   XK_Right,         i_pan_screen,         (arg_t) DIR_RIGHT }, - -	{ False,  XK_H,             i_pan_edge,           (arg_t) DIR_LEFT }, -	{ False,  XK_J,             i_pan_edge,           (arg_t) DIR_DOWN }, -	{ False,  XK_K,             i_pan_edge,           (arg_t) DIR_UP }, -	{ False,  XK_L,             i_pan_edge,           (arg_t) DIR_RIGHT }, - -	{ False,  XK_plus,          i_zoom,               (arg_t) +1 }, -	{ False,  XK_equal,         i_zoom,               (arg_t) +1 }, -	{ False,  XK_KP_Add,        i_zoom,               (arg_t) +1 }, -	{ False,  XK_minus,         i_zoom,               (arg_t) -1 }, -	{ False,  XK_KP_Subtract,   i_zoom,               (arg_t) -1 }, -	{ False,  XK_0,             i_zoom,               (arg_t) None }, -	{ False,  XK_KP_0,          i_zoom,               (arg_t) None }, -	{ False,  XK_w,             i_fit_to_win,         (arg_t) None }, -	{ False,  XK_W,             i_fit_to_img,         (arg_t) None }, - -	{ False,  XK_less,          i_rotate,             (arg_t) DIR_LEFT }, -	{ False,  XK_greater,       i_rotate,             (arg_t) DIR_RIGHT }, - -	{ False,  XK_s,             i_toggle_slideshow,   (arg_t) None }, -	{ True,   XK_plus,          i_adjust_slideshow,   (arg_t) +1 }, -	{ True,   XK_equal,         i_adjust_slideshow,   (arg_t) +1 }, -	{ True,   XK_minus,         i_adjust_slideshow,   (arg_t) -1 }, - -	{ False,  XK_a,             i_toggle_antialias,   (arg_t) None }, -	{ False,  XK_A,             it_toggle_alpha,      (arg_t) None }, +	{ false,  XK_q,             it_quit,              (arg_t) None }, +	{ false,  XK_Return,        it_switch_mode,       (arg_t) None }, +	{ false,  XK_f,             it_toggle_fullscreen, (arg_t) None }, + +	{ false,  XK_r,             it_reload_image,      (arg_t) None }, +	{ false,  XK_D,             it_remove_image,      (arg_t) None }, + +	{ false,  XK_n,             i_navigate,           (arg_t) +1 }, +	{ false,  XK_space,         i_navigate,           (arg_t) +1 }, +	{ false,  XK_p,             i_navigate,           (arg_t) -1 }, +	{ false,  XK_BackSpace,     i_navigate,           (arg_t) -1 }, +	{ false,  XK_bracketright,  i_navigate,           (arg_t) +10 }, +	{ false,  XK_bracketleft,   i_navigate,           (arg_t) -10 }, +	{ false,  XK_g,             it_first,             (arg_t) None }, +	{ false,  XK_G,             it_last,              (arg_t) None }, + +	{ true,   XK_n,             i_navigate_frame,     (arg_t) +1 }, +	{ true,   XK_p,             i_navigate_frame,     (arg_t) -1 }, +	{ true,   XK_space,         i_toggle_animation,   (arg_t) None }, + +	{ false,  XK_h,             it_move,              (arg_t) DIR_LEFT }, +	{ false,  XK_Left,          it_move,              (arg_t) DIR_LEFT }, +	{ false,  XK_j,             it_move,              (arg_t) DIR_DOWN }, +	{ false,  XK_Down,          it_move,              (arg_t) DIR_DOWN }, +	{ false,  XK_k,             it_move,              (arg_t) DIR_UP }, +	{ false,  XK_Up,            it_move,              (arg_t) DIR_UP }, +	{ false,  XK_l,             it_move,              (arg_t) DIR_RIGHT }, +	{ false,  XK_Right,         it_move,              (arg_t) DIR_RIGHT }, + +	{ true,   XK_h,             i_pan_screen,         (arg_t) DIR_LEFT }, +	{ true,   XK_Left,          i_pan_screen,         (arg_t) DIR_LEFT }, +	{ true,   XK_j,             i_pan_screen,         (arg_t) DIR_DOWN }, +	{ true,   XK_Down,          i_pan_screen,         (arg_t) DIR_DOWN }, +	{ true,   XK_k,             i_pan_screen,         (arg_t) DIR_UP }, +	{ true,   XK_Up,            i_pan_screen,         (arg_t) DIR_UP }, +	{ true,   XK_l,             i_pan_screen,         (arg_t) DIR_RIGHT }, +	{ true,   XK_Right,         i_pan_screen,         (arg_t) DIR_RIGHT }, + +	{ false,  XK_H,             i_pan_edge,           (arg_t) DIR_LEFT }, +	{ false,  XK_J,             i_pan_edge,           (arg_t) DIR_DOWN }, +	{ false,  XK_K,             i_pan_edge,           (arg_t) DIR_UP }, +	{ false,  XK_L,             i_pan_edge,           (arg_t) DIR_RIGHT }, + +	{ false,  XK_plus,          i_zoom,               (arg_t) +1 }, +	{ false,  XK_equal,         i_zoom,               (arg_t) +1 }, +	{ false,  XK_KP_Add,        i_zoom,               (arg_t) +1 }, +	{ false,  XK_minus,         i_zoom,               (arg_t) -1 }, +	{ false,  XK_KP_Subtract,   i_zoom,               (arg_t) -1 }, +	{ false,  XK_0,             i_zoom,               (arg_t) None }, +	{ false,  XK_KP_0,          i_zoom,               (arg_t) None }, +	{ false,  XK_w,             i_fit_to_win,         (arg_t) None }, +	{ false,  XK_W,             i_fit_to_img,         (arg_t) None }, + +	{ false,  XK_less,          i_rotate,             (arg_t) DIR_LEFT }, +	{ false,  XK_greater,       i_rotate,             (arg_t) DIR_RIGHT }, + +	{ false,  XK_s,             i_toggle_slideshow,   (arg_t) None }, +	{ true,   XK_plus,          i_adjust_slideshow,   (arg_t) +1 }, +	{ true,   XK_equal,         i_adjust_slideshow,   (arg_t) +1 }, +	{ true,   XK_minus,         i_adjust_slideshow,   (arg_t) -1 }, + +	{ false,  XK_a,             i_toggle_antialias,   (arg_t) None }, +	{ false,  XK_A,             it_toggle_alpha,      (arg_t) None },  	/* open current image with given program: */ -	{ True,   XK_g,             it_open_with,         (arg_t) "gimp" }, +	{ true,   XK_g,             it_open_with,         (arg_t) "gimp" },  	/* run shell command line on current file ("$SXIV_IMG"): */ -	{ True,   XK_less,          it_shell_cmd,         (arg_t) \ +	{ true,   XK_less,          it_shell_cmd,         (arg_t) \  			"mogrify -rotate -90 \"$SXIV_IMG\"" }, -	{ True,   XK_greater,       it_shell_cmd,         (arg_t) \ +	{ true,   XK_greater,       it_shell_cmd,         (arg_t) \  			"mogrify -rotate +90 \"$SXIV_IMG\"" }, -	{ True,   XK_comma,         it_shell_cmd,         (arg_t) \ +	{ true,   XK_comma,         it_shell_cmd,         (arg_t) \  			"jpegtran -rotate 270 -copy all -outfile \"$SXIV_IMG\" \"$SXIV_IMG\"" }, -	{ True,   XK_period,        it_shell_cmd,         (arg_t) \ +	{ true,   XK_period,        it_shell_cmd,         (arg_t) \  			"jpegtran -rotate  90 -copy all -outfile \"$SXIV_IMG\" \"$SXIV_IMG\"" },  };  /* mouse button mappings for image mode: */  static const button_t buttons[] = {  	/* ctrl   shift   button    function              argument */ -	{ False,  False,  Button1,  i_navigate,           (arg_t) +1 }, -	{ False,  False,  Button3,  i_navigate,           (arg_t) -1 }, -	{ False,  False,  Button2,  i_drag,               (arg_t) None }, -	{ False,  False,  Button4,  it_move,              (arg_t) DIR_UP }, -	{ False,  False,  Button5,  it_move,              (arg_t) DIR_DOWN }, -	{ False,  True,   Button4,  it_move,              (arg_t) DIR_LEFT }, -	{ False,  True,   Button5,  it_move,              (arg_t) DIR_RIGHT }, -	{ True,   False,  Button4,  i_zoom,               (arg_t) +1 }, -	{ True,   False,  Button5,  i_zoom,               (arg_t) -1 }, +	{ false,  false,  Button1,  i_navigate,           (arg_t) +1 }, +	{ false,  false,  Button3,  i_navigate,           (arg_t) -1 }, +	{ false,  false,  Button2,  i_drag,               (arg_t) None }, +	{ false,  false,  Button4,  it_move,              (arg_t) DIR_UP }, +	{ false,  false,  Button5,  it_move,              (arg_t) DIR_DOWN }, +	{ false,  true,   Button4,  it_move,              (arg_t) DIR_LEFT }, +	{ false,  true,   Button5,  it_move,              (arg_t) DIR_RIGHT }, +	{ true,   false,  Button4,  i_zoom,               (arg_t) +1 }, +	{ true,   false,  Button5,  i_zoom,               (arg_t) -1 },  };  #endif @@ -51,15 +51,15 @@ void img_init(img_t *img, win_t *win) {  	if (img) {  		img->im = NULL;  		img->multi.cap = img->multi.cnt = 0; -		img->multi.animate = 0; +		img->multi.animate = false;  		img->zoom = options->zoom;  		img->zoom = MAX(img->zoom, zoom_min);  		img->zoom = MIN(img->zoom, zoom_max); -		img->checkpan = 0; -		img->dirty = 0; +		img->checkpan = false; +		img->dirty = false;  		img->aa = options->aa; -		img->alpha = 1; -		img->slideshow = 0; +		img->alpha = true; +		img->slideshow = false;  		img->ss_delay = SLIDESHOW_DELAY * 1000;  	} @@ -119,7 +119,7 @@ void exif_auto_orientate(const fileinfo_t *file) {  /* Originally based on, but in its current form merely inspired by Imlib2's   * src/modules/loaders/loader_gif.c:load(), written by Carsten Haitzler.   */ -int img_load_gif(img_t *img, const fileinfo_t *file) { +bool img_load_gif(img_t *img, const fileinfo_t *file) {  	GifFileType *gif;  	GifRowType *rows = NULL;  	GifRecordType rec; @@ -131,8 +131,9 @@ int img_load_gif(img_t *img, const fileinfo_t *file) {  	int x, y, w, h, sw, sh;  	int intoffset[] = { 0, 4, 2, 1 };  	int intjump[] = { 8, 8, 4, 2 }; -	int err = 0, transp = -1; +	int transp = -1;  	unsigned int delay = 0; +	bool err = false;  	if (img->multi.cap == 0) {  		img->multi.cap = 8; @@ -145,7 +146,7 @@ int img_load_gif(img_t *img, const fileinfo_t *file) {  	gif = DGifOpenFileName(file->path);  	if (!gif) {  		warn("could not open gif file: %s", file->name); -		return 0; +		return false;  	}  	bg = gif->SBackGroundColor;  	sw = gif->SWidth; @@ -153,7 +154,7 @@ int img_load_gif(img_t *img, const fileinfo_t *file) {  	do {  		if (DGifGetRecordType(gif, &rec) == GIF_ERROR) { -			err = 1; +			err = true;  			break;  		}  		if (rec == EXTENSION_RECORD_TYPE) { @@ -177,7 +178,7 @@ int img_load_gif(img_t *img, const fileinfo_t *file) {  			}  		} else if (rec == IMAGE_DESC_RECORD_TYPE) {  			if (DGifGetImageDesc(gif) == GIF_ERROR) { -				err = 1; +				err = true;  				break;  			}  			x = gif->Image.Left; @@ -235,7 +236,7 @@ int img_load_gif(img_t *img, const fileinfo_t *file) {  			free(data);  			if (!im) { -				err = 1; +				err = true;  				break;  			} @@ -272,7 +273,7 @@ int img_load_gif(img_t *img, const fileinfo_t *file) {  		imlib_context_set_image(img->multi.frames[0].im);  		imlib_free_image();  		img->multi.cnt = 0; -		img->multi.animate = 0; +		img->multi.animate = false;  	}  	imlib_context_set_image(img->im); @@ -281,15 +282,15 @@ int img_load_gif(img_t *img, const fileinfo_t *file) {  }  #endif /* GIF_SUPPORT */ -int img_load(img_t *img, const fileinfo_t *file) { +bool img_load(img_t *img, const fileinfo_t *file) {  	const char *fmt;  	if (!img || !file || !file->name || !file->path) -		return 0; +		return false;  	if (access(file->path, R_OK) || !(img->im = imlib_load_image(file->path))) {  		warn("could not open image: %s", file->name); -		return 0; +		return false;  	}  	imlib_context_set_image(img->im); @@ -310,17 +311,17 @@ int img_load(img_t *img, const fileinfo_t *file) {  #endif  	img->scalemode = options->scalemode; -	img->re = 0; -	img->checkpan = 0; +	img->re = false; +	img->checkpan = false; +	img->dirty = true;  	img->w = imlib_image_get_width();  	img->h = imlib_image_get_height(); -	img->dirty = 1; -	return 1; +	return true;  } -void img_close(img_t *img, int decache) { +void img_close(img_t *img, bool decache) {  	int i;  	if (!img) @@ -343,7 +344,7 @@ void img_close(img_t *img, int decache) {  	}  } -void img_check_pan(img_t *img, win_t *win, int moved) { +void img_check_pan(img_t *img, win_t *win, bool moved) {  	int ox, oy;  	if (!img || !win) @@ -370,14 +371,14 @@ void img_check_pan(img_t *img, win_t *win, int moved) {  	}  	if (!moved && (ox != img->x || oy != img->y)) -		img->dirty = 1; +		img->dirty = true;  } -int img_fit(img_t *img, win_t *win) { +bool img_fit(img_t *img, win_t *win) {  	float z, zmax, zw, zh;  	if (!img || !win || img->scalemode == SCALE_ZOOM) -		return 0; +		return false;  	zmax = img->scalemode == SCALE_DOWN ? 1.0 : zoom_max;  	zw = (float) win->w / (float) img->w; @@ -389,10 +390,10 @@ int img_fit(img_t *img, win_t *win) {  	if (ZOOMDIFF(z, img->zoom)) {  		img->zoom = z; -		img->dirty = 1; -		return 1; +		img->dirty = true; +		return true;  	} else { -		return 0; +		return false;  	}  } @@ -407,7 +408,7 @@ void img_render(img_t *img, win_t *win) {  	if (!img->re) {  		/* rendered for the first time */ -		img->re = 1; +		img->re = true;  		if (img->zoom * img->w <= win->w)  			img->x = (win->w - img->w * img->zoom) / 2;  		else @@ -419,8 +420,8 @@ void img_render(img_t *img, win_t *win) {  	}  	if (img->checkpan) { -		img_check_pan(img, win, 0); -		img->checkpan = 0; +		img_check_pan(img, win, false); +		img->checkpan = false;  	}  	if (!img->dirty) @@ -462,22 +463,22 @@ void img_render(img_t *img, win_t *win) {  	win_draw(win); -	img->dirty = 0; +	img->dirty = false;  } -int img_fit_win(img_t *img, win_t *win) { +bool img_fit_win(img_t *img, win_t *win) {  	if (!img || !img->im || !win) -		return 0; +		return false;  	img->scalemode = SCALE_FIT;  	return img_fit(img, win);  } -int img_center(img_t *img, win_t *win) { +bool img_center(img_t *img, win_t *win) {  	int ox, oy;  	if (!img || !win) -		return 0; +		return false;  	ox = img->x;  	oy = img->y; @@ -486,16 +487,16 @@ int img_center(img_t *img, win_t *win) {  	img->y = (win->h - img->h * img->zoom) / 2;  	if (ox != img->x || oy != img->y) { -		img->dirty = 1; -		return 1; +		img->dirty = true; +		return true;  	} else { -		return 0; +		return false;  	}  } -int img_zoom(img_t *img, win_t *win, float z) { +bool img_zoom(img_t *img, win_t *win, float z) {  	if (!img || !img->im || !win) -		return 0; +		return false;  	z = MAX(z, zoom_min);  	z = MIN(z, zoom_max); @@ -506,45 +507,45 @@ int img_zoom(img_t *img, win_t *win, float z) {  		img->x = win->w / 2 - (win->w / 2 - img->x) * z / img->zoom;  		img->y = win->h / 2 - (win->h / 2 - img->y) * z / img->zoom;  		img->zoom = z; -		img->checkpan = 1; -		img->dirty = 1; -		return 1; +		img->checkpan = true; +		img->dirty = true; +		return true;  	} else { -		return 0; +		return false;  	}  } -int img_zoom_in(img_t *img, win_t *win) { +bool img_zoom_in(img_t *img, win_t *win) {  	int i;  	if (!img || !img->im || !win) -		return 0; +		return false;  	for (i = 1; i < ARRLEN(zoom_levels); i++) {  		if (zoom_levels[i] > img->zoom * 100.0)  			return img_zoom(img, win, zoom_levels[i] / 100.0);  	} -	return 0; +	return false;  } -int img_zoom_out(img_t *img, win_t *win) { +bool img_zoom_out(img_t *img, win_t *win) {  	int i;  	if (!img || !img->im || !win) -		return 0; +		return false;  	for (i = ARRLEN(zoom_levels) - 2; i >= 0; i--) {  		if (zoom_levels[i] < img->zoom * 100.0)  			return img_zoom(img, win, zoom_levels[i] / 100.0);  	} -	return 0; +	return false;  } -int img_move(img_t *img, win_t *win, int dx, int dy) { +bool img_move(img_t *img, win_t *win, int dx, int dy) {  	int ox, oy;  	if (!img || !img->im || !win) -		return 0; +		return false;  	ox = img->x;  	oy = img->y; @@ -552,19 +553,19 @@ int img_move(img_t *img, win_t *win, int dx, int dy) {  	img->x += dx;  	img->y += dy; -	img_check_pan(img, win, 1); +	img_check_pan(img, win, true);  	if (ox != img->x || oy != img->y) { -		img->dirty = 1; -		return 1; +		img->dirty = true; +		return true;  	} else { -		return 0; +		return false;  	}  } -int img_pan(img_t *img, win_t *win, direction_t dir, int screen) { +bool img_pan(img_t *img, win_t *win, direction_t dir, bool screen) {  	if (!img || !img->im || !win) -		return 0; +		return false;  	switch (dir) {  		case DIR_LEFT: @@ -576,14 +577,14 @@ int img_pan(img_t *img, win_t *win, direction_t dir, int screen) {  		case DIR_DOWN:  			return img_move(img, win, 0, win->h / (screen ? 1 : 5) * -1);  	} -	return 0; +	return false;  } -int img_pan_edge(img_t *img, win_t *win, direction_t dir) { +bool img_pan_edge(img_t *img, win_t *win, direction_t dir) {  	int ox, oy;  	if (!img || !img->im || !win) -		return 0; +		return false;  	ox = img->x;  	oy = img->y; @@ -603,13 +604,13 @@ int img_pan_edge(img_t *img, win_t *win, direction_t dir) {  			break;  	} -	img_check_pan(img, win, 1); +	img_check_pan(img, win, true);  	if (ox != img->x || oy != img->y) { -		img->dirty = 1; -		return 1; +		img->dirty = true; +		return true;  	} else { -		return 0; +		return false;  	}  } @@ -632,8 +633,8 @@ void img_rotate(img_t *img, win_t *win, int d) {  	img->w = img->h;  	img->h = tmp; -	img->checkpan = 1; -	img->dirty = 1; +	img->checkpan = true; +	img->dirty = true;  }  void img_rotate_left(img_t *img, win_t *win) { @@ -648,18 +649,18 @@ void img_toggle_antialias(img_t *img) {  	if (!img || !img->im)  		return; -	img->aa ^= 1; +	img->aa = !img->aa;  	imlib_context_set_image(img->im);  	imlib_context_set_anti_alias(img->aa); -	img->dirty = 1; +	img->dirty = true;  } -int img_frame_goto(img_t *img, int n) { +bool img_frame_goto(img_t *img, int n) {  	if (!img || n < 0 || n >= img->multi.cnt) -		return 0; +		return false;  	if (n == img->multi.sel) -		return 0; +		return false;  	img->multi.sel = n;  	img->im = img->multi.frames[n].im; @@ -667,15 +668,15 @@ int img_frame_goto(img_t *img, int n) {  	imlib_context_set_image(img->im);  	img->w = imlib_image_get_width();  	img->h = imlib_image_get_height(); -	img->checkpan = 1; -	img->dirty = 1; +	img->checkpan = true; +	img->dirty = true; -	return 1; +	return true;  } -int img_frame_navigate(img_t *img, int d) { +bool img_frame_navigate(img_t *img, int d) {  	if (!img || !img->multi.cnt || !d) -		return 0; +		return false;  	d += img->multi.sel;  	if (d < 0) @@ -686,22 +687,22 @@ int img_frame_navigate(img_t *img, int d) {  	return img_frame_goto(img, d);  } -int img_frame_animate(img_t *img, int restart) { +bool img_frame_animate(img_t *img, bool restart) {  	if (!img || !img->multi.cnt) -		return 0; +		return false;  	if (img->multi.sel + 1 >= img->multi.cnt) {  		if (restart || (GIF_LOOP && !img->slideshow)) {  			img_frame_goto(img, 0);  		} else { -			img->multi.animate = 0; -			return 0; +			img->multi.animate = false; +			return false;  		}  	} else if (!restart) {  		img_frame_goto(img, img->multi.sel + 1);  	} -	img->multi.animate = 1; +	img->multi.animate = true; +	img->dirty = true; -	img->dirty = 1; -	return img->multi.frames[img->multi.sel].delay; +	return true;  } @@ -34,7 +34,7 @@ typedef struct {  	int cap;  	int cnt;  	int sel; -	unsigned char animate; +	bool animate;  } multi_img_t;  typedef struct { @@ -44,13 +44,13 @@ typedef struct {  	float zoom;  	scalemode_t scalemode; -	unsigned char re; -	unsigned char checkpan; -	unsigned char dirty; -	unsigned char aa; -	unsigned char alpha; +	bool re; +	bool checkpan; +	bool dirty; +	bool aa; +	bool alpha; -	unsigned char slideshow; +	bool slideshow;  	int ss_delay; /* in ms */  	int x; @@ -61,28 +61,28 @@ typedef struct {  void img_init(img_t*, win_t*); -int img_load(img_t*, const fileinfo_t*); -void img_close(img_t*, int); +bool img_load(img_t*, const fileinfo_t*); +void img_close(img_t*, bool);  void img_render(img_t*, win_t*); -int img_fit_win(img_t*, win_t*); -int img_center(img_t*, win_t*); +bool img_fit_win(img_t*, win_t*); +bool img_center(img_t*, win_t*); -int img_zoom(img_t*, win_t*, float); -int img_zoom_in(img_t*, win_t*); -int img_zoom_out(img_t*, win_t*); +bool img_zoom(img_t*, win_t*, float); +bool img_zoom_in(img_t*, win_t*); +bool img_zoom_out(img_t*, win_t*); -int img_move(img_t*, win_t*, int, int); -int img_pan(img_t*, win_t*, direction_t, int); -int img_pan_edge(img_t*, win_t*, direction_t); +bool img_move(img_t*, win_t*, int, int); +bool img_pan(img_t*, win_t*, direction_t, bool); +bool img_pan_edge(img_t*, win_t*, direction_t);  void img_rotate_left(img_t*, win_t*);  void img_rotate_right(img_t*, win_t*);  void img_toggle_antialias(img_t*); -int img_frame_navigate(img_t*, int); -int img_frame_animate(img_t*, int); +bool img_frame_navigate(img_t*, int); +bool img_frame_animate(img_t*, bool);  #endif /* IMAGE_H */ @@ -17,6 +17,7 @@   */  #define _POSIX_C_SOURCE 200112L +#define _MAPPINGS_CONFIG  #include <stdlib.h>  #include <stdio.h> @@ -34,8 +35,6 @@  #include "types.h"  #include "util.h"  #include "window.h" - -#define _MAPPINGS_CONFIG  #include "config.h"  enum { @@ -45,7 +44,7 @@ enum {  typedef struct {  	struct timeval when; -	Bool active; +	bool active;  	timeout_f handler;  } timeout_t; @@ -67,17 +66,17 @@ size_t filesize;  char win_title[TITLE_LEN];  timeout_t timeouts[] = { -	{ { 0, 0 }, False, redraw }, -	{ { 0, 0 }, False, reset_cursor }, -	{ { 0, 0 }, False, animate }, -	{ { 0, 0 }, False, slideshow }, +	{ { 0, 0 }, false, redraw }, +	{ { 0, 0 }, false, reset_cursor }, +	{ { 0, 0 }, false, animate }, +	{ { 0, 0 }, false, slideshow },  };  void cleanup() {  	static int in = 0;  	if (!in++) { -		img_close(&img, 0); +		img_close(&img, false);  		tns_free(&tns);  		win_close(&win);  	} @@ -103,14 +102,14 @@ void check_add_file(char *filename) {  			return;  		}  	} -	files[fileidx].loaded = 0; +	files[fileidx].loaded = false;  	files[fileidx].name = s_strdup(filename);  	if (*filename == '/')  		files[fileidx].path = files[fileidx].name;  	fileidx++;  } -void remove_file(int n, unsigned char silent) { +void remove_file(int n, bool silent) {  	if (n < 0 || n >= filecnt)  		return; @@ -138,7 +137,7 @@ void remove_file(int n, unsigned char silent) {  		tns.cnt--;  } -void set_timeout(timeout_f handler, int time, int overwrite) { +void set_timeout(timeout_f handler, int time, bool overwrite) {  	int i;  	for (i = 0; i < ARRLEN(timeouts); i++) { @@ -146,7 +145,7 @@ void set_timeout(timeout_f handler, int time, int overwrite) {  			if (!timeouts[i].active || overwrite) {  				gettimeofday(&timeouts[i].when, 0);  				MSEC_ADD_TO_TIMEVAL(time, &timeouts[i].when); -				timeouts[i].active = True; +				timeouts[i].active = true;  			}  			return;  		} @@ -158,13 +157,13 @@ void reset_timeout(timeout_f handler) {  	for (i = 0; i < ARRLEN(timeouts); i++) {  		if (timeouts[i].handler == handler) { -			timeouts[i].active = False; +			timeouts[i].active = false;  			return;  		}  	}  } -int check_timeouts(struct timeval *t) { +bool check_timeouts(struct timeval *t) {  	int i = 0, tdiff, tmin = -1;  	struct timeval now; @@ -173,7 +172,7 @@ int check_timeouts(struct timeval *t) {  		if (timeouts[i].active) {  			tdiff = TIMEDIFF(&timeouts[i].when, &now);  			if (tdiff <= 0) { -				timeouts[i].active = False; +				timeouts[i].active = false;  				if (timeouts[i].handler)  					timeouts[i].handler();  				i = tmin = -1; @@ -196,14 +195,14 @@ void load_image(int new) {  	win_set_cursor(&win, CURSOR_WATCH); -	img_close(&img, 0); +	img_close(&img, false);  	while (!img_load(&img, &files[new])) { -		remove_file(new, 0); +		remove_file(new, false);  		if (new >= filecnt)  			new = filecnt - 1;  	} -	files[new].loaded = 1; +	files[new].loaded = true;  	fileidx = new;  	if (!stat(files[new].path, &fstats))  		filesize = fstats.st_size; @@ -211,7 +210,7 @@ void load_image(int new) {  		filesize = 0;  	if (img.multi.cnt && img.multi.animate) -		set_timeout(animate, img.multi.frames[img.multi.sel].delay, 1); +		set_timeout(animate, img.multi.frames[img.multi.sel].delay, true);  	else  		reset_timeout(animate);  } @@ -265,9 +264,9 @@ void redraw() {  		img_render(&img, &win);  		if (img.slideshow && !img.multi.animate) {  			if (fileidx + 1 < filecnt) -				set_timeout(slideshow, img.ss_delay, 1); +				set_timeout(slideshow, img.ss_delay, true);  			else -				img.slideshow = 0; +				img.slideshow = false;  		}  	} else {  		tns_render(&tns, &win); @@ -299,12 +298,10 @@ void reset_cursor() {  }  void animate() { -	int delay; - -	delay = img_frame_animate(&img, 0); -	redraw(); -	if (delay) -		set_timeout(animate, delay, 1); +	if (img_frame_animate(&img, false)) { +		redraw(); +		set_timeout(animate, img.multi.frames[img.multi.sel].delay, true); +	}  }  void slideshow() { @@ -313,16 +310,16 @@ void slideshow() {  			load_image(fileidx + 1);  			redraw();  		} else { -			img.slideshow = 0; +			img.slideshow = false;  		}  	}  } -Bool keymask(const keymap_t *k, unsigned int state) { +bool keymask(const keymap_t *k, unsigned int state) {  	return (k->ctrl ? ControlMask : 0) == (state & ControlMask);  } -Bool buttonmask(const button_t *b, unsigned int state) { +bool buttonmask(const button_t *b, unsigned int state) {  	return ((b->ctrl ? ControlMask : 0) | (b->shift ? ShiftMask : 0)) ==  	       (state & (ControlMask | ShiftMask));  } @@ -354,7 +351,7 @@ void on_buttonpress(XButtonEvent *bev) {  	if (mode == MODE_IMAGE) {  		win_set_cursor(&win, CURSOR_ARROW); -		set_timeout(reset_cursor, TO_CURSOR_HIDE, 1); +		set_timeout(reset_cursor, TO_CURSOR_HIDE, true);  		for (i = 0; i < ARRLEN(buttons); i++) {  			if (buttons[i].button == bev->button && @@ -372,11 +369,11 @@ void on_buttonpress(XButtonEvent *bev) {  				if ((sel = tns_translate(&tns, bev->x, bev->y)) >= 0) {  					if (sel == tns.sel) {  						mode = MODE_IMAGE; -						set_timeout(reset_cursor, TO_CURSOR_HIDE, 1); +						set_timeout(reset_cursor, TO_CURSOR_HIDE, true);  						load_image(tns.sel);  					} else { -						tns_highlight(&tns, &win, tns.sel, False); -						tns_highlight(&tns, &win, sel, True); +						tns_highlight(&tns, &win, tns.sel, false); +						tns_highlight(&tns, &win, sel, true);  						tns.sel = sel;  					}  					redraw(); @@ -405,11 +402,11 @@ void run() {  		       !XPending(win.env.dpy))  		{  			/* load thumbnails */ -			set_timeout(redraw, TO_REDRAW_THUMBS, 0); -			if (tns_load(&tns, tns.cnt, &files[tns.cnt], False, False)) +			set_timeout(redraw, TO_REDRAW_THUMBS, false); +			if (tns_load(&tns, tns.cnt, &files[tns.cnt], false, false))  				tns.cnt++;  			else -				remove_file(tns.cnt, 0); +				remove_file(tns.cnt, false);  			if (tns.cnt == filecnt)  				redraw();  			else @@ -436,11 +433,11 @@ void run() {  					break;  				case ConfigureNotify:  					if (win_configure(&win, &ev.xconfigure)) { -						set_timeout(redraw, TO_REDRAW_RESIZE, 0); +						set_timeout(redraw, TO_REDRAW_RESIZE, false);  						if (mode == MODE_IMAGE) -							img.checkpan = 1; +							img.checkpan = true;  						else -							tns.dirty = 1; +							tns.dirty = true;  					}  					break;  				case KeyPress: @@ -449,7 +446,7 @@ void run() {  				case MotionNotify:  					if (mode == MODE_IMAGE) {  						win_set_cursor(&win, CURSOR_ARROW); -						set_timeout(reset_cursor, TO_CURSOR_HIDE, 1); +						set_timeout(reset_cursor, TO_CURSOR_HIDE, true);  					}  					break;  			} @@ -539,11 +536,11 @@ int main(int argc, char **argv) {  	win_init(&win);  	img_init(&img, &win); -	if (options->thumbnails) { +	if (options->thumb_mode) {  		mode = MODE_THUMB;  		tns_init(&tns, filecnt); -		while (!tns_load(&tns, 0, &files[0], False, False)) -			remove_file(0, 0); +		while (!tns_load(&tns, 0, &files[0], false, false)) +			remove_file(0, false);  		tns.cnt = 1;  	} else {  		mode = MODE_IMAGE; @@ -17,6 +17,7 @@   */  #define _POSIX_C_SOURCE 200112L +#define _IMAGE_CONFIG  #include <stdlib.h>  #include <string.h> @@ -25,8 +26,6 @@  #include "options.h"  #include "util.h" - -#define _IMAGE_CONFIG  #include "config.h"  options_t _options; @@ -56,20 +55,20 @@ void print_version() {  void parse_options(int argc, char **argv) {  	int opt, t; -	_options.recursive = 0; +	_options.recursive = false;  	_options.startnum = 0;  	_options.scalemode = SCALE_MODE;  	_options.zoom = 1.0; -	_options.aa = 1; +	_options.aa = true; -	_options.fixed = 0; -	_options.fullscreen = 0; +	_options.fixed_win = false; +	_options.fullscreen = false;  	_options.geometry = NULL; -	_options.quiet = 0; -	_options.thumbnails = 0; -	_options.clean_cache = 0; +	_options.quiet = false; +	_options.thumb_mode = false; +	_options.clean_cache = false;  	while ((opt = getopt(argc, argv, "cdFfg:hn:pqrstvZz:")) != -1) {  		switch (opt) { @@ -77,16 +76,16 @@ void parse_options(int argc, char **argv) {  				print_usage();  				exit(1);  			case 'c': -				_options.clean_cache = 1; +				_options.clean_cache = true;  				break;  			case 'd':  				_options.scalemode = SCALE_DOWN;  				break;  			case 'F': -				_options.fixed = 1; +				_options.fixed_win = true;  				break;  			case 'f': -				_options.fullscreen = 1; +				_options.fullscreen = true;  				break;  			case 'g':  				_options.geometry = optarg; @@ -104,19 +103,19 @@ void parse_options(int argc, char **argv) {  				}  				break;  			case 'p': -				_options.aa = 0; +				_options.aa = false;  				break;  			case 'q': -				_options.quiet = 1; +				_options.quiet = true;  				break;  			case 'r': -				_options.recursive = 1; +				_options.recursive = true;  				break;  			case 's':  				_options.scalemode = SCALE_FIT;  				break;  			case 't': -				_options.thumbnails = 1; +				_options.thumb_mode = true;  				break;  			case 'v':  				print_version(); @@ -140,5 +139,5 @@ void parse_options(int argc, char **argv) {  	_options.filenames = argv + optind;  	_options.filecnt = argc - optind;  	_options.from_stdin = _options.filecnt == 1 && -	                      strcmp(_options.filenames[0], "-") == 0; +	                      !strcmp(_options.filenames[0], "-");  } @@ -25,25 +25,25 @@  typedef struct {  	/* file list: */  	char **filenames; -	unsigned char from_stdin; -	unsigned char recursive; +	bool from_stdin; +	bool recursive;  	int filecnt;  	int startnum;  	/* image: */  	scalemode_t scalemode;  	float zoom; -	unsigned char aa; +	bool aa;  	/* window: */ -	unsigned char fixed; -	unsigned char fullscreen; +	bool fixed_win; +	bool fullscreen;  	char *geometry;  	/* misc flags: */ -	unsigned char quiet; -	unsigned char thumbnails; -	unsigned char clean_cache; +	bool quiet; +	bool thumb_mode; +	bool clean_cache;  } options_t;  extern const options_t *options; @@ -17,6 +17,7 @@   */  #define _POSIX_C_SOURCE 200112L +#define _THUMBS_CONFIG  #include <stdlib.h>  #include <string.h> @@ -27,8 +28,6 @@  #include "thumbs.h"  #include "util.h" - -#define _THUMBS_CONFIG  #include "config.h"  #ifdef EXIF_SUPPORT @@ -38,7 +37,7 @@ void exif_auto_orientate(const fileinfo_t*);  const int thumb_dim = THUMB_SIZE + 10;  char *cache_dir = NULL; -int tns_cache_enabled() { +bool tns_cache_enabled() {  	struct stat stats;  	return cache_dir && !stat(cache_dir, &stats) && S_ISDIR(stats.st_mode) && @@ -81,7 +80,7 @@ Imlib_Image* tns_cache_load(const char *filepath) {  	return im;  } -void tns_cache_write(thumb_t *t, Bool force) { +void tns_cache_write(thumb_t *t, bool force) {  	char *cfile, *dirend;  	struct stat cstats, fstats;  	struct utimbuf times; @@ -120,7 +119,8 @@ void tns_cache_write(thumb_t *t, Bool force) {  }  void tns_clean_cache(tns_t *tns) { -	int dirlen, delete; +	int dirlen; +	bool delete;  	char *cfile, *filename, *tpos;  	r_dir_t dir; @@ -136,11 +136,12 @@ void tns_clean_cache(tns_t *tns) {  	while ((cfile = r_readdir(&dir))) {  		filename = cfile + dirlen; -		delete = 0; +		delete = false;  		if ((tpos = strrchr(filename, '.'))) {  			*tpos = '\0'; -			delete = access(filename, F_OK); +			if (access(filename, F_OK)) +				delete = true;  			*tpos = '.';  		} @@ -170,8 +171,8 @@ void tns_init(tns_t *tns, int cnt) {  	tns->cnt = tns->first = tns->sel = 0;  	tns->cap = cnt; -	tns->alpha = 1; -	tns->dirty = 0; +	tns->alpha = true; +	tns->dirty = false;  	if ((homedir = getenv("HOME"))) {  		if (cache_dir) @@ -207,21 +208,21 @@ void tns_free(tns_t *tns) {  	}  } -int tns_load(tns_t *tns, int n, const fileinfo_t *file, -             Bool force, Bool silent) +bool tns_load(tns_t *tns, int n, const fileinfo_t *file, +             bool force, bool silent)  {  	int w, h; -	int use_cache, cache_hit = 0; +	bool use_cache, cache_hit = false;  	float z, zw, zh;  	thumb_t *t;  	Imlib_Image *im;  	const char *fmt;  	if (!tns || !tns->thumbs || !file || !file->name || !file->path) -		return 0; +		return false;  	if (n < 0 || n >= tns->cap) -		return 0; +		return false;  	t = &tns->thumbs[n];  	t->file = file; @@ -233,7 +234,7 @@ int tns_load(tns_t *tns, int n, const fileinfo_t *file,  	if ((use_cache = tns_cache_enabled())) {  		if (!force && (im = tns_cache_load(file->path))) -			cache_hit = 1; +			cache_hit = true;  	}  	if (!cache_hit && @@ -241,7 +242,7 @@ int tns_load(tns_t *tns, int n, const fileinfo_t *file,  	{  		if (!silent)  			warn("could not open image: %s", file->name); -		return 0; +		return false;  	}  	imlib_context_set_image(im); @@ -270,13 +271,13 @@ int tns_load(tns_t *tns, int n, const fileinfo_t *file,  	imlib_free_image_and_decache();  	if (use_cache && !cache_hit) -		tns_cache_write(t, False); +		tns_cache_write(t, false); -	tns->dirty = 1; -	return 1; +	tns->dirty = true; +	return true;  } -void tns_check_view(tns_t *tns, Bool scrolled) { +void tns_check_view(tns_t *tns, bool scrolled) {  	int r;  	if (!tns) @@ -295,10 +296,10 @@ void tns_check_view(tns_t *tns, Bool scrolled) {  		/* scroll to selection */  		if (tns->first + tns->cols * tns->rows <= tns->sel) {  			tns->first = tns->sel - r - tns->cols * (tns->rows - 1); -			tns->dirty = 1; +			tns->dirty = true;  		} else if (tns->first > tns->sel) {  			tns->first = tns->sel - r; -			tns->dirty = 1; +			tns->dirty = true;  		}  	}  } @@ -323,7 +324,7 @@ void tns_render(tns_t *tns, win_t *win) {  		tns->first = 0;  		cnt = tns->cnt;  	} else { -		tns_check_view(tns, False); +		tns_check_view(tns, false);  		cnt = tns->cols * tns->rows;  		if ((r = tns->first + cnt - tns->cnt) >= tns->cols)  			tns->first -= r - r % tns->cols; @@ -342,7 +343,7 @@ void tns_render(tns_t *tns, win_t *win) {  		imlib_context_set_image(t->im);  		if (imlib_image_has_alpha() && !tns->alpha) -			win_draw_rect(win, win->pm, t->x, t->y, t->w, t->h, True, 0, win->white); +			win_draw_rect(win, win->pm, t->x, t->y, t->w, t->h, true, 0, win->white);  		imlib_render_image_part_on_drawable_at_size(0, 0, t->w, t->h,  		                                            t->x, t->y, t->w, t->h); @@ -354,11 +355,11 @@ void tns_render(tns_t *tns, win_t *win) {  		}  	} -	tns->dirty = 0; -	tns_highlight(tns, win, tns->sel, True); +	tns->dirty = false; +	tns_highlight(tns, win, tns->sel, true);  } -void tns_highlight(tns_t *tns, win_t *win, int n, Bool hl) { +void tns_highlight(tns_t *tns, win_t *win, int n, bool hl) {  	thumb_t *t;  	int x, y;  	unsigned long col; @@ -379,17 +380,17 @@ void tns_highlight(tns_t *tns, win_t *win, int n, Bool hl) {  		x = t->x - (THUMB_SIZE - t->w) / 2;  		y = t->y - (THUMB_SIZE - t->h) / 2;  		win_draw_rect(win, win->pm, x - 3, y - 3, THUMB_SIZE + 6, THUMB_SIZE + 6, -		              False, 2, col); +		              false, 2, col);  	}  	win_draw(win);  } -int tns_move_selection(tns_t *tns, win_t *win, direction_t dir) { +bool tns_move_selection(tns_t *tns, win_t *win, direction_t dir) {  	int old;  	if (!tns || !tns->thumbs || !win) -		return 0; +		return false;  	old = tns->sel; @@ -413,31 +414,31 @@ int tns_move_selection(tns_t *tns, win_t *win, direction_t dir) {  	}  	if (tns->sel != old) { -		tns_highlight(tns, win, old, False); -		tns_check_view(tns, False); +		tns_highlight(tns, win, old, false); +		tns_check_view(tns, false);  		if (!tns->dirty) -			tns_highlight(tns, win, tns->sel, True); +			tns_highlight(tns, win, tns->sel, true);  	}  	return tns->sel != old;  } -int tns_scroll(tns_t *tns, direction_t dir) { +bool tns_scroll(tns_t *tns, direction_t dir) {  	int old;  	if (!tns) -		return 0; +		return false;  	old = tns->first;  	if (dir == DIR_DOWN && tns->first + tns->cols * tns->rows < tns->cnt) {  		tns->first += tns->cols; -		tns_check_view(tns, True); -		tns->dirty = 1; +		tns_check_view(tns, true); +		tns->dirty = true;  	} else if (dir == DIR_UP && tns->first >= tns->cols) {  		tns->first -= tns->cols; -		tns_check_view(tns, True); -		tns->dirty = 1; +		tns_check_view(tns, true); +		tns->dirty = true;  	}  	return tns->first != old; @@ -44,8 +44,8 @@ typedef struct {  	int rows;  	int first;  	int sel; -	unsigned char alpha; -	unsigned char dirty; +	bool alpha; +	bool dirty;  } tns_t;  void tns_clean_cache(tns_t*); @@ -53,13 +53,13 @@ void tns_clean_cache(tns_t*);  void tns_init(tns_t*, int);  void tns_free(tns_t*); -int tns_load(tns_t*, int, const fileinfo_t*, Bool, Bool); +bool tns_load(tns_t*, int, const fileinfo_t*, bool, bool);  void tns_render(tns_t*, win_t*); -void tns_highlight(tns_t*, win_t*, int, Bool); +void tns_highlight(tns_t*, win_t*, int, bool); -int tns_move_selection(tns_t*, win_t*, direction_t); -int tns_scroll(tns_t*, direction_t); +bool tns_move_selection(tns_t*, win_t*, direction_t); +bool tns_scroll(tns_t*, direction_t);  int tns_translate(tns_t*, int, int); @@ -2,6 +2,11 @@  #define TYPES_H  typedef enum { +	false, +	true +} bool; + +typedef enum {  	MODE_IMAGE,  	MODE_THUMB  } appmode_t; @@ -29,7 +34,7 @@ typedef enum {  typedef struct {  	const char *name; /* as given by user */  	const char *path; /* always absolute */ -	unsigned char loaded; +	bool loaded;  } fileinfo_t;  /* timeouts in milliseconds: */ @@ -17,6 +17,7 @@   */  #define _POSIX_C_SOURCE 200112L +#define _WINDOW_CONFIG  #include <string.h>  #include <X11/Xutil.h> @@ -25,8 +26,6 @@  #include "options.h"  #include "util.h"  #include "window.h" - -#define _WINDOW_CONFIG  #include "config.h"  static Cursor carrow; @@ -76,7 +75,7 @@ void win_init(win_t *win) {  	win->xwin = 0;  	win->pm = 0; -	win->fullscreen = 0; +	win->fullscreen = false;  }  void win_set_sizehints(win_t *win) { @@ -97,7 +96,7 @@ void win_open(win_t *win) {  	win_env_t *e;  	XClassHint classhint;  	XColor col; -	char none_data[] = {0, 0, 0, 0, 0, 0, 0, 0}; +	char none_data[] = { 0, 0, 0, 0, 0, 0, 0, 0 };  	Pixmap none;  	int gmask; @@ -158,7 +157,7 @@ void win_open(win_t *win) {  	classhint.res_class = "sxiv";  	XSetClassHint(e->dpy, win->xwin, &classhint); -	if (options->fixed) +	if (options->fixed_win)  		win_set_sizehints(win);  	XMapWindow(e->dpy, win->xwin); @@ -186,11 +185,11 @@ void win_close(win_t *win) {  	XCloseDisplay(win->env.dpy);  } -int win_configure(win_t *win, XConfigureEvent *c) { -	int changed; +bool win_configure(win_t *win, XConfigureEvent *c) { +	bool changed;  	if (!win) -		return 0; +		return false;  	changed = win->w != c->width || win->h != c->height; @@ -203,9 +202,9 @@ int win_configure(win_t *win, XConfigureEvent *c) {  	return changed;  } -int win_moveresize(win_t *win, int x, int y, unsigned int w, unsigned int h) { +bool win_moveresize(win_t *win, int x, int y, unsigned int w, unsigned int h) {  	if (!win || !win->xwin) -		return 0; +		return false;  	x = MAX(0, x);  	y = MAX(0, y); @@ -213,19 +212,19 @@ int win_moveresize(win_t *win, int x, int y, unsigned int w, unsigned int h) {  	h = MIN(h, win->env.scrh - 2 * win->bw);  	if (win->x == x && win->y == y && win->w == w && win->h == h) -		return 0; +		return false;  	win->x = x;  	win->y = y;  	win->w = w;  	win->h = h; -	if (options->fixed) +	if (options->fixed_win)  		win_set_sizehints(win);  	XMoveResizeWindow(win->env.dpy, win->xwin, win->x, win->y, win->w, win->h); -	return 1; +	return true;  }  void win_toggle_fullscreen(win_t *win) { @@ -235,7 +234,7 @@ void win_toggle_fullscreen(win_t *win) {  	if (!win || !win->xwin)  		return; -	win->fullscreen ^= 1; +	win->fullscreen = !win->fullscreen;  	memset(&ev, 0, sizeof(ev));  	ev.type = ClientMessage; @@ -279,7 +278,7 @@ void win_draw(win_t *win) {  }  void win_draw_rect(win_t *win, Pixmap pm, int x, int y, int w, int h, -		Bool fill, int lw, unsigned long col) { +		bool fill, int lw, unsigned long col) {  	XGCValues gcval;  	if (!win || !pm) @@ -46,9 +46,9 @@ typedef struct {  	int y;  	unsigned int w;  	unsigned int h; -  	unsigned int bw; -	unsigned char fullscreen; + +	bool fullscreen;  } win_t;  extern Atom wm_delete_win; @@ -57,14 +57,14 @@ void win_init(win_t*);  void win_open(win_t*);  void win_close(win_t*); -int win_configure(win_t*, XConfigureEvent*); -int win_moveresize(win_t*, int, int, unsigned int, unsigned int); +bool win_configure(win_t*, XConfigureEvent*); +bool win_moveresize(win_t*, int, int, unsigned int, unsigned int);  void win_toggle_fullscreen(win_t*);  void win_clear(win_t*);  void win_draw(win_t*); -void win_draw_rect(win_t*, Pixmap, int, int, int, int, Bool, int, +void win_draw_rect(win_t*, Pixmap, int, int, int, int, bool, int,                     unsigned long);  void win_set_title(win_t*, const char*);  | 
