Guten tag,
can you help with this procedure derived from Color Lib v2.0.2? In original code in module RGBHSLUtils, there is similar procedure RGBtoHSLRange(
RGB: TColor; var H1, S1, L1 : integer); using TColor as input parameter. Hence I wanted to create modified function in RGBHSVUtils for convertion to
HSV. The
HSV original procedure is RGB2HSV(R, G, B: integer; var H: Word; var S, V: byte); // passing Integer inputs(!). So I decided to pass TColor, but here is the problem. How to make it working now? There is the error : RGBHSVUtils.pas(232*): Incompatible types: 'Byte' and 'Extended'; *note: modified version is on my PC.
Verfahren abgeleitet von Color
Lib v2.0.2.
Code:
procedure RGB2HSVRange(
RGB: TColor; var H: Word;var S,V: byte);
var
Delta, Min, H1, S1: real;
R, G, B: byte;
begin
R := GetRValue (
RGB) / 255;
G := GetGValue (
RGB) / 255;
B := GetBValue (
RGB) / 255;
h1 := h;
s1 := s;
// Min := MinIntValue([R, G, B]);
Min := R;
if Min > G then
Min := G;
if Min > B then
Min := B;
// V := MaxIntValue([R, G, B]);
V := R;
if V < G then
V := G;
if V < B then
V := B;
Delta := V - Min;
if V = 0.0 then S1 := 0 else S1 := Delta / V;
if S1 = 0.0 then
H1 := 0
else
begin
if R = V then
H1 := 60.0 * (G - B) / Delta
else
if G = V then
H1 := 120.0 + 60.0 * (B - R) / Delta
else
if B = V then
H1 := 240.0 + 60.0 * (R - G) / Delta;
if H1 < 0.0 then H1 := H1 + 360.0;
end;
h := round(h1);
s := round(s1*255);
end;