[gimp] plug-ins: pass GFiles around instead of filenames in file-tiff
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] plug-ins: pass GFiles around instead of filenames in file-tiff
- Date: Tue, 19 Apr 2016 16:18:59 +0000 (UTC)
commit b4e48c7ecd82427ff7e18f91c29460e83aa10331
Author: Michael Natterer <mitch gimp org>
Date: Tue Apr 19 17:18:17 2016 +0100
plug-ins: pass GFiles around instead of filenames in file-tiff
This is no port to GIO yet.
plug-ins/file-tiff/file-tiff-io.c | 4 +++-
plug-ins/file-tiff/file-tiff-io.h | 2 +-
plug-ins/file-tiff/file-tiff-load.c | 24 +++++++++++++-----------
plug-ins/file-tiff/file-tiff-load.h | 2 +-
plug-ins/file-tiff/file-tiff-save.c | 12 ++++++------
plug-ins/file-tiff/file-tiff-save.h | 2 +-
plug-ins/file-tiff/file-tiff.c | 34 +++++++++++++++++-----------------
7 files changed, 42 insertions(+), 38 deletions(-)
---
diff --git a/plug-ins/file-tiff/file-tiff-io.c b/plug-ins/file-tiff/file-tiff-io.c
index 2139236..c6e5520 100644
--- a/plug-ins/file-tiff/file-tiff-io.c
+++ b/plug-ins/file-tiff/file-tiff-io.c
@@ -41,10 +41,12 @@ static void tiff_error (const gchar *module,
TIFF *
-tiff_open (const gchar *filename,
+tiff_open (GFile *file,
const gchar *mode,
GError **error)
{
+ gchar *filename = g_file_get_path (file);
+
TIFFSetWarningHandler (tiff_warning);
TIFFSetErrorHandler (tiff_error);
diff --git a/plug-ins/file-tiff/file-tiff-io.h b/plug-ins/file-tiff/file-tiff-io.h
index b9c285b..f4d4e31 100644
--- a/plug-ins/file-tiff/file-tiff-io.h
+++ b/plug-ins/file-tiff/file-tiff-io.h
@@ -23,7 +23,7 @@
#define __FILE_TIFF_IO_H__
-TIFF * tiff_open (const gchar *filename,
+TIFF * tiff_open (GFile *file,
const gchar *mode,
GError **error);
diff --git a/plug-ins/file-tiff/file-tiff-load.c b/plug-ins/file-tiff/file-tiff-load.c
index affaf10..ffbd066 100644
--- a/plug-ins/file-tiff/file-tiff-load.c
+++ b/plug-ins/file-tiff/file-tiff-load.c
@@ -218,7 +218,7 @@ load_dialog (TIFF *tif,
}
gint32
-load_image (const gchar *filename,
+load_image (GFile *file,
TIFF *tif,
TiffSelectedPages *pages,
gboolean *resolution_loaded,
@@ -234,7 +234,7 @@ load_image (const gchar *filename,
gint li;
gimp_progress_init_printf (_("Opening '%s'"),
- gimp_filename_to_utf8 (filename));
+ gimp_file_get_utf8_name (file));
/* We will loop through the all pages in case of multipage TIFF
* and load every page as a separate layer.
@@ -370,14 +370,14 @@ load_image (const gchar *filename,
if (! TIFFGetField (tif, TIFFTAG_IMAGEWIDTH, &cols))
{
g_message ("Could not get image width from '%s'",
- gimp_filename_to_utf8 (filename));
+ gimp_file_get_utf8_name (file));
return -1;
}
if (! TIFFGetField (tif, TIFFTAG_IMAGELENGTH, &rows))
{
g_message ("Could not get image length from '%s'",
- gimp_filename_to_utf8 (filename));
+ gimp_file_get_utf8_name (file));
return -1;
}
@@ -393,14 +393,14 @@ load_image (const gchar *filename,
{
g_message ("Could not get photometric from '%s'. "
"Image is CCITT compressed, assuming min-is-white",
- filename);
+ gimp_file_get_utf8_name (file));
photomet = PHOTOMETRIC_MINISWHITE;
}
else
{
g_message ("Could not get photometric from '%s'. "
"Assuming min-is-black",
- filename);
+ gimp_file_get_utf8_name (file));
/* old AppleScan software misses out the photometric tag
* (and incidentally assumes min-is-white, but xv
@@ -429,7 +429,7 @@ load_image (const gchar *filename,
/* assuming unassociated alpha if unspecified */
g_message ("alpha channel type not defined for file %s. "
"Assuming alpha is not premultiplied",
- gimp_filename_to_utf8 (filename));
+ gimp_file_get_utf8_name (file));
alpha = TRUE;
tsvals.save_transp_pixels = TRUE;
extra--;
@@ -704,7 +704,8 @@ load_image (const gchar *filename,
if (pages->target == GIMP_PAGE_SELECTOR_TARGET_IMAGES)
{
- gchar *fname = g_strdup_printf ("%s-%d", filename, ilayer);
+ gchar *fname = g_strdup_printf ("%s-%d", g_file_get_uri (file),
+ ilayer);
gimp_image_set_filename (image, fname);
g_free (fname);
@@ -714,7 +715,8 @@ load_image (const gchar *filename,
}
else if (pages->o_pages != pages->n_pages)
{
- gchar *fname = g_strdup_printf (_("%s-%d-of-%d-pages"), filename,
+ gchar *fname = g_strdup_printf (_("%s-%d-of-%d-pages"),
+ g_file_get_uri (file),
pages->n_pages, pages->o_pages);
gimp_image_set_filename (image, fname);
@@ -722,7 +724,7 @@ load_image (const gchar *filename,
}
else
{
- gimp_image_set_filename (image, filename);
+ gimp_image_set_filename (image, g_file_get_uri (file));
}
}
@@ -883,7 +885,7 @@ load_image (const gchar *filename,
&redmap, &greenmap, &bluemap))
{
g_message ("Could not get colormaps from '%s'",
- gimp_filename_to_utf8 (filename));
+ gimp_file_get_utf8_name (file));
return -1;
}
diff --git a/plug-ins/file-tiff/file-tiff-load.h b/plug-ins/file-tiff/file-tiff-load.h
index fb4b2b6..372af71 100644
--- a/plug-ins/file-tiff/file-tiff-load.h
+++ b/plug-ins/file-tiff/file-tiff-load.h
@@ -36,7 +36,7 @@ gboolean load_dialog (TIFF *tif,
const gchar *help_id,
TiffSelectedPages *pages);
-gint32 load_image (const gchar *filename,
+gint32 load_image (GFile *file,
TIFF *tif,
TiffSelectedPages *pages,
gboolean *resolution_loaded,
diff --git a/plug-ins/file-tiff/file-tiff-save.c b/plug-ins/file-tiff/file-tiff-save.c
index 920ab10..0f39d04 100644
--- a/plug-ins/file-tiff/file-tiff-save.c
+++ b/plug-ins/file-tiff/file-tiff-save.c
@@ -255,7 +255,7 @@ save_paths (TIFF *tif,
*/
gboolean
-save_image (const gchar *filename,
+save_image (GFile *file,
TiffSaveVals *tsvals,
gint32 image,
gint32 layer,
@@ -312,7 +312,7 @@ save_image (const gchar *filename,
rowsperstrip = tile_height;
gimp_progress_init_printf (_("Exporting '%s'"),
- gimp_filename_to_utf8 (filename));
+ gimp_file_get_utf8_name (file));
drawable_type = gimp_drawable_type (layer);
buffer = gimp_drawable_get_buffer (layer);
@@ -512,14 +512,14 @@ save_image (const gchar *filename,
}
}
- tif = tiff_open (filename, "w", error);
+ tif = tiff_open (file, "w", error);
if (! tif)
{
if (! error)
g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
_("Could not open '%s' for writing: %s"),
- gimp_filename_to_utf8 (filename), g_strerror (errno));
+ gimp_file_get_utf8_name (file), g_strerror (errno));
goto out;
}
@@ -551,7 +551,7 @@ save_image (const gchar *filename,
}
TIFFSetField (tif, TIFFTAG_PHOTOMETRIC, photometric);
- TIFFSetField (tif, TIFFTAG_DOCUMENTNAME, filename);
+ TIFFSetField (tif, TIFFTAG_DOCUMENTNAME, g_file_get_path (file));
TIFFSetField (tif, TIFFTAG_SAMPLESPERPIXEL, samplesperpixel);
TIFFSetField (tif, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
/* TIFFSetField( tif, TIFFTAG_STRIPBYTECOUNTS, rows / rowsperstrip ); */
@@ -776,7 +776,7 @@ save_image (const gchar *filename,
*p++ = *thumb_pixels++; /* r */
*p++ = *thumb_pixels++; /* g */
*p++ = *thumb_pixels++; /* b */
- *thumb_pixels++;
+ thumb_pixels++;
}
TIFFWriteScanline (tif, buf, y, 0);
diff --git a/plug-ins/file-tiff/file-tiff-save.h b/plug-ins/file-tiff/file-tiff-save.h
index e82a33a..032b370 100644
--- a/plug-ins/file-tiff/file-tiff-save.h
+++ b/plug-ins/file-tiff/file-tiff-save.h
@@ -35,7 +35,7 @@ typedef struct
} TiffSaveVals;
-gboolean save_image (const gchar *filename,
+gboolean save_image (GFile *file,
TiffSaveVals *tsvals,
gint32 image,
gint32 drawable,
diff --git a/plug-ins/file-tiff/file-tiff.c b/plug-ins/file-tiff/file-tiff.c
index 0a9a1db..cd88955 100644
--- a/plug-ins/file-tiff/file-tiff.c
+++ b/plug-ins/file-tiff/file-tiff.c
@@ -207,10 +207,10 @@ run (const gchar *name,
if (strcmp (name, LOAD_PROC) == 0)
{
- const gchar *filename = param[1].data.d_string;
- TIFF *tif;
+ GFile *file = g_file_new_for_path (param[1].data.d_string);
+ TIFF *tif;
- tif = tiff_open (filename, "r", &error);
+ tif = tiff_open (file, "r", &error);
if (tif)
{
@@ -226,7 +226,7 @@ run (const gchar *name,
{
g_set_error (&error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
_("TIFF '%s' does not contain any directories"),
- gimp_filename_to_utf8 (filename));
+ gimp_file_get_utf8_name (file));
status = GIMP_PDB_EXECUTION_ERROR;
}
@@ -262,13 +262,13 @@ run (const gchar *name,
if (run_it)
{
- gint32 image;
- gboolean resolution_loaded = FALSE;
+ gint32 image;
+ gboolean resolution_loaded = FALSE;
gimp_set_data (LOAD_PROC,
&pages.target, sizeof (pages.target));
- image = load_image (param[1].data.d_string, tif, &pages,
+ image = load_image (file, tif, &pages,
&resolution_loaded,
&error);
@@ -276,11 +276,8 @@ run (const gchar *name,
if (image > 0)
{
- GFile *file;
GimpMetadata *metadata;
- file = g_file_new_for_path (param[1].data.d_string);
-
metadata = gimp_image_metadata_load_prepare (image,
"image/tiff",
file, NULL);
@@ -299,8 +296,6 @@ run (const gchar *name,
g_object_unref (metadata);
}
- g_object_unref (file);
-
*nreturn_vals = 2;
values[1].type = GIMP_PDB_IMAGE;
values[1].data.d_image = image;
@@ -309,6 +304,7 @@ run (const gchar *name,
{
status = GIMP_PDB_EXECUTION_ERROR;
}
+
}
else
{
@@ -322,6 +318,8 @@ run (const gchar *name,
{
status = GIMP_PDB_EXECUTION_ERROR;
}
+
+ g_object_unref (file);
}
else if ((strcmp (name, SAVE_PROC) == 0) ||
(strcmp (name, SAVE2_PROC) == 0))
@@ -455,15 +453,17 @@ run (const gchar *name,
if (status == GIMP_PDB_SUCCESS)
{
- gint saved_bpp;
+ GFile *file;
+ gint saved_bpp;
+
+ file = g_file_new_for_path (param[3].data.d_string);
- if (save_image (param[3].data.d_string, &tsvals,
+ if (save_image (file, &tsvals,
image, drawable, orig_image, image_comment,
&saved_bpp, &error))
{
if (metadata)
{
- GFile *file;
/* See bug 758909: clear TIFFTAG_MIN/MAXSAMPLEVALUE because
* exiv2 saves them with wrong type and the original values
@@ -492,12 +492,10 @@ run (const gchar *name,
/* never save metadata thumbnails for TIFF, see bug #729952 */
metadata_flags &= ~GIMP_METADATA_SAVE_THUMBNAIL;
- file = g_file_new_for_path (param[3].data.d_string);
gimp_image_metadata_save_finish (image,
"image/tiff",
metadata, metadata_flags,
file, NULL);
- g_object_unref (file);
}
/* Store mvals data */
@@ -507,6 +505,8 @@ run (const gchar *name,
{
status = GIMP_PDB_EXECUTION_ERROR;
}
+
+ g_object_unref (file);
}
if (export == GIMP_EXPORT_EXPORT)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]