anchor.diff:    end;
   end;
   
  -function TfpgCanvas.DrawText(x, y: TfpgCoord; AText: string; ALineSpace: integer = 2): integer;
  -begin
  -  Result := DrawText(x, y, 0, 0, AText, [txtLeft, txtTop], ALineSpace);
  -end;
  -
  -function TfpgCanvas.DrawText(r: TfpgRect; AText: string; AFlags: TFTextFlags;
  -                ALineSpace: integer): integer;
  +function TfpgCanvas.DrawText(x, y: TfpgCoord; AText: TfpgString;
  +    AFlags: TFTextFlags; ALineSpace: integer): integer;
  +begin
  +  Result := DrawText(x, y, 0, 0, AText, AFlags, ALineSpace);
  +end;
  +
  +function TfpgCanvas.DrawText(r: TfpgRect; AText: TfpgString; AFlags: TFTextFlags;
  +    ALineSpace: integer): integer;
   begin
     Result := DrawText(r.Left, r.Top, r.Width, r.Height, AText, AFlags, ALineSpace);
   end;
  
positive.code: 
  const
    AllAnchors = [anLeft, anRight, anTop, anBottom];
  
    // Used for the internal message queue
    cMessageQueueSize = 512;
  
negative.code:   fpgStyle.DrawFocusRect(self, r);
  end;
  
  function TfpgCanvas.DrawText(x, y, w, h: TfpgCoord; AText: TfpgString; AFlags: TFTextFlags;
                  ALineSpace: integer): integer;
  var
    wtxt, htxt, i, wt, l: integer;
    wraptxt: TfpgString;
    wraplst: TStringList;
  begin
    if (txtWrap in AFlags) then
  