64a93c63ab103d063e211730a1f14f9ae0002081
[geeqie.git] / src / typedefs.h
1 /*
2  * Geeqie
3  * (C) 2006 John Ellis
4  *
5  * Author: John Ellis
6  *
7  * This software is released under the GNU General Public License (GNU GPL).
8  * Please read the included file COPYING for more information.
9  * This software comes with no warranty of any kind, use at your own risk!
10  */
11
12
13 #ifndef TYPEDEFS_H
14 #define TYPEDEFS_H
15
16 typedef enum {
17         MOUSE_BUTTON_LEFT       = 1,
18         MOUSE_BUTTON_MIDDLE     = 2,
19         MOUSE_BUTTON_RIGHT      = 3,
20         MOUSE_BUTTON_WHEEL_UP   = 4,
21         MOUSE_BUTTON_WHEEL_DOWN = 5
22 } MouseButton;
23
24 typedef enum {
25         DIRVIEW_LIST,
26         DIRVIEW_TREE
27 } DirViewType;
28
29 typedef enum {
30         CMD_COPY = GQ_EDITOR_GENERIC_SLOTS,
31         CMD_MOVE,
32         CMD_RENAME,
33         CMD_DELETE,
34         CMD_FOLDER,
35         GQ_EDITOR_SLOTS
36 } SpecialEditor;
37
38 typedef enum {
39         SORT_NONE,
40         SORT_NAME,
41         SORT_SIZE,
42         SORT_TIME,
43         SORT_PATH,
44         SORT_NUMBER
45 } SortType;
46
47 typedef enum {
48         ALTER_NONE,             /* do nothing */
49         ALTER_ROTATE_90,
50         ALTER_ROTATE_90_CC,     /* counterclockwise */
51         ALTER_ROTATE_180,
52         ALTER_MIRROR,
53         ALTER_FLIP,
54         ALTER_DESATURATE
55 } AlterType;
56
57 typedef enum {
58         LAYOUT_HIDE   = 0,
59         LAYOUT_LEFT   = 1 << 0,
60         LAYOUT_RIGHT  = 1 << 1,
61         LAYOUT_TOP    = 1 << 2,
62         LAYOUT_BOTTOM = 1 << 3
63 } LayoutLocation;
64
65
66 typedef enum {
67         IMAGE_STATE_NONE        = 0,
68         IMAGE_STATE_IMAGE       = 1 << 0,
69         IMAGE_STATE_LOADING     = 1 << 1,
70         IMAGE_STATE_ERROR       = 1 << 2,
71         IMAGE_STATE_COLOR_ADJ   = 1 << 3,
72         IMAGE_STATE_ROTATE_AUTO = 1 << 4,
73         IMAGE_STATE_ROTATE_USER = 1 << 5,
74         IMAGE_STATE_DELAY_FLIP  = 1 << 6
75 } ImageState;
76
77 typedef enum {
78         SPLIT_NONE = 0,
79         SPLIT_VERT,
80         SPLIT_HOR,
81         SPLIT_QUAD,
82 } ImageSplitMode;
83
84 typedef enum {
85         FILEDATA_CHANGE_DELETE,
86         FILEDATA_CHANGE_MOVE,
87         FILEDATA_CHANGE_RENAME,
88         FILEDATA_CHANGE_COPY
89 } FileDataChangeType;
90
91 typedef enum {
92         MTS_MODE_MINUS,
93         MTS_MODE_SET,
94         MTS_MODE_OR,
95         MTS_MODE_AND
96 } MarkToSelectionMode;
97
98 typedef enum {
99         STM_MODE_RESET,
100         STM_MODE_SET,
101         STM_MODE_TOGGLE
102 } SelectionToMarkMode;
103
104 typedef enum {
105         FORMAT_CLASS_UNKNOWN,
106         FORMAT_CLASS_IMAGE,
107         FORMAT_CLASS_RAWIMAGE,
108         FORMAT_CLASS_META,
109         FILE_FORMAT_CLASSES
110 } FileFormatClass;
111
112 typedef enum {
113         SS_ERR_NONE = 0,
114         SS_ERR_DISABLED, /**< secsave is disabled. */
115         SS_ERR_OUT_OF_MEM, /**< memory allocation failure */
116
117         /* see err field in SecureSaveInfo */
118         SS_ERR_OPEN_READ,
119         SS_ERR_OPEN_WRITE,
120         SS_ERR_STAT,
121         SS_ERR_ACCESS,
122         SS_ERR_MKSTEMP,
123         SS_ERR_RENAME,
124         SS_ERR_OTHER,
125 } SecureSaveErrno;
126
127
128 #define MAX_SPLIT_IMAGES 4
129
130 typedef struct _ImageLoader ImageLoader;
131 typedef struct _ThumbLoader ThumbLoader;
132
133 typedef struct _CollectInfo CollectInfo;
134 typedef struct _CollectionData CollectionData;
135 typedef struct _CollectTable CollectTable;
136 typedef struct _CollectWindow CollectWindow;
137
138 typedef struct _ImageWindow ImageWindow;
139
140 typedef struct _FileData FileData;
141 typedef struct _FileDataChangeInfo FileDataChangeInfo;
142
143 typedef struct _LayoutWindow LayoutWindow;
144 typedef struct _ViewDir ViewDir;
145 typedef struct _ViewDirInfoList ViewDirInfoList;
146 typedef struct _ViewDirInfoTree ViewDirInfoTree;
147 typedef struct _ViewFileList ViewFileList;
148 typedef struct _ViewFileIcon ViewFileIcon;
149
150 typedef struct _SlideShowData SlideShowData;
151 typedef struct _FullScreenData FullScreenData;
152
153 typedef struct _PixmapFolders PixmapFolders;
154 typedef struct _Histogram Histogram;
155
156 typedef struct _SecureSaveInfo SecureSaveInfo;
157
158 typedef struct _ConfOptions ConfOptions;
159
160 struct _ImageLoader
161 {
162         GdkPixbuf *pixbuf;
163         FileData *fd;
164         gchar *path;
165
166         gint bytes_read;
167         gint bytes_total;
168
169         gint requested_width;
170         gint requested_height;
171         gint shrunk;
172
173         gint done;
174         gint idle_id;
175         gint idle_priority;
176
177         GdkPixbufLoader *loader;
178         gint load_fd;
179
180         void (*func_area_ready)(ImageLoader *, guint x, guint y, guint w, guint h, gpointer);
181         void (*func_error)(ImageLoader *, gpointer);
182         void (*func_done)(ImageLoader *, gpointer);
183         void (*func_percent)(ImageLoader *, gdouble, gpointer);
184
185         gpointer data_area_ready;
186         gpointer data_error;
187         gpointer data_done;
188         gpointer data_percent;
189
190         gint idle_done_id;
191
192         guchar *read_buffer;
193         gint read_buffer_size;
194         gint idle_read_loop_count;
195 };
196
197 typedef void (* ThumbLoaderFunc)(ThumbLoader *tl, gpointer data);
198
199 struct _ThumbLoader
200 {
201         gint standard_loader;
202
203         GdkPixbuf *pixbuf;      /* contains final (scaled) image when done */
204         ImageLoader *il;
205         gchar *path;
206
207         gint cache_enable;
208         gint cache_hit;
209         gdouble percent_done;
210
211         gint max_w;
212         gint max_h;
213
214         ThumbLoaderFunc func_done;
215         ThumbLoaderFunc func_error;
216         ThumbLoaderFunc func_progress;
217
218         gpointer data;
219
220         gint idle_done_id;
221 };
222
223 struct _CollectInfo
224 {
225         FileData *fd;
226         GdkPixbuf *pixbuf;
227         gint flag_mask;
228 };
229
230 struct _CollectionData
231 {
232         gchar *path;
233         gchar *name;
234         GList *list;
235         SortType sort_method;
236
237         ThumbLoader *thumb_loader;
238         CollectInfo *thumb_info;
239
240         void (*info_updated_func)(CollectionData *, CollectInfo *, gpointer);
241         gpointer info_updated_data;
242
243         gint ref;
244
245         /* geometry */
246         gint window_read;
247         gint window_x;
248         gint window_y;
249         gint window_w;
250         gint window_h;
251
252         /* contents changed since save flag */
253         gint changed;
254
255         GHashTable *existence;
256 };
257
258 struct _CollectTable
259 {
260         GtkWidget *scrolled;
261         GtkWidget *listview;
262         gint columns;
263         gint rows;
264
265         CollectionData *cd;
266
267         GList *selection;
268         CollectInfo *prev_selection;
269
270         CollectInfo *click_info;
271
272         GtkWidget *tip_window;
273         gint tip_delay_id;
274         CollectInfo *tip_info;
275
276         GdkWindow *marker_window;
277         CollectInfo *marker_info;
278
279         GtkWidget *status_label;
280         GtkWidget *extra_label;
281
282         gint focus_row;
283         gint focus_column;
284         CollectInfo *focus_info;
285
286         GtkWidget *popup;
287         CollectInfo *drop_info;
288         GList *drop_list;
289
290         gint sync_idle_id;
291         gint drop_idle_id;
292
293         gint show_text;
294 };
295
296 struct _CollectWindow
297 {
298         GtkWidget *window;
299         CollectTable *table;
300         GtkWidget *status_box;
301         GList *list;
302
303         GtkWidget *close_dialog;
304
305         CollectionData *cd;
306 };
307
308 typedef gint (* ImageTileRequestFunc)(ImageWindow *imd, gint x, gint y,
309                                       gint width, gint height, GdkPixbuf *pixbuf, gpointer);
310 typedef void (* ImageTileDisposeFunc)(ImageWindow *imd, gint x, gint y,
311                                       gint width, gint height, GdkPixbuf *pixbuf, gpointer);
312
313 struct _ImageWindow
314 {
315         GtkWidget *widget;      /* use this to add it and show it */
316         GtkWidget *pr;
317         GtkWidget *frame;
318
319         FileData *image_fd;
320
321         gint64 size;            /* file size (bytes) */
322         time_t mtime;           /* file modified time stamp */
323         gint unknown;           /* failed to load image */
324
325         ImageLoader *il;
326
327         gint has_frame;
328
329         /* top level (not necessarily parent) window */
330         gint top_window_sync;   /* resize top_window when image dimensions change */
331         GtkWidget *top_window;  /* window that gets title, and window to resize when 'fitting' */
332         gchar *title;           /* window title to display left of file name */
333         gchar *title_right;     /* window title to display right of file name */
334         gint title_show_zoom;   /* option to include zoom in window title */
335
336         gint completed;
337         ImageState state;       /* mask of IMAGE_STATE_* flags about current image */
338
339         void (*func_update)(ImageWindow *imd, gpointer data);
340         void (*func_complete)(ImageWindow *imd, gint preload, gpointer data);
341         void (*func_state)(ImageWindow *imd, ImageState state, gpointer data);
342         ImageTileRequestFunc func_tile_request;
343         ImageTileDisposeFunc func_tile_dispose;
344
345         gpointer data_update;
346         gpointer data_complete;
347         gpointer data_state;
348         gpointer data_tile;
349
350         /* button, scroll functions */
351         void (*func_button)(ImageWindow *, gint button,
352                             guint32 time, gdouble x, gdouble y, guint state, gpointer);
353         void (*func_drag)(ImageWindow *, gint button,
354                             guint32 time, gdouble x, gdouble y, guint state, gdouble dx, gdouble dy,gpointer);
355         void (*func_scroll)(ImageWindow *, GdkScrollDirection direction,
356                             guint32 time, gdouble x, gdouble y, guint state, gpointer);
357
358         gpointer data_button;
359         gpointer data_drag;
360         gpointer data_scroll;
361
362         /* scroll notification (for scroll bar implementation) */
363         void (*func_scroll_notify)(ImageWindow *, gint x, gint y, gint width, gint height, gpointer);
364
365         gpointer data_scroll_notify;
366
367         /* collection info */
368         CollectionData *collection;
369         CollectInfo *collection_info;
370
371         /* color profiles */
372         gint color_profile_enable;
373         gint color_profile_input;
374         gint color_profile_screen;
375         gint color_profile_use_image;
376         gint color_profile_from_image;
377         gpointer cm;
378
379         AlterType delay_alter_type;
380
381         ImageLoader *read_ahead_il;
382         GdkPixbuf *read_ahead_pixbuf;
383         FileData *read_ahead_fd;
384
385         GdkPixbuf *prev_pixbuf;
386         FileData *prev_fd;
387         gint prev_color_row;
388
389         gint auto_refresh_id;
390         gint auto_refresh_interval;
391
392         gint delay_flip;
393         gint orientation;
394         gint desaturate;
395
396         gint overlay_show_zoom; /* set to true if overlay is showing zoom ratio */
397 };
398
399 #define FILEDATA_MARKS_SIZE 6
400
401 struct _FileDataChangeInfo {
402         FileDataChangeType type;
403         gchar *source;
404         gchar *dest;
405 };
406
407 struct _FileData {
408         gint magick;
409         gint type;
410         gchar *original_path; /* key to file_data_pool hash table */
411         gchar *path;
412         const gchar *name;
413         const gchar *extension;
414         gint64 size;
415         time_t date;
416         gboolean marks[FILEDATA_MARKS_SIZE];
417         GList *sidecar_files;
418         FileData *parent; /* parent file if this is a sidecar file, NULL otherwise */
419         FileDataChangeInfo *change; /* for rename, move ... */
420         GdkPixbuf *pixbuf;
421         gint ref;
422         gint user_orientation;
423         gint exif_orientation;
424 };
425
426 struct _LayoutWindow
427 {
428         gchar *path;
429
430         /* base */
431
432         GtkWidget *window;
433
434         GtkWidget *main_box;
435
436         GtkWidget *group_box;
437         GtkWidget *h_pane;
438         GtkWidget *v_pane;
439
440         /* menus, path selector */
441
442         GtkActionGroup *action_group;
443         GtkUIManager *ui_manager;
444
445         GtkWidget *path_entry;
446
447         /* image */
448
449         LayoutLocation image_location;
450
451         ImageWindow *image;
452
453         ImageWindow *split_images[MAX_SPLIT_IMAGES];
454         ImageSplitMode split_mode;
455         gint active_split_image;
456
457         GtkWidget *split_image_widget;
458
459         gint connect_zoom, connect_scroll;
460
461         /* tools window (float) */
462
463         GtkWidget *tools;
464         GtkWidget *tools_pane;
465
466         gint tools_float;
467         gint tools_hidden;
468
469         /* toolbar */
470
471         GtkWidget *toolbar;
472         gint toolbar_hidden;
473
474         GtkWidget *thumb_button;
475         gint thumbs_enabled;
476         gint marks_enabled;
477
478         /* dir view */
479
480         LayoutLocation dir_location;
481
482         ViewDir *vd;
483         GtkWidget *dir_view;
484
485         DirViewType dir_view_type;
486
487         /* file view */
488
489         LayoutLocation file_location;
490
491         ViewFileList *vfl;
492         ViewFileIcon *vfi;
493         GtkWidget *file_view;
494
495         gint icon_view;
496         SortType sort_method;
497         gint sort_ascend;
498
499         /* status bar */
500
501         GtkWidget *info_box;
502         GtkWidget *info_progress_bar;
503         GtkWidget *info_sort;
504         GtkWidget *info_color;
505         GtkWidget *info_status;
506         GtkWidget *info_details;
507         GtkWidget *info_zoom;
508
509         /* slide show */
510
511         SlideShowData *slideshow;
512
513         /* full screen */
514
515         FullScreenData *full_screen;
516
517         /* dividers */
518
519         gint div_h;
520         gint div_v;
521         gint div_float;
522
523         /* directory update check */
524
525         gint last_time_id;
526         time_t last_time;
527
528         /* misc */
529
530         GtkWidget *utility_box;
531         GtkWidget *bar_sort;
532         GtkWidget *bar_exif;
533         GtkWidget *bar_info;
534
535         gint histogram_enabled;
536         Histogram *histogram;
537
538         gint bar_sort_enabled;
539         gint bar_exif_enabled;
540         gint bar_info_enabled;
541
542         gint bar_exif_size;
543         gint bar_exif_advanced;
544 };
545
546 struct _ViewDir
547 {
548         DirViewType type;
549         gpointer info;
550
551         GtkWidget *widget;
552         GtkWidget *view;
553
554         gchar *path;
555
556         FileData *click_fd;
557
558         FileData *drop_fd;
559         GList *drop_list;
560         gint drop_scroll_id;
561
562         /* func list */
563         void (*select_func)(ViewDir *vd, const gchar *path, gpointer data);
564         gpointer select_data;
565
566         void (*dnd_drop_update_func)(ViewDir *vd);
567         void (*dnd_drop_leave_func)(ViewDir *vd);
568
569         LayoutWindow *layout;
570
571         GtkWidget *popup;
572
573         PixmapFolders *pf;
574 };
575
576 struct _ViewDirInfoList
577 {
578         GList *list;
579 };
580
581 struct _ViewDirInfoTree
582 {
583         gint drop_expand_id;
584         gint busy_ref;
585 };
586
587 struct _ViewFileList
588 {
589         GtkWidget *widget;
590         GtkWidget *listview;
591
592         gchar *path;
593         GList *list;
594
595         SortType sort_method;
596         gint sort_ascend;
597
598         FileData *click_fd;
599         FileData *select_fd;
600
601         gint thumbs_enabled;
602         gint marks_enabled;
603         gint active_mark;
604
605         /* thumb updates */
606         gint thumbs_running;
607         gint thumbs_count;
608         ThumbLoader *thumbs_loader;
609         FileData *thumbs_filedata;
610
611         /* func list */
612         void (*func_thumb_status)(ViewFileList *vfl, gdouble val, const gchar *text, gpointer data);
613         gpointer data_thumb_status;
614
615         void (*func_status)(ViewFileList *vfl, gpointer data);
616         gpointer data_status;
617
618         gint select_idle_id;
619         LayoutWindow *layout;
620
621         GtkWidget *popup;
622 };
623
624 struct _IconData;
625
626 struct _ViewFileIcon
627 {
628         GtkWidget *widget;
629         GtkWidget *listview;
630
631         gchar *path;
632         GList *list;
633
634         /* table stuff */
635
636         gint columns;
637         gint rows;
638
639         GList *selection;
640         struct _IconData *prev_selection;
641
642         GtkWidget *tip_window;
643         gint tip_delay_id;
644         struct _IconData *tip_id;
645
646         struct _IconData *click_id;
647
648         struct _IconData *focus_id;
649         gint focus_row;
650         gint focus_column;
651
652         SortType sort_method;
653         gint sort_ascend;
654
655         gint show_text;
656
657         gint sync_idle_id;
658
659         /* thumbs */
660
661         gint thumbs_running;
662         GList *thumbs_list;
663         gint thumbs_count;
664         ThumbLoader *thumbs_loader;
665         FileData *thumbs_fd;
666
667         /* func list */
668         void (*func_thumb_status)(ViewFileIcon *vfi, gdouble val, const gchar *text, gpointer data);
669         gpointer data_thumb_status;
670
671         void (*func_status)(ViewFileIcon *vfi, gpointer data);
672         gpointer data_status;
673
674         LayoutWindow *layout;
675
676         GtkWidget *popup;
677 };
678
679 struct _SlideShowData
680 {
681         ImageWindow *imd;
682
683         GList *filelist;
684         CollectionData *cd;
685         gchar *layout_path;
686         LayoutWindow *layout;
687
688         GList *list;
689         GList *list_done;
690
691         FileData *slide_fd;
692
693         gint slide_count;
694         gint timeout_id;
695
696         gint from_selection;
697
698         void (*stop_func)(SlideShowData *, gpointer);
699         gpointer stop_data;
700
701         gint paused;
702 };
703
704 struct _FullScreenData
705 {
706         GtkWidget *window;
707         ImageWindow *imd;
708
709         GtkWidget *normal_window;
710         ImageWindow *normal_imd;
711
712         gint hide_mouse_id;
713         gint busy_mouse_id;
714         gint cursor_state;
715
716         gint saver_block_id;
717
718         void (*stop_func)(FullScreenData *, gpointer);
719         gpointer stop_data;
720 };
721
722 struct _PixmapFolders
723 {
724         GdkPixbuf *close;
725         GdkPixbuf *open;
726         GdkPixbuf *deny;
727         GdkPixbuf *parent;
728 };
729
730 struct _SecureSaveInfo {
731         FILE *fp; /**< file stream pointer */
732         gchar *file_name; /**< final file name */
733         gchar *tmp_file_name; /**< temporary file name */
734         gint err; /**< set to non-zero value in case of error */
735         gint secure_save; /**< use secure save for this file, internal use only */
736         gint preserve_perms; /**< whether to preserve perms, TRUE by default */
737         gint preserve_mtime; /**< whether to preserve mtime, FALSE by default */
738         gint unlink_on_error; /**< whether to remove temporary file on save failure, TRUE by default */
739 };
740
741 struct _ConfOptions
742 {
743
744         /* ui */
745         gint progressive_key_scrolling;
746         gint place_dialogs_under_mouse;
747         gint mousewheel_scrolls;
748         gint show_icon_names;
749
750         /* various */
751         gint startup_path_enable;
752         gchar *startup_path;
753         gint enable_metadata_dirs;
754
755         gint tree_descend_subdirs;
756
757         gint lazy_image_sync;
758         gint update_on_time_change;
759
760         gint duplicates_similarity_threshold;
761
762         gint open_recent_list_maxsize;
763         gint dnd_icon_size;
764
765         /* file ops */
766         struct {
767                 gint enable_in_place_rename;
768
769                 gint confirm_delete;
770                 gint enable_delete_key;
771                 gint safe_delete_enable;
772                 gchar *safe_delete_path;
773                 gint safe_delete_folder_maxsize;
774         } file_ops;
775
776         /* image */
777         struct {
778                 gint exif_rotate_enable;
779                 gint scroll_reset_method;
780                 gint fit_window_to_image;
781                 gint limit_window_size;
782                 gint max_window_size;
783                 gint limit_autofit_size;
784                 gint max_autofit_size;
785
786                 gint tile_cache_max;    /* in megabytes */
787                 gint dither_quality;
788                 gint enable_read_ahead;
789
790                 gint zoom_mode;
791                 gint zoom_2pass;
792                 gint zoom_to_fit_allow_expand;
793                 gint zoom_quality;
794                 gint zoom_increment;    /* 10 is 1.0, 5 is 0.05, 20 is 2.0, etc. */
795
796                 gint use_custom_border_color;
797                 GdkColor border_color;
798
799                 gint read_buffer_size; /* bytes to read from file per read() */
800                 gint idle_read_loop_count; /* the number of bytes to read per idle call (define x image.read_buffer_size) */
801         } image;
802
803         /* thumbnails */
804         struct {
805                 gint max_width;
806                 gint max_height;
807                 gint enable_caching;
808                 gint cache_into_dirs;
809                 gint fast;
810                 gint use_xvpics;
811                 gint spec_standard;
812                 gint quality;
813         } thumbnails;
814
815         /* file filtering */
816         struct {
817                 gint show_hidden_files;
818                 gint show_dot_directory;
819                 gint disable;
820         } file_filter;
821
822         /* collections */
823         struct {
824                 gint rectangular_selection;
825         } collections;
826
827         /* editors */
828         gchar *editor_name[GQ_EDITOR_SLOTS];
829         gchar *editor_command[GQ_EDITOR_SLOTS];
830
831         /* file sorting */
832         struct {
833                 SortType method;
834                 gint ascending;
835                 gint case_sensitive; /* file sorting method (case) */
836         } file_sort;
837
838         /* slideshow */
839         struct {
840                 gint delay;     /* in tenths of a second */
841                 gint random;
842                 gint repeat;
843         } slideshow;
844
845         /* fullscreen */
846         struct {
847                 gint screen;
848                 gint clean_flip;
849                 gint disable_saver;
850                 gint above;
851         } fullscreen;
852
853         /* image overlay */
854         struct {
855                 struct {
856                         gint enabled;
857                         gint show_at_startup;
858                         gchar *template_string;
859                 } common;
860         } image_overlay;
861
862         /* layout */
863         struct {
864                 gchar *order;
865                 gint style;
866
867                 gint view_as_icons;
868                 DirViewType dir_view_type;
869
870                 gint show_thumbnails;
871                 gint show_marks;
872
873                 struct {
874                         gint w;
875                         gint h;
876                         gint x;
877                         gint y;
878                         gint maximized;
879                         gint hdivider_pos;
880                         gint vdivider_pos;
881                 } main_window;
882
883                 struct {
884                         gint w;
885                         gint h;
886                         gint x;
887                         gint y;
888                         gint vdivider_pos;
889                 } float_window;
890
891                 gint save_window_positions;
892
893                 gint tools_float;
894                 gint tools_hidden;
895                 gint tools_restore_state;
896
897                 gint toolbar_hidden;
898
899         } layout;
900
901         /* color profiles */
902         struct {
903                 gint enabled;
904                 gint input_type;
905                 gchar *input_file[COLOR_PROFILE_INPUTS];
906                 gchar *input_name[COLOR_PROFILE_INPUTS];
907                 gint screen_type;
908                 gchar *screen_file;
909                 gint use_image;
910
911         } color_profile;
912
913 };
914
915 #endif