Deduplicate rt_border_draw
[geeqie.git] / src / filefilter.cc
index 0a613ab..650abb7 100644 (file)
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#include "main.h"
 #include "filefilter.h"
 
+#include <cstring>
+
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+#include <config.h>
+
 #include "cache.h"
-#include "ui-fileops.h"
+#include "debug.h"
+#include "main-defines.h"
+#include "options.h"
 #include "rcfile.h"
+#include "ui-fileops.h"
 
 /*
  *-----------------------------------------------------------------------------
@@ -160,17 +168,7 @@ static void filter_add_if_missing(const gchar *key, const gchar *description, co
 
 void filter_reset()
 {
-       GList *work;
-
-       work = filter_list;
-       while (work)
-               {
-               auto fe = static_cast<FilterEntry *>(work->data);
-               work = work->next;
-               filter_entry_free(fe);
-               }
-
-       g_list_free(filter_list);
+       g_list_free_full(filter_list, reinterpret_cast<GDestroyNotify>(filter_entry_free));
        filter_list = nullptr;
 }
 
@@ -178,22 +176,25 @@ void filter_add_defaults()
 {
        /* formats supported by custom loaders */
        filter_add_if_missing("dds", "DirectDraw Surface", ".dds", FORMAT_CLASS_IMAGE, FALSE, FALSE, TRUE);
-#ifdef HAVE_PDF
+#if HAVE_PDF
        filter_add_if_missing("pdf", "Portable Document Format", ".pdf", FORMAT_CLASS_DOCUMENT, FALSE, FALSE, TRUE);
 #endif
-#ifdef HAVE_HEIF
+#if HAVE_HEIF
        filter_add_if_missing("heif/avif", "HEIF/AVIF Image", ".heif;.heic;.avif", FORMAT_CLASS_IMAGE, FALSE, TRUE, TRUE);
 #endif
-#ifdef HAVE_WEBP
+#if HAVE_WEBP
        filter_add_if_missing("webp", "WebP Format", ".webp", FORMAT_CLASS_IMAGE, TRUE, FALSE, TRUE);
 #endif
-#ifdef HAVE_DJVU
+#if HAVE_DJVU
        filter_add_if_missing("djvu", "DjVu Format", ".djvu;.djv", FORMAT_CLASS_DOCUMENT, FALSE, FALSE, TRUE);
 #endif
-#ifdef HAVE_J2K
+#if HAVE_JPEGXL
+       filter_add_if_missing("jxl", "JXL", ".jxl", FORMAT_CLASS_IMAGE, FALSE, TRUE, TRUE);
+#endif
+#if HAVE_J2K
        filter_add_if_missing("jp2", "JPEG 2000", ".jp2", FORMAT_CLASS_IMAGE, FALSE, FALSE, TRUE);
 #endif
-#ifdef HAVE_ARCHIVE
+#if HAVE_ARCHIVE
        filter_add_if_missing("zip", "Archive files", ".zip;.rar;.tar;.tar.gz;.tar.bz2;.tar.xz;.tgz;.tbz;.txz;.cbr;.cbz;.gz;.bz2;.xz;.lzh;.lza;.7z", FORMAT_CLASS_ARCHIVE, FALSE, FALSE, TRUE);
 #endif
        filter_add_if_missing("scr", "ZX Spectrum screen Format", ".scr", FORMAT_CLASS_IMAGE, FALSE, FALSE, TRUE);
@@ -201,7 +202,8 @@ void filter_add_defaults()
        filter_add_if_missing("apng", "Animated Portable Network Graphic", ".apng", FORMAT_CLASS_IMAGE, FALSE, FALSE, TRUE);
 
        /* formats supported by gdk-pixbuf */
-       GSList *list, *work;
+       GSList *list;
+       GSList *work;
 
        list = gdk_pixbuf_get_formats();
        work = list;
@@ -290,9 +292,8 @@ void filter_add_defaults()
        filter_add_if_missing("mrw", "Minolta raw format", ".mrw", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
        filter_add_if_missing("nef", "Nikon raw format", ".nef", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
        filter_add_if_missing("orf", "Olympus raw format", ".orf", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
-       filter_add_if_missing("pef", "Pentax or Samsung raw format", ".pef;.ptx", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
+       filter_add_if_missing("pef", "Pentax or Samsung raw format", ".pef", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
        filter_add_if_missing("dng", "Adobe Digital Negative raw format", ".dng", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
-       filter_add_if_missing("x3f", "Sigma raw format", ".x3f", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
        filter_add_if_missing("raw", "Panasonic raw format", ".raw", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
        filter_add_if_missing("r3d", "Red raw format", ".r3d", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
        filter_add_if_missing("3fr", "Hasselblad raw format", ".3fr", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
@@ -301,14 +302,14 @@ void filter_add_defaults()
        filter_add_if_missing("rw2", "Panasonic raw format", ".rw2", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
 
        /* video files */
-       filter_add_if_missing("mp4", "MP4 video file", ".mp4;.m4v;.3gp;.3g2", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
-       filter_add_if_missing("3gp", "3GP video file", ".3gp;.3g2", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
-       filter_add_if_missing("mov", "MOV video file", ".mov;.qt", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
-       filter_add_if_missing("avi", "AVI video file", ".avi", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
-       filter_add_if_missing("mpg", "MPG video file", ".mpg;.mpeg;.mts;.m2ts", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
-       filter_add_if_missing("mkv", "Matroska video file", ".mkv;.webm", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
-       filter_add_if_missing("wmv", "Windows Media Video file", ".wmv;.asf", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
-       filter_add_if_missing("flv", "Flash Video file", ".flv", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
+       filter_add_if_missing("mp4", "MP4 video file", ".mp4;.m4v;.3gp;.3g2", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+       filter_add_if_missing("3gp", "3GP video file", ".3gp;.3g2", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+       filter_add_if_missing("mov", "MOV video file", ".mov;.qt", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+       filter_add_if_missing("avi", "AVI video file", ".avi", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+       filter_add_if_missing("mpg", "MPG video file", ".mpg;.mpeg;.mts;.m2ts", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+       filter_add_if_missing("mkv", "Matroska video file", ".mkv;.webm", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+       filter_add_if_missing("wmv", "Windows Media Video file", ".wmv;.asf", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+       filter_add_if_missing("flv", "Flash Video file", ".flv", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
 }
 
 GList *filter_to_list(const gchar *extensions)
@@ -375,18 +376,18 @@ void filter_rebuild()
        GList *work;
        guint i;
 
-       string_list_free(extension_list);
+       g_list_free_full(extension_list, g_free);
        extension_list = nullptr;
 
-       string_list_free(file_writable_list);
+       g_list_free_full(file_writable_list, g_free);
        file_writable_list = nullptr;
 
-       string_list_free(file_sidecar_list);
+       g_list_free_full(file_sidecar_list, g_free);
        file_sidecar_list = nullptr;
 
        for (i = 0; i < FILE_FORMAT_CLASSES; i++)
                {
-               string_list_free(file_class_extension_list[i]);
+               g_list_free_full(file_class_extension_list[i], g_free);
                file_class_extension_list[i] = nullptr;
                }
 
@@ -578,16 +579,7 @@ GList *sidecar_ext_get_list()
 
 static void sidecar_ext_free_list()
 {
-       GList *work;
-
-       work = sidecar_ext_list;
-       while (work)
-               {
-               auto ext = static_cast<gchar *>(work->data);
-               work = work->next;
-               g_free(ext);
-               }
-       g_list_free(sidecar_ext_list);
+       g_list_free_full(sidecar_ext_list, g_free);
        sidecar_ext_list = nullptr;
 }