* Applied patch to support YCCK values (bug ID 21916)

git-svn-id: trunk@26171 -
This commit is contained in:
michael 2013-12-03 13:05:45 +00:00
parent 148d262a6a
commit f7a1f04f43

View File

@ -229,6 +229,20 @@ var
end;
function CorrectCMYK(const C: TFPColor): TFPColor;
var
MinColor: word;
begin
// accuracy not 100%
if C.red<C.green then MinColor:=C.red
else MinColor:= C.green;
if C.blue<MinColor then MinColor:= C.blue;
if MinColor+ C.alpha>$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;