You've already forked lazarus-ccr
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:
@ -94,10 +94,12 @@ function CaptureScreen(WndHandle: Longword): TBitmap; overload;
|
||||
*-)
|
||||
|
||||
{$ENDIF MSWINDOWS}
|
||||
|
||||
procedure RGBToHSV(R, G, B: Integer; var H, S, V: Integer);
|
||||
******************** NOT CONVERTED *)
|
||||
|
||||
{$IF LCL_FullVersion < 2010000}
|
||||
procedure RGBToHSV(R, G, B: Integer; out H, S, V: Double);
|
||||
{$IFEND}
|
||||
|
||||
{ from JvVCLUtils }
|
||||
|
||||
procedure CopyParentImage(Control: TControl; Dest: TCanvas);
|
||||
@ -904,46 +906,6 @@ begin
|
||||
Result := Application.Handle;
|
||||
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 ***
|
||||
type
|
||||
TWaitCursor = class(TInterfacedObject, IInterface)
|
||||
@ -1036,59 +998,49 @@ begin
|
||||
Tmp.Free;
|
||||
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
|
||||
Delta: Integer;
|
||||
Min, Max: Integer;
|
||||
|
||||
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;
|
||||
|
||||
rr, gg, bb: Double;
|
||||
cmax, cmin, delta: Double;
|
||||
begin
|
||||
Min := GetMin(R, G, B);
|
||||
Max := GetMax(R, G, B);
|
||||
V := Max;
|
||||
Delta := Max - Min;
|
||||
if Max = 0 then
|
||||
S := 0
|
||||
else
|
||||
S := (255 * Delta) div Max;
|
||||
if S = 0 then
|
||||
H := 0
|
||||
else
|
||||
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
|
||||
if R = Max then
|
||||
H := (60 * (G - B)) div Delta
|
||||
else
|
||||
if G = Max then
|
||||
H := 120 + (60 * (B - R)) div Delta
|
||||
else
|
||||
H := 240 + (60 * (R - G)) div Delta;
|
||||
if H < 0 then
|
||||
H := H + 360;
|
||||
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 ****
|
||||
(-* (rom) to be deleted. Use ScreenShot from JCL
|
||||
{$IFDEF VCL}
|
||||
|
||||
|
Reference in New Issue
Block a user