annotate src/image_load_collection.c @ 2800:0ecd4885dc09

Bug fix: Collection preview Creating thumbnails takes too long; use only thumbnails in the cache. Option in Preferences/General to define the maximum number of thumbnails in the montage.
author Colin Clark <colin.clark@cclark.uk>
date Thu, 19 Jul 2018 10:56:46 +0100
parents d9764817aad8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2798
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
1 /*
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
2 * Copyright (C) 20018 - The Geeqie Team
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
3 *
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
4 * Author: Colin Clark
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
5 *
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
9 * (at your option) any later version.
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
10 *
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
14 * GNU General Public License for more details.
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
15 *
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License along
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
17 * with this program; if not, write to the Free Software Foundation, Inc.,
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
19 */
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
20
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
21 #include "main.h"
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
22 #include "image-load.h"
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
23 #include "image_load_collection.h"
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
24
2800
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
25 #include "cache.h"
2798
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
26 #include "misc.h"
2800
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
27 #include "ui_fileops.h"
2798
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
28
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
29 typedef struct _ImageLoaderCOLLECTION ImageLoaderCOLLECTION;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
30 struct _ImageLoaderCOLLECTION {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
31 ImageLoaderBackendCbAreaUpdated area_updated_cb;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
32 ImageLoaderBackendCbSize size_cb;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
33 ImageLoaderBackendCbAreaPrepared area_prepared_cb;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
34 gpointer data;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
35 GdkPixbuf *pixbuf;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
36 guint requested_width;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
37 guint requested_height;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
38 gboolean abort;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
39 };
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
40
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
41 static gboolean image_loader_collection_load(gpointer loader, const guchar *buf, gsize count, GError **error)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
42 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
43 ImageLoaderCOLLECTION *ld = (ImageLoaderCOLLECTION *) loader;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
44 ImageLoader *il = ld->data;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
45
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
46 #define LINE_LENGTH 1000
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
47
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
48 gboolean ret = FALSE;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
49 gchar *randname;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
50 gchar *cmd_line;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
51 FILE *fp = NULL;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
52 gint line_count = 0;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
53 GString *file_names = g_string_new(NULL);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
54 gchar line[LINE_LENGTH];
2800
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
55 gchar **split_line = NULL;
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
56 gchar *cache_found;
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
57 gchar *pathl;
2798
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
58
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
59 if (runcmd("which montage >/dev/null 2>&1") == 0)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
60 {
2800
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
61 pathl = path_from_utf8(il->fd->path);
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
62 fp = fopen(pathl, "r");
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
63 g_free(pathl);
2798
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
64 if (fp)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
65 {
2800
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
66 while(fgets(line, LINE_LENGTH, fp) && line_count < options->thumbnails.collection_preview)
2798
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
67 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
68 if (line[0] && line[0] != '#')
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
69 {
2800
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
70 split_line = g_strsplit(line, "\"", 4);
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
71 cache_found = cache_find_location(CACHE_TYPE_THUMB, split_line[1]);
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
72 if (cache_found)
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
73 {
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
74 file_names = g_string_append(file_names, g_strconcat("\"", cache_found,"\" ", NULL));
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
75 line_count++;
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
76 }
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
77 g_free(cache_found);
2798
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
78 }
2800
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
79 if (split_line)
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
80 {
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
81 g_strfreev(split_line);
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
82 }
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
83 split_line = NULL;
2798
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
84 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
85 fclose(fp);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
86
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
87 if (file_names->len > 0)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
88 {
2800
0ecd4885dc09 Bug fix: Collection preview
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
89 randname = g_strdup("/tmp/geeqie_collection_XXXXXX.png");
2798
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
90 g_mkstemp(randname);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
91
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
92 cmd_line = g_strdup_printf("montage %s -geometry %dx%d+1+1 %s >/dev/null 2>&1", file_names->str, options->thumbnails.max_width, options->thumbnails.max_height, randname);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
93
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
94 runcmd(cmd_line);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
95 ld->pixbuf = gdk_pixbuf_new_from_file(randname, NULL);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
96 if (ld->pixbuf)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
97 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
98 ld->area_updated_cb(loader, 0, 0, gdk_pixbuf_get_width(ld->pixbuf), gdk_pixbuf_get_height(ld->pixbuf), ld->data);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
99 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
100
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
101 unlink(randname);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
102 g_free(randname);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
103 g_string_free(file_names, TRUE);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
104 g_free(cmd_line);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
105
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
106 ret = TRUE;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
107 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
108 else
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
109 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
110 g_string_free(file_names, TRUE);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
111 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
112 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
113 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
114 return ret;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
115 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
116
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
117 static gpointer image_loader_collection_new(ImageLoaderBackendCbAreaUpdated area_updated_cb, ImageLoaderBackendCbSize size_cb, ImageLoaderBackendCbAreaPrepared area_prepared_cb, gpointer data)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
118 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
119 ImageLoaderCOLLECTION *loader = g_new0(ImageLoaderCOLLECTION, 1);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
120 loader->area_updated_cb = area_updated_cb;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
121 loader->size_cb = size_cb;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
122 loader->area_prepared_cb = area_prepared_cb;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
123 loader->data = data;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
124 return (gpointer) loader;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
125 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
126
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
127 static void image_loader_collection_set_size(gpointer loader, int width, int height)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
128 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
129 ImageLoaderCOLLECTION *ld = (ImageLoaderCOLLECTION *) loader;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
130 ld->requested_width = width;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
131 ld->requested_height = height;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
132 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
133
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
134 static GdkPixbuf* image_loader_collection_get_pixbuf(gpointer loader)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
135 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
136 ImageLoaderCOLLECTION *ld = (ImageLoaderCOLLECTION *) loader;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
137 return ld->pixbuf;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
138 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
139
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
140 static gchar* image_loader_collection_get_format_name(gpointer loader)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
141 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
142 return g_strdup("collection");
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
143 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
144 static gchar** image_loader_collection_get_format_mime_types(gpointer loader)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
145 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
146 static gchar *mime[] = {"image/png", NULL};
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
147 return g_strdupv(mime);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
148 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
149
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
150 static gboolean image_loader_collection_close(gpointer loader, GError **error)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
151 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
152 return TRUE;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
153 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
154
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
155 static void image_loader_collection_abort(gpointer loader)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
156 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
157 ImageLoaderCOLLECTION *ld = (ImageLoaderCOLLECTION *) loader;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
158 ld->abort = TRUE;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
159 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
160
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
161 static void image_loader_collection_free(gpointer loader)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
162 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
163 ImageLoaderCOLLECTION *ld = (ImageLoaderCOLLECTION *) loader;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
164 if (ld->pixbuf) g_object_unref(ld->pixbuf);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
165 g_free(ld);
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
166 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
167
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
168 void image_loader_backend_set_collection(ImageLoaderBackend *funcs)
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
169 {
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
170 funcs->loader_new = image_loader_collection_new;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
171 funcs->set_size = image_loader_collection_set_size;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
172 funcs->load = image_loader_collection_load;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
173 funcs->write = NULL;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
174 funcs->get_pixbuf = image_loader_collection_get_pixbuf;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
175 funcs->close = image_loader_collection_close;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
176 funcs->abort = image_loader_collection_abort;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
177 funcs->free = image_loader_collection_free;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
178 funcs->get_format_name = image_loader_collection_get_format_name;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
179 funcs->get_format_mime_types = image_loader_collection_get_format_mime_types;
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
180 }
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
181
d9764817aad8 Collection preview
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
182 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */