GdkPixbufFormat* get_gdk_pixbuf_format_by_extension (gchar *uri) { GSList *pixbuf_formats = NULL; GSList *iter; int i; pixbuf_formats = gdk_pixbuf_get_formats (); for (iter = pixbuf_formats; iter; iter = iter->next) { gchar **extension_list; GdkPixbufFormat *format = iter->data; if (gdk_pixbuf_format_is_disabled (format) || !gdk_pixbuf_format_is_writable (format)) continue; extension_list = gdk_pixbuf_format_get_extensions (format); for (i = 0; extension_list[i] != 0; i++) { if (g_str_has_suffix (uri, extension_list[i])) { g_slist_free (pixbuf_formats); g_strfreev (extension_list); return format; } } g_strfreev (extension_list); } g_slist_free (pixbuf_formats); return NULL; }
gboolean _gdk_pixbuf_mime_type_is_readable (const char *mime_type) { GSList *formats; GSList *scan; gboolean result; if (mime_type == NULL) return FALSE; result = FALSE; formats = gdk_pixbuf_get_formats (); for (scan = formats; ! result && scan; scan = scan->next) { GdkPixbufFormat *format = scan->data; char **mime_types; int i; if (gdk_pixbuf_format_is_disabled (format)) continue; mime_types = gdk_pixbuf_format_get_mime_types (format); for (i = 0; mime_types[i] != NULL; i++) { if (strcmp (mime_type, mime_types[i]) == 0) { result = TRUE; break; } } } g_slist_free (formats); return result; }
void file_chooser_dialog_add_writable_pixbuf_formats (GtkFileChooser *chooser) { GSList *pixbuf_formats = NULL; GSList *iter; GtkFileFilter *filter; int i; filter = gtk_file_filter_new(); gtk_file_filter_set_name (filter, _("By extension")); g_object_set_data (G_OBJECT(filter), "pixbuf-format", NULL); gtk_file_chooser_add_filter (chooser, filter); pixbuf_formats = gdk_pixbuf_get_formats (); for (iter = pixbuf_formats; iter; iter = iter->next) { GdkPixbufFormat *format = iter->data; gchar *description, *name, *extensions; gchar **extension_list, **mime_types; if (gdk_pixbuf_format_is_disabled (format) || !gdk_pixbuf_format_is_writable (format)) continue; name = gdk_pixbuf_format_get_description (format); extension_list = gdk_pixbuf_format_get_extensions (format); extensions = g_strjoinv (", ", extension_list); g_strfreev (extension_list); description = g_strdup_printf ("%s (%s)", name, extensions); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, description); g_object_set_data (G_OBJECT (filter), "pixbuf-format", format); gtk_file_chooser_add_filter (chooser, filter); g_free (description); g_free (extensions); g_free (name); mime_types = gdk_pixbuf_format_get_mime_types (format); for (i = 0; mime_types[i] != 0; i++) gtk_file_filter_add_mime_type (filter, mime_types[i]); g_strfreev (mime_types); } g_slist_free (pixbuf_formats); }
static void gth_main_register_default_file_loader (void) { GSList *formats; GSList *scan; formats = gdk_pixbuf_get_formats (); for (scan = formats; scan; scan = scan->next) { GdkPixbufFormat *format = scan->data; char **mime_types; int i; if (gdk_pixbuf_format_is_disabled (format)) continue; mime_types = gdk_pixbuf_format_get_mime_types (format); for (i = 0; mime_types[i] != NULL; i++) gth_main_register_pixbuf_loader (gth_pixbuf_animation_new_from_file, mime_types[i], NULL); } }
static GList* gdk_pixbuf_mime_type_list () { GSList *formats, *list; GList *result = NULL; formats = gdk_pixbuf_get_formats (); for (list = formats; list != NULL; list = list->next) { GdkPixbufFormat *format = list->data; gchar **mime_types; if (gdk_pixbuf_format_is_disabled (format)) continue; mime_types = gdk_pixbuf_format_get_mime_types (format); result = g_list_prepend (result, mime_types); } g_slist_free (formats); return result; }
gboolean _g_mime_type_is_writable (const char *mime_type) { GSList *list; GSList *scan; list = gdk_pixbuf_get_formats (); for (scan = list; scan; scan = scan->next) { GdkPixbufFormat *format = scan->data; char **mime_types; int i; mime_types = gdk_pixbuf_format_get_mime_types (format); for (i = 0; mime_types[i] != NULL; i++) if (strcmp (mime_type, mime_types[i]) == 0) return ! gdk_pixbuf_format_is_disabled (format) && gdk_pixbuf_format_is_writable (format); g_strfreev (mime_types); } g_slist_free (list); return FALSE; }
static VALUE rg_disabled_p(VALUE self) { return CBOOL2RVAL(gdk_pixbuf_format_is_disabled(_SELF(self))); }