diff --git a/components/jvcllaz/run/JvCore/jvjvclutils.pas b/components/jvcllaz/run/JvCore/jvjvclutils.pas index 75ed2f2e7..95fec4c42 100644 --- a/components/jvcllaz/run/JvCore/jvjvclutils.pas +++ b/components/jvcllaz/run/JvCore/jvjvclutils.pas @@ -904,6 +904,46 @@ 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)