Module:Sandbox/isaacl/ColourSpace/Formats/W3Cnames

local me = { }

local Tuple = require('Module:Sandbox/isaacl/ColourSpace/Tuple')

local sRGBFromW3CName = { ['aliceblue']      = {240,248,255}, ['antiquewhite']   = {250,235,215}, ['aqua']           = {0,255,255}, ['aquamarine']     = {127,255,212}, ['azure']          = {240,255,255}, ['beige']          = {245,245,220}, ['bisque']         = {255,228,196}, ['black']          = {0,0,0}, ['blanchedalmond'] = {255,235,205}, ['blue']           = {0,0,255}, ['blueviolet']     = {138,43,226}, ['brown']          = {165,42,42}, ['burlywood']      = {222,184,135}, ['cadetblue']      = {95,158,160}, ['chartreuse']     = {127,255,0}, ['chocolate']      = {210,105,30}, ['coral']          = {255,127,80}, ['cornflowerblue'] = {100,149,237}, ['cornsilk']       = {255,248,220}, ['crimson']        = {220,20,60}, ['cyan']           = {0,255,255}, ['darkblue']       = {0,0,139}, ['darkcyan']       = {0,139,139}, ['darkgoldenrod']  = {184,134,11}, ['darkgray']       = {169,169,169}, ['darkgreen']      = {0,100,0}, ['darkgrey']       = {169,169,169}, ['darkkhaki']      = {189,183,107}, ['darkmagenta']    = {139,0,139}, ['darkolivegreen'] = {85,107,47}, ['darkorange']     = {255,140,0}, ['darkorchid']     = {153,50,204}, ['darkred']        = {139,0,0}, ['darksalmon']     = {233,150,122}, ['darkseagreen']   = {143,188,143}, ['darkslateblue']  = {72,61,139}, ['darkslategray']  = {47,79,79}, ['darkslategrey']  = {47,79,79}, ['darkturquoise']  = {0,206,209}, ['darkviolet']     = {148,0,211}, ['deeppink']       = {255,20,147}, ['deepskyblue']    = {0,191,255}, ['dimgray']        = {105,105,105}, ['dimgrey']        = {105,105,105}, ['dodgerblue']     = {30,144,255}, ['firebrick']      = {178,34,34}, ['floralwhite']    = {255,250,240}, ['forestgreen']    = {34,139,34}, ['fuchsia']        = {255,0,255}, ['gainsboro']      = {220,220,220}, ['ghostwhite']     = {248,248,255}, ['gold']           = {255,215,0}, ['goldenrod']      = {218,165,32}, ['gray']           = {128,128,128}, ['green']          = {0,128,0}, ['greenyellow']    = {173,255,47}, ['grey']           = {128,128,128}, ['honeydew']       = {240,255,240}, ['hotpink']        = {255,105,180}, ['indianred']      = {205,92,92}, ['indigo']         = {75,0,130}, ['ivory']          = {255,255,240}, ['khaki']          = {240,230,140}, ['lavender']       = {230,230,250}, ['lavenderblush']  = {255,240,245}, ['lawngreen']      = {124,252,0}, ['lemonchiffon']   = {255,250,205}, ['lightblue']      = {173,216,230}, ['lightcoral']     = {240,128,128}, ['lightcyan']      = {224,255,255}, ['lightgoldenrodyellow'] = {250,250,210}, ['lightgray']      = {211,211,211}, ['lightgreen']     = {144,238,144}, ['lightgrey']      = {211,211,211}, ['lightpink']      = {255,182,193}, ['lightsalmon']    = {255,160,122}, ['lightseagreen']  = {32,178,170}, ['lightskyblue']   = {135,206,250}, ['lightslategray'] = {119,136,153}, ['lightslategrey'] = {119,136,153}, ['lightsteelblue'] = {176,196,222}, ['lightyellow']    = {255,255,224}, ['lime']           = {0,255,0}, ['limegreen']      = {50,205,50}, ['linen']          = {250,240,230}, ['magenta']        = {255,0,255}, ['maroon']         = {128,0,0}, ['mediumaquamarine'] = {102,205,170}, ['mediumblue']     = {0,0,205}, ['mediumorchid']   = {186,85,211}, ['mediumpurple']   = {147,112,219}, ['mediumseagreen'] = {60,179,113}, ['mediumslateblue'] = {123,104,238}, ['mediumspringgreen'] = {0,250,154}, ['mediumturquoise'] = {72,209,204}, ['mediumvioletred'] = {199,21,133}, ['midnightblue']   = {25,25,112}, ['mintcream']      = {245,255,250}, ['mistyrose']      = {255,228,225}, ['moccasin']       = {255,228,181}, ['navajowhite']    = {255,222,173}, ['navy']           = {0,0,128}, ['oldlace']        = {253,245,230}, ['olive']          = {128,128,0}, ['olivedrab']      = {107,142,35}, ['orange']         = {255,165,0}, ['orangered']      = {255,69,0}, ['orchid']         = {218,112,214}, ['palegoldenrod']  = {238,232,170}, ['palegreen']      = {152,251,152}, ['paleturquoise']  = {175,238,238}, ['palevioletred']  = {219,112,147}, ['papayawhip']     = {255,239,213}, ['peachpuff']      = {255,218,185}, ['peru']           = {205,133,63}, ['pink']           = {255,192,203}, ['plum']           = {221,160,221}, ['powderblue']     = {176,224,230}, ['purple']         = {128,0,128}, ['rebeccapurple']  = {102,51,153}, ['red']            = {255,0,0}, ['rosybrown']      = {188,143,143}, ['royalblue']      = {65,105,225}, ['saddlebrown']    = {139,69,19}, ['salmon']         = {250,128,114}, ['sandybrown']     = {244,164,96}, ['seagreen']       = {46,139,87}, ['seashell']       = {255,245,238}, ['sienna']         = {160,82,45}, ['silver']         = {192,192,192}, ['skyblue']        = {135,206,235}, ['slateblue']      = {106,90,205}, ['slategray']      = {112,128,144}, ['slategrey']      = {112,128,144}, ['snow']           = {255,250,250}, ['springgreen']    = {0,255,127}, ['steelblue']      = {70,130,180}, ['tan']            = {210,180,140}, ['teal']           = {0,128,128}, ['thistle']        = {216,191,216}, ['tomato']         = {255,99,71}, ['turquoise']      = {64,224,208}, ['violet']         = {238,130,238}, ['wheat']          = {245,222,179}, ['white']          = {255,255,255}, ['whitesmoke']     = {245,245,245}, ['yellow']         = {255,255,0}, ['yellowgreen']    = {154,205,50},

} -- me.sRGBFromW3CName

