diff --git a/commands.c b/commands.c index 4c9553e..18080cd 100644 --- a/commands.c +++ b/commands.c @@ -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; } diff --git a/commands.h b/commands.h index e038246..2609754 100644 --- a/commands.h +++ b/commands.h @@ -21,47 +21,49 @@ #include +#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_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_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 }, + { 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 }, + { 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 }, + { 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 }, + { 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_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_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_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_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_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 diff --git a/image.c b/image.c index fd6585b..8b4ff49 100644 --- a/image.c +++ b/image.c @@ -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; } diff --git a/image.h b/image.h index ca699c8..316729a 100644 --- a/image.h +++ b/image.h @@ -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 */ diff --git a/main.c b/main.c index c96a030..36bbb6d 100644 --- a/main.c +++ b/main.c @@ -17,6 +17,7 @@ */ #define _POSIX_C_SOURCE 200112L +#define _MAPPINGS_CONFIG #include #include @@ -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; diff --git a/options.c b/options.c index 1e4a56c..13e1174 100644 --- a/options.c +++ b/options.c @@ -17,6 +17,7 @@ */ #define _POSIX_C_SOURCE 200112L +#define _IMAGE_CONFIG #include #include @@ -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], "-"); } diff --git a/options.h b/options.h index 67ad926..3bf685a 100644 --- a/options.h +++ b/options.h @@ -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; diff --git a/thumbs.c b/thumbs.c index 52597dd..fa54576 100644 --- a/thumbs.c +++ b/thumbs.c @@ -17,6 +17,7 @@ */ #define _POSIX_C_SOURCE 200112L +#define _THUMBS_CONFIG #include #include @@ -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; diff --git a/thumbs.h b/thumbs.h index 47f7ba8..92f5726 100644 --- a/thumbs.h +++ b/thumbs.h @@ -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); diff --git a/types.h b/types.h index dd85922..ddf6cf6 100644 --- a/types.h +++ b/types.h @@ -1,6 +1,11 @@ #ifndef TYPES_H #define TYPES_H +typedef enum { + false, + true +} bool; + typedef enum { MODE_IMAGE, MODE_THUMB @@ -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: */ diff --git a/window.c b/window.c index 4a90516..fd6229c 100644 --- a/window.c +++ b/window.c @@ -17,6 +17,7 @@ */ #define _POSIX_C_SOURCE 200112L +#define _WINDOW_CONFIG #include #include @@ -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) diff --git a/window.h b/window.h index 1058919..ac60156 100644 --- a/window.h +++ b/window.h @@ -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*);