diff options
author | Marti Maria <info@littlecms.com> | 2019-07-26 09:25:52 +0200 |
---|---|---|
committer | Marti Maria <info@littlecms.com> | 2019-07-26 09:25:52 +0200 |
commit | 7e1a1643df34dae1b756f6ae6ed71f9c8d8af667 (patch) | |
tree | 6cda4f3be9b640e208f41a569bf0b13f910b3670 /src/cmsxform.c | |
parent | 84c6c4af52e621b8ce972b59bb87bb3cd180b4de (diff) | |
download | lcms2-7e1a1643df34dae1b756f6ae6ed71f9c8d8af667.tar.gz |
merge branch
plane bytes, not pixels
Diffstat (limited to 'src/cmsxform.c')
-rw-r--r-- | src/cmsxform.c | 21 |
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); } |