Module:Color contrast: Difference between revisions
Content added Content deleted
(v1 should be the brighter of the two) |
m (whitespace fixes) |
||
Line 13: | Line 13: | ||
else |
else |
||
v = math.pow((v+0.055)/1.055, 2.4) |
v = math.pow((v+0.055)/1.055, 2.4) |
||
end |
|||
return v |
return v |
||
end |
end |
||
local function color2lum( c ) |
local function color2lum( c ) |
||
if (c == nil) then |
if (c == nil) then |
||
return '' |
return '' |
||
end |
end |
||
local HTMLcolor = { |
local HTMLcolor = { |
||
white = 1, |
white = 1, |
||
silver = 0.52711512570581, |
silver = 0.52711512570581, |
||
gray = 0.2158605001139, |
gray = 0.2158605001139, |
||
black = 0, |
black = 0, |
||
red = 0.2126, |
red = 0.2126, |
||
maroon = 0.045891942324215, |
maroon = 0.045891942324215, |
||
yellow = 0.9278, |
yellow = 0.9278, |
||
olive = 0.20027537200568, |
olive = 0.20027537200568, |
||
lime = 0.7152, |
lime = 0.7152, |
||
green = 0.15438342968146, |
green = 0.15438342968146, |
||
aqua = 0.7874, |
aqua = 0.7874, |
||
teal = 0.16996855778968, |
teal = 0.16996855778968, |
||
blue = 0.0722, |
blue = 0.0722, |
||
navy = 0.015585128108224, |
navy = 0.015585128108224, |
||
fuchsia = 0.2848, |
fuchsia = 0.2848, |
||
purple = 0.061477070432439, |
purple = 0.061477070432439, |
||
orange = 0.4817026703631, |
orange = 0.4817026703631, |
||
gold = 0.69860877428159, |
|||
pink = 0.63271070702466, |
|||
lightpink = 0.58566152734898, |
|||
hotpink = 0.34658438169715, |
|||
deeppink = 0.23866895828276, |
|||
palevioletred = 0.28754994117889, |
|||
mediumvioletred = 0.14371899849357, |
|||
lightsalmon = 0.4780675225206, |
|||
salmon = 0.36977241527596, |
|||
darksalmon = 0.40541471563381, |
|||
lightcoral = 0.35522120733135, |
|||
indianred = 0.21406134963884, |
|||
crimson = 0.16042199953026, |
|||
firebrick = 0.10724525535015, |
|||
darkred = 0.054889674531132, |
|||
orangered = 0.25516243753416, |
|||
tomato = 0.30638612719415, |
|||
coral = 0.37017930872924, |
|||
darkorange = 0.40016167026524, |
|||
lightyellow = 0.98161818392882, |
|||
lemonchiffon = 0.94038992245622, |
|||
lightgoldenrodyellow = 0.93348351018297, |
|||
papayawhip = 0.87797100199835, |
|||
moccasin = 0.80083000991567, |
|||
peachpuff = 0.74905589878251, |
|||
palegoldenrod = 0.78792647887614, |
|||
khaki = 0.77012343394121, |
|||
darkkhaki = 0.45747326349994, |
|||
cornsilk = 0.93562110372965, |
|||
blanchedalmond = 0.85084439608156, |
|||
bisque = 0.80732327372979, |
|||
navajowhite = 0.76519682342785, |
|||
wheat = 0.74909702820482, |
|||
burlywood = 0.51559844533893, |
|||
tan = 0.48237604163921, |
|||
rosybrown = 0.32319457649407, |
|||
sandybrown = 0.46628543696283, |
|||
goldenrod = 0.41919977809569, |
|||
darkgoldenrod = 0.27264703559993, |
|||
peru = 0.30113074877936, |
|||
chocolate = 0.23898526114557, |
|||
saddlebrown = 0.097922285020521, |
|||
sienna = 0.13697631337098, |
|||
brown = 0.098224287876511, |
|||
} |
|||
-- whitespace |
|||
c = c:match( '^%s*(.-)%s*$' ) |
|||
gold = 0.69860877428159, |
|||
pink = 0.63271070702466, |
|||
lightpink = 0.58566152734898, |
|||
hotpink = 0.34658438169715, |
|||
deeppink = 0.23866895828276, |
|||
palevioletred = 0.28754994117889, |
|||
mediumvioletred = 0.14371899849357, |
|||
lightsalmon = 0.4780675225206, |
|||
salmon = 0.36977241527596, |
|||
darksalmon = 0.40541471563381, |
|||
lightcoral = 0.35522120733135, |
|||
indianred = 0.21406134963884, |
|||
crimson = 0.16042199953026, |
|||
firebrick = 0.10724525535015, |
|||
darkred = 0.054889674531132, |
|||
orangered = 0.25516243753416, |
|||
tomato = 0.30638612719415, |
|||
coral = 0.37017930872924, |
|||
darkorange = 0.40016167026524, |
|||
lightyellow = 0.98161818392882, |
|||
lemonchiffon = 0.94038992245622, |
|||
lightgoldenrodyellow = 0.93348351018297, |
|||
papayawhip = 0.87797100199835, |
|||
moccasin = 0.80083000991567, |
|||
peachpuff = 0.74905589878251, |
|||
palegoldenrod = 0.78792647887614, |
|||
khaki = 0.77012343394121, |
|||
darkkhaki = 0.45747326349994, |
|||
cornsilk = 0.93562110372965, |
|||
blanchedalmond = 0.85084439608156, |
|||
bisque = 0.80732327372979, |
|||
navajowhite = 0.76519682342785, |
|||
wheat = 0.74909702820482, |
|||
burlywood = 0.51559844533893, |
|||
tan = 0.48237604163921, |
|||
rosybrown = 0.32319457649407, |
|||
sandybrown = 0.46628543696283, |
|||
goldenrod = 0.41919977809569, |
|||
darkgoldenrod = 0.27264703559993, |
|||
peru = 0.30113074877936, |
|||
chocolate = 0.23898526114557, |
|||
saddlebrown = 0.097922285020521, |
|||
sienna = 0.13697631337098, |
|||
brown = 0.098224287876511, |
|||
} |
|||
-- whitespace |
|||
c = c:match( '^%s*(.-)%s*$' ) |
|||
-- lowercase |
-- lowercase |
||
c = c:lower() |
c = c:lower() |
||
-- first try to look it up |
-- first try to look it up |
||
local L = HTMLcolor[c] |
local L = HTMLcolor[c] |
||
Line 104: | Line 104: | ||
local cs = mw.text.split(c or '', '') |
local cs = mw.text.split(c or '', '') |
||
if( #cs == 6 ) then |
if( #cs == 6 ) then |
||
local R = sRGB( (16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2]))/255 ) |
|||
local G = sRGB( (16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4]))/255 ) |
local G = sRGB( (16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4]))/255 ) |
||
local B = sRGB( (16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6]))/255 ) |
local B = sRGB( (16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6]))/255 ) |
||
L = 0.2126 * R + 0.7152 * G + 0.0722 * B |
L = 0.2126 * R + 0.7152 * G + 0.0722 * B |
||
return L |
return L |
||
elseif ( #cs == 3 ) then |
elseif ( #cs == 3 ) then |
||
local R = sRGB( (16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1]))/255 ) |
|||
local G = sRGB( (16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2]))/255 ) |
local G = sRGB( (16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2]))/255 ) |
||
local B = sRGB( (16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3]))/255 ) |
local B = sRGB( (16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3]))/255 ) |
||
L = 0.2126 * R + 0.7152 * G + 0.0722 * B |
L = 0.2126 * R + 0.7152 * G + 0.0722 * B |
||
return L |
return L |
||
end |
end |
||
-- failure, return blank |
-- failure, return blank |
||
return '' |
return '' |