Better animation, better color distribution in cetrain flags and with domains.

This commit is contained in:
Lena Schimmel 2019-06-30 00:37:16 +02:00
parent be60d136e7
commit 57dc0dea2b
4 changed files with 40 additions and 19 deletions

View file

@ -173,7 +173,7 @@ app.get('/design/download', async function (req, res) {
gradients.colorLetter(letter, color, false); gradients.colorLetter(letter, color, false);
}); });
} else { } else {
const colormap = flags.flagmap(flags.linesInDesign(layout), flags.allFlags[flag], flag); const colormap = flags.flagmap(flags.linesInDesign(layout), flags.allFlags[flag], flag, domain == "bold");
gradients.changeGradients(colormap); gradients.changeGradients(colormap);
} }
gradients.setShadowMode(withshadow ? "on" : "off"); gradients.setShadowMode(withshadow ? "on" : "off");

View file

@ -6,10 +6,11 @@ var colorLib = require('color');
var lastLayout = ""; var lastLayout = "";
var activeColor = "#000000"; var activeColor = "#000000";
var lines = 1; var lines = 1;
var domain = "off";
window.queer = {}; window.queer = {};
window.queer.showflag = function (flagName, animate = true) { window.queer.showflag = function (flagName, animate = true) {
mainLogo.changeGradients(flags.flagmap(2, flags.allFlags[flagName], flagName), animate); mainLogo.changeGradients(flags.flagmap(2, flags.allFlags[flagName], flagName, domain == "bold"), animate);
} }
window.queer.initFlagAnimation = function () { window.queer.initFlagAnimation = function () {
@ -32,7 +33,7 @@ window.queer.initFlagAnimation = function () {
$("#identity").html("(" + flagName + ")").fadeIn(500); $("#identity").html("(" + flagName + ")").fadeIn(500);
}); });
mainLogo.changeGradients(flags.flagmap(2, flags.allFlags[flagName], flagName), true); mainLogo.changeGradients(flags.flagmap(2, flags.allFlags[flagName], flagName, domain == "bold"), true);
} }
} }
@ -102,7 +103,7 @@ window.queer.flagSelected = function () {
}); });
$("#colors").removeClass("hidden"); $("#colors").removeClass("hidden");
} else { } else {
previewLogo.changeGradients(flags.flagmap(lines, flags.allFlags[flagName], flagName), false); previewLogo.changeGradients(flags.flagmap(lines, flags.allFlags[flagName], flagName, domain == "bold"), false);
$("#colors").addClass("hidden"); $("#colors").addClass("hidden");
} }
shadow = $("#withshadow").is(":checked"); shadow = $("#withshadow").is(":checked");
@ -126,8 +127,9 @@ window.queer.layoutSelected = function () {
} }
window.queer.domainSelected = function () { window.queer.domainSelected = function () {
mode = $("#domainselect :selected").val(); domain = $("#domainselect :selected").val();
previewLogo.setDomainMode(mode); previewLogo.setDomainMode(domain);
queer.flagSelected();
} }
window.queer.initColors = function() { window.queer.initColors = function() {

View file

@ -1,19 +1,25 @@
exports.flagmap = function (lines, c, flagName) { exports.flagmap = function (lines, c, flagName, colorDomain = false) {
if (lines == 1) { if (lines == 1) {
if (c.length == 3) { if (c.length == 3) {
return { "Q0": c[0], "U0": c[0], "E0": c[0], "E1": c[0], "R0": c[0], "A0": c[1], "L0": c[1], "L1": c[1], "Y0": c[2], "E2": c[2], "A1": c[2], "R1": c[2] }; return { "Q0": c[0], "U0": c[0], "E0": c[0], "E1": c[0], "R0": c[0], "A0": c[1], "L0": c[1], "L1": c[1], "Y0": c[2], "E2": c[2], "A1": c[2], "R1": c[2] };
} else { } else {
var ret = {}; var ret = {};
for (let i = 0; i < exports.letters.length; i++) { var relevantCount = exports.letters.length - (colorDomain ? 0 : 3);
console.log("Mapping on letter count: " + relevantCount);
for (let i = 0; i < relevantCount; i++) {
const letter = exports.letters[i]; const letter = exports.letters[i];
ret[letter] = c[Math.floor(i * c.length / exports.letters.length)]; ret[letter] = c[Math.floor(i * c.length / relevantCount)];
} }
} }
return ret; return ret;
} }
if (lines == 2) { if (lines == 2) {
if (c.length == 3) if(flagName == "Inter")
return { "Q0": c[0], "U0": c[0], "E0": c[1], "E1": c[0], "R0": c[0], "A0": c[0], "L0": c[0], "L1": c[1], "Y0": c[0], "E2": c[1], "A1": c[0], "R1": c[0] };
else if(flagName == "Polyamor") // [polyamBlue, polyamRed, polyamYellow, polyamRed, black];
return { "Q0": c[0], "U0": c[0], "E0": c[1], "E1": c[3], "R0": c[4], "A0": c[0], "L0": c[0], "L1": c[1], "Y0": c[2], "E2": c[1], "A1": c[4], "R1": c[4] };
else if (c.length == 3)
return { "Q0": c[0], "U0": c[0], "E0": c[1], "E1": c[1], "R0": c[2], "A0": c[0], "L0": c[0], "L1": c[0], "Y0": c[1], "E2": c[1], "A1": c[2], "R1": c[2] }; return { "Q0": c[0], "U0": c[0], "E0": c[1], "E1": c[1], "R0": c[2], "A0": c[0], "L0": c[0], "L1": c[0], "Y0": c[1], "E2": c[1], "A1": c[2], "R1": c[2] };
else if (c.length == 4) else if (c.length == 4)
return { "Q0": c[0], "U0": c[1], "E0": c[1], "E1": c[2], "R0": c[3], "A0": c[0], "L0": c[1], "L1": c[1], "Y0": c[2], "E2": c[2], "A1": c[3], "R1": c[3] }; return { "Q0": c[0], "U0": c[1], "E0": c[1], "E1": c[2], "R0": c[3], "A0": c[0], "L0": c[1], "L1": c[1], "Y0": c[2], "E2": c[2], "A1": c[3], "R1": c[3] };
@ -28,7 +34,7 @@ exports.flagmap = function (lines, c, flagName) {
if (lines == 3) { if (lines == 3) {
if(flagName == "Inter") if(flagName == "Inter")
return { "Q0": c[0], "U0": c[0], "E0": c[1], "E1": c[0], "R0": c[0], "A0": c[1], "L0": c[0], "L1": c[1], "Y0": c[0], "E2": c[0], "A1": c[1], "R1": c[0] }; return { "Q0": c[0], "U0": c[0], "E0": c[1], "E1": c[0], "R0": c[0], "A0": c[1], "L0": c[0], "L1": c[1], "Y0": c[0], "E2": c[0], "A1": c[1], "R1": c[0] };
else if(flagName == "Polyamor") else if(flagName == "Polyamor")
return { "Q0": c[0], "U0": c[0], "E0": c[0], "E1": c[0], "R0": c[0], "A0": c[1], "L0": c[2], "L1": c[1], "Y0": c[4], "E2": c[4], "A1": c[4], "R1": c[4] }; return { "Q0": c[0], "U0": c[0], "E0": c[0], "E1": c[0], "R0": c[0], "A0": c[1], "L0": c[2], "L1": c[1], "Y0": c[4], "E2": c[4], "A1": c[4], "R1": c[4] };
else if(flagName == "Kinky") // [kinkBlue, black, kinkBlue, white, kinkRed, black, kinkBlue]; else if(flagName == "Kinky") // [kinkBlue, black, kinkBlue, white, kinkRed, black, kinkBlue];
return { "Q0": c[0], "U0": c[1], "E0": c[0], "E1": c[1], "R0": c[0], "A0": c[3], "L0": c[4], "L1": c[3], "Y0": c[1], "E2": c[0], "A1": c[1], "R1": c[0] }; return { "Q0": c[0], "U0": c[1], "E0": c[0], "E1": c[1], "R0": c[0], "A0": c[3], "L0": c[4], "L1": c[3], "Y0": c[1], "E2": c[0], "A1": c[1], "R1": c[0] };
@ -37,7 +43,7 @@ exports.flagmap = function (lines, c, flagName) {
else if (c.length == 4) else if (c.length == 4)
return { "Q0": c[0], "U0": c[1], "E0": c[1], "E1": c[2], "R0": c[3], "A0": c[0], "L0": c[1], "L1": c[1], "Y0": c[2], "E2": c[2], "A1": c[3], "R1": c[3] }; return { "Q0": c[0], "U0": c[1], "E0": c[1], "E1": c[2], "R0": c[3], "A0": c[0], "L0": c[1], "L1": c[1], "Y0": c[2], "E2": c[2], "A1": c[3], "R1": c[3] };
else if (c.length == 5) else if (c.length == 5)
return { "Q0": c[0], "U0": c[1], "E0": c[2], "E1": c[3], "R0": c[4], "A0": c[0], "L0": c[1], "L1": c[1], "Y0": c[2], "E2": c[2], "A1": c[3], "R1": c[4] }; return { "Q0": c[0], "U0": c[0], "E0": c[1], "E1": c[2], "R0": c[4], "A0": c[1], "L0": c[2], "L1": c[3], "Y0": c[1], "E2": c[2], "A1": c[3], "R1": c[4] };
else if (c.length == 7) else if (c.length == 7)
return { "Q0": c[1], "U0": c[2], "E0": c[3], "E1": c[4], "R0": c[5], "A0": c[0], "L0": c[1], "L1": c[2], "Y0": c[3], "E2": c[4], "A1": c[5], "R1": c[6] }; return { "Q0": c[1], "U0": c[2], "E0": c[3], "E1": c[4], "R0": c[5], "A0": c[0], "L0": c[1], "L1": c[2], "Y0": c[3], "E2": c[4], "A1": c[5], "R1": c[6] };
else if (c.length == 8) else if (c.length == 8)
@ -137,7 +143,7 @@ exports.allColors = [
exports.gay = [gayRed, gayOrange, gayYellow, gayGreen, gayBlue, gayViolet, gayPink]; exports.gay = [gayRed, gayOrange, gayYellow, gayGreen, gayBlue, gayViolet, gayPink];
exports.philly = [black, phillyBrown, gayRed, gayOrange, gayYellow, gayGreen, gayBlue, gayPink]; exports.philly = [black, phillyBrown, gayRed, gayOrange, gayYellow, gayGreen, gayBlue, gayViolet];
exports.aro = [romanticDarkGreen, romanticLightGreen, white, aceGrey, black]; exports.aro = [romanticDarkGreen, romanticLightGreen, white, aceGrey, black];
exports.nonbinary = [nonbinaryYellow, white, nonbinaryViolet, black]; exports.nonbinary = [nonbinaryYellow, white, nonbinaryViolet, black];
exports.genderqueer = [genderqueerViolet, white, genderqueerGreen]; exports.genderqueer = [genderqueerViolet, white, genderqueerGreen];

View file

@ -70,15 +70,21 @@ method.svgString = function() {
} }
method.changeGradients = async function(flag, animate = false) { method.changeGradients = async function(flag, animate = false) {
indices = [];
for (let i = 0; i < this.defs.children.length; i++) { for (let i = 0; i < this.defs.children.length; i++) {
const gradient = this.defs.children.item(i); indices[i] = i;
}
shuffleArray(indices);
for (let i = 0; i < this.defs.children.length; i++) {
const gradient = this.defs.children.item(indices[i]);
var id = gradient.id; var id = gradient.id;
if (id.length == 3) { if (id.length == 3) {
var letter = id.substring(0,2); var letter = id.substring(0,2);
this.colorLetterGradient(gradient, flag[letter], animate); this.colorLetterGradient(gradient, flag[letter], animate);
}
if(animate) if(animate)
await sleep(25); await sleep(35); // time per gradient
}
} }
} }
@ -91,9 +97,9 @@ method.colorLetter = async function(letterToColor, targetColor, animate = false)
if(letter == letterToColor) { if(letter == letterToColor) {
this.colorLetterGradient(gradient, targetColor, animate); this.colorLetterGradient(gradient, targetColor, animate);
} }
}
if(animate) if(animate)
await sleep(45); await sleep(35); // time per gradient
}
} }
} }
@ -126,7 +132,7 @@ method.colorLetterGradient = async function(gradient, targetColor, animate = fal
for (let s = 0; s < stops.length; s++) { for (let s = 0; s < stops.length; s++) {
if(animate) if(animate)
await sleep(45); await sleep(55); // time per stop
var stop = stops.item(s); var stop = stops.item(s);
var stopcolor = this.originalColors[id][s]; var stopcolor = this.originalColors[id][s];
@ -198,4 +204,11 @@ function getRange(stops, index) {
}; };
} }
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}
module.exports = GradientSvg; module.exports = GradientSvg;