mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
UPD: Use GraphUtil unit
This commit is contained in:
parent
b16a081b61
commit
8a070a870b
1 changed files with 4 additions and 65 deletions
|
|
@ -39,7 +39,7 @@ uses
|
|||
WSStdCtrls, Win32WSControls, StdCtrls, WSControls, Graphics, Themes, LazUTF8,
|
||||
UxTheme, Win32Themes, ExtCtrls, WSMenus, JwaWinGDI, FPImage, Math, uDarkStyle,
|
||||
WSComCtrls, CommCtrl, uImport, WSForms, Win32WSButtons, Buttons, Win32Extra,
|
||||
Win32WSForms, Win32WSSpin, Spin, Win32WSMenus, Dialogs,
|
||||
Win32WSForms, Win32WSSpin, Spin, Win32WSMenus, Dialogs, GraphUtil,
|
||||
Generics.Collections, TmSchema, InterfaceBase;
|
||||
|
||||
type
|
||||
|
|
@ -171,75 +171,14 @@ begin
|
|||
SendMessageW(Window, WM_THEMECHANGED, 0, 0);
|
||||
end;
|
||||
|
||||
procedure RGBToHSV(R, G, B: Integer; out H, S, V: Double);
|
||||
var
|
||||
rr, gg, bb: Double;
|
||||
cmax, cmin, delta: Double;
|
||||
begin
|
||||
rr := R / 255;
|
||||
gg := G / 255;
|
||||
bb := B / 255;
|
||||
cmax := MaxValue([rr, gg, bb]);
|
||||
cmin := MinValue([rr, gg, bb]);
|
||||
delta := cmax - cmin;
|
||||
if delta = 0 then
|
||||
begin
|
||||
H := 0;
|
||||
S := 0;
|
||||
end else
|
||||
begin
|
||||
if cmax = rr then
|
||||
H := (gg - bb) / delta + IfThen(gg < bb, 6, 0)
|
||||
else if cmax = gg then
|
||||
H := (bb - rr) / delta + 2
|
||||
else if (cmax = bb) then
|
||||
H := (rr -gg) / delta + 4;
|
||||
H := H / 6;
|
||||
S := delta / cmax;
|
||||
end;
|
||||
V := cmax;
|
||||
end;
|
||||
|
||||
procedure ColorToHSV(C: TColor; out H, S, V: Double);
|
||||
begin
|
||||
RGBToHSV(GetRValue(C), GetGValue(C), GetBValue(C), H, S, V);
|
||||
end;
|
||||
|
||||
procedure HSVtoRGB(H, S, V: Double; out R, G, B: Integer);
|
||||
var
|
||||
i: Integer;
|
||||
f: Double;
|
||||
p, q, t: Double;
|
||||
|
||||
procedure MakeRgb(rr, gg, bb: Double);
|
||||
begin
|
||||
R := Min(MAXBYTE, Round(rr * 255));
|
||||
G := Min(MAXBYTE, Round(gg * 255));
|
||||
B := Min(MAXBYTE, Round(bb * 255));
|
||||
end;
|
||||
|
||||
begin
|
||||
i := floor(H * 6);
|
||||
f := H * 6 - i;
|
||||
p := V * (1 - S);
|
||||
q := V * (1 - f*S);
|
||||
t := V * (1 - (1 - f) * S);
|
||||
case i mod 6 of
|
||||
0: MakeRGB(V, t, p);
|
||||
1: MakeRGB(q, V, p);
|
||||
2: MakeRGB(p, V, t);
|
||||
3: MakeRGB(p, q, V);
|
||||
4: MakeRGB(t, p, V);
|
||||
5: MakeRGB(V, p, q);
|
||||
else MakeRGB(0, 0, 0);
|
||||
end;
|
||||
end;
|
||||
|
||||
function HSVToColor(H, S, V: Double): TColor;
|
||||
var
|
||||
R, G, B: Integer;
|
||||
begin
|
||||
HSVtoRGB(H, S, V, R, G, B);
|
||||
R := Min(MAXBYTE, R);
|
||||
G := Min(MAXBYTE, G);
|
||||
B := Min(MAXBYTE, B);
|
||||
Result:= RGBToColor(R, G, B);
|
||||
end;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue