@@ -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 */ |
@@ -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); | |||
@@ -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: */ | |||
@@ -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*); | |||