unit uGamma; interface procedure DoubleToRGB(Account: Single; var R,G,B: BYTE); implementation procedure DoubleToRGB(Account: Single; var R,G,B: Byte); var Red : Single; Green : Single; Blue : Single; begin if Account > 5000000 then Account:= 5000000; case TRUNC(Account) of 0..9999: begin Red := 0.0; Green := 0.0; Blue := (Account) / (10000); end; 10000..34999: begin Red := 0.0; Green := (Account - 10000) / 25000; Blue := 1.0 end; 35000..59999: begin Red := 0.0; Green := 1.0; Blue := -(Account - 60000) / 50000; end; 60000..89999: begin Red := (Account - 60000) / 30000; Green := 1.0; Blue := 0.0 end; 90000..449999: begin Red := 1.0; Green := -(Account - 450000) / 360000; Blue := 0.0 end; 450000..2499999: begin Red := 1.0; Green := 0.0; Blue := (Account - 450000) / 2050000; end; 2500000..5000000: begin Red := 1.0; Green := (Account - 2500000) / 2500000; Blue := 1.0; end; else Red := 0.0; Green := 0.0; Blue := 0.0 end; R := round(255 * Red); G := round(255 * Green); B := round(255 * Blue); end; end.