anchor.diff:  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;
  
positive.code:     function ToCardinal: Cardinal;
      class function Generic(aIndex: Integer): TKMColor3f; static;
      class function RandomWSeed(aSeed: Integer): TKMColor3f; static;
    end;
  //             Result := R + G shl 8 + B shl 16 + A shl 24;
    TKMColor4f = record
      R,G,B,A: Single;
      constructor New(aCol: TKMColor3f); overload;
      constructor New(aCol: TKMColor3f; aAlpha: Single); overload;
      class function White(): TKMColor4f; static;
      function Alpha50(): TKMColor4f;
      function Alpha(aAlpha: Single): TKMColor4f;
    end;
  
  const
    WonOrLostText: array [TWonOrLost] of UnicodeString = ('None', 'Won', 'Lost');
  
negative.code: 
  
  { TKMColor4f }
  constructor TKMColor4f.New(aR,aG,aB,aA: Single);
  begin
    R := aR;
    G := aG;
    B := aB;
    A := aA;
  end;
  
  
  constructor TKMColor4f.New(aR,aG,aB: Byte);
  begin
    R := aR / 255;
    G := aG / 255;
    B := aB / 255;
    A := 1;
  end;
  
  
  constructor TKMColor4f.New(aCol: Cardinal);
  begin
    R := (aCol and $FF)           / 255;
    G := ((aCol shr 8) and $FF)   / 255;
    B := ((aCol shr 16) and $FF)  / 255;
    A := ((aCol shr 24) and $FF)  / 255;
  end;
  
  
  constructor TKMColor4f.New(aCol: TKMColor3f);
  begin
    New(aCol, 1);
  