summaryrefslogtreecommitdiff
path: root/src/cmsxform.c
diff options
context:
space:
mode:
authorMarti Maria <info@littlecms.com>2019-07-26 09:25:52 +0200
committerMarti Maria <info@littlecms.com>2019-07-26 09:25:52 +0200
commit7e1a1643df34dae1b756f6ae6ed71f9c8d8af667 (patch)
tree6cda4f3be9b640e208f41a569bf0b13f910b3670 /src/cmsxform.c
parent84c6c4af52e621b8ce972b59bb87bb3cd180b4de (diff)
downloadlcms2-7e1a1643df34dae1b756f6ae6ed71f9c8d8af667.tar.gz
merge branch
plane bytes, not pixels
Diffstat (limited to 'src/cmsxform.c')
-rw-r--r--src/cmsxform.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/cmsxform.c b/src/cmsxform.c
index d8c6964..30e5b0e 100644
--- a/src/cmsxform.c
+++ b/src/cmsxform.c
@@ -171,6 +171,23 @@ void CMSEXPORT cmsDeleteTransform(cmsHTRANSFORM hTransform)
_cmsFree(p ->ContextID, (void *) p);
}
+
+static
+cmsUInt32Number PixelSize(cmsUInt32Number Format)
+{
+ cmsUInt32Number fmt_bytes = T_BYTES(Format);
+
+ // For double, the T_BYTES field is zero
+ if (fmt_bytes == 0)
+ return sizeof(cmsUInt64Number);
+
+ // Otherwise, it is already correct for all formats
+ return fmt_bytes;
+}
+
+
+
+
// Apply transform.
void CMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform,
const void* InputBuffer,
@@ -183,8 +200,8 @@ void CMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform,
stride.BytesPerLineIn = 0; // Not used
stride.BytesPerLineOut = 0;
- stride.BytesPerPlaneIn = Size;
- stride.BytesPerPlaneOut = Size;
+ stride.BytesPerPlaneIn = Size * PixelSize(p->InputFormat);
+ stride.BytesPerPlaneOut = Size * PixelSize(p->OutputFormat);
p -> xform(p, InputBuffer, OutputBuffer, Size, 1, &stride);
}