From f7a1f04f431a94e170e57d64e2f917c6f3359cec Mon Sep 17 00:00:00 2001 From: michael Date: Tue, 3 Dec 2013 13:05:45 +0000 Subject: [PATCH] * Applied patch to support YCCK values (bug ID 21916) git-svn-id: trunk@26171 - --- packages/fcl-image/src/fpreadjpeg.pas | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/packages/fcl-image/src/fpreadjpeg.pas b/packages/fcl-image/src/fpreadjpeg.pas index 64e88b7632..758f96d0b7 100644 --- a/packages/fcl-image/src/fpreadjpeg.pas +++ b/packages/fcl-image/src/fpreadjpeg.pas @@ -229,6 +229,20 @@ var end; function CorrectCMYK(const C: TFPColor): TFPColor; + var + MinColor: word; + begin + // accuracy not 100% + if C.red$FF then MinColor:=$FF-C.alpha; + Result.red:=(C.red-MinColor) shl 8; + Result.green:=(C.green-MinColor) shl 8; + Result.blue:=(C.blue-MinColor) shl 8; + Result.alpha:=alphaOpaque; + end; + function CorrectYCCK(const C: TFPColor): TFPColor; var MinColor: word; begin @@ -275,6 +289,15 @@ var Img.Colors[x,y]:=CorrectCMYK(Color); end else + if (FInfo.jpeg_color_space = JCS_YCCK) then + for x:=0 to FInfo.output_width-1 do begin + Color.Red:=SampRow^[x*4+0]; + Color.Green:=SampRow^[x*4+1]; + Color.Blue:=SampRow^[x*4+2]; + Color.alpha:=SampRow^[x*4+3]; + Img.Colors[x,y]:=CorrectYCCK(Color); + end + else if fgrayscale then begin for x:=0 to FInfo.output_width-1 do begin c:= SampRow^[x] shl 8;