[gimp] plug-ins: port file-psp to GEGL
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] plug-ins: port file-psp to GEGL
- Date: Sun, 18 Nov 2012 23:11:11 +0000 (UTC)
commit 8c72ad9bd733534e9d04c9864480ef3dd80dfd51
Author: Michael Natterer <mitch gimp org>
Date: Mon Nov 19 00:10:17 2012 +0100
plug-ins: port file-psp to GEGL
plug-ins/common/Makefile.am | 1 +
plug-ins/common/file-psp.c | 36 +++++++++++++++++-------------------
plug-ins/common/plugin-defs.pl | 2 +-
3 files changed, 19 insertions(+), 20 deletions(-)
---
diff --git a/plug-ins/common/Makefile.am b/plug-ins/common/Makefile.am
index bd510f6..17fad50 100644
--- a/plug-ins/common/Makefile.am
+++ b/plug-ins/common/Makefile.am
@@ -1390,6 +1390,7 @@ file_psp_LDADD = \
$(libgimpcolor) \
$(libgimpbase) \
$(GTK_LIBS) \
+ $(GEGL_LIBS) \
$(Z_LIBS) \
$(RT_LIBS) \
$(INTLLIBS) \
diff --git a/plug-ins/common/file-psp.c b/plug-ins/common/file-psp.c
index 5c8982a..9b0af76 100644
--- a/plug-ins/common/file-psp.c
+++ b/plug-ins/common/file-psp.c
@@ -1131,15 +1131,17 @@ psp_zfree (void *opaque,
}
static int
-read_channel_data (FILE *f,
- PSPimage *ia,
- guchar **pixels,
- guint bytespp,
- guint offset,
- GimpDrawable *drawable,
- guint32 compressed_len)
+read_channel_data (FILE *f,
+ PSPimage *ia,
+ guchar **pixels,
+ guint bytespp,
+ guint offset,
+ GeglBuffer *buffer,
+ guint32 compressed_len)
{
- gint i, y, width = drawable->width, height = drawable->height;
+ gint i, y;
+ gint width = gegl_buffer_get_width (buffer);
+ gint height = gegl_buffer_get_height (buffer);
gint npixels = width * height;
guchar *buf;
guchar *buf2 = NULL; /* please the compiler */
@@ -1300,8 +1302,7 @@ read_layer_block (FILE *f,
guint16 bitmap_type, channel_type;
gint width, height, bytespp, offset;
guchar **pixels, *pixel;
- GimpDrawable *drawable;
- GimpPixelRgn pixel_rgn;
+ GeglBuffer *buffer;
block_start = ftell (f);
@@ -1494,11 +1495,7 @@ read_layer_block (FILE *f,
pixels[i] = pixel + width * bytespp * i;
}
- drawable = gimp_drawable_get (layer_ID);
- gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0,
- width, height, TRUE, FALSE);
-
- gimp_tile_cache_size (gimp_tile_height () * width * bytespp);
+ buffer = gimp_drawable_get_buffer (layer_ID);
/* Read the layer channel sub-blocks */
while (ftell (f) < sub_block_start + sub_total_len)
@@ -1570,7 +1567,7 @@ read_layer_block (FILE *f,
if (!null_layer)
if (read_channel_data (f, ia, pixels, bytespp,
- offset, drawable, compressed_len) == -1)
+ offset, buffer, compressed_len) == -1)
{
return -1;
}
@@ -1581,10 +1578,10 @@ read_layer_block (FILE *f,
}
}
- gimp_pixel_rgn_set_rect (&pixel_rgn, pixel, 0, 0, width, height);
+ gegl_buffer_set (buffer, GEGL_RECTANGLE (0, 0, width, height), 0,
+ NULL, pixel, GEGL_AUTO_ROWSTRIDE);
- gimp_drawable_flush (drawable);
- gimp_drawable_detach (drawable);
+ g_object_unref (buffer);
g_free (pixels);
g_free (pixel);
@@ -1913,6 +1910,7 @@ run (const gchar *name,
GError *error = NULL;
INIT_I18N ();
+ gegl_init (NULL, NULL);
run_mode = param[0].data.d_int32;
diff --git a/plug-ins/common/plugin-defs.pl b/plug-ins/common/plugin-defs.pl
index a687697..7aaebc8 100644
--- a/plug-ins/common/plugin-defs.pl
+++ b/plug-ins/common/plugin-defs.pl
@@ -67,7 +67,7 @@
'file-pdf-load' => { ui => 1, optional => 1, libs => 'POPPLER_LIBS', cflags => 'POPPLER_CFLAGS' },
'file-pdf-save' => { ui => 1, optional => 1, libs => 'CAIRO_PDF_LIBS', cflags => 'CAIRO_PDF_CFLAGS' },
'file-ps' => { ui => 1, optional => 1, libs => 'GS_LIBS' },
- 'file-psp' => { ui => 1, optional => 1, libs => 'Z_LIBS' },
+ 'file-psp' => { ui => 1, gegl => 1, optional => 1, libs => 'Z_LIBS' },
'file-raw' => { ui => 1 },
'file-sunras' => { ui => 1 },
'file-svg' => { ui => 1, optional => 1, libs => 'SVG_LIBS', cflags => 'SVG_CFLAGS' },
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]