2016-12-08 23:14:26 +00:00
|
|
|
unit RGBCMYKUtils;
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
|
|
|
{$IFDEF FPC}LCLIntf,{$ELSE} Windows,{$ENDIF}
|
|
|
|
Graphics, Math;
|
|
|
|
|
|
|
|
function CMYtoTColor(C, M, Y: integer): TColor;
|
|
|
|
procedure RGBtoCMY(clr: TColor; var C, M, Y: integer);
|
|
|
|
function CMYKToTColor (C, M, Y, K: integer): TColor;
|
|
|
|
procedure ColorToCMYK(clr: TColor; var C, M, Y, K: integer);
|
|
|
|
function GetCValue(c: TColor): integer;
|
|
|
|
function GetMValue(c: TColor): integer;
|
|
|
|
function GetYValue(c: TColor): integer;
|
|
|
|
function GetKValue(c: TColor): integer;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
function CMYtoTColor(C, M, Y: integer): TColor;
|
|
|
|
begin
|
2016-12-15 11:27:12 +00:00
|
|
|
Result := RGB(255 - C, 255 - M, 255 - Y);
|
2016-12-08 23:14:26 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure RGBtoCMY(clr: TColor; var C, M, Y: integer);
|
|
|
|
begin
|
2016-12-15 11:27:12 +00:00
|
|
|
C := 255 - GetRValue(clr);
|
|
|
|
M := 255 - GetGValue(clr);
|
|
|
|
Y := 255 - GetBValue(clr);
|
2016-12-08 23:14:26 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
function CMYKToTColor (C, M, Y, K: integer): TColor;
|
|
|
|
begin
|
2016-12-15 11:27:12 +00:00
|
|
|
Result := RGB(255 - (C + K), 255 - (M + K), 255 - (Y + K));
|
2016-12-08 23:14:26 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure ColorToCMYK(clr: TColor; var C, M, Y, K: integer);
|
|
|
|
begin
|
2016-12-15 11:27:12 +00:00
|
|
|
C := 255 - GetRValue(clr);
|
|
|
|
M := 255 - GetGValue(clr);
|
|
|
|
Y := 255 - GetBValue(clr);
|
|
|
|
K := MinIntValue([C, M, Y]);
|
|
|
|
C := C - K;
|
|
|
|
M := M - K;
|
|
|
|
Y := Y - K;
|
2016-12-08 23:14:26 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
function GetCValue(c: TColor): integer;
|
|
|
|
var
|
2016-12-15 11:27:12 +00:00
|
|
|
d: integer;
|
2016-12-08 23:14:26 +00:00
|
|
|
begin
|
2016-12-15 11:27:12 +00:00
|
|
|
ColorToCMYK(c, Result, d, d, d);
|
2016-12-08 23:14:26 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
function GetMValue(c: TColor): integer;
|
|
|
|
var
|
2016-12-15 11:27:12 +00:00
|
|
|
d: integer;
|
2016-12-08 23:14:26 +00:00
|
|
|
begin
|
2016-12-15 11:27:12 +00:00
|
|
|
ColorToCMYK(c, d, Result, d, d);
|
2016-12-08 23:14:26 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
function GetYValue(c: TColor): integer;
|
|
|
|
var
|
2016-12-15 11:27:12 +00:00
|
|
|
d: integer;
|
2016-12-08 23:14:26 +00:00
|
|
|
begin
|
2016-12-15 11:27:12 +00:00
|
|
|
ColorToCMYK(c, d, d, Result, d);
|
2016-12-08 23:14:26 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
function GetKValue(c: TColor): integer;
|
|
|
|
var
|
2016-12-15 11:27:12 +00:00
|
|
|
d: integer;
|
2016-12-08 23:14:26 +00:00
|
|
|
begin
|
2016-12-15 11:27:12 +00:00
|
|
|
ColorToCMYK(c, d, d, d, Result);
|
2016-12-08 23:14:26 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
end.
|