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

мНет описания правки
мНет описания правки
Строка 298: Строка 298:
     }
     }


     var r, g, b, rgbValues;
     var r, g, b, a = 1, rgbValues;


     // Проверка, является ли цвет форматом rgb или rgba
     // Проверка на rgb или rgba
     if (color.indexOf('rgb') === 0) {
     rgbValues = color.match(/\d+(\.\d+)?/g);
        rgbValues = color.match(/\d+/g);
    if (!rgbValues || rgbValues.length < 3) {
        return color; // Возвращаем цвет без изменений, если не удалось разобрать
    }


        // Если удалось разобрать цвет
    // Извлечение r, g, b и, если есть, a
        if (rgbValues && rgbValues.length >= 3) {
    r = parseInt(rgbValues[0], 10);
            r = parseInt(rgbValues[0], 10);
    g = parseInt(rgbValues[1], 10);
            g = parseInt(rgbValues[1], 10);
    b = parseInt(rgbValues[2], 10);
            b = parseInt(rgbValues[2], 10);
    if (rgbValues.length === 4) {
        a = parseFloat(rgbValues[3]);
    }


            var brightness = getBrightness(r, g, b);
    var brightness = getBrightness(r, g, b);
            var darkThreshold = 90;
    var brightnessFactor = brightness < 90 ? factor + 0.04 : factor;
            var brightnessFactor = brightness < darkThreshold ? factor + 0.04 : factor;


            r = Math.min(255, Math.floor(r * brightnessFactor));
    r = Math.min(255, Math.floor(r * brightnessFactor));
            g = Math.min(255, Math.floor(g * brightnessFactor));
    g = Math.min(255, Math.floor(g * brightnessFactor));
            b = Math.min(255, Math.floor(b * brightnessFactor));
    b = Math.min(255, Math.floor(b * brightnessFactor));


            return 'rgb(' + r + ', ' + g + ', ' + b + ')';
    // Возвращаем цвет
        }
    return a < 1 ? 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')' : 'rgb(' + r + ', ' + g + ', ' + b + ')';
    }
   
    return color; // Возвращаем оригинальный цвет, если он не поддерживается или не удалось разобрать
}
}