Browse Source

+ and,xor,or operators for TFPColor

luk 22 years ago
parent
commit
97d15e8983
1 changed files with 29 additions and 0 deletions
  1. 29 0
      fcl/image/fpimage.pp

+ 29 - 0
fcl/image/fpimage.pp

@@ -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;