jvcllaz: Cosmetic. Put IFDEF'ed RGBToHSV in interface of JvJVCLUtils.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8165 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2021-12-02 16:42:24 +00:00
parent 8931ded33b
commit 2c26e65645

View File

@ -94,10 +94,12 @@ function CaptureScreen(WndHandle: Longword): TBitmap; overload;
*-) *-)
{$ENDIF MSWINDOWS} {$ENDIF MSWINDOWS}
procedure RGBToHSV(R, G, B: Integer; var H, S, V: Integer);
******************** NOT CONVERTED *) ******************** NOT CONVERTED *)
{$IF LCL_FullVersion < 2010000}
procedure RGBToHSV(R, G, B: Integer; out H, S, V: Double);
{$IFEND}
{ from JvVCLUtils } { from JvVCLUtils }
procedure CopyParentImage(Control: TControl; Dest: TCanvas); procedure CopyParentImage(Control: TControl; Dest: TCanvas);
@ -904,46 +906,6 @@ begin
Result := Application.Handle; Result := Application.Handle;
end; end;
{$IF LCL_FullVersion < 2010000}
// THESE ROUTINES ARE BORROWED FROM LAZARUS v2.1+ GRAPHUTILS
{ Assumes R, G, B to be in range 0..255. Calculates H, S, V in range 0..1
From: http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c }
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;
{$IFEND}
(***************** NOT CONVERTED *** (***************** NOT CONVERTED ***
type type
TWaitCursor = class(TInterfacedObject, IInterface) TWaitCursor = class(TInterfacedObject, IInterface)
@ -1036,59 +998,49 @@ begin
Tmp.Free; Tmp.Free;
end; end;
end; end;
****************************)
{$IF LCL_FullVersion < 2010000}
// THESE ROUTINES ARE BORROWED FROM LAZARUS v2.1+ GRAPHUTILS
procedure RGBToHSV(R, G, B: Integer; var H, S, V: Integer); { Assumes R, G, B to be in range 0..255. Calculates H, S, V in range 0..1
From: http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c }
procedure RGBToHSV(R, G, B: Integer; out H, S, V: Double);
var var
Delta: Integer; rr, gg, bb: Double;
Min, Max: Integer; cmax, cmin, delta: Double;
function GetMax(I, J, K: Integer): Integer;
begin
if J > I then
I := J;
if K > I then
I := K;
Result := I;
end;
function GetMin(I, J, K: Integer): Integer;
begin
if J < I then
I := J;
if K < I then
I := K;
Result := I;
end;
begin begin
Min := GetMin(R, G, B); rr := R / 255;
Max := GetMax(R, G, B); gg := G / 255;
V := Max; bb := B / 255;
Delta := Max - Min; cmax := MaxValue([rr, gg, bb]);
if Max = 0 then cmin := MinValue([rr, gg, bb]);
S := 0 delta := cmax - cmin;
else if delta = 0 then
S := (255 * Delta) div Max;
if S = 0 then
H := 0
else
begin begin
if R = Max then H := 0;
H := (60 * (G - B)) div Delta S := 0;
else end else
if G = Max then begin
H := 120 + (60 * (B - R)) div Delta if cmax = rr then
else H := (gg - bb) / delta + IfThen(gg < bb, 6, 0)
H := 240 + (60 * (R - G)) div Delta; else if cmax = gg then
if H < 0 then H := (bb - rr) / delta + 2
H := H + 360; else if (cmax = bb) then
H := (rr -gg) / delta + 4;
H := H / 6;
S := delta / cmax;
end; end;
V := cmax;
end; end;
procedure ColorToHSV(c: TColor; out H, S, V: Double);
begin
RGBToHSV(GetRValue(c), GetGValue(c), GetBValue(c), H, S, V);
end;
{$IFEND}
(************************* NOT CONVERTED ****
(-* (rom) to be deleted. Use ScreenShot from JCL (-* (rom) to be deleted. Use ScreenShot from JCL
{$IFDEF VCL} {$IFDEF VCL}