aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dicache.c28
-rw-r--r--src/prefs.c1
-rw-r--r--src/prefs.h1
-rw-r--r--src/prefsparser.cc1
4 files changed, 29 insertions, 2 deletions
diff --git a/src/dicache.c b/src/dicache.c
index e86f5655..e53fb011 100644
--- a/src/dicache.c
+++ b/src/dicache.c
@@ -25,13 +25,23 @@
#include "dsvg.h"
enum {
- DIC_Gif,
+ DIC_Gif = 0,
DIC_Png,
DIC_Webp,
DIC_Jpeg,
- DIC_Svg
+ DIC_Svg,
+ DIC_MAX
};
+static const char *format_name[DIC_MAX] = {
+ [DIC_Gif] = "gif",
+ [DIC_Png] = "png",
+ [DIC_Webp] = "webp",
+ [DIC_Jpeg] = "jpeg",
+ [DIC_Svg] = "svg"
+};
+
+static int disabled_formats[DIC_MAX] = { 0 };
/**
* List of DICacheEntry. May hold several versions of the same image,
@@ -67,6 +77,15 @@ void a_Dicache_init(void)
{
CachedIMGs = dList_new(256);
dicache_size_total = 0;
+
+ if (prefs.ignore_image_formats) {
+ for (int i = 0; i < DIC_MAX; i++) {
+ if (dStriAsciiStr(prefs.ignore_image_formats, format_name[i])) {
+ disabled_formats[i] = 1;
+ _MSG("Image format %s disabled\n", format_name[i]);
+ }
+ }
+ }
}
/**
@@ -372,6 +391,11 @@ static void *Dicache_image(int ImgType, const char *MimeType, void *Ptr,
dReturn_val_if_fail(MimeType && Ptr, NULL);
+ if (ImgType >= 0 && ImgType < DIC_MAX && disabled_formats[ImgType]) {
+ _MSG("Ignoring image format %s\n", format_name[ImgType]);
+ return NULL;
+ }
+
if (!web->Image) {
web->Image =
a_Image_new_with_dw(web->bw->render_layout, NULL, web->bgColor, 0);
diff --git a/src/prefs.c b/src/prefs.c
index d6a3ff12..4a68e4c9 100644
--- a/src/prefs.c
+++ b/src/prefs.c
@@ -76,6 +76,7 @@ void a_Prefs_init(void)
prefs.adjust_min_width = TRUE;
prefs.adjust_table_min_width = TRUE;
prefs.load_images=TRUE;
+ prefs.ignore_image_formats = NULL;
prefs.load_background_images=FALSE;
prefs.load_stylesheets=TRUE;
prefs.middle_click_drags_page = TRUE;
diff --git a/src/prefs.h b/src/prefs.h
index 5f8f393d..03bc1e56 100644
--- a/src/prefs.h
+++ b/src/prefs.h
@@ -97,6 +97,7 @@ typedef struct {
bool_t show_quit_dialog;
bool_t fullwindow_start;
bool_t load_images;
+ char *ignore_image_formats;
bool_t load_background_images;
bool_t load_stylesheets;
bool_t parse_embedded_css;
diff --git a/src/prefsparser.cc b/src/prefsparser.cc
index 482e79ab..ee1d9d02 100644
--- a/src/prefsparser.cc
+++ b/src/prefsparser.cc
@@ -186,6 +186,7 @@ void PrefsParser::parse(FILE *fp)
{ "adjust_min_width", &prefs.adjust_min_width, PREFS_BOOL, 0 },
{ "adjust_table_min_width", &prefs.adjust_table_min_width, PREFS_BOOL, 0 },
{ "load_images", &prefs.load_images, PREFS_BOOL, 0 },
+ { "ignore_image_formats", &prefs.ignore_image_formats, PREFS_STRING, 0 },
{ "load_background_images", &prefs.load_background_images, PREFS_BOOL, 0 },
{ "load_stylesheets", &prefs.load_stylesheets, PREFS_BOOL, 0 },
{ "middle_click_drags_page", &prefs.middle_click_drags_page,