Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]
Этот модуль используется в основном
- {{ Коэффициент контрастности цвета }}
- {{ ColorToLum }} / {{ RGBColorToLum }}
- {{ Соответствие цветового контраста }}
- {{ Обеспечьте коэффициент контрастности AAA }}
- {{ Обеспечьте коэффициент контрастности AA }}
- {{ Более высокий коэффициент цветового контраста }}
Он также используется для отслеживания в
- Модуль: Navbox
- Модуль: Userbox
- Модуль: Список эпизодов
и для документации в
- Модуль: Колледж цвета
Применение
Чтобы использовать этот модуль, вы можете использовать один из перечисленных выше шаблонов или вызвать модуль напрямую.
Для вычисления относительной люминесценции
{{ColorToLum|color}}
или же{{#invoke:Color contrast|lum|color}}
Чтобы вычислить коэффициент контрастности между двумя цветами
{{Color contrast ratio|color1|color2|error=?}}
или же{{#invoke:Color contrast|ratio|color1|color2|error=?}}
Чтобы определить, какой из двух цветов (color2a и color2b) имеет больший коэффициент контрастности с определенным цветом (color1)
{{Greater color contrast ratio|color1|color2a|color2b}}
или же{{#invoke:Color contrast|greatercontrast|color1|color2a|color2b}}
Чтобы вычислить коэффициент контрастности между цветами фона и текста, указанными в строке стиля css
{{#invoke:Color contrast|styleratio|css style statement string|default background color|default text color}}
-- Этот модуль реализует- {{Коэффициент контрастности цвета}}- {{Больший коэффициент цветового контраста}}- {{ColorToLum}}- {{RGBColorToLum}}-местный p = {}локальный HTMLcolor = mw . loadData ( 'Модуль: Цветовой контраст / цвета' )локальная функция sRGB ( v )если ( v <= 0,03928 ), тоv = v / 12,92ещеv = math.pow (( v + 0,055 ) / 1,055 , 2,4 )конецвернуть vконецлокальная функция rgbdec2lum ( R , G , B )if ( 0 <= R и R < 256 и 0 <= G и G < 256 и 0 <= B и B < 256 ), товозврат 0,2126 * sRGB ( R / 255 ) + 0,7152 * sRGB ( G / 255 ) + 0,0722 * sRGB ( B / 255 )ещевернуться ''конецконецлокальная функция hsl2lum ( h , s , l )если ( 0 <= h и h < 360 и 0 <= s и s <= 1 и 0 <= l и l <= 1 ), толокальный c = ( 1 - math.abs ( 2 * l - 1 )) * sлокальный x = c * ( 1 - math.abs ( math.fmod ( h / 60 , 2 ) - 1 ) )местный m = l - c / 2местный r , g , b = m , m , mесли ( 0 <= h и h < 60 ), тог = г + сг = г + хelseif ( 60 <= h и h < 120 ), тог = г + хг = г + сelseif ( 120 <= h и h < 180 ), тог = г + сб = б + хelseif ( 180 <= h и h < 240 ), тогдаг = г + хб = б + сelseif ( 240 <= h и h < 300 ), тогдаг = г + хб = б + сelseif ( 300 <= h и h < 360 ), тог = г + сб = б + хконецвернуть rgbdec2lum ( 255 * r , 255 * g , 255 * b )ещевернуться ''конецконецлокальная функция color2lum ( c )если ( c == nil ), товернуться ''конец- html '#' сущностьc = c : gsub ( "& # 35;" , "#" )- пробелc = c : match ( '^% s * (.-) [% s;] * $' )- расстегиваем маркеры полосы nowikic = mw . текст . unstripNoWiki ( c )- строчные буквыc = c : нижний ()- сначала попробуйте поискатьлокальный L = HTMLcolor [ c ]если ( L ~ = nil ), товернуть Lконец- конвертировать из hslесли мв . ustring . match ( c , '^ hsl% ([% s] * [0-9] [0-9%.] * [% s] *, [% s] * [0-9] [0-9%.]) * %% [% s] *, [% s] * [0-9] [0-9%.] * %% [% s] *%) $ ' ) затемместный h , s , l = mw . ustring . match ( c , '^ hsl% ([% s] * ([0-9] [0-9%.] *) [% s] *, [% s] * ([0-9] [0-9 %.] *) %% [% s] *, [% s] * ([0-9] [0-9%.] *) %% [% s] *%) $ ' )Возвращение hsl2lum ( ToNumber ( ч ), ToNumber ( ы ) / 100 , ToNumber ( л ) / 100 )конец- конвертировать из rgbесли мв . ustring . match ( c , '^ rgb% ([% s] * [0-9] [0-9] * [% s] *, [% s] * [0-9] [0-9] * [% s ] *, [% s] * [0-9] [0-9] * [% s] *%) $ ' ) затемлокальный R , G , B = mw . ustring . match ( c , '^ rgb% ([% s] * ([0-9] [0-9] *) [% s] *, [% s] * ([0-9] [0-9] * ) [% s] *, [% s] * ([0-9] [0-9] *) [% s] *%) $ ' )Возвращение rgbdec2lum ( ToNumber ( R ), ToNumber ( G ), ToNumber ( Б ))конец- конвертировать из rgb процентовесли мв . ustring . match ( c , '^ rgb% ([% s] * [0-9] [0-9%.] * %% [% s] *, [% s] * [0-9] [0-9%. .] * %% [% s] *, [% s] * [0-9] [0-9%.] * %% [% s] *%) $ ' ) затемлокальный R , G , B = mw . ustring . match ( c , '^ rgb% ([% s] * ([0-9] [0-9%.] *) %% [% s] *, [% s] * ([0-9] [0 -9%.] *) %% [% s] *, [% s] * ([0-9] [0-9%.] *) %% [% s] *%) $ ' )Возвращение rgbdec2lum ( 255 * ToNumber ( R ) / 100 , 255 * ToNumber ( G ) / 100 , 255 * ToNumber ( В ) / 100 )конец- удалить ведущий # (если он есть) и пробелыc = mw . ustring . match ( c , '^ [% s #] * ([a-f0-9] *) [% s] * $' )- разбить на rgbместный cs = mw . текст . разделить ( c или '' , '' )если ( # cs == 6 ) толокальная R = 16 * ToNumber ( '0x' .. CS [ 1 ]) + ToNumber ( '0x' .. CS [ 2 ])локальная G = 16 * ToNumber ( '0x' .. CS [ 3 ]) + ToNumber ( '0x' .. CS [ 4 ])локальная B = 16 * ToNumber ( '0x' .. CS [ 5 ]) + ToNumber ( '0x' .. CS [ 6 ])вернуть rgbdec2lum ( R , G , B )elseif ( # cs == 3 ) тогдалокальная R = 16 * ToNumber ( '0x' .. CS [ 1 ]) + ToNumber ( '0x' .. CS [ 1 ])локальная G = 16 * ToNumber ( '0x' .. CS [ 2 ]) + ToNumber ( '0x' .. CS [ 2 ])локальная B = 16 * ToNumber ( '0x' .. CS [ 3 ]) + ToNumber ( '0x' .. CS [ 3 ])вернуть rgbdec2lum ( R , G , B )конец- сбой, возврат пустымвернуться ''конец- Экспорт функции для использования в других модулях.- Цвет передается в виде строки.функция p . _lum ( цвет )вернуть color2lum ( цвет )конецфункция p . _greatercontrast ( аргументы )локальное смещение = ToNumber ( арг [ 'смещения' ] или '0' ) или 0local css = ( args [ 'css' ] и args [ 'css' ] ~ = '' ) и true или falselocal v1 = color2lum ( аргументы [ 1 ] или "" )local c2 = args [ 2 ] или '#FFFFFF'местный v2 = color2lum ( c2 )local c3 = args [ 3 ] или '# 000000'местный v3 = color2lum ( c3 )местный коэффициент1 = - 1 ;местный коэффициент2 = - 1 ;if ( введите ( v1 ) == 'число' и введите ( v2 ) == 'число' ), тосоотношение1 = ( v2 + 0,05 ) / ( v1 + 0,05 )ratio1 = ( ratio1 < 1 ) и 1 / ratio1 или ratio1конецif ( введите ( v1 ) == 'число' и введите ( v3 ) == 'число' ), тосоотношение2 = ( v3 + 0,05 ) / ( v1 + 0,05 )ratio2 = ( ratio2 < 1 ) и 1 / ratio2 или ratio2конецесли css, тоlocal c1 = args [ 1 ] или ""если мв . ustring . match ( c1 , '^ [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] $' ) илимв . ustring . match ( c1 , '^ [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] ] [A-Fa-f0-9] $ ' ) тогдаc1 = '#' .. c1конецесли мв . ustring . match ( c2 , '^ [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] $' ) илимв . ustring . match ( c2 , '^ [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] ] [A-Fa-f0-9] $ ' ) тогдаc2 = '#' .. c2конецесли мв . ustring . match ( v3 , '^ [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] $' ) илимв . ustring . match ( v3 , '^ [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] [A-Fa-f0-9] ] [A-Fa-f0-9] $ ' ) тогдаc3 = '#' .. c3конецreturn 'background-color:' .. c1 .. '; цвет: ' .. (( ratio1 > 0 ) and ( ratio2 > 0 ) and (( ratio1 + bias > ratio2 ) and c2 или c3 ) или ' ' ) .. '; 'конецreturn ( ratio1 > 0 ) and ( ratio2 > 0 ) and (( ratio1 + bias > ratio2 ) и c2 или c3 ) или ''конецфункция p . _ratio ( аргументы )local v1 = color2lum ( args [ 1 ])local v2 = color2lum ( args [ 2 ])if ( введите ( v1 ) == 'число' и введите ( v2 ) == 'число' ), то- v1 должен быть ярче из двух.если v2 > v1, тоv1 , v2 = v2 , v1конецвозврат ( v1 + 0,05 ) / ( v2 + 0,05 )ещеreturn args [ 'error' ] или '?'конецконецфункция p . _styleratio ( аргументы )локальный стиль = ( аргументы [ 1 ] или '' ): lower ()местный bg , fg = 'white' , 'black'локальный lum_bg , lum_fg = 1 , 0если args [ 2 ], толокальная Lum = color2lum ( арг [ 2 ])если lum ~ = '', то bg , lum_bg = args [ 2 ], lum endконецесли args [ 3 ], толокальная Lum = color2lum ( арг [ 3 ])если lum ~ = '', то fg , lum_fg = args [ 3 ], lum endконецлокальный список = mw . текст . split ( mw . ustring . gsub ( mw . ustring . gsub ( стиль или '' , '& # [Xx] 23;' , '#' ), '& # 35;' , '#' ), ';' )для k = 1 , # slist doместный s = slist [ k ]local k , v = s : match ( '^ [% s] * ([^:] -): ([^:] -) [% s;] * $' )k = k или ''v = v или ''if ( k : match ( '^ [% s] * (фон) [% s] * $' ) или k : match ( '^ [% s] * (background% -color) [% s] * $' ) ) тогдалокальная Lum = color2lum ( v )если ( lum ~ = '' ), то bg , lum_bg = v , lum endelseif ( k : match ( '^ [% s] * (color) [% s] * $' )) затемлокальная Lum = color2lum ( v )если ( lum ~ = '' ), то bg , lum_fg = v , lum endконецконецесли lum_bg > lum_fg тогдавозврат ( lum_bg + 0,05 ) / ( lum_fg + 0,05 )ещевозврат ( lum_fg + 0,05 ) / ( lum_bg + 0,05 )конецконец- [[Используйте {{#invoke: Color Contrast | somecolor}} напрямую или{{#invoke: Color Contrast}} из шаблона оболочки.Параметры:- | 1 = - обязательно; Цвет для проверки.-]]функция p . люм ( рама )местный цвет = рамка . args [ 1 ] или кадр : getParent (). аргументы [ 1 ]возврат п . _lum ( цвет )конецфункция p . соотношение ( кадр )локальные аргументы = фрейм . args [ 1 ] и frame . аргументы или фрейм : getParent (). аргументывозврат п . _ratio ( аргументы )конецфункция p . styleratio ( рамка )локальные аргументы = фрейм . args [ 1 ] и frame . аргументы или фрейм : getParent (). аргументывозврат п . _styleratio ( аргументы )конецфункция p . большая контрастность ( кадр )локальные аргументы = фрейм . args [ 1 ] и frame . аргументы или фрейм : getParent (). аргументывозврат п . _greatercontrast ( аргументы )конецвернуть p