Remove commented out code.
[geeqie.git] / src / dupe.h
1 /*
2  * Geeqie
3  * (C) 2004 John Ellis
4  * Copyright (C) 2008 - 2012 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 DUPE_H
15 #define DUPE_H
16
17 #include "similar.h"
18
19 /* match methods */
20 typedef enum
21 {
22         DUPE_MATCH_NONE = 0,
23         DUPE_MATCH_NAME = 1 << 0,
24         DUPE_MATCH_SIZE = 1 << 1,
25         DUPE_MATCH_DATE = 1 << 2,
26         DUPE_MATCH_DIM  = 1 << 3,       /* image dimensions */
27         DUPE_MATCH_SUM  = 1 << 4,       /* simple checksum */
28         DUPE_MATCH_PATH = 1 << 5,
29         DUPE_MATCH_SIM_HIGH = 1 << 6,   /* similarity */
30         DUPE_MATCH_SIM_MED  = 1 << 7,
31         DUPE_MATCH_SIM_LOW  = 1 << 8,
32         DUPE_MATCH_SIM_CUSTOM = 1 << 9,
33         DUPE_MATCH_NAME_CI = 1 << 10    /* same as name, but case insensitive */
34 } DupeMatchType;
35
36 typedef struct _DupeItem DupeItem;
37 struct _DupeItem
38 {
39         CollectionData *collection;     /* NULL if from DupeWindow->files */
40         CollectInfo *info;
41
42         FileData *fd;
43
44         glong checksum;
45         gchar *md5sum;
46         gint width;
47         gint height;
48
49         ImageSimilarityData *simd;
50
51         /* thumb */
52         GdkPixbuf *pixbuf;
53
54         GList *group;                   /* List of match data */
55         gdouble group_rank;
56
57         gint second;
58 };
59
60 typedef struct _DupeMatch DupeMatch;
61 struct _DupeMatch
62 {
63         DupeItem *di;
64         gdouble rank;
65 };
66
67 typedef struct _DupeWindow DupeWindow;
68 struct _DupeWindow
69 {
70         GList *list;                    /* dropped files (DupeItem) */
71         GList *dupes;                   /* list of dupes (DupeItem, grouping the DupeMatches) */
72         DupeMatchType match_mask;       /* mask of things to check for match */
73
74         GtkWidget *window;
75         GtkWidget *table;
76         GtkWidget *listview;
77         GtkWidget *combo;
78         GtkWidget *status_label;
79         GtkWidget *extra_label;
80         GtkWidget *button_thumbs;
81
82         gboolean show_thumbs;
83
84         guint idle_id; /* event source id */
85         GList *working;
86         gint setup_done;
87         gint setup_count;
88         gint setup_n;                   /* these are merely for speed optimization */
89         GList *setup_point;             /* ditto */
90         DupeMatchType setup_mask;       /* ditto */
91         guint64 setup_time;
92         guint64 setup_time_count;
93
94         DupeItem *click_item;           /* for popup menu */
95
96         ThumbLoader *thumb_loader;
97         DupeItem *thumb_item;
98
99         ImageLoader *img_loader;
100
101         /* second set comparison stuff */
102
103         gboolean second_set;            /* second set enabled ? */
104         GList *second_list;             /* second set dropped files */
105         gboolean second_drop;           /* drop is on second set */
106
107         GtkWidget *second_vbox;         /* box of second widgets */
108         GtkWidget *second_listview;
109         GtkWidget *second_status_label;
110
111         gboolean color_frozen;
112 };
113
114
115 DupeWindow *dupe_window_new(DupeMatchType match_mask);
116
117 void dupe_window_clear(DupeWindow *dw);
118 void dupe_window_close(DupeWindow *dw);
119
120 void dupe_window_add_collection(DupeWindow *dw, CollectionData *collection);
121 void dupe_window_add_files(DupeWindow *dw, GList *list, gboolean recurse);
122
123 /* cell max with/height hack utility */
124 void cell_renderer_height_override(GtkCellRenderer *renderer);
125
126
127 #endif
128 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */