73 lines
1.8 KiB
ObjectPascal
73 lines
1.8 KiB
ObjectPascal
// SPDX-License-Identifier: LGPL-3.0-linking-exception
|
|
{******************************* CONTRIBUTOR(S) ******************************
|
|
- Edivando S. Santos Brasil | mailedivando@gmail.com
|
|
(Compatibility with delphi VCL 11/2018)
|
|
|
|
***************************** END CONTRIBUTOR(S) *****************************}
|
|
|
|
unit BCBrightAndContrast;
|
|
|
|
{ Unit contributed by esvignolo }
|
|
|
|
{$I bgracontrols.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Graphics,{$IFDEF FPC}LCLType{$ELSE}Types, BGRAGraphics, GraphType, FPImage{$ENDIF};
|
|
|
|
function Bright(aColor: TColor; BrightPercent: byte): TColor;
|
|
function GetContrastColor(ABGColor: TColor): TColor;
|
|
|
|
implementation
|
|
|
|
function Bright(aColor: TColor; BrightPercent: byte): TColor;
|
|
var
|
|
r, g, b: byte;
|
|
begin
|
|
aColor := ColorToRGB(aColor);
|
|
r := Red(aColor);
|
|
g := Green(aColor);
|
|
b := Blue(aColor);
|
|
{muldiv (255-r, BrightPercent, 100); - color value in percentage,
|
|
By which it is necessary to increase initial color (integer)}
|
|
r := r + muldiv(255 - r, BrightPercent, 100);
|
|
g := g + muldiv(255 - g, BrightPercent, 100);
|
|
b := b + muldiv(255 - b, BrightPercent, 100);
|
|
Result := RGBToColor(r, g, b);
|
|
end;
|
|
|
|
function GetContrastColor(ABGColor: TColor): TColor;
|
|
var
|
|
ADouble: double;
|
|
R, G, B: byte;
|
|
begin
|
|
if ABGColor <= 0 then
|
|
begin
|
|
Result := clWhite;
|
|
Exit; // *** EXIT RIGHT HERE ***
|
|
end;
|
|
|
|
if ABGColor = clWhite then
|
|
begin
|
|
Result := clBlack;
|
|
Exit; // *** EXIT RIGHT HERE ***
|
|
end;
|
|
|
|
// Get RGB from Color
|
|
R := Red(ABGColor);
|
|
G := Green(ABGColor);
|
|
B := Blue(ABGColor);
|
|
|
|
// Counting the perceptive luminance - human eye favors green color...
|
|
ADouble := 1 - (0.299 * R + 0.587 * G + 0.114 * B) / 255;
|
|
|
|
if (ADouble < 0.5) then
|
|
Result := clBlack // bright colors - black font
|
|
else
|
|
Result := clWhite; // dark colors - white font
|
|
end;
|
|
|
|
end.
|
|
|