Module:Color contrast: Difference between revisions

    From Nonbinary Wiki
    m>Frietjes
    (add shorthand)
    m (2 revisions imported from wikipedia:Module:Color_contrast: see Topic:Vtixlm0q28eo6jtf)
     
    (48 intermediate revisions by 13 users not shown)
    Line 2: Line 2:
    -- This module implements  
    -- This module implements  
    --  {{Color contrast ratio}}
    --  {{Color contrast ratio}}
    --  {{Greater color contrast ratio}}
    --  {{ColorToLum}}
    --  {{ColorToLum}}
    --  {{RGBColorToLum}}
    --  {{RGBColorToLum}}
    --
    --
    local p = {}
    local p = {}
    local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' )


    local function sRGB ( v )  
    local function sRGB ( v )  
    Line 12: Line 14:
    else
    else
    v = math.pow((v+0.055)/1.055, 2.4)
    v = math.pow((v+0.055)/1.055, 2.4)
        end
    end
    return v
    return v
    end
    local function rgbdec2lum( R, G, B )
    if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then
    return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255)
    else
    return ''
    end
    end
    local function hsl2lum( h, s, l )
    if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then
    local c = (1 - math.abs(2*l - 1))*s
    local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) )
    local m = l - c/2
    local r, g, b = m, m, m
    if( 0 <= h and h < 60 ) then
    r = r + c
    g = g + x
    elseif( 60 <= h and h < 120 ) then
    r = r + x
    g = g + c
    elseif( 120 <= h and h < 180 ) then
    g = g + c
    b = b + x
    elseif( 180 <= h and h < 240 ) then
    g = g + x
    b = b + c
    elseif( 240 <= h and h < 300 ) then
    r = r + x
    b = b + c
    elseif( 300 <= h and h < 360 ) then
    r = r + c
    b = b + x
    end
    return rgbdec2lum(255*r, 255*g, 255*b)
    else
    return ''
    end
    end
    end


    local function color2lum( c )
    local function color2lum( c )
     
    if (c == nil) then
    if (c == nil) then
    return ''
    return ''
    end
    end


    local HTMLcolor = {
    -- html '#' entity
    white = 1,
    c = c:gsub("&#35;", "#")
    silver = 0.52711512570581,
     
    gray = 0.2158605001139,
    -- whitespace
    black = 0,
    c = c:match( '^%s*(.-)[%s;]*$' )
    red = 0.2126,
     
    maroon = 0.045891942324215,
    -- unstrip nowiki strip markers
    yellow = 0.9278,
    c = mw.text.unstripNoWiki(c)
    olive = 0.20027537200568,
    lime = 0.7152,
    green = 0.15438342968146,
    aqua = 0.7874,
    teal = 0.16996855778968,
    blue = 0.0722,
    navy = 0.015585128108224,
    fuchsia = 0.2848,
    purple = 0.061477070432439,
    orange = 0.4817026703631,


    gold = 0.69860877428159,
    pink = 0.63271070702466,
    lightpink = 0.58566152734898,