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}
|
{$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}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user