+ and,xor,or operators for TFPColor

This commit is contained in:
luk 2003-07-02 08:11:46 +00:00
parent df9ba460ca
commit 97d15e8983

View File

@ -25,6 +25,7 @@ type
cfBGR15,cfBGR16,cfBGR24,cfBGR32,cfBGR48,
cfABGR8,cfABGR16,cfABGR32,cfABGR64);
TColorData = int64;
PColorData = ^TColorData;
TDeviceColor = record
Fmt : TColorFormat;
@ -221,6 +222,9 @@ function ConvertColor (const From : TFPColor; Fmt : TColorFormat) : TDeviceColor
function ConvertColor (const From : TDeviceColor; Fmt : TColorFormat) : TDeviceColor;
operator = (const c,d:TFPColor) : boolean;
operator or (const c,d:TFPColor) : TFPColor;
operator and (const c,d:TFPColor) : TFPColor;
operator xor (const c,d:TFPColor) : TFPColor;
var ImageHandlers : TImageHandlersManager;
@ -284,6 +288,31 @@ begin
(c.Alpha = d.Alpha);
end;
function GetFullColorData (color:TFPColor) : TColorData;
begin
result := PColorData(@color)^;
end;
function SetFullColorData (color:TColorData) : TFPColor;
begin
result := PFPColor (@color)^;
end;
operator or (const c,d:TFPColor) : TFPColor;
begin
result := SetFullColorData(GetFullColorData(c) OR GetFullColorData(d));
end;
operator and (const c,d:TFPColor) : TFPColor;
begin
result := SetFullColorData(GetFullColorData(c) AND GetFullColorData(d));
end;
operator xor (const c,d:TFPColor) : TFPColor;
begin
result := SetFullColorData(GetFullColorData(c) XOR GetFullColorData(d));
end;
initialization
ImageHandlers := TImageHandlersManager.Create;
ColorBits [cfRGBA64,1] := ColorBits [cfRGBA64,0] shl 32;