w = {};
convert = require( "Module:BaseConvert" );
function hex( value )
return convert._convert( value, 16, 10, 0, 2, nil, nil, nil );
end
function range_pos( value, start, stop )
if start < stop then
if value < start then
return 0;
elseif value > stop then
return 1;
else
return (value - start) / (stop - start);
end
else
if value < stop then
return 1;
elseif value > start then
return 0;
else
return (start - value) / (start - stop);
end
end
end
function w.color_d( frame )
local val, item, result;
val = tonumber( frame.args[1] );
if val == nil then
return "background:#FFFFFF;color:#000000;"
end
result = 'background:#';
item = hex( range_pos( val, 20, 0 )*256 );
result = result .. item .. item;
item = hex( range_pos( val, 40, 20 )*256 );
result = result .. hex( item );
if val >= 12 then
result = result .. ";color:#FFFFFF";
else
result = result .. ";color:#000000";
end
return result .. ';font-size:85%;text-align:center;';
end
function w.color_t( frame )
local val, item, result;
val = tonumber( frame.args[1] );
if val == nil then
return "background:#FFFFFF;color:#000000;"
end
result = 'background:#';
if val < -42.75 or val > 60 then
result = result .. "00";
elseif val < 4.47 then
item = 5.4*(42.75 + val)
result = result .. hex( item );
elseif val > 41.5 then
item = 13.78*(60-val);
result = result .. hex( item );
else
result = result .. "FF"
end
if val < -42.75 or val > 41.5 then
result = result .. "00";
elseif val < 4.47 then
item = 5.4*(42.75 + val)
result = result .. hex( item );
elseif val > 4.5 then
item = 6.89*(41.5 - val);
result = result .. hex( item );
else
result = result .. "FF"
end
if val < -90 or val > 23 then
result = result .. "00";
elseif val < -42.78 then
item = 5.4*(90 + val)
result = result .. hex( item );
elseif val > 4.5 then
item = 13.78*(23 - val);
result = result .. hex( item );
else
result = result .. "FF"
end
if val < -23.3 or val >= 37.8 then
result = result .. ";color:#FFFFFF";
end
return result .. ';font-size:85%';
end
function w.color_p( frame )
local val, item, result;
val = tonumber( frame.args[1] );
if val == nil then
return "background:#FFFFFF;color:#000000;"
end
result = 'background:#';
if val > 165.6 then
result = result .. "0000";
elseif val > 0.02 then
item = 1.54*(165.6 - val);
item = hex( item );
result = result .. item .. item;
else
result = result .. "FFFF"
end
if val > 300 then
result = result .. "30";
elseif val > 165.61 then
item = 1.54*(331.2 - val);
result = result .. hex( item );
else
result = result .. "FF"
end
if val > 90 then
result = result .. ";color:#FFFFFF";
else
result = result .. ";color:#000000";
end
return result .. ';font-size:85%;text-align:center;';
end
return w;