From d38fdd09a09fdb80313bc5073755dfa69bb78be1 Mon Sep 17 00:00:00 2001 From: Klaus Ethgen Date: Fri, 13 May 2016 16:44:10 +0100 Subject: [PATCH] Allow to configure rotation invariance --- src/options.c | 1 + src/options.h | 1 + src/preferences.c | 6 ++++-- src/rcfile.c | 2 ++ src/similar.c | 6 ++---- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/options.c b/src/options.c index 460b9cbc..f8d0a80e 100644 --- a/src/options.c +++ b/src/options.c @@ -38,6 +38,7 @@ ConfOptions *init_options(ConfOptions *options) 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; diff --git a/src/options.h b/src/options.h index 138de5ac..b44db26d 100644 --- a/src/options.h +++ b/src/options.h @@ -29,6 +29,7 @@ struct _ConfOptions gboolean update_on_time_change; guint duplicates_similarity_threshold; + gboolean rot_invariant_sim; gint open_recent_list_maxsize; gint dnd_icon_size; diff --git a/src/preferences.c b/src/preferences.c index 6707690e..1f0e136f 100644 --- a/src/preferences.c +++ b/src/preferences.c @@ -290,6 +290,7 @@ static void config_window_apply(void) 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; @@ -1888,11 +1889,12 @@ static void config_tab_behavior(GtkWidget *notebook) 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); diff --git a/src/rcfile.c b/src/rcfile.c index 0a13784b..1e8c569b 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -281,6 +281,7 @@ static void write_global_attributes(GString *outstr, gint indent) 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); @@ -543,6 +544,7 @@ static gboolean load_global_params(const gchar **attribute_names, const gchar ** 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; diff --git a/src/similar.c b/src/similar.c index 316dfa14..02947115 100644 --- a/src/similar.c +++ b/src/similar.c @@ -348,8 +348,7 @@ gdouble image_sim_compare_transfo(ImageSimilarityData *a, ImageSimilarityData *b 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; @@ -407,8 +406,7 @@ gdouble image_sim_compare_fast_transfo(ImageSimilarityData *a, ImageSimilarityDa */ 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; -- 2.20.1