(function() {
    "use strict";

    function calcColorComponent(x) {
        var y;
        if (x <= 127.5) {
            y = 0.999 * x - 5.4361 + x;
        } else {
            y = -0.999 * x + 249.32 + x;
        }
        return (y < 0 ? 0 : y) % 256; // 确保y不小于0
    }

    function roundToNearestInt(num) {
        return Math.round(num);
    }

    function genTileBackFilter(backcolor) {
        var basecolor = Color.parse(backcolor);
        var rightcolor = new Color(
            roundToNearestInt(calcColorComponent(basecolor.red)),
            roundToNearestInt(calcColorComponent(basecolor.green)),
            roundToNearestInt(calcColorComponent(basecolor.blue)),
            63.75 // 0.25
        );
        return "linear-gradient(to right, rgba(0,0,0,0), " + rightcolor.RGBA.stringify() + ")";
    }
    module.exports = {
        Color: {
            genTileBackFilter: genTileBackFilter
        }
    };
})();