MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 293: | Строка 293: | ||
// Функция для увеличения яркости цвета | // Функция для увеличения яркости цвета | ||
function | function brightenColor(color, factor) { | ||
function getBrightness(r, g, b) { | |||
function | return 0.2126 * r + 0.7152 * g + 0.0722 * b; | ||
} | } | ||
var rgbValues = color.match(/\d+(\.\d+)?/g); | var rgbValues = color.match(/\d+(\.\d+)?/g); | ||
var r = parseInt(rgbValues[0], 10); | var r = parseInt(rgbValues[0], 10); | ||
| Строка 353: | Строка 304: | ||
var a = rgbValues.length === 4 ? parseFloat(rgbValues[3]) : 1; // Обработка альфа-канала | var a = rgbValues.length === 4 ? parseFloat(rgbValues[3]) : 1; // Обработка альфа-канала | ||
var brightness = getBrightness(r, g, b); | |||
var | |||
if (factor === undefined) { | if (factor === undefined) { | ||
factor = | if (brightness < 35) { | ||
if (r > g && r > b) { | |||
factor = 1.1 + (35 - brightness) / 250; // Красный доминирует | |||
} else if (g > r && g > b) { | |||
factor = 1.1 + (35 - brightness) / 150; // Зеленый доминирует | |||
} else { | |||
factor = 1.1 + (35 - brightness) / 50; // Темный цвет с доминированием синего | |||
} | |||
} else if (brightness <= 55) { | |||
factor = 1.085; | |||
} else if (brightness < 140) { | |||
factor = 1.045; | |||
} else if (brightness < 180) { | |||
factor = 1.02; | |||
} else { | |||
factor = 1.0; | |||
} | |||
} | } | ||
r = Math.min(255, Math.floor(r * factor)); | |||
g = Math.min(255, Math.floor(g * factor)); | |||
b = Math.min(255, Math.floor(b * factor)); | |||
return a < 1 ? 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')' : 'rgb(' + r + ', ' + g + ', ' + b + ')'; | |||
return a < 1 ? | |||
} | } | ||