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