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

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


     var r, g, b;
     var r, g, b, rgbValues;


     // Если цвет в формате rgba, преобразуем его в rgb
     // Проверка, является ли цвет форматом rgb или rgba
     if (color.indexOf('rgba') === 0) {
     if (color.indexOf('rgb') === 0) {
         var rgbaValues = color.match(/\d+/g);
         rgbValues = color.match(/\d+/g);
        if (rgbaValues && rgbaValues.length >= 3) {
 
            r = parseInt(rgbaValues[0], 10);
         // Если удалось разобрать цвет
            g = parseInt(rgbaValues[1], 10);
            b = parseInt(rgbaValues[2], 10);
         } else {
            return color; // Возвращаем оригинальный цвет, если не удалось разобрать
        }
    } else if (color.indexOf('rgb') === 0) {
        var rgbValues = color.match(/\d+/g);
         if (rgbValues && rgbValues.length >= 3) {
         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);
        } else {
            return color; // Возвращаем оригинальный цвет, если не удалось разобрать
        }
    } else {
        return color; // Возвращаем оригинальный цвет, если формат не поддерживается
    }


    var brightness = getBrightness(r, g, b);
            var brightness = getBrightness(r, g, b);
    var darkThreshold = 90;
            var darkThreshold = 90;
    var brightnessFactor = brightness < darkThreshold ? 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 'rgb(' + r + ', ' + g + ', ' + b + ')';
        }
    }
   
    return color; // Возвращаем оригинальный цвет, если он не поддерживается или не удалось разобрать
}
}