MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 292: | Строка 292: | ||
} | } | ||
function brightenColor(color, factor) { | function brightenColor(color, factor) { | ||
function getBrightness(r, g, b) { | function getBrightness(r, g, b) { | ||
return 0.2126 * r + 0.7152 * g + 0.0722 * b; | return 0.2126 * r + 0.7152 * g + 0.0722 * b; | ||
} | } | ||
var | var rgbValues = color.match(/\d+(\.\d+)?/g); | ||
var r = parseInt(rgbValues[0], 10); | |||
var g = parseInt(rgbValues[1], 10); | |||
var b = parseInt(rgbValues[2], 10); | |||
var a = rgbValues.length === 4 ? parseFloat(rgbValues[3]) : 1; // Обработка альфа-канала | |||
g = parseInt(rgbValues[1], 10); | |||
b = parseInt(rgbValues[2], 10); | |||
var brightness = getBrightness(r, g, b); | var brightness = getBrightness(r, g, b); | ||
if (factor === undefined) { | |||
if (brightness < 60) { | |||
factor = 1.05; | |||
} else if (brightness < 120) { | |||
factor = 1.03; | |||
} else if (brightness < 180) { | |||
factor = 1.01; | |||
} else { | |||
factor = 1.0; | |||
} | |||
} | } | ||
r = Math.min(255, Math.floor(r * factor)); | |||
r = Math.min(255, Math.floor(r * | g = Math.min(255, Math.floor(g * factor)); | ||
g = Math.min(255, Math.floor(g * | b = Math.min(255, Math.floor(b * factor)); | ||
b = Math.min(255, Math.floor(b * | |||
return a < 1 ? 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')' : 'rgb(' + r + ', ' + g + ', ' + b + ')'; | return a < 1 ? 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')' : 'rgb(' + r + ', ' + g + ', ' + b + ')'; | ||
} | } | ||