1 /* options.h
2 
3 Copyright (C) 1999-2003 Tom Gilbert.
4 Copyright (C) 2010-2020 Daniel Friesel.
5 
6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions:
12 
13 The above copyright notice and this permission notice shall be included in
14 all copies of the Software and its documentation and acknowledgment shall be
15 given in the documentation and software packages that this Software was
16 used.
17 
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
22 IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 
25 */
26 
27 #ifndef OPTIONS_H
28 #define OPTIONS_H
29 
30 enum on_last_slide_action {
31 	ON_LAST_SLIDE_RESUME = 0,
32 	ON_LAST_SLIDE_QUIT,
33 	ON_LAST_SLIDE_HOLD
34 };
35 
36 struct __fehoptions {
37 	unsigned char multiwindow;
38 	unsigned char montage;
39 	unsigned char index;
40 	unsigned char thumbs;
41 	unsigned char slideshow;
42 	unsigned char recursive;
43 	unsigned char output;
44 	unsigned char verbose;
45 	unsigned char display;
46 	unsigned char bg;
47 	unsigned char alpha;
48 	unsigned char alpha_level;
49 	unsigned char aspect;
50 	unsigned char stretch;
51 	unsigned char keep_http;
52 	unsigned char use_conversion_cache;
53 	unsigned char borderless;
54 	unsigned char randomize;
55 	unsigned char jump_on_resort;
56 	unsigned char full_screen;
57 	unsigned char draw_filename;
58 #ifdef HAVE_LIBEXIF
59 	unsigned char draw_exif;
60 	unsigned char auto_rotate;
61 #endif
62 #ifdef HAVE_INOTIFY
63 	unsigned char auto_reload;
64     int inotify_fd;
65 #endif
66 	unsigned char list;
67 	unsigned char quiet;
68 	unsigned char preload;
69 	unsigned char loadables;
70 	unsigned char unloadables;
71 	unsigned char reverse;
72 	unsigned char no_menus;
73 	unsigned char scale_down;
74 	unsigned char bgmode;
75 	unsigned char xinerama;
76 	unsigned char screen_clip;
77 	unsigned char hide_pointer;
78 	unsigned char draw_actions;
79 	unsigned char draw_info;
80 	unsigned char cache_thumbnails;
81 	unsigned char on_last_slide;
82 	unsigned char hold_actions[10];
83 	unsigned char text_bg;
84 	unsigned char no_fehbg;
85 	unsigned char keep_zoom_vp;
86 	unsigned char insecure_ssl;
87 	unsigned char filter_by_dimensions;
88 	unsigned char edit;
89 
90 	char *output_file;
91 	char *output_dir;
92 	char *bg_file;
93 	char *image_bg;
94 	char *font;
95 	char *title_font;
96 	char *title;
97 	char *thumb_title;
98 	char *actions[10];
99 	char *action_titles[10];
100 	char *fontpath;
101 	char *filelistfile;
102 	char *menu_font;
103 	char *customlist;
104 	char *caption_path;
105 	char *start_list_at;
106 	char *info_cmd;
107 	char *index_info;
108 
109 	int force_aliasing;
110 	int thumb_w;
111 	int thumb_h;
112 	int limit_w;
113 	int limit_h;
114 	unsigned int thumb_redraw;
115 	double reload;
116 	int sort;
117 	int version_sort;
118 	int debug;
119 	int geom_enabled;
120 	int geom_flags;
121 	int geom_x;
122 	int geom_y;
123 	unsigned int geom_w;
124 	unsigned int geom_h;
125 	int offset_flags;
126 	int offset_x;
127 	int offset_y;
128 	int default_zoom;
129 	int zoom_mode;
130 	unsigned char adjust_reload;
131 	int xinerama_index;
132 	char *x11_class;
133 
134 	/* signed in case someone wants to invert scrolling real quick */
135 	int scroll_step;
136 
137 	// imlib cache size in mebibytes
138 	int cache_size;
139 
140 	unsigned int min_width, min_height, max_width, max_height;
141 
142 	unsigned char mode;
143 	unsigned char paused;
144 
145 	double slideshow_delay;
146 
147 	signed int conversion_timeout;
148 
149 	Imlib_Font menu_fn;
150 };
151 
152 struct __fehkey {
153 	unsigned int keysyms[3];
154 	unsigned int keystates[3];
155 	unsigned int state;
156 	unsigned int button;
157 	char *name;
158 };
159 
160 enum key_action {
161 	EVENT_menu_close = 0,
162 	EVENT_menu_parent,
163 	EVENT_menu_down,
164 	EVENT_menu_up,
165 	EVENT_menu_child,
166 	EVENT_menu_select,
167 	EVENT_scroll_left,
168 	EVENT_scroll_right,
169 	EVENT_scroll_down,
170 	EVENT_scroll_up,
171 	EVENT_scroll_left_page,
172 	EVENT_scroll_right_page,
173 	EVENT_scroll_down_page,
174 	EVENT_scroll_up_page,
175 	EVENT_prev_img,
176 	EVENT_next_img,
177 	EVENT_jump_back,
178 	EVENT_jump_fwd,
179 	EVENT_prev_dir,
180 	EVENT_next_dir,
181 	EVENT_jump_random,
182 	EVENT_quit,
183 	EVENT_close,
184 	EVENT_remove,
185 	EVENT_delete,
186 	EVENT_jump_first,
187 	EVENT_jump_last,
188 	EVENT_action_0,
189 	EVENT_action_1,
190 	EVENT_action_2,
191 	EVENT_action_3,
192 	EVENT_action_4,
193 	EVENT_action_5,
194 	EVENT_action_6,
195 	EVENT_action_7,
196 	EVENT_action_8,
197 	EVENT_action_9,
198 	EVENT_zoom_in,
199 	EVENT_zoom_out,
200 	EVENT_zoom_default,
201 	EVENT_zoom_fit,
202 	EVENT_zoom_fill,
203 	EVENT_size_to_image,
204 	EVENT_render,
205 	EVENT_toggle_actions,
206 	EVENT_toggle_aliasing,
207 	EVENT_toggle_auto_zoom,
208 #ifdef HAVE_LIBEXIF
209 	EVENT_toggle_exif,
210 #endif
211 	EVENT_toggle_filenames,
212 	EVENT_toggle_info,
213 	EVENT_toggle_pointer,
214 	EVENT_toggle_caption,
215 	EVENT_toggle_pause,
216 	EVENT_toggle_menu,
217 	EVENT_toggle_fullscreen,
218 	EVENT_reload_image,
219 	EVENT_save_image,
220 	EVENT_save_filelist,
221 	EVENT_orient_1,
222 	EVENT_orient_3,
223 	EVENT_flip,
224 	EVENT_mirror,
225 	EVENT_reload_minus,
226 	EVENT_reload_plus,
227 	EVENT_toggle_keep_vp,
228 	EVENT_toggle_fixed_geometry,
229 	EVENT_pan,
230 	EVENT_zoom,
231 	EVENT_blur,
232 	EVENT_rotate,
233 	EVENT_LIST_END
234 };
235 
236 void init_parse_options(int argc, char **argv);
237 char *feh_string_normalize(char *str);
238 
239 extern fehoptions opt;
240 
241 #endif
242