65
65
page = page_new ();
66
page_set_scan_area (page, width, height, dpi);
67
page_set_orientation (page, orientation);
66
page_setup (page, width, height, dpi, orientation);
69
68
book->priv->pages = g_list_append (book->priv->pages, page);
103
static GFileOutputStream *
104
open_file (const gchar *uri, GError **error)
107
GFileOutputStream *stream;
109
file = g_file_new_for_uri (uri);
110
stream = g_file_replace (file, NULL, FALSE, G_FILE_CREATE_NONE, NULL, error);
111
g_object_unref (file);
117
make_indexed_uri (const gchar *uri, gint i)
103
make_indexed_file (const gchar *uri, gint i)
119
105
gchar *basename, *suffix, *indexed_uri;
122
return g_strdup (uri);
109
return g_file_new_for_uri (uri);
124
111
basename = g_path_get_basename (uri);
125
112
suffix = g_strrstr (basename, ".");
130
117
indexed_uri = g_strdup_printf ("%s-%d", uri, i);
131
118
g_free (basename);
137
book_save_jpeg (Book *book, const gchar *uri, GError **error)
140
gboolean result = TRUE;
143
for (iter = book->priv->pages, i = 0; iter && result; iter = iter->next, i++) {
144
Page *page = iter->data;
147
indexed_uri = make_indexed_uri (uri, i);
148
result = page_save_jpeg (page, indexed_uri, error);
149
g_free (indexed_uri);
157
book_save_png (Book *book, const gchar *uri, GError **error)
160
gboolean result = TRUE;
163
for (iter = book->priv->pages, i = 0; iter && result; iter = iter->next, i++) {
164
Page *page = iter->data;
167
indexed_uri = make_indexed_uri (uri, i);
168
result = page_save_png (page, indexed_uri, error);
169
g_free (indexed_uri);
177
book_save_tiff (Book *book, const gchar *uri, GError **error)
180
gboolean result = TRUE;
183
for (iter = book->priv->pages, i = 0; iter && result; iter = iter->next, i++) {
184
Page *page = iter->data;
187
indexed_uri = make_indexed_uri (uri, i);
188
result = page_save_tiff (page, indexed_uri, error);
189
g_free (indexed_uri);
120
file = g_file_new_for_uri (indexed_uri);
121
g_free (indexed_uri);
128
book_save_multi_file (Book *book, const gchar *type, GFile *file, GError **error)
131
gboolean result = TRUE;
135
uri = g_file_get_uri (file);
136
for (iter = book->priv->pages, i = 0; iter && result; iter = iter->next, i++) {
137
Page *page = iter->data;
140
file = make_indexed_file (uri, i);
141
result = page_save (page, type, file, error);
142
g_object_unref (file);
230
book_save_ps (Book *book, const gchar *uri, GError **error)
184
book_save_ps (Book *book, GFile *file, GError **error)
232
186
GFileOutputStream *stream;
234
188
cairo_surface_t *surface;
236
stream = open_file (uri, error);
190
stream = g_file_replace (file, NULL, FALSE, G_FILE_CREATE_NONE, NULL, error);
330
284
for (iter = book->priv->pages; iter && result; iter = iter->next) {
331
285
Page *page = iter->data;
332
286
GFile *jpeg_file, *tiff_file;
334
288
gint jpeg_size, tiff_size;
336
290
jpeg_file = get_temporary_file ("simple-scan", "jpg");
337
uri = g_file_get_uri (jpeg_file);
338
result = page_save_jpeg (page, uri, error);
291
result = page_save (page, "jpeg", jpeg_file, error);
340
292
jpeg_size = get_file_size (jpeg_file);
341
293
temporary_files = g_list_append (temporary_files, jpeg_file);
343
295
tiff_file = get_temporary_file ("simple-scan", "tiff");
344
uri = g_file_get_uri (tiff_file);
345
result = page_save_tiff (page, uri, error);
296
result = page_save (page, "tiff", tiff_file, error);
347
297
tiff_size = get_file_size (tiff_file);
348
298
temporary_files = g_list_append (temporary_files, tiff_file);
379
329
/* Move to target URI */
382
dest = g_file_new_for_uri (uri);
383
result = g_file_move (output_file, dest, G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, error);
332
result = g_file_move (output_file, file, G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, error);
384
333
g_object_unref (dest);
387
336
/* Delete page files */
388
337
for (link = temporary_files; link; link = link->next) {
389
GFile *file = link->data;
338
GFile *f = link->data;
391
g_file_delete (file, NULL, NULL);
392
g_object_unref (file);
340
g_file_delete (f, NULL, NULL);
394
343
g_list_free (temporary_files);
405
book_save_pdf (Book *book, const gchar *uri, GError **error)
354
book_save_pdf (Book *book, GFile *file, GError **error)
407
356
GFileOutputStream *stream;
413
362
imagemagick_executable = g_find_program_in_path ("convert");
414
363
if (imagemagick_executable) {
415
364
g_free (imagemagick_executable);
416
return book_save_pdf_with_imagemagick (book, uri, error);
365
return book_save_pdf_with_imagemagick (book, file, error);
419
stream = open_file (uri, error);
368
stream = g_file_replace (file, NULL, FALSE, G_FILE_CREATE_NONE, NULL, error);
400
book_save (Book *book, const gchar *type, GFile *file, GError **error)
402
if (strcmp (type, "jpeg") == 0)
403
return book_save_multi_file (book, "jpeg", file, error);
404
else if (strcmp (type, "png") == 0)
405
return book_save_multi_file (book, "png", file, error);
406
else if (strcmp (type, "tiff") == 0)
407
return book_save_multi_file (book, "tiff", file, error);
408
else if (strcmp (type, "ps") == 0)
409
return book_save_ps (book, file, error);
410
else if (strcmp (type, "pdf") == 0)
411
return book_save_pdf (book, file, error);
451
418
book_finalize (GObject *object)