Author: post
Date: 2011-04-25 17:12:44 +0200 (Mon, 25 Apr 2011)
New Revision: 4015
Modified:
trunk/plugins/colorspace-transform/rs-cmm.c
Log:
Only actually process ROI pixels in colorspace transform.
Modified: trunk/plugins/colorspace-transform/rs-cmm.c
===================================================================
--- trunk/plugins/colorspace-transform/rs-cmm.c 2011-04-25 14:40:02 UTC (rev
4014)
+++ trunk/plugins/colorspace-transform/rs-cmm.c 2011-04-25 15:12:44 UTC (rev
4015)
@@ -154,7 +154,7 @@
rs_cmm_transform16(RSCmm *cmm, RS_IMAGE16 *input, RS_IMAGE16 *output, gint
start_x, gint end_x, gint start_y, gint end_y)
{
gushort *buffer;
- gint y, x;
+ gint y, x, w;
g_assert(RS_IS_CMM(cmm));
g_assert(RS_IS_IMAGE16(input));
g_assert(RS_IS_IMAGE16(output));
@@ -162,14 +162,15 @@
g_return_if_fail(input->w == output->w);
g_return_if_fail(input->h == output->h);
g_return_if_fail(input->pixelsize == 4);
+ w = end_x - start_x;
- buffer = g_new(gushort, input->w * 4);
+ buffer = g_new(gushort, w * 4);
for(y=start_y;y<end_y;y++)
{
- gushort *in = GET_PIXEL(input, 0, y);
- gushort *out = GET_PIXEL(output, 0, y);
+ gushort *in = GET_PIXEL(input, start_x, y);
+ gushort *out = GET_PIXEL(output, start_x, y);
gushort *buffer_pointer = buffer;
- for(x=0;x<input->w;x++)
+ for(x=start_x; x<end_x;x++)
{
register gfloat r = (gfloat) MIN(*in, cmm->clip[R]);
in++;
register gfloat g = (gfloat) MIN(*in, cmm->clip[G]);
in++;
@@ -193,7 +194,7 @@
*(buffer_pointer++) = (gushort) b;
buffer_pointer++;
}
- cmsDoTransform(cmm->lcms_transform16, buffer, out, input->w);
+ cmsDoTransform(cmm->lcms_transform16, buffer, out, w);
}
g_free(buffer);
}
@@ -201,7 +202,7 @@
void
rs_cmm_transform8(RSCmm *cmm, RS_IMAGE16 *input, GdkPixbuf *output, gint
start_x, gint end_x, gint start_y, gint end_y)
{
- gint y,i;
+ gint y,i,w;
g_assert(RS_IS_CMM(cmm));
g_assert(RS_IS_IMAGE16(input));
g_assert(GDK_IS_PIXBUF(output));
@@ -209,14 +210,15 @@
g_return_if_fail(input->w == gdk_pixbuf_get_width(output));
g_return_if_fail(input->h == gdk_pixbuf_get_height(output));
g_return_if_fail(input->pixelsize == 4);
+ w = end_x - start_x;
for(y=start_y;y<end_y;y++)
{
- gushort *in = GET_PIXEL(input, 0, y);
- guchar *out = GET_PIXBUF_PIXEL(output, 0, y);
- cmsDoTransform(cmm->lcms_transform8, in, out, input->w);
+ gushort *in = GET_PIXEL(input, start_x, y);
+ guchar *out = GET_PIXBUF_PIXEL(output, start_x, y);
+ cmsDoTransform(cmm->lcms_transform8, in, out, w);
/* Set alpha */
- for (i = 0; i < input->w; i++)
+ for (i = 0; i < w; i++)
out[i*4+3] = 0xff;
}
}
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit