diff options
Diffstat (limited to 'src/feh.h')
-rw-r--r-- | src/feh.h | 85 |
1 files changed, 71 insertions, 14 deletions
@@ -1,6 +1,7 @@ /* feh.h Copyright (C) 1999-2003 Tom Gilbert. +Copyright (C) 2010-2020 Birte Kristina Friesel. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to @@ -26,6 +27,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef FEH_H #define FEH_H +/* + * strverscmp(3) is a GNU extension. In most supporting C libraries it + * requires _GNU_SOURCE to be defined. + */ +#ifdef HAVE_STRVERSCMP +#define _GNU_SOURCE +#endif + #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> @@ -54,15 +63,18 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <signal.h> #include <sys/wait.h> #include <math.h> +#include <getopt.h> #include <Imlib2.h> -#include <giblib/giblib.h> +#include "gib_hash.h" +#include "gib_imlib.h" +#include "gib_list.h" +#include "gib_style.h" #include "structs.h" #include "menu.h" #include "utils.h" -#include "getopt.h" #include "debug.h" @@ -92,11 +104,31 @@ enum bgmode_type { BG_MODE_NONE = 0, BG_MODE_TILE, BG_MODE_CENTER, BG_MODE_SCALE, BG_MODE_FILL, BG_MODE_MAX }; +enum zoom_mode { ZOOM_MODE_FILL = 1, ZOOM_MODE_MAX }; + +enum text_bg { TEXT_BG_CLEAR = 0, TEXT_BG_TINTED }; + enum slide_change { SLIDE_NEXT, SLIDE_PREV, SLIDE_RAND, SLIDE_FIRST, SLIDE_LAST, SLIDE_JUMP_FWD, - SLIDE_JUMP_BACK + SLIDE_JUMP_BACK, + SLIDE_JUMP_NEXT_DIR, + SLIDE_JUMP_PREV_DIR }; +enum feh_load_error { + LOAD_ERROR_IMLIB = 0, + LOAD_ERROR_IMAGEMAGICK, + LOAD_ERROR_CURL, + LOAD_ERROR_DCRAW, + LOAD_ERROR_MAGICBYTES +}; + +#define INPLACE_EDIT_FLIP -1 +#define INPLACE_EDIT_MIRROR -2 + +#define ZOOM_MIN 0.002 +#define ZOOM_MAX 2000 + typedef void (*sighandler_t) (int); int feh_main_iteration(int block); @@ -108,43 +140,63 @@ void init_xinerama(void); #endif /* HAVE_LIBXINERAMA */ void init_multiwindow_mode(void); void init_thumbnail_mode(void); -void init_collage_mode(void); void init_index_mode(void); void init_slideshow_mode(void); void init_list_mode(void); void init_loadables_mode(void); void init_unloadables_mode(void); +#ifdef HAVE_LIBMAGIC +void uninit_magic(void); +void init_magic(void); +#endif void feh_clean_exit(void); +int feh_should_ignore_image(Imlib_Image * im); int feh_load_image(Imlib_Image * im, feh_file * file); void show_mini_usage(void); -void slideshow_change_image(winwidget winwid, int change); +void slideshow_change_image(winwidget winwid, int change, int render); void slideshow_pause_toggle(winwidget w); -char *slideshow_create_name(feh_file * file); +void init_keyevents(void); +void init_buttonbindings(void); +void setup_stdin(void); +void restore_stdin(void); void feh_event_handle_keypress(XEvent * ev); -void feh_action_run(feh_file * file, char *action); -char *feh_printf(char *str, feh_file * file); +void feh_event_handle_stdin(void); +void feh_event_handle_generic(winwidget winwid, unsigned int state, KeySym keysym, unsigned int button); +fehkey *feh_str_to_kb(char * action); +void feh_action_run(feh_file * file, char *action, winwidget winwid); +char *format_size(double size); +char *feh_printf(char *str, feh_file * file, winwidget winwid); +void im_weprintf(winwidget w, char *fmt, ...); void feh_draw_zoom(winwidget w); void feh_draw_checks(winwidget win); void cb_slide_timer(void *data); void cb_reload_timer(void *data); -char *feh_http_load_image(char *url); int feh_load_image_char(Imlib_Image * im, char *filename); void feh_draw_filename(winwidget w); +#ifdef HAVE_LIBEXIF +void feh_draw_exif(winwidget w); +#endif void feh_draw_actions(winwidget w); void feh_draw_caption(winwidget w); void feh_draw_info(winwidget w); +void feh_draw_errstr(winwidget w); void feh_display_status(char stat); void real_loadables_mode(int loadable); void feh_reload_image(winwidget w, int resize, int force_new); void feh_filelist_image_remove(winwidget winwid, char do_delete); -char *feh_strip_hostname(char *url); -struct hostent *feh_gethostbyname(const char *name); +void feh_print_load_error(char *file, winwidget w, Imlib_Load_Error err, enum feh_load_error feh_err); void slideshow_save_image(winwidget win); -void feh_edit_inplace_orient(winwidget w, int orientation); -void feh_edit_inplace_lossless_rotate(winwidget w, int orientation); +void feh_edit_inplace(winwidget w, int orientation); +void feh_edit_inplace_lossless(winwidget w, int orientation); gib_list *feh_wrap_string(char *text, int wrap_width, Imlib_Font fn, gib_style * style); -char *build_caption_filename(feh_file * file); +char *build_caption_filename(feh_file * file, short create_dir); gib_list *feh_list_jump(gib_list * root, gib_list * l, int direction, int num); +#ifdef HAVE_INOTIFY +void feh_event_handle_inotify(void); +#endif +#ifndef HAVE_STRVERSCMP +int strverscmp(const char *l0, const char *r0); +#endif /* Imlib stuff */ extern Display *disp; @@ -170,4 +222,9 @@ extern feh_menu *menu_main; extern feh_menu *menu_close; extern char *mode; /* label for the current mode */ +/* to terminate long-running children with SIGALRM */ +extern int childpid; + +extern unsigned char control_via_stdin; + #endif |