Option to select thumbnail color management
authorColin Clark <colin.clark@cclark.uk>
Tue, 27 Apr 2021 12:21:40 +0000 (13:21 +0100)
committerColin Clark <colin.clark@cclark.uk>
Tue, 27 Apr 2021 12:21:40 +0000 (13:21 +0100)
Include an option on Edit/Preferences/General to select thumbnail color
management.
Color management takes additional run-time - some users may not need
this function.

doc/docbook/GuideOptionsGeneral.xml
src/options.c
src/options.h
src/preferences.c
src/rcfile.c
src/thumb_standard.c

index ab48fb9..7e71320 100644 (file)
         </listitem>\r
       </varlistentry>\r
     </variablelist>\r
+    <variablelist>\r
+      <varlistentry>\r
+        <term>\r
+          <guilabel>Thumbnail color management</guilabel>\r
+        </term>\r
+        <listitem>\r
+          <para>Where possible store thumbnails with an sRGB color profile.</para>\r
+            <note>\r
+              <para>Selecting this option will increase the time taken to generate thumbnails.</para>\r
+              <para>You probably will want to deselect the "Use EXIF thumbnails" option.</para>\r
+            </note>\r
+        </listitem>\r
+      </varlistentry>\r
+    </variablelist>\r
     <variablelist>\r
       <varlistentry>\r
         <term>\r
index 7146d3a..371ab1d 100644 (file)
@@ -180,6 +180,7 @@ ConfOptions *init_options(ConfOptions *options)
        options->thumbnails.spec_standard = TRUE;
        options->thumbnails.use_xvpics = TRUE;
        options->thumbnails.use_exif = FALSE;
+       options->thumbnails.use_color_management = FALSE;
        options->thumbnails.use_ft_metadata = TRUE;
 //     options->thumbnails.use_ft_metadata_small = TRUE;
        options->thumbnails.collection_preview = 20;
index d9a5bbe..c59161c 100644 (file)
@@ -164,6 +164,7 @@ struct _ConfOptions
                gboolean spec_standard;
                guint quality;
                gboolean use_exif;
+               gboolean use_color_management;
                gboolean use_ft_metadata;
                gint collection_preview;
 //             gboolean use_ft_metadata_small;
index 74d689d..dbee9b5 100644 (file)
@@ -298,6 +298,7 @@ static void config_window_apply(void)
        options->thumbnails.enable_caching = c_options->thumbnails.enable_caching;
        options->thumbnails.cache_into_dirs = c_options->thumbnails.cache_into_dirs;
        options->thumbnails.use_exif = c_options->thumbnails.use_exif;
+       options->thumbnails.use_color_management = c_options->thumbnails.use_color_management;
        options->thumbnails.collection_preview = c_options->thumbnails.collection_preview;
        options->thumbnails.use_ft_metadata = c_options->thumbnails.use_ft_metadata;
 //     options->thumbnails.use_ft_metadata_small = c_options->thumbnails.use_ft_metadata_small;
@@ -1954,6 +1955,9 @@ static void config_tab_general(GtkWidget *notebook)
        pref_checkbox_new_int(group, _("Use EXIF thumbnails when available (EXIF thumbnails may be outdated)"),
                              options->thumbnails.use_exif, &c_options->thumbnails.use_exif);
 
+       pref_checkbox_new_int(group, _("Thumbnail color management"),
+                               options->thumbnails.use_color_management, &c_options->thumbnails.use_color_management);
+
        spin = pref_spin_new_int(group, _("Collection preview:"), NULL,
                                 1, 999, 1,
                                 options->thumbnails.collection_preview, &c_options->thumbnails.collection_preview);
index 26029db..accc7b3 100644 (file)
@@ -405,6 +405,7 @@ static void write_global_attributes(GString *outstr, gint indent)
        WRITE_NL(); WRITE_BOOL(*options, thumbnails.spec_standard);
        WRITE_NL(); WRITE_UINT(*options, thumbnails.quality);
        WRITE_NL(); WRITE_BOOL(*options, thumbnails.use_exif);
+       WRITE_NL(); WRITE_BOOL(*options, thumbnails.use_color_management);
        WRITE_NL(); WRITE_BOOL(*options, thumbnails.use_ft_metadata);
        WRITE_NL(); WRITE_INT(*options, thumbnails.collection_preview);
 //     WRITE_NL(); WRITE_BOOL(*options, thumbnails.use_ft_metadata_small);
@@ -825,6 +826,7 @@ static gboolean load_global_params(const gchar **attribute_names, const gchar **
                if (READ_BOOL(*options, thumbnails.spec_standard)) continue;
                if (READ_UINT_CLAMP(*options, thumbnails.quality, GDK_INTERP_NEAREST, GDK_INTERP_BILINEAR)) continue;
                if (READ_BOOL(*options, thumbnails.use_exif)) continue;
+               if (READ_BOOL(*options, thumbnails.use_color_management)) continue;
                if (READ_INT(*options, thumbnails.collection_preview)) continue;
                if (READ_BOOL(*options, thumbnails.use_ft_metadata)) continue;
 //             if (READ_BOOL(*options, thumbnails.use_ft_metadata_small)) continue;
index 9c984f7..c008dca 100644 (file)
@@ -397,6 +397,11 @@ void thumb_loader_std_calibrate_pixbuf(FileData *fd, GdkPixbuf *pixbuf) {
        guint profile_len;
        gint sw, sh;
 
+       if (!options->thumbnails.use_color_management)
+               {
+               return;
+               }
+
        sw = gdk_pixbuf_get_width(pixbuf);
        sh = gdk_pixbuf_get_height(pixbuf);