summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdk-pixbuf/gdk-pixbuf-io.c69
-rw-r--r--gdk-pixbuf/gdk-pixbuf-io.h14
-rw-r--r--gdk-pixbuf/io-ani.c1
-rw-r--r--gdk-pixbuf/io-bmp.c1
-rw-r--r--gdk-pixbuf/io-gif.c1
-rw-r--r--gdk-pixbuf/io-ico.c1
-rw-r--r--gdk-pixbuf/io-jpeg.c1
-rw-r--r--gdk-pixbuf/io-pcx.c1
-rw-r--r--gdk-pixbuf/io-png.c1
-rw-r--r--gdk-pixbuf/io-pnm.c1
-rw-r--r--gdk-pixbuf/io-ras.c1
-rw-r--r--gdk-pixbuf/io-tga.c1
-rw-r--r--gdk-pixbuf/io-tiff.c1
-rw-r--r--gdk-pixbuf/io-wbmp.c1
-rw-r--r--gdk-pixbuf/io-xbm.c1
-rw-r--r--gdk-pixbuf/io-xpm.c1
16 files changed, 93 insertions, 4 deletions
diff --git a/gdk-pixbuf/gdk-pixbuf-io.c b/gdk-pixbuf/gdk-pixbuf-io.c
index 7cd918456..c6a3ea1a2 100644
--- a/gdk-pixbuf/gdk-pixbuf-io.c
+++ b/gdk-pixbuf/gdk-pixbuf-io.c
@@ -615,6 +615,10 @@ _gdk_pixbuf_get_named_module (const char *name,
for (modules = get_file_formats (); modules; modules = g_slist_next (modules)) {
GdkPixbufModule *module = (GdkPixbufModule *)modules->data;
+
+ if (module->info->disabled)
+ continue;
+
if (!strcmp (name, module->module_name))
return module;
}
@@ -641,6 +645,10 @@ _gdk_pixbuf_get_module (guchar *buffer, guint size,
for (modules = get_file_formats (); modules; modules = g_slist_next (modules)) {
GdkPixbufModule *module = (GdkPixbufModule *)modules->data;
+
+ if (module->info->disabled)
+ continue;
+
score = format_check (module, buffer, size);
if (score > best) {
best = score;
@@ -1843,6 +1851,67 @@ gdk_pixbuf_format_is_scalable (GdkPixbufFormat *format)
return (format->flags & GDK_PIXBUF_FORMAT_SCALABLE) != 0;
}
+/**
+ * gdk_pixbuf_format_is_disabled:
+ * @format: a #GdkPixbufFormat
+ *
+ * Returns whether this image format is disabled. See
+ * gdk_pixbuf_format_set_disabled().
+ *
+ * Return value: whether this image format is disabled.
+ *
+ * Since: 2.6
+ */
+gboolean
+gdk_pixbuf_format_is_disabled (GdkPixbufFormat *format)
+{
+ g_return_val_if_fail (format != NULL, FALSE);
+
+ return format->disabled;
+}
+
+/**
+ * gdk_pixbuf_format_set_disabled:
+ * @format: a #GdkPixbufFormat
+ * @disabled: %TRUE to disable the format @format
+ *
+ * Disables or enables an image format. If a format is disabled,
+ * gdk-pixbuf won't use the image loader for this format to load
+ * images. Applications can use this to avoid using image loaders
+ * with an inappropriate license, see gdk_pixbuf_format_get_license().
+ *
+ * Since: 2.6
+ */
+void
+gdk_pixbuf_format_set_disabled (GdkPixbufFormat *format,
+ gboolean disabled)
+{
+ g_return_val_if_fail (format != NULL, FALSE);
+
+ format->disabled = disabled != FALSE;
+}
+
+/**
+ * gdk_pixbuf_format_get_license:
+ * @format: a #GdkPixbufFormat
+ *
+ * Returns information about the license of the image loader
+ * for the format. The returned string should be a shorthand for
+ * a wellknown license, e.g. "LGPL", "GPL", "QPL", "GPL/QPL",
+ * or "other" to indicate some other license.
+ *
+ * Returns: a string describing the license of @format.
+ *
+ * Since: 2.6
+ */
+gchar*
+gdk_pixbuf_format_get_license (GdkPixbufFormat *format)
+{
+ g_return_val_if_fail (format != NULL, FALSE);
+
+ return g_strdup (format->license);
+}
+
GdkPixbufFormat *
_gdk_pixbuf_get_format (GdkPixbufModule *module)
{
diff --git a/gdk-pixbuf/gdk-pixbuf-io.h b/gdk-pixbuf/gdk-pixbuf-io.h
index 27a17b3a4..3eafd5f82 100644
--- a/gdk-pixbuf/gdk-pixbuf-io.h
+++ b/gdk-pixbuf/gdk-pixbuf-io.h
@@ -39,17 +39,21 @@ G_BEGIN_DECLS
typedef struct _GdkPixbufFormat GdkPixbufFormat;
-GSList *gdk_pixbuf_get_formats (void);
+GSList *gdk_pixbuf_get_formats (void);
gchar *gdk_pixbuf_format_get_name (GdkPixbufFormat *format);
gchar *gdk_pixbuf_format_get_description (GdkPixbufFormat *format);
gchar **gdk_pixbuf_format_get_mime_types (GdkPixbufFormat *format);
gchar **gdk_pixbuf_format_get_extensions (GdkPixbufFormat *format);
gboolean gdk_pixbuf_format_is_writable (GdkPixbufFormat *format);
gboolean gdk_pixbuf_format_is_scalable (GdkPixbufFormat *format);
+gboolean gdk_pixbuf_format_is_disabled (GdkPixbufFormat *format);
+void gdk_pixbuf_format_set_disabled (GdkPixbufFormat *format,
+ gboolean disabled);
+gchar *gdk_pixbuf_format_get_license (GdkPixbufFormat *format);
-GdkPixbufFormat *gdk_pixbuf_get_file_info (const gchar *filename,
- gint *width,
- gint *height);
+GdkPixbufFormat *gdk_pixbuf_get_file_info (const gchar *filename,
+ gint *width,
+ gint *height);
#ifdef GDK_PIXBUF_ENABLE_BACKEND
@@ -151,6 +155,8 @@ struct _GdkPixbufFormat {
gchar **mime_types;
gchar **extensions;
guint32 flags;
+ gboolean disabled;
+ gchar *license;
};
diff --git a/gdk-pixbuf/io-ani.c b/gdk-pixbuf/io-ani.c
index 00a9fc11b..5e7b6beb9 100644
--- a/gdk-pixbuf/io-ani.c
+++ b/gdk-pixbuf/io-ani.c
@@ -677,6 +677,7 @@ MODULE_ENTRY (ani, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-bmp.c b/gdk-pixbuf/io-bmp.c
index d43bed95a..d79e5be03 100644
--- a/gdk-pixbuf/io-bmp.c
+++ b/gdk-pixbuf/io-bmp.c
@@ -1119,5 +1119,6 @@ MODULE_ENTRY (bmp, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-gif.c b/gdk-pixbuf/io-gif.c
index 8dd73bde0..7df855d9e 100644
--- a/gdk-pixbuf/io-gif.c
+++ b/gdk-pixbuf/io-gif.c
@@ -1651,4 +1651,5 @@ MODULE_ENTRY (gif, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-ico.c b/gdk-pixbuf/io-ico.c
index e19f86f8f..a7bcbb4c7 100644
--- a/gdk-pixbuf/io-ico.c
+++ b/gdk-pixbuf/io-ico.c
@@ -1203,6 +1203,7 @@ MODULE_ENTRY (ico, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = GDK_PIXBUF_FORMAT_WRITABLE;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-jpeg.c b/gdk-pixbuf/io-jpeg.c
index 82acc7d13..1a42feeb6 100644
--- a/gdk-pixbuf/io-jpeg.c
+++ b/gdk-pixbuf/io-jpeg.c
@@ -1070,4 +1070,5 @@ MODULE_ENTRY (jpeg, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = GDK_PIXBUF_FORMAT_WRITABLE;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-pcx.c b/gdk-pixbuf/io-pcx.c
index 4904f3acf..6b4417403 100644
--- a/gdk-pixbuf/io-pcx.c
+++ b/gdk-pixbuf/io-pcx.c
@@ -759,4 +759,5 @@ MODULE_ENTRY (pcx, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-png.c b/gdk-pixbuf/io-png.c
index 669cb7bfc..df5417db3 100644
--- a/gdk-pixbuf/io-png.c
+++ b/gdk-pixbuf/io-png.c
@@ -995,4 +995,5 @@ MODULE_ENTRY (png, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = GDK_PIXBUF_FORMAT_WRITABLE;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-pnm.c b/gdk-pixbuf/io-pnm.c
index d65bb3da5..7d9401450 100644
--- a/gdk-pixbuf/io-pnm.c
+++ b/gdk-pixbuf/io-pnm.c
@@ -1083,4 +1083,5 @@ MODULE_ENTRY (pnm, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-ras.c b/gdk-pixbuf/io-ras.c
index 40ba370d5..9fe936161 100644
--- a/gdk-pixbuf/io-ras.c
+++ b/gdk-pixbuf/io-ras.c
@@ -544,5 +544,6 @@ MODULE_ENTRY (ras, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-tga.c b/gdk-pixbuf/io-tga.c
index ef49e7931..f4102bdf2 100644
--- a/gdk-pixbuf/io-tga.c
+++ b/gdk-pixbuf/io-tga.c
@@ -996,4 +996,5 @@ MODULE_ENTRY (tga, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-tiff.c b/gdk-pixbuf/io-tiff.c
index 0acdd091d..72c50fc61 100644
--- a/gdk-pixbuf/io-tiff.c
+++ b/gdk-pixbuf/io-tiff.c
@@ -626,4 +626,5 @@ MODULE_ENTRY (tiff, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-wbmp.c b/gdk-pixbuf/io-wbmp.c
index afcad336f..098c8c805 100644
--- a/gdk-pixbuf/io-wbmp.c
+++ b/gdk-pixbuf/io-wbmp.c
@@ -369,4 +369,5 @@ MODULE_ENTRY (wbmp, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-xbm.c b/gdk-pixbuf/io-xbm.c
index 060339d15..45d4be79e 100644
--- a/gdk-pixbuf/io-xbm.c
+++ b/gdk-pixbuf/io-xbm.c
@@ -477,4 +477,5 @@ MODULE_ENTRY (xbm, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}
diff --git a/gdk-pixbuf/io-xpm.c b/gdk-pixbuf/io-xpm.c
index 40cd525f3..636d759e9 100644
--- a/gdk-pixbuf/io-xpm.c
+++ b/gdk-pixbuf/io-xpm.c
@@ -1544,4 +1544,5 @@ MODULE_ENTRY (xpm, fill_info) (GdkPixbufFormat *info)
info->mime_types = mime_types;
info->extensions = extensions;
info->flags = 0;
+ info->license = "LGPL";
}