anchor.diff:      function ToCardinal: Cardinal;
       class function Generic(aIndex: Integer): TKMColor3f; static;
       class function RandomWSeed(aSeed: Integer): TKMColor3f; static;
  +    constructor New(aR,aG,aB: Single);
  +    constructor NewB(aR,aG,aB: Byte);
     end;
   //             Result := R + G shl 8 + B shl 16 + A shl 24;
  +
     TKMColor4f = record
       R,G,B,A: Single;
  +    constructor New(aR,aG,aB,aA: Single); overload;
  +    constructor New(aR,aG,aB: Byte); overload;
  +    constructor New(aCol: Cardinal); overload;
       constructor New(aCol: TKMColor3f); overload;
       constructor New(aCol: TKMColor3f; aAlpha: Single); overload;
       class function White(): TKMColor4f; static;
  +    class function Black(): TKMColor4f; static;
       function Alpha50(): TKMColor4f;
       function Alpha(aAlpha: Single): TKMColor4f;
     end;
  +
  +const
  +  COLOR3F_WHITE: TKMColor3f = (R: 1; G: 1; B: 1);
  +  COLOR3F_BLACK: TKMColor3f = (R: 0; G: 0; B: 0);
  +
  +  COLOR4F_WHITE: TKMColor4f = (R: 1; G: 1; B: 1; A: 1);
  +  COLOR4F_BLACK: TKMColor4f = (R: 0; G: 0; B: 0; A: 1);
   
   const
     WonOrLostText: array [TWonOrLost] of UnicodeString = ('None', 'Won', 'Lost');
  
positive.code: 
  
  { TKMColor4f }
  constructor TKMColor4f.New(aCol: TKMColor3f);
  begin
    New(aCol, 1);
  
negative.code: end;
  
  
  class function TKMColor4f.Black: TKMColor4f;
  begin
    Result.R := 0;
    Result.G := 0;
    Result.B := 0;
    Result.A := 1;
  end;
  
  
  function TKMColor4f.Alpha50(): TKMColor4f;
  begin
    Result := Self;
  