Cleanup main.h header
[geeqie.git] / src / pan-view / pan-types.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 PAN_VIEW_PAN_TYPES_H
23 #define PAN_VIEW_PAN_TYPES_H
24
25 #include <gtk/gtk.h>
26
27 #include "cache-loader.h"
28 #include "filedata.h"
29
30 struct FullScreenData;
31 struct ImageWindow;
32 struct ThumbLoader;
33
34 /* thumbnail sizes and spacing */
35
36 #define PAN_THUMB_SIZE_DOTS 4
37 #define PAN_THUMB_SIZE_NONE 24
38 #define PAN_THUMB_SIZE_SMALL 64
39 #define PAN_THUMB_SIZE_NORMAL 128
40 #define PAN_THUMB_SIZE_LARGE 256
41 #define PAN_THUMB_SIZE pw->thumb_size
42
43 #define PAN_THUMB_GAP_DOTS 2
44 #define PAN_THUMB_GAP_SMALL 14
45 #define PAN_THUMB_GAP_NORMAL 30
46 #define PAN_THUMB_GAP_LARGE 40
47 #define PAN_THUMB_GAP_HUGE 50
48 #define PAN_THUMB_GAP pw->thumb_gap
49
50 /* basic sizes, colors, spacings */
51
52 #define PAN_SHADOW_OFFSET 6
53 #define PAN_SHADOW_FADE 5
54 #define PAN_SHADOW_COLOR 0, 0, 0
55 #define PAN_SHADOW_ALPHA 64
56
57 #define PAN_OUTLINE_THICKNESS 1
58 #define PAN_OUTLINE_COLOR_1 255, 255, 255
59 #define PAN_OUTLINE_COLOR_2 64, 64, 64
60 #define PAN_OUTLINE_ALPHA 180
61
62 #define PAN_BACKGROUND_COLOR 150, 150, 150
63
64 #define PAN_GRID_SIZE 60
65 #define PAN_GRID_COLOR 0, 0, 0
66 #define PAN_GRID_ALPHA 20
67
68 #define PAN_BOX_COLOR 255, 255, 255
69 #define PAN_BOX_ALPHA 100
70 #define PAN_BOX_BORDER 20
71
72 #define PAN_BOX_OUTLINE_THICKNESS 4
73 #define PAN_BOX_OUTLINE_COLOR 0, 0, 0
74 #define PAN_BOX_OUTLINE_ALPHA 128
75
76 #define PAN_TEXT_BORDER_SIZE 4
77 #define PAN_TEXT_COLOR 0, 0, 0
78
79 /* popup info box */
80
81 #define PAN_POPUP_COLOR 255, 255, 225
82 #define PAN_POPUP_ALPHA 255
83 #define PAN_POPUP_BORDER 1
84 #define PAN_POPUP_BORDER_COLOR 0, 0, 0
85 #define PAN_POPUP_TEXT_COLOR 0, 0, 0
86
87
88 #define PAN_GROUP_MAX 16
89
90
91
92 enum PanLayoutType {
93         PAN_LAYOUT_TIMELINE = 0,
94         PAN_LAYOUT_CALENDAR,
95         PAN_LAYOUT_FOLDERS_LINEAR,
96         PAN_LAYOUT_FOLDERS_FLOWER,
97         PAN_LAYOUT_GRID,
98         PAN_LAYOUT_COUNT
99 };
100
101 enum PanImageSize {
102         PAN_IMAGE_SIZE_THUMB_DOTS = 0,
103         PAN_IMAGE_SIZE_THUMB_NONE,
104         PAN_IMAGE_SIZE_THUMB_SMALL,
105         PAN_IMAGE_SIZE_THUMB_NORMAL,
106         PAN_IMAGE_SIZE_THUMB_LARGE,
107         PAN_IMAGE_SIZE_10,
108         PAN_IMAGE_SIZE_25,
109         PAN_IMAGE_SIZE_33,
110         PAN_IMAGE_SIZE_50,
111         PAN_IMAGE_SIZE_100,
112         PAN_IMAGE_SIZE_COUNT
113 };
114
115 enum PanItemType {
116         PAN_ITEM_NONE,
117         PAN_ITEM_THUMB,
118         PAN_ITEM_BOX,
119         PAN_ITEM_TRIANGLE,
120         PAN_ITEM_TEXT,
121         PAN_ITEM_IMAGE
122 };
123
124 enum PanTextAttrType {
125         PAN_TEXT_ATTR_NONE = 0,
126         PAN_TEXT_ATTR_BOLD = 1 << 0,
127         PAN_TEXT_ATTR_HEADING = 1 << 1,
128         PAN_TEXT_ATTR_MARKUP = 1 << 2
129 };
130
131 enum PanBorderType {
132         PAN_BORDER_NONE = 0,
133         PAN_BORDER_1 = 1 << 0,
134         PAN_BORDER_2 = 1 << 1,
135         PAN_BORDER_3 = 1 << 2,
136         PAN_BORDER_4 = 1 << 3
137 };
138
139 #define PAN_BORDER_TOP          PAN_BORDER_1
140 #define PAN_BORDER_RIGHT                PAN_BORDER_2
141 #define PAN_BORDER_BOTTOM       PAN_BORDER_3
142 #define PAN_BORDER_LEFT         PAN_BORDER_4
143
144
145 struct PanItem {
146         PanItemType type;
147         gint x;
148         gint y;
149         gint width;
150         gint height;
151         gchar *key;
152
153         FileData *fd;
154
155         GdkPixbuf *pixbuf;
156         gint refcount;
157
158         gchar *text;
159         PanTextAttrType text_attr;
160
161         guint8 color_r;
162         guint8 color_g;
163         guint8 color_b;
164         guint8 color_a;
165
166         guint8 color2_r;
167         guint8 color2_g;
168         guint8 color2_b;
169         guint8 color2_a;
170         gint border;
171
172         gpointer data;
173
174         gboolean queued;
175 };
176
177 struct PanViewSearchUi
178 {
179         GtkWidget *search_box;
180         GtkWidget *search_entry;
181         GtkWidget *search_label;
182         GtkWidget *search_button;
183         GtkWidget *search_button_arrow;
184 };
185
186 /**
187  * @struct PanViewFilterUi
188  * Defined in pan-view-filter.h
189  */
190 struct PanViewFilterUi;
191
192 struct PanWindow
193 {
194         GtkWidget *window;
195         ImageWindow *imd;
196         ImageWindow *imd_normal;
197         FullScreenData *fs;
198
199         GtkWidget *path_entry;
200
201         GtkWidget *label_message;
202         GtkWidget *label_zoom;
203
204         PanViewSearchUi *search_ui;
205         PanViewFilterUi *filter_ui;
206
207         GtkWidget *date_button;
208
209         GtkWidget *scrollbar_h;
210         GtkWidget *scrollbar_v;
211
212         FileData *dir_fd;
213         PanLayoutType layout;
214         PanImageSize size;
215         gint thumb_size;
216         gint thumb_gap;
217         gint image_size;
218         gboolean exif_date_enable;
219
220         gint info_image_size;
221         gboolean info_includes_exif;
222
223         gboolean ignore_symlinks;
224
225         GList *list;
226         GList *list_static;
227         GList *list_grid;
228
229         GList *cache_list;
230         GList *cache_todo;
231         gint cache_count;
232         gint cache_total;
233         gint cache_tick;
234         CacheLoader *cache_cl;
235
236         ImageLoader *il;
237         ThumbLoader *tl;
238         PanItem *queue_pi;
239         GList *queue;
240
241         PanItem *click_pi;
242         PanItem *search_pi;
243
244         gint idle_id;
245 };
246
247 struct PanGrid {
248         gint x;
249         gint y;
250         gint w;
251         gint h;
252         GList *list;
253 };
254
255 struct PanCacheData {
256         FileData *fd;
257         CacheData *cd;
258 };
259
260 #endif
261 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */