Rainbow border

Rainbow border for agma

目前為 2021-10-14 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Rainbow border
// @namespace    http://tampermonkey.net/
// @version      0.2.0
// @description  Rainbow border for agma
// @author       firebone
// @match        https://agma.io/
// @grant        none
// ==/UserScript==

(function() {
    var speed = 5;
    function hslToHex(h, s, l) {
        h /= 360;
        s /= 100;
        l /= 100;
        let r, g, b;
        if (s === 0) {
            r = g = b = l; // achromatic
        } else {
            const hue2rgb = (p, q, t) => {
                if (t < 0) t += 1;
                if (t > 1) t -= 1;
                if (t < 1 / 6) return p + (q - p) * 6 * t;
                if (t < 1 / 2) return q;
                if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
                return p;
            };
            const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
            const p = 2 * l - q;
            r = hue2rgb(p, q, h + 1 / 3);
            g = hue2rgb(p, q, h);
            b = hue2rgb(p, q, h - 1 / 3);
        }
        const toHex = x => {
            const hex = Math.round(x * 255).toString(16);
            return hex.length === 1 ? '0' + hex : hex;
        };
        return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
    }

    //change Color
    var stroke = CanvasRenderingContext2D.prototype.stroke;
    CanvasRenderingContext2D.prototype.stroke = function(){
        if(this.lineWidth < 10 || this.strokeStyle == "#ffffff" || this.strokeStyle == "#333333") return stroke.apply(this, arguments);
        if(this.strokeStyle.slice(5,7) == this.strokeStyle.slice(3,5)){
            this.strokeStyle = hslToHex(Math.floor(Date.now() / speed) % 360, 100, 50);
        }
        return stroke.apply(this, arguments);
    }
})();