Reduced usage of preprocessor macros
This commit is contained in:
parent
5f780fc3e7
commit
a271e16744
2
Makefile
2
Makefile
|
@ -1,6 +1,6 @@
|
||||||
all: sxiv
|
all: sxiv
|
||||||
|
|
||||||
VERSION = 0.8.2
|
VERSION = git-20110722
|
||||||
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
DESTDIR =
|
DESTDIR =
|
||||||
|
|
25
config.h
25
config.h
|
@ -1,19 +1,18 @@
|
||||||
/* default window dimensions (overwritten via -g option): */
|
/* default window dimensions (overwritten via -g option): */
|
||||||
#define WIN_WIDTH 800
|
enum { WIN_WIDTH = 800, WIN_HEIGHT = 600 };
|
||||||
#define WIN_HEIGHT 600
|
|
||||||
|
|
||||||
/* default color for window background: *
|
/* default color for window background: *
|
||||||
* (see X(7) "COLOR NAMES" section for valid values) */
|
* (see X(7) "COLOR NAMES" section for valid values) */
|
||||||
#define BG_COLOR "#999999"
|
static const char * const BG_COLOR = "#999999";
|
||||||
/* default color for thumbnail selection: */
|
/* default color for thumbnail selection: */
|
||||||
#define SEL_COLOR "#0066FF"
|
static const char * const SEL_COLOR = "#0066FF";
|
||||||
|
|
||||||
/* how should images be scaled when they are loaded?: *
|
/* how should images be scaled when they are loaded?: *
|
||||||
* (also controllable via -d/-s/-Z/-z options) *
|
* (also controllable via -d/-s/-Z/-z options) *
|
||||||
* SCALE_DOWN: 100%, but fit large images into window, *
|
* SCALE_DOWN: 100%, but fit large images into window, *
|
||||||
* SCALE_FIT: fit all images into window, *
|
* SCALE_FIT: fit all images into window, *
|
||||||
* SCALE_ZOOM: use current zoom level, 100% at startup */
|
* SCALE_ZOOM: use current zoom level, 100% at startup */
|
||||||
#define SCALE_MODE SCALE_DOWN
|
static const scalemode_t SCALE_MODE = SCALE_DOWN;
|
||||||
|
|
||||||
/* levels (percent) to use when zooming via '-' and '+': */
|
/* levels (percent) to use when zooming via '-' and '+': */
|
||||||
static const float zoom_levels[] = {
|
static const float zoom_levels[] = {
|
||||||
|
@ -22,20 +21,16 @@ static const float zoom_levels[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* default dimension of thumbnails (width == height): */
|
/* default dimension of thumbnails (width == height): */
|
||||||
#define THUMB_SIZE 60
|
enum { THUMB_SIZE = 60 };
|
||||||
|
|
||||||
/* enable external commands (defined below)? 0=off, 1=on: */
|
/* enable external commands (defined below)? 0=off, 1=on: */
|
||||||
#define EXT_COMMANDS 0
|
enum { EXT_COMMANDS = 0 };
|
||||||
|
|
||||||
/* external commands and corresponding key mappings: */
|
/* external commands and corresponding key mappings: */
|
||||||
#ifdef MAIN_C
|
|
||||||
#if EXT_COMMANDS
|
|
||||||
static const command_t commands[] = {
|
static const command_t commands[] = {
|
||||||
/* ctrl-... reload? command, '#' is replaced by filename */
|
/* ctrl-... reload? command, '#' is replaced by filename */
|
||||||
{ XK_comma, True, "jpegtran -rotate 270 -copy all -outfile # #" },
|
{ ',', 1, "jpegtran -rotate 270 -copy all -outfile # #" },
|
||||||
{ XK_period, True, "jpegtran -rotate 90 -copy all -outfile # #" },
|
{ '.', 1, "jpegtran -rotate 90 -copy all -outfile # #" },
|
||||||
{ XK_less, True, "mogrify -rotate -90 #" },
|
{ '<', 1, "mogrify -rotate -90 #" },
|
||||||
{ XK_greater, True, "mogrify -rotate +90 #" }
|
{ '>', 1, "mogrify -rotate +90 #" }
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
22
image.c
22
image.c
|
@ -18,10 +18,10 @@
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
int zl_cnt;
|
int zl_cnt;
|
||||||
float zoom_min;
|
float zoom_min;
|
||||||
|
@ -275,25 +275,25 @@ int img_move(img_t *img, win_t *win, int dx, int dy) {
|
||||||
return ox != img->x || oy != img->y;
|
return ox != img->x || oy != img->y;
|
||||||
}
|
}
|
||||||
|
|
||||||
int img_pan(img_t *img, win_t *win, pandir_t dir, int page) {
|
int img_pan(img_t *img, win_t *win, direction_t dir, int page) {
|
||||||
if (!img || !img->im || !win)
|
if (!img || !img->im || !win)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
switch (dir) {
|
switch (dir) {
|
||||||
case PAN_LEFT:
|
case DIR_LEFT:
|
||||||
return img_move(img, win, win->w / (page ? 1 : 5), 0);
|
return img_move(img, win, win->w / (page ? 1 : 5), 0);
|
||||||
case PAN_RIGHT:
|
case DIR_RIGHT:
|
||||||
return img_move(img, win, win->w / (page ? 1 : 5) * -1, 0);
|
return img_move(img, win, win->w / (page ? 1 : 5) * -1, 0);
|
||||||
case PAN_UP:
|
case DIR_UP:
|
||||||
return img_move(img, win, 0, win->h / (page ? 1 : 5));
|
return img_move(img, win, 0, win->h / (page ? 1 : 5));
|
||||||
case PAN_DOWN:
|
case DIR_DOWN:
|
||||||
return img_move(img, win, 0, win->h / (page ? 1 : 5) * -1);
|
return img_move(img, win, 0, win->h / (page ? 1 : 5) * -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int img_pan_edge(img_t *img, win_t *win, pandir_t dir) {
|
int img_pan_edge(img_t *img, win_t *win, direction_t dir) {
|
||||||
int ox, oy;
|
int ox, oy;
|
||||||
|
|
||||||
if (!img || !img->im || !win)
|
if (!img || !img->im || !win)
|
||||||
|
@ -303,16 +303,16 @@ int img_pan_edge(img_t *img, win_t *win, pandir_t dir) {
|
||||||
oy = img->y;
|
oy = img->y;
|
||||||
|
|
||||||
switch (dir) {
|
switch (dir) {
|
||||||
case PAN_LEFT:
|
case DIR_LEFT:
|
||||||
img->x = 0;
|
img->x = 0;
|
||||||
break;
|
break;
|
||||||
case PAN_RIGHT:
|
case DIR_RIGHT:
|
||||||
img->x = win->w - img->w * img->zoom;
|
img->x = win->w - img->w * img->zoom;
|
||||||
break;
|
break;
|
||||||
case PAN_UP:
|
case DIR_UP:
|
||||||
img->y = 0;
|
img->y = 0;
|
||||||
break;
|
break;
|
||||||
case PAN_DOWN:
|
case DIR_DOWN:
|
||||||
img->y = win->h - img->h * img->zoom;
|
img->y = win->h - img->h * img->zoom;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
18
image.h
18
image.h
|
@ -21,21 +21,9 @@
|
||||||
|
|
||||||
#include <Imlib2.h>
|
#include <Imlib2.h>
|
||||||
|
|
||||||
|
#include "types.h"
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
SCALE_DOWN = 0,
|
|
||||||
SCALE_FIT,
|
|
||||||
SCALE_ZOOM
|
|
||||||
} scalemode_t;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
PAN_LEFT = 0,
|
|
||||||
PAN_RIGHT,
|
|
||||||
PAN_UP,
|
|
||||||
PAN_DOWN
|
|
||||||
} pandir_t;
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Imlib_Image *im;
|
Imlib_Image *im;
|
||||||
|
|
||||||
|
@ -68,8 +56,8 @@ int img_zoom_in(img_t*, win_t*);
|
||||||
int img_zoom_out(img_t*, win_t*);
|
int img_zoom_out(img_t*, win_t*);
|
||||||
|
|
||||||
int img_move(img_t*, win_t*, int, int);
|
int img_move(img_t*, win_t*, int, int);
|
||||||
int img_pan(img_t*, win_t*, pandir_t, int);
|
int img_pan(img_t*, win_t*, direction_t, int);
|
||||||
int img_pan_edge(img_t*, win_t*, pandir_t);
|
int img_pan_edge(img_t*, win_t*, direction_t);
|
||||||
|
|
||||||
void img_rotate_left(img_t*, win_t*);
|
void img_rotate_left(img_t*, win_t*);
|
||||||
void img_rotate_right(img_t*, win_t*);
|
void img_rotate_right(img_t*, win_t*);
|
||||||
|
|
81
main.c
81
main.c
|
@ -34,26 +34,13 @@
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "thumbs.h"
|
#include "thumbs.h"
|
||||||
|
#include "types.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
|
||||||
#define FNAME_CNT 1024
|
|
||||||
#define TITLE_LEN 256
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
MODE_NORMAL = 0,
|
|
||||||
MODE_THUMBS
|
|
||||||
} appmode_t;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
KeySym ksym;
|
|
||||||
Bool reload;
|
|
||||||
const char *cmdline;
|
|
||||||
} command_t;
|
|
||||||
|
|
||||||
#define MAIN_C
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
enum { TITLE_LEN = 256, FNAME_CNT = 1024 };
|
||||||
|
|
||||||
void run();
|
void run();
|
||||||
|
|
||||||
appmode_t mode;
|
appmode_t mode;
|
||||||
|
@ -266,7 +253,6 @@ int main(int argc, char **argv) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if EXT_COMMANDS
|
|
||||||
int run_command(const char *cline, Bool reload) {
|
int run_command(const char *cline, Bool reload) {
|
||||||
int fncnt, fnlen;
|
int fncnt, fnlen;
|
||||||
char *cn, *cmdline;
|
char *cn, *cmdline;
|
||||||
|
@ -322,16 +308,17 @@ int run_command(const char *cline, Bool reload) {
|
||||||
free(cmdline);
|
free(cmdline);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif /* EXT_COMMANDS */
|
|
||||||
|
|
||||||
|
|
||||||
/* event handling */
|
/* event handling */
|
||||||
|
|
||||||
/* timeouts in milliseconds: */
|
/* timeouts in milliseconds: */
|
||||||
#define TO_WIN_RESIZE 75
|
enum {
|
||||||
#define TO_IMAGE_DRAG 1
|
TO_WIN_RESIZE = 75,
|
||||||
#define TO_CURSOR_HIDE 1500
|
TO_IMAGE_DRAG = 1,
|
||||||
#define TO_THUMBS_LOAD 200
|
TO_CURSOR_HIDE = 1500,
|
||||||
|
TO_THUMBS_LOAD = 200
|
||||||
|
};
|
||||||
|
|
||||||
int timo_cursor;
|
int timo_cursor;
|
||||||
int timo_redraw;
|
int timo_redraw;
|
||||||
|
@ -366,11 +353,10 @@ void on_keypress(XKeyEvent *kev) {
|
||||||
changed = 0;
|
changed = 0;
|
||||||
ctrl = CLEANMASK(kev->state) & ControlMask;
|
ctrl = CLEANMASK(kev->state) & ControlMask;
|
||||||
|
|
||||||
#if EXT_COMMANDS
|
|
||||||
/* external commands from commands.h */
|
/* external commands from commands.h */
|
||||||
if (ctrl) {
|
if (EXT_COMMANDS && ctrl) {
|
||||||
for (x = 0; x < LEN(commands); ++x) {
|
for (x = 0; x < LEN(commands); ++x) {
|
||||||
if (commands[x].ksym == ksym) {
|
if (commands[x].key == key) {
|
||||||
win_set_cursor(&win, CURSOR_WATCH);
|
win_set_cursor(&win, CURSOR_WATCH);
|
||||||
if (run_command(commands[x].cmdline, commands[x].reload)) {
|
if (run_command(commands[x].cmdline, commands[x].reload)) {
|
||||||
if (mode == MODE_NORMAL) {
|
if (mode == MODE_NORMAL) {
|
||||||
|
@ -396,7 +382,6 @@ void on_keypress(XKeyEvent *kev) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (mode == MODE_NORMAL) {
|
if (mode == MODE_NORMAL) {
|
||||||
switch (ksym) {
|
switch (ksym) {
|
||||||
|
@ -450,38 +435,38 @@ void on_keypress(XKeyEvent *kev) {
|
||||||
/* panning */
|
/* panning */
|
||||||
case XK_h:
|
case XK_h:
|
||||||
case XK_Left:
|
case XK_Left:
|
||||||
changed = img_pan(&img, &win, PAN_LEFT, ctrl);
|
changed = img_pan(&img, &win, DIR_LEFT, ctrl);
|
||||||
break;
|
break;
|
||||||
case XK_j:
|
case XK_j:
|
||||||
case XK_Down:
|
case XK_Down:
|
||||||
changed = img_pan(&img, &win, PAN_DOWN, ctrl);
|
changed = img_pan(&img, &win, DIR_DOWN, ctrl);
|
||||||
break;
|
break;
|
||||||
case XK_k:
|
case XK_k:
|
||||||
case XK_Up:
|
case XK_Up:
|
||||||
changed = img_pan(&img, &win, PAN_UP, ctrl);
|
changed = img_pan(&img, &win, DIR_UP, ctrl);
|
||||||
break;
|
break;
|
||||||
case XK_l:
|
case XK_l:
|
||||||
case XK_Right:
|
case XK_Right:
|
||||||
changed = img_pan(&img, &win, PAN_RIGHT, ctrl);
|
changed = img_pan(&img, &win, DIR_RIGHT, ctrl);
|
||||||
break;
|
break;
|
||||||
case XK_Prior:
|
case XK_Prior:
|
||||||
changed = img_pan(&img, &win, PAN_UP, 1);
|
changed = img_pan(&img, &win, DIR_UP, 1);
|
||||||
break;
|
break;
|
||||||
case XK_Next:
|
case XK_Next:
|
||||||
changed = img_pan(&img, &win, PAN_DOWN, 1);
|
changed = img_pan(&img, &win, DIR_DOWN, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XK_H:
|
case XK_H:
|
||||||
changed = img_pan_edge(&img, &win, PAN_LEFT);
|
changed = img_pan_edge(&img, &win, DIR_LEFT);
|
||||||
break;
|
break;
|
||||||
case XK_J:
|
case XK_J:
|
||||||
changed = img_pan_edge(&img, &win, PAN_DOWN);
|
changed = img_pan_edge(&img, &win, DIR_DOWN);
|
||||||
break;
|
break;
|
||||||
case XK_K:
|
case XK_K:
|
||||||
changed = img_pan_edge(&img, &win, PAN_UP);
|
changed = img_pan_edge(&img, &win, DIR_UP);
|
||||||
break;
|
break;
|
||||||
case XK_L:
|
case XK_L:
|
||||||
changed = img_pan_edge(&img, &win, PAN_RIGHT);
|
changed = img_pan_edge(&img, &win, DIR_RIGHT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* rotation */
|
/* rotation */
|
||||||
|
@ -548,19 +533,19 @@ void on_keypress(XKeyEvent *kev) {
|
||||||
/* move selection */
|
/* move selection */
|
||||||
case XK_h:
|
case XK_h:
|
||||||
case XK_Left:
|
case XK_Left:
|
||||||
changed = tns_move_selection(&tns, &win, TNS_LEFT);
|
changed = tns_move_selection(&tns, &win, DIR_LEFT);
|
||||||
break;
|
break;
|
||||||
case XK_j:
|
case XK_j:
|
||||||
case XK_Down:
|
case XK_Down:
|
||||||
changed = tns_move_selection(&tns, &win, TNS_DOWN);
|
changed = tns_move_selection(&tns, &win, DIR_DOWN);
|
||||||
break;
|
break;
|
||||||
case XK_k:
|
case XK_k:
|
||||||
case XK_Up:
|
case XK_Up:
|
||||||
changed = tns_move_selection(&tns, &win, TNS_UP);
|
changed = tns_move_selection(&tns, &win, DIR_UP);
|
||||||
break;
|
break;
|
||||||
case XK_l:
|
case XK_l:
|
||||||
case XK_Right:
|
case XK_Right:
|
||||||
changed = tns_move_selection(&tns, &win, TNS_RIGHT);
|
changed = tns_move_selection(&tns, &win, DIR_RIGHT);
|
||||||
break;
|
break;
|
||||||
case XK_g:
|
case XK_g:
|
||||||
if (tns.sel != 0) {
|
if (tns.sel != 0) {
|
||||||
|
@ -642,23 +627,23 @@ void on_buttonpress(XButtonEvent *bev) {
|
||||||
if (mask == ControlMask)
|
if (mask == ControlMask)
|
||||||
changed = img_zoom_in(&img, &win);
|
changed = img_zoom_in(&img, &win);
|
||||||
else if (mask == ShiftMask)
|
else if (mask == ShiftMask)
|
||||||
changed = img_pan(&img, &win, PAN_LEFT, 0);
|
changed = img_pan(&img, &win, DIR_LEFT, 0);
|
||||||
else
|
else
|
||||||
changed = img_pan(&img, &win, PAN_UP, 0);
|
changed = img_pan(&img, &win, DIR_UP, 0);
|
||||||
break;
|
break;
|
||||||
case Button5:
|
case Button5:
|
||||||
if (mask == ControlMask)
|
if (mask == ControlMask)
|
||||||
changed = img_zoom_out(&img, &win);
|
changed = img_zoom_out(&img, &win);
|
||||||
else if (mask == ShiftMask)
|
else if (mask == ShiftMask)
|
||||||
changed = img_pan(&img, &win, PAN_RIGHT, 0);
|
changed = img_pan(&img, &win, DIR_RIGHT, 0);
|
||||||
else
|
else
|
||||||
changed = img_pan(&img, &win, PAN_DOWN, 0);
|
changed = img_pan(&img, &win, DIR_DOWN, 0);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
changed = img_pan(&img, &win, PAN_LEFT, 0);
|
changed = img_pan(&img, &win, DIR_LEFT, 0);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
changed = img_pan(&img, &win, PAN_RIGHT, 0);
|
changed = img_pan(&img, &win, DIR_RIGHT, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -680,10 +665,10 @@ void on_buttonpress(XButtonEvent *bev) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Button4:
|
case Button4:
|
||||||
changed = tns_scroll(&tns, TNS_UP);
|
changed = tns_scroll(&tns, DIR_UP);
|
||||||
break;
|
break;
|
||||||
case Button5:
|
case Button5:
|
||||||
changed = tns_scroll(&tns, TNS_DOWN);
|
changed = tns_scroll(&tns, DIR_DOWN);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,9 +23,9 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
options_t _options;
|
options_t _options;
|
||||||
const options_t *options = (const options_t*) &_options;
|
const options_t *options = (const options_t*) &_options;
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#define OPTIONS_H
|
#define OPTIONS_H
|
||||||
|
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
|
#include "types.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char **filenames;
|
char **filenames;
|
||||||
|
|
18
thumbs.c
18
thumbs.c
|
@ -23,9 +23,9 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
#include "thumbs.h"
|
#include "thumbs.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
#ifdef __NetBSD__
|
#ifdef __NetBSD__
|
||||||
#define st_mtim st_mtimespec
|
#define st_mtim st_mtimespec
|
||||||
|
@ -380,7 +380,7 @@ void tns_highlight(tns_t *tns, win_t *win, int n, Bool hl) {
|
||||||
win_draw(win);
|
win_draw(win);
|
||||||
}
|
}
|
||||||
|
|
||||||
int tns_move_selection(tns_t *tns, win_t *win, tnsdir_t dir) {
|
int tns_move_selection(tns_t *tns, win_t *win, direction_t dir) {
|
||||||
int old;
|
int old;
|
||||||
|
|
||||||
if (!tns || !tns->thumbs || !win)
|
if (!tns || !tns->thumbs || !win)
|
||||||
|
@ -389,19 +389,19 @@ int tns_move_selection(tns_t *tns, win_t *win, tnsdir_t dir) {
|
||||||
old = tns->sel;
|
old = tns->sel;
|
||||||
|
|
||||||
switch (dir) {
|
switch (dir) {
|
||||||
case TNS_LEFT:
|
case DIR_LEFT:
|
||||||
if (tns->sel > 0)
|
if (tns->sel > 0)
|
||||||
--tns->sel;
|
--tns->sel;
|
||||||
break;
|
break;
|
||||||
case TNS_RIGHT:
|
case DIR_RIGHT:
|
||||||
if (tns->sel < tns->cnt - 1)
|
if (tns->sel < tns->cnt - 1)
|
||||||
++tns->sel;
|
++tns->sel;
|
||||||
break;
|
break;
|
||||||
case TNS_UP:
|
case DIR_UP:
|
||||||
if (tns->sel >= tns->cols)
|
if (tns->sel >= tns->cols)
|
||||||
tns->sel -= tns->cols;
|
tns->sel -= tns->cols;
|
||||||
break;
|
break;
|
||||||
case TNS_DOWN:
|
case DIR_DOWN:
|
||||||
if (tns->sel + tns->cols < tns->cnt)
|
if (tns->sel + tns->cols < tns->cnt)
|
||||||
tns->sel += tns->cols;
|
tns->sel += tns->cols;
|
||||||
break;
|
break;
|
||||||
|
@ -417,7 +417,7 @@ int tns_move_selection(tns_t *tns, win_t *win, tnsdir_t dir) {
|
||||||
return tns->sel != old;
|
return tns->sel != old;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tns_scroll(tns_t *tns, tnsdir_t dir) {
|
int tns_scroll(tns_t *tns, direction_t dir) {
|
||||||
int old;
|
int old;
|
||||||
|
|
||||||
if (!tns)
|
if (!tns)
|
||||||
|
@ -425,11 +425,11 @@ int tns_scroll(tns_t *tns, tnsdir_t dir) {
|
||||||
|
|
||||||
old = tns->first;
|
old = tns->first;
|
||||||
|
|
||||||
if (dir == TNS_DOWN && tns->first + tns->cols * tns->rows < tns->cnt) {
|
if (dir == DIR_DOWN && tns->first + tns->cols * tns->rows < tns->cnt) {
|
||||||
tns->first += tns->cols;
|
tns->first += tns->cols;
|
||||||
tns_check_view(tns, True);
|
tns_check_view(tns, True);
|
||||||
tns->dirty = 1;
|
tns->dirty = 1;
|
||||||
} else if (dir == TNS_UP && tns->first >= tns->cols) {
|
} else if (dir == DIR_UP && tns->first >= tns->cols) {
|
||||||
tns->first -= tns->cols;
|
tns->first -= tns->cols;
|
||||||
tns_check_view(tns, True);
|
tns_check_view(tns, True);
|
||||||
tns->dirty = 1;
|
tns->dirty = 1;
|
||||||
|
|
12
thumbs.h
12
thumbs.h
|
@ -21,15 +21,9 @@
|
||||||
|
|
||||||
#include <Imlib2.h>
|
#include <Imlib2.h>
|
||||||
|
|
||||||
|
#include "types.h"
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
TNS_LEFT = 0,
|
|
||||||
TNS_RIGHT,
|
|
||||||
TNS_UP,
|
|
||||||
TNS_DOWN
|
|
||||||
} tnsdir_t;
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Imlib_Image *im;
|
Imlib_Image *im;
|
||||||
const char *filename;
|
const char *filename;
|
||||||
|
@ -62,8 +56,8 @@ int tns_load(tns_t*, int, const char*, unsigned char);
|
||||||
void tns_render(tns_t*, win_t*);
|
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*, tnsdir_t);
|
int tns_move_selection(tns_t*, win_t*, direction_t);
|
||||||
int tns_scroll(tns_t*, tnsdir_t);
|
int tns_scroll(tns_t*, direction_t);
|
||||||
|
|
||||||
int tns_translate(tns_t*, int, int);
|
int tns_translate(tns_t*, int, int);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
#ifndef TYPES_H
|
||||||
|
#define TYPES_H
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
MODE_NORMAL = 0,
|
||||||
|
MODE_THUMBS
|
||||||
|
} appmode_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char key;
|
||||||
|
int reload;
|
||||||
|
const char *cmdline;
|
||||||
|
} command_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
DIR_LEFT = 0,
|
||||||
|
DIR_RIGHT,
|
||||||
|
DIR_UP,
|
||||||
|
DIR_DOWN
|
||||||
|
} direction_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SCALE_DOWN = 0,
|
||||||
|
SCALE_FIT,
|
||||||
|
SCALE_ZOOM
|
||||||
|
} scalemode_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
CURSOR_ARROW = 0,
|
||||||
|
CURSOR_NONE,
|
||||||
|
CURSOR_HAND,
|
||||||
|
CURSOR_WATCH
|
||||||
|
} cursor_t;
|
||||||
|
|
||||||
|
#endif /* TYPES_H */
|
4
window.c
4
window.c
|
@ -21,10 +21,10 @@
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
#include <X11/cursorfont.h>
|
#include <X11/cursorfont.h>
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
static Cursor carrow;
|
static Cursor carrow;
|
||||||
static Cursor cnone;
|
static Cursor cnone;
|
||||||
|
@ -312,7 +312,7 @@ void win_set_title(win_t *win, const char *title) {
|
||||||
PropModeReplace, (unsigned char *) title, strlen(title));
|
PropModeReplace, (unsigned char *) title, strlen(title));
|
||||||
}
|
}
|
||||||
|
|
||||||
void win_set_cursor(win_t *win, win_cur_t cursor) {
|
void win_set_cursor(win_t *win, cursor_t cursor) {
|
||||||
if (!win || !win->xwin)
|
if (!win || !win->xwin)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
11
window.h
11
window.h
|
@ -21,14 +21,9 @@
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
|
|
||||||
#define CLEANMASK(mask) ((mask) & ~LockMask)
|
#include "types.h"
|
||||||
|
|
||||||
typedef enum {
|
#define CLEANMASK(mask) ((mask) & ~LockMask)
|
||||||
CURSOR_ARROW = 0,
|
|
||||||
CURSOR_NONE,
|
|
||||||
CURSOR_HAND,
|
|
||||||
CURSOR_WATCH
|
|
||||||
} win_cur_t;
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Display *dpy;
|
Display *dpy;
|
||||||
|
@ -75,6 +70,6 @@ void win_draw_rect(win_t*, Pixmap, int, int, int, int, Bool, int,
|
||||||
unsigned long);
|
unsigned long);
|
||||||
|
|
||||||
void win_set_title(win_t*, const char*);
|
void win_set_title(win_t*, const char*);
|
||||||
void win_set_cursor(win_t*, win_cur_t);
|
void win_set_cursor(win_t*, cursor_t);
|
||||||
|
|
||||||
#endif /* WINDOW_H */
|
#endif /* WINDOW_H */
|
||||||
|
|
Loading…
Reference in New Issue