clang-tidy: bugprone-macro-parentheses
[geeqie.git] / src / typedefs.h
1 /*
2  * Copyright (C) 2006 John Ellis
3  * Copyright (C) 2008 - 2016 The Geeqie Team
4  *
5  * Author: John Ellis
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20  */
21
22 #ifndef TYPEDEFS_H
23 #define TYPEDEFS_H
24
25 enum ZoomMode {
26         ZOOM_RESET_ORIGINAL     = 0,
27         ZOOM_RESET_FIT_WINDOW   = 1,
28         ZOOM_RESET_NONE         = 2
29 };
30
31 enum ClipboardSelection {
32         CLIPBOARD_PRIMARY       = 0,
33         CLIPBOARD_CLIPBOARD = 1,
34         CLIPBOARD_BOTH = 2
35 };
36
37 enum MouseButton {
38         MOUSE_BUTTON_LEFT       = 1,
39         MOUSE_BUTTON_MIDDLE     = 2,
40         MOUSE_BUTTON_RIGHT      = 3,
41         MOUSE_BUTTON_WHEEL_UP   = 4,
42         MOUSE_BUTTON_WHEEL_DOWN = 5,
43         MOUSE_BUTTON_8  = 8,
44         MOUSE_BUTTON_9  = 9
45 };
46
47 enum DirViewType {
48         DIRVIEW_LIST,
49         DIRVIEW_TREE,
50
51         DIRVIEW_LAST = DIRVIEW_TREE /**< Keep this up to date! */
52 };
53
54 enum FileViewType {
55         FILEVIEW_LIST,
56         FILEVIEW_ICON,
57
58         FILEVIEW_LAST = FILEVIEW_ICON /**< Keep this up to date! */
59 };
60
61 #define CMD_COPY     "geeqie-copy-command.desktop"
62 #define CMD_MOVE     "geeqie-move-command.desktop"
63 #define CMD_RENAME   "geeqie-rename-command.desktop"
64 #define CMD_DELETE   "geeqie-delete-command.desktop"
65 #define CMD_FOLDER   "geeqie-folder-command.desktop"
66
67 enum SortType {
68         SORT_NONE,
69         SORT_NAME,
70         SORT_SIZE,
71         SORT_TIME,
72         SORT_CTIME,
73         SORT_PATH,
74         SORT_NUMBER,
75         SORT_EXIFTIME,
76         SORT_EXIFTIMEDIGITIZED,
77         SORT_RATING,
78         SORT_CLASS
79 };
80
81 enum AlterType {
82         ALTER_NONE,             /**< do nothing */
83         ALTER_ROTATE_90,
84         ALTER_ROTATE_90_CC,     /**< counterclockwise */
85         ALTER_ROTATE_180,
86         ALTER_MIRROR,
87         ALTER_FLIP,
88 };
89
90 enum ImageSplitMode {
91         SPLIT_NONE = 0,
92         SPLIT_VERT,
93         SPLIT_HOR,
94         SPLIT_TRIPLE,
95         SPLIT_QUAD,
96 };
97
98 enum MarkToSelectionMode {
99         MTS_MODE_MINUS,
100         MTS_MODE_SET,
101         MTS_MODE_OR,
102         MTS_MODE_AND
103 };
104
105 enum SelectionToMarkMode {
106         STM_MODE_RESET,
107         STM_MODE_SET,
108         STM_MODE_TOGGLE
109 };
110
111 enum FileFormatClass {
112         FORMAT_CLASS_UNKNOWN,
113         FORMAT_CLASS_IMAGE,
114         FORMAT_CLASS_RAWIMAGE,
115         FORMAT_CLASS_META,
116         FORMAT_CLASS_VIDEO,
117         FORMAT_CLASS_COLLECTION,
118         FORMAT_CLASS_DOCUMENT,
119         FORMAT_CLASS_ARCHIVE,
120         FILE_FORMAT_CLASSES
121 };
122
123 extern const gchar *format_class_list[]; /**< defined in preferences.cc */
124
125 enum NotifyType {
126         NOTIFY_MARKS            = 1 << 1, /**< changed marks */
127         NOTIFY_PIXBUF           = 1 << 2, /**< image was read into fd->pixbuf */
128         NOTIFY_HISTMAP          = 1 << 3, /**< histmap was read into fd->histmap */
129         NOTIFY_ORIENTATION      = 1 << 4, /**< image was rotated */
130         NOTIFY_METADATA         = 1 << 5, /**< changed image metadata, not yet written */
131         NOTIFY_GROUPING         = 1 << 6, /**< change in fd->sidecar_files or fd->parent */
132         NOTIFY_REREAD           = 1 << 7, /**< changed file size, date, etc., file name remains unchanged */
133         NOTIFY_CHANGE           = 1 << 8  /**< generic change described by fd->change */
134 };
135
136 enum ChangeError {
137         CHANGE_OK                      = 0,
138         CHANGE_WARN_DEST_EXISTS        = 1 << 0,
139         CHANGE_WARN_NO_WRITE_PERM      = 1 << 1,
140         CHANGE_WARN_SAME               = 1 << 2,
141         CHANGE_WARN_CHANGED_EXT        = 1 << 3,
142         CHANGE_WARN_UNSAVED_META       = 1 << 4,
143         CHANGE_WARN_NO_WRITE_PERM_DEST_DIR  = 1 << 5,
144         CHANGE_ERROR_MASK              = ~0xff, /**< the values below are fatal errors */
145         CHANGE_NO_READ_PERM            = 1 << 8,
146         CHANGE_NO_WRITE_PERM_DIR       = 1 << 9,
147         CHANGE_NO_DEST_DIR             = 1 << 10,
148         CHANGE_DUPLICATE_DEST          = 1 << 11,
149         CHANGE_NO_WRITE_PERM_DEST      = 1 << 12,
150         CHANGE_DEST_EXISTS             = 1 << 13,
151         CHANGE_NO_SRC                  = 1 << 14,
152         CHANGE_GENERIC_ERROR           = 1 << 16
153 };
154
155 enum MetadataFormat {
156         METADATA_PLAIN          = 0, /**< format that can be edited and written back */
157         METADATA_FORMATTED      = 1  /**< for display only */
158 };
159
160 enum ToolbarType {
161         TOOLBAR_MAIN,
162         TOOLBAR_STATUS,
163         TOOLBAR_COUNT
164 };
165
166 enum PixbufRendererStereoMode {
167         PR_STEREO_NONE             = 0,   /**< do nothing */
168         PR_STEREO_DUAL             = 1 << 0, /**< independent stereo buffers, for example nvidia opengl */
169         PR_STEREO_FIXED            = 1 << 1,  /**< custom position */
170         PR_STEREO_HORIZ            = 1 << 2,  /**< side by side */
171         PR_STEREO_VERT             = 1 << 3,  /**< above below */
172         PR_STEREO_RIGHT            = 1 << 4,  /**< render right buffer */
173         PR_STEREO_ANAGLYPH_RC      = 1 << 5,  /**< anaglyph red-cyan */
174         PR_STEREO_ANAGLYPH_GM      = 1 << 6,  /**< anaglyph green-magenta */
175         PR_STEREO_ANAGLYPH_YB      = 1 << 7,  /**< anaglyph yellow-blue */
176         PR_STEREO_ANAGLYPH_GRAY_RC = 1 << 8,  /**< anaglyph gray red-cyan*/
177         PR_STEREO_ANAGLYPH_GRAY_GM = 1 << 9,  /**< anaglyph gray green-magenta */
178         PR_STEREO_ANAGLYPH_GRAY_YB = 1 << 10, /**< anaglyph gray yellow-blue */
179         PR_STEREO_ANAGLYPH_DB_RC   = 1 << 11, /**< anaglyph dubois red-cyan */
180         PR_STEREO_ANAGLYPH_DB_GM   = 1 << 12, /**< anaglyph dubois green-magenta */
181         PR_STEREO_ANAGLYPH_DB_YB   = 1 << 13, /**< anaglyph dubois yellow-blue */
182         PR_STEREO_ANAGLYPH         = PR_STEREO_ANAGLYPH_RC |
183                                      PR_STEREO_ANAGLYPH_GM |
184                                      PR_STEREO_ANAGLYPH_YB |
185                                      PR_STEREO_ANAGLYPH_GRAY_RC |
186                                      PR_STEREO_ANAGLYPH_GRAY_GM |
187                                      PR_STEREO_ANAGLYPH_GRAY_YB |
188                                      PR_STEREO_ANAGLYPH_DB_RC |
189                                      PR_STEREO_ANAGLYPH_DB_GM |
190                                      PR_STEREO_ANAGLYPH_DB_YB, /**< anaglyph mask */
191
192         PR_STEREO_MIRROR_LEFT      = 1 << 14, /**< mirror */
193         PR_STEREO_FLIP_LEFT        = 1 << 15, /**< flip */
194
195         PR_STEREO_MIRROR_RIGHT     = 1 << 16, /**< mirror */
196         PR_STEREO_FLIP_RIGHT       = 1 << 17, /**< flip */
197
198         PR_STEREO_MIRROR           = PR_STEREO_MIRROR_LEFT | PR_STEREO_MIRROR_RIGHT, /**< mirror mask*/
199         PR_STEREO_FLIP             = PR_STEREO_FLIP_LEFT | PR_STEREO_FLIP_RIGHT, /**< flip mask*/
200         PR_STEREO_SWAP             = 1 << 18,  /**< swap left and right buffers */
201         PR_STEREO_TEMP_DISABLE     = 1 << 19,  /**< temporarily disable stereo mode if source image is not stereo */
202         PR_STEREO_HALF             = 1 << 20
203 };
204
205 enum StereoPixbufData {
206         STEREO_PIXBUF_DEFAULT  = 0,
207         STEREO_PIXBUF_SBS      = 1,
208         STEREO_PIXBUF_CROSS    = 2,
209         STEREO_PIXBUF_NONE     = 3
210 };
211
212 using FileUtilDoneFunc = void (*)(gboolean, const gchar *, gpointer);
213
214 #define FILEDATA_MARKS_SIZE 10
215
216 #endif
217 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */