MediaWiki:Common.js: различия между версиями

мНет описания правки
мНет описания правки
Строка 282: Строка 282:
// Функция для увеличения яркости цвета
// Функция для увеличения яркости цвета
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 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);
var g = parseInt(rgbValues[1], 10);
    var g = parseInt(rgbValues[1], 10);
var b = parseInt(rgbValues[2], 10);
    var b = parseInt(rgbValues[2], 10);
var a = rgbValues.length === 4 ? parseFloat(rgbValues[3]) : 1; // Обработка альфа-канала
    var a = rgbValues.length === 4 ? parseFloat(rgbValues[3]) : 1;
var brightness = getBrightness(r, g, b);
 
if (factor === undefined) {
    var brightness = getBrightness(r, g, b);
if (brightness < 30) {
   
if (r > g && r > b) {
    if (factor === undefined) {
factor = 1.1 + (30 - brightness) / 300; // Красный доминирует
        if (brightness < 30) {
} else if (g > r && g > b) {
            factor = 10;
factor = 1.1 + (30 - brightness) / 200; // Зеленый доминирует
        } else if (brightness <= 55) {
} else {
            factor = 5;
factor = 1.1 + (30 - brightness) / 50; // Темный цвет с доминированием синего
        } else if (brightness < 140) {
}
            factor = 3;
} else if (brightness <= 55) {
        } else if (brightness < 180) {
factor = 1.09;
            factor = 2;
} else if (brightness < 140) {
        } else {
factor = 1.045;
            factor = 0;
} else if (brightness < 180) {
        }
factor = 1.02;
    }
} else {
 
factor = 1.0;
    // Добавляем фактор вместо умножения
}
    r = Math.min(255, r + factor);
}
    g = Math.min(255, g + factor);
r = Math.min(255, Math.floor(r * factor));
    b = Math.min(255, b + 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 ? 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')' : 'rgb(' + r + ', ' + g + ', ' + b + ')';
}
}
// Функция для подсветки ячеек в таблице при наведении
// Функция для подсветки ячеек в таблице при наведении