options->dnd_icon_size = 48;
options->duplicates_similarity_threshold = 99;
+ options->rot_invariant_sim = TRUE;
options->file_filter.disable = FALSE;
options->file_filter.show_dot_directory = FALSE;
gboolean update_on_time_change;
guint duplicates_similarity_threshold;
+ gboolean rot_invariant_sim;
gint open_recent_list_maxsize;
gint dnd_icon_size;
options->image.exif_proof_rotate_enable = c_options->image.exif_proof_rotate_enable;
options->duplicates_similarity_threshold = c_options->duplicates_similarity_threshold;
+ options->rot_invariant_sim = c_options->rot_invariant_sim;
options->tree_descend_subdirs = c_options->tree_descend_subdirs;
pref_checkbox_new_int(group, _("Mouse wheel scrolls image"),
options->mousewheel_scrolls, &c_options->mousewheel_scrolls);
- group = pref_group_new(vbox, FALSE, _("Miscellaneous"), GTK_ORIENTATION_VERTICAL);
+ group = pref_group_new(vbox, FALSE, _("Similarities"), GTK_ORIENTATION_VERTICAL);
pref_spin_new_int(group, _("Custom similarity threshold:"), NULL,
0, 100, 1, options->duplicates_similarity_threshold, (int *)&c_options->duplicates_similarity_threshold);
-
+ pref_checkbox_new_int(group, _("Rotation invariant duplicate check"),
+ options->rot_invariant_sim, &c_options->rot_invariant_sim);
#ifdef DEBUG
group = pref_group_new(vbox, FALSE, _("Debugging"), GTK_ORIENTATION_VERTICAL);
WRITE_NL(); WRITE_BOOL(*options, progressive_key_scrolling);
WRITE_NL(); WRITE_UINT(*options, duplicates_similarity_threshold);
+ WRITE_NL(); WRITE_BOOL(*options, rot_invariant_sim);
WRITE_SEPARATOR();
WRITE_NL(); WRITE_BOOL(*options, mousewheel_scrolls);
if (READ_BOOL(*options, update_on_time_change)) continue;
if (READ_UINT_CLAMP(*options, duplicates_similarity_threshold, 0, 100)) continue;
+ if (READ_BOOL(*options, rot_invariant_sim)) continue;
if (READ_BOOL(*options, progressive_key_scrolling)) continue;
gdouble image_sim_compare(ImageSimilarityData *a, ImageSimilarityData *b)
{
- gboolean test_transformations = TRUE; /* could be a function parameter */
- gint max_t = (test_transformations ? 8 : 1);
+ gint max_t = (options->rot_invariant_sim ? 8 : 1);
gint t;
gdouble score, max_score = 0;
*/
gdouble image_sim_compare_fast(ImageSimilarityData *a, ImageSimilarityData *b, gdouble min)
{
- gboolean test_transformations = TRUE; /* could be a function parameter */
- gint max_t = (test_transformations ? 8 : 1);
+ gint max_t = (options->rot_invariant_sim ? 8 : 1);
gint t;
gdouble score, max_score = 0;