NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Derpibooru Image Background Color Toggle
// @namespace Derpibooru Image Background Color Toggle
// @include https://derpibooru.org/*
// @include derpibooru.org/*
// @include https://trixiebooru.org/*
// @include trixiebooru.org/*
// @description Swaps the background colors of animated images between the light and dark themes
// @author DanielTepesKraus | https://www.derpibooru.org/profiles/DanielTepesKraus
// @version 3.0
// @grant none
// ==/UserScript==
// ***** OPTIONS MENU *****
var AlwaysLink = 0;
var UseSliders = 1;
// Set AlwaysLink to 1 to only display the button on images tagged as "transparent background, "derpibooru theme illusion", or "transparent".
// Set UseSliders to 0 to turn off the slider bars and only have the toggle button.
// ************************
var linkset = 0;
var bgcol = window.getComputedStyle(document.body, null).backgroundColor.substring(4, window.getComputedStyle(document.body, null).backgroundColor.length-1).replace(/ /g, '').split(',');
if (bgcol[0] > 200){
var imgcol = [248, 250, 252];
}else{
var imgcol = [20, 26, 36];
}
var colored = 0;
var ToggleButton = document.createElement("span");
ToggleButton.id = "ToggleSpan";
ToggleButton.innerHTML = "<a href='javascript:return_false;' id='ToggleLink'><span class='hide-mobile'><i class='fa fa-exchange'></i>Toggle BG Color</span></a>";
if (AlwaysLink === 0) {
setLink();
}else{
[...document.querySelectorAll('.tag__name')].forEach(setLink);
}
function setLink(el) {
if ((AlwaysLink === 0 || el.textContent == "transparent background" || el.textContent == "transparent" || el.textContent == "derpibooru theme illusion") && linkset === 0){
if (UseSliders == 1){
ToggleButton.innerHTML += "<a href='javascript:return_false;' id='SliderDropdown'><span class='hide-mobile' id='arrowtoggle'><i class='fa fa-level-down'></i></span></a>";
}
document.getElementById("extrameta").appendChild(ToggleButton);
ToggleLink.addEventListener('click',colorswap,false);
linkset = 1;
}
}
if (UseSliders == 1){
document.getElementById("SliderDropdown").addEventListener('click',makesliders,false);
var Sliders = document.createElement("span");
Sliders.classList.add('hidden');
Sliders.innerHTML = '<br><input type="range" min="0" max="255" value="127" step="1" title="Red" style="width:100%;box-sizing: border-box;" id="rgbr" class="input header__input"><br><input type="range" min="0" max="255" value="127" step="1" title="Green" style="width:100%;box-sizing: border-box;" id="rgbg" class="input header__input"><br><input type="range" min="0" max="255" value="127" step="1" title="Blue" style="width:100%;box-sizing: border-box;" id="rgbb" class="input header__input">';
document.getElementById("extrameta").appendChild(Sliders);
document.getElementById("rgbr").value = imgcol[0];
document.getElementById("rgbg").value = imgcol[1];
document.getElementById("rgbb").value = imgcol[2];
document.getElementById("rgbr").addEventListener('input',slide,false);
document.getElementById("rgbg").addEventListener('input',slide,false);
document.getElementById("rgbb").addEventListener('input',slide,false);
}
function colorswap(){
if (!document.getElementById('image-display').style.backgroundColor){
document.getElementById('image-display').style.backgroundColor = "transparent";
colored = 0;
}
if (bgcol[0] > 200 && colored === 0){
document.getElementById('image-display').style.backgroundColor = "rgb(20,26,36)";
colored = 1;
}else if (bgcol[0] < 200 && colored === 0){
document.getElementById('image-display').style.backgroundColor = "rgb(248,250,252)";
colored = 1;
}else if(colored == 1){
document.getElementById('image-display').style.backgroundColor = "transparent";
colored = 0;
}
if (UseSliders == 1){
setSliders();
}
}
function makesliders(){
if (Sliders.classList.contains('hidden')){
Sliders.classList.remove('hidden');
document.getElementById('arrowtoggle').innerHTML = "<i class='fa fa-level-up'></i>";
}else{
Sliders.classList.add('hidden');
document.getElementById('arrowtoggle').innerHTML = "<i class='fa fa-level-down'></i>";
}
}
function slide() {
document.getElementById('image-display').style.backgroundColor = 'rgb(' + document.getElementById("rgbr").value + ', ' + document.getElementById("rgbg").value + ', ' + document.getElementById("rgbb").value + ')';
}
function setSliders(){
if (document.getElementById('image-display').style.backgroundColor == "transparent"){
document.getElementById("rgbr").value = imgcol[0];
document.getElementById("rgbg").value = imgcol[1];
document.getElementById("rgbb").value = imgcol[2];
}else{
var tempcol = document.getElementById('image-display').style.backgroundColor.substring(4, document.getElementById('image-display').style.backgroundColor.length-1).replace(/ /g, '').split(',');
document.getElementById("rgbr").value = tempcol[0];
document.getElementById("rgbg").value = tempcol[1];
document.getElementById("rgbb").value = tempcol[2];
}
}
// XXXXXXXXXX
// XXXXXXXXXXXXXXXXXX
// %%%%%%||||%%||
// %%||%%||||||%%||||||
// %%||%%%%||||||%%||||||
// %%%%||||||||%%%%%%%%
// ||||||||||||||
// %%%%XX%%%%%%
// %%%%%%XX%%%%XX%%%%%%
//%%%%%%%%XXXXXXXX%%%%%%%%
//||||%%XX||XXXX||XX%%||||
//||||||XXXXXXXXXXXX||||||
//||||XXXXXXXXXXXXXXXX||||
// XXXXXX XXXXXX
// %%%%%% %%%%%%
//%%%%%%%% %%%%%%%%