local W3CNameFromSRGB = nil

local function buildW3CNameFromSRGBTable for name, colourValue in pairs(sRGBFromW3CName) do       local red   = tostring(colourValue[1]) local green = tostring(colourValue[2]) local blue = tostring(colourValue[3]) if ( W3CNameFromSRGB[red] == nil ) then W3CNameFromSRGB[red] = { } end if ( W3CNameFromSRGB[red][green] == nil ) then W3CNameFromSRGB[red][green] = { } end if ( W3CNameFromSRGB[red][green][blue] == nil ) then W3CNameFromSRGB[red][green][blue] = { } end W3CNameFromSRGB[red][green][blue] = name end end -- function buildW3CNameFromSRGBTable

me.infoFor = { W3Cnames = { colourSpace = 'sRGB', formatType = '24bit', defaultConversion = 'sRGB24bit', parseInput = function(args) local colourName = args[1] if ( sRGBFromW3CName[colourName] ~= nil ) then local result = sRGBFromW3CName[colourName] result[4] = colourName return result end return nil end, isInputFormat = function(args) return ( sRGBFromW3CName[args[1]] ~= nil ) end, display = function(self, separator) return self[4] end, mapParametersFrom = { sRGB24bit = function(colourValue) if (W3CNameFromSRGB == nil) then W3CNameFromSRGB = { } buildW3CNameFromSRGBTable end local red  = tostring(colourValue[1]) local green = tostring(colourValue[2]) local blue = tostring(colourValue[3]) if (  W3CNameFromSRGB[red] == nil                    or W3CNameFromSRGB[red][green] == nil                    or W3CNameFromSRGB[red][green][blue] == nil                ) then return nil end local mappedArgs = Tuple.clone(colourValue) mappedArgs[4] = W3CNameFromSRGB[red][green][blue] return mappedArgs end, }, -- end of mapping functions }, -- info for W3Cnames sRGB24bit = { mapParametersFrom = { W3Cnames = function( colourValue ) local mappedArgs = Tuple.clone(colourValue) mappedArgs[4] = nil return mappedArgs end, }, -- end of mapping functions }, -- info for sRGB24bit } -- data for formats

return me