Files
lazarus-ccr/components/mbColorLib/mbutils.pas
2016-12-14 11:06:20 +00:00

69 lines
1.5 KiB
ObjectPascal

unit mbUtils;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Graphics, LCLIntf;
procedure Clamp(var AValue:Integer; AMin, AMax: Integer);
procedure DrawHorDottedLine(ACanvas: TCanvas; X1, X2, Y: Integer; AColor: TColor);
function PointInCircle(p: TPoint; Size: integer): boolean;
function PtInCircle(p, ctr: TPoint; Radius: Integer): Boolean;
function HighContrastColor(AColor: TColor): TColor;
function HeightOf(R: TRect): Integer;
function WidthOf(R: TRect): Integer;
implementation
procedure Clamp(var AValue: integer; AMin, AMax: integer);
begin
if AValue < AMin then AValue := AMin;
if AValue > AMax then AValue := AMax;
end;
procedure DrawHorDottedLine(ACanvas: TCanvas; X1, X2, Y: Integer; AColor: TColor);
begin
while X1 <= X2 do begin
ACanvas.Pixels[X1, Y] := AColor;
inc(X1, 2);
end;
end;
function PointInCircle(p: TPoint; Size: integer): boolean;
var
r: integer;
begin
r := size div 2;
Result := (sqr(p.x - r) + sqr(p.y - r) <= sqr(r));
end;
function PtInCircle(p, ctr: TPoint; Radius: Integer): Boolean;
begin
Result := sqr(p.x - ctr.x) + sqr(p.y - ctr.y) <= sqr(Radius);
end;
function HeightOf(R: TRect): Integer;
begin
Result := R.Bottom - R.Top;
end;
function WidthOf(R: TRect): Integer;
begin
Result := R.Right - R.Left;
end;
function HighContrastColor(AColor: TColor): TColor;
begin
if GetRValue(AColor) + GetGValue(AColor) + GetBValue(AColor) > 3*128 then
Result := clBlack
else
Result := clWhite;
end;
end.