diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..3b58738e --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +libraries/* +styles/* +p5.js +*.min.js diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..ae0b2d09 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,56 @@ +{ + "env": { + "browser": true + }, + "rules": { + "semi": "error", + "no-eval": "error", + "indent": [ + "error", + 2 + ], + "quotes": [ + "error", + "single" + ], + "no-multiple-empty-lines": [ + "error", + { + "max": 1, + "maxEOF": 1, + "maxBOF": 0 + } + ], + "no-mixed-spaces-and-tabs": "error", + "no-tabs": "error", + "no-trailing-spaces": "error", + "semi-style": [ + "error", + "last" + ], + "spaced-comment": "error", + "switch-colon-spacing": [ + "error", + { + "after": true, + "before": false + } + ], + "space-infix-ops": "error", + "no-multi-spaces": "error", + "space-in-parens": [ + "error", + "never" + ], + "space-unary-ops": "error", + "brace-style": "error", + "eol-last": "error", + "comma-dangle": [ + "error", + "never" + ], + "func-call-spacing": "error", + "key-spacing": "error", + "keyword-spacing": "error" + } +} diff --git a/01_P/P_1_2_1_01/sketch.js b/01_P/P_1_2_1_01/sketch.js index e1a797cc..d8ea93d5 100644 --- a/01_P/P_1_2_1_01/sketch.js +++ b/01_P/P_1_2_1_01/sketch.js @@ -35,7 +35,7 @@ var tileCountX = 2; var tileCountY = 10; -var colorsLeft = [] +var colorsLeft = []; var colorsRight = []; var colors = []; @@ -97,7 +97,7 @@ function mouseReleased() { } function keyPressed() { - if (key == 'c' || key == 'C') writeFile([gd.ase.encode( colors )], gd.timestamp(), 'ase'); + if (key == 'c' || key == 'C') writeFile([gd.ase.encode(colors)], gd.timestamp(), 'ase'); if (key == 's' || key == 'S') saveCanvas(gd.timestamp(), 'png'); if (key == '1') interpolateShortest = true; if (key == '2') interpolateShortest = false; diff --git a/01_P/P_1_2_2_01/sketch.js b/01_P/P_1_2_2_01/sketch.js index 56e6e6fb..90f7f703 100644 --- a/01_P/P_1_2_2_01/sketch.js +++ b/01_P/P_1_2_2_01/sketch.js @@ -40,7 +40,7 @@ var colors = []; var sortMode = null; function preload() { - img = loadImage('data/pic1.jpg'); + loadImage('data/pic1.jpg', setImage); } function setup() { @@ -82,10 +82,10 @@ function keyReleased() { if (key == 'c' || key == 'C') writeFile([gd.ase.encode(colors)], gd.timestamp(), 'ase'); if (key == 's' || key == 'S') saveCanvas(gd.timestamp(), 'png'); - if (key == '1') img = loadImage('data/pic1.jpg'); - if (key == '2') img = loadImage('data/pic2.jpg'); - if (key == '3') img = loadImage('data/pic3.jpg'); - if (key == '4') img = loadImage('data/pic4.jpg'); + if (key == '1') loadImage('data/pic1.jpg', setImage); + if (key == '2') loadImage('data/pic2.jpg', setImage); + if (key == '3') loadImage('data/pic3.jpg', setImage); + if (key == '4') loadImage('data/pic4.jpg', setImage); if (key == '5') sortMode = null; if (key == '6') sortMode = gd.HUE; @@ -93,3 +93,7 @@ function keyReleased() { if (key == '8') sortMode = gd.BRIGHTNESS; if (key == '9') sortMode = gd.GRAYSCALE; } + +function setImage(loadedImageFile) { + img = loadedImageFile; +} diff --git a/01_P/P_1_2_3_03/sketch.js b/01_P/P_1_2_3_03/sketch.js index 27d75f17..5b99eff7 100644 --- a/01_P/P_1_2_3_03/sketch.js +++ b/01_P/P_1_2_3_03/sketch.js @@ -34,7 +34,7 @@ var hueValues = []; var saturationValues = []; var brightnessValues = []; var actRandomSeed = 0; -var alphaValue = 27; +var alphaValue = 75; function setup() { createCanvas(windowWidth, windowHeight); @@ -119,8 +119,8 @@ function gradient(x, y, w, h, c1, c2) { var grd = ctx.createLinearGradient(x, y, x, y + h); grd.addColorStop(0, c1.toString()); grd.addColorStop(1, c2.toString()); - ctx.fillStyle = grd; - ctx.fillRect(x, y, w, h); + ctx.fillStyle = grd; + ctx.fillRect(x, y, w, h); } function mouseReleased() { diff --git a/01_P/P_1_2_3_04/sketch.js b/01_P/P_1_2_3_04/sketch.js index c012d305..dfae156c 100644 --- a/01_P/P_1_2_3_04/sketch.js +++ b/01_P/P_1_2_3_04/sketch.js @@ -34,7 +34,7 @@ var hueValues = []; var saturationValues = []; var brightnessValues = []; var actRandomSeed = 0; -var alphaValue = 27; +var alphaValue = 75; function setup() { createCanvas(windowWidth, windowHeight); @@ -121,8 +121,8 @@ function gradient(x, y, w, h, c1, c2) { var grd = ctx.createLinearGradient(x, y, x, y + h); grd.addColorStop(0, c1.toString()); grd.addColorStop(1, c2.toString()); - ctx.fillStyle = grd; - ctx.fillRect(x, y, w, h); + ctx.fillStyle = grd; + ctx.fillRect(x, y, w, h); } function mouseReleased() { diff --git a/01_P/P_1_2_3_05/sketch.js b/01_P/P_1_2_3_05/sketch.js index fc18a315..e533e1e6 100644 --- a/01_P/P_1_2_3_05/sketch.js +++ b/01_P/P_1_2_3_05/sketch.js @@ -101,7 +101,7 @@ function draw() { if (random() < 0.45) { var w = map(parts[ii], 0, sumPartsTotal, 0, width); - var h = rowHeight * 1.5 + var h = rowHeight * 1.5; var px1 = map(sumPartsNow, 0, sumPartsTotal, 0, width); var px2 = px1 + w; var py1 = rowHeight * i; @@ -126,8 +126,8 @@ function centerGradient(x1, y1, r1, x2, y2, r2, c1, c2) { var grd = ctx.createRadialGradient(cx, cy, r1, cx, cy, r2); grd.addColorStop(0, c1.toString()); grd.addColorStop(1, c2.toString()); - ctx.fillStyle = grd; - ctx.fillRect(x1, y1, x2 - x1, y2 - y1); + ctx.fillStyle = grd; + ctx.fillRect(x1, y1, x2 - x1, y2 - y1); } function mouseReleased() { diff --git a/01_P/P_2_0_01/sketch.js b/01_P/P_2_0_01/sketch.js index b866329d..04ab173f 100644 --- a/01_P/P_2_0_01/sketch.js +++ b/01_P/P_2_0_01/sketch.js @@ -32,15 +32,14 @@ function setup() { createCanvas(550, 550); strokeCap(SQUARE); - noFill(); } function draw() { background(255); translate(width / 2, height / 2); - var circleResolution = map(mouseY, 0, height, 2, 80); - var radius = mouseX - width / 2 + 0.5; + var circleResolution = int(map(mouseY, 0, height, 2, 80)); + var radius = mouseX - width / 2; var angle = TAU / circleResolution; strokeWeight(mouseY / 20); diff --git a/01_P/P_2_0_02/sketch.js b/01_P/P_2_0_02/sketch.js index 21abac9d..5db4c056 100644 --- a/01_P/P_2_0_02/sketch.js +++ b/01_P/P_2_0_02/sketch.js @@ -45,7 +45,7 @@ function draw() { translate(width / 2, height / 2); var circleResolution = int(map(mouseY + 100, 0, height, 2, 10)); - var radius = mouseX - width / 2 + 0.5; + var radius = mouseX - width / 2; var angle = TAU / circleResolution; beginShape(); @@ -55,6 +55,7 @@ function draw() { vertex(x, y); } endShape(); + pop(); } } diff --git a/01_P/P_2_0_03/sketch.js b/01_P/P_2_0_03/sketch.js index 5b17db88..20530357 100644 --- a/01_P/P_2_0_03/sketch.js +++ b/01_P/P_2_0_03/sketch.js @@ -69,7 +69,7 @@ function keyReleased() { if (keyCode == DELETE || keyCode == BACKSPACE) background(0, 0, 100); if (key == 's' || key == 'S') saveCanvas(gd.timestamp(), 'png'); - if (key == '1') strokeColor = color(0, 0, 0, 10); + if (key == '1') strokeColor = color(0, 10); if (key == '2') strokeColor = color(192, 100, 64, 10); if (key == '3') strokeColor = color(52, 100, 71, 10); } diff --git a/01_P/P_2_1_1_04/data/module_2.svg b/01_P/P_2_1_1_04/data/module_2.svg index 7df4a0bb..aa2431ca 100644 --- a/01_P/P_2_1_1_04/data/module_2.svg +++ b/01_P/P_2_1_1_04/data/module_2.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/01_P/P_2_1_1_04/sketch.js b/01_P/P_2_1_1_04/sketch.js index e000a87f..04f0054b 100644 --- a/01_P/P_2_1_1_04/sketch.js +++ b/01_P/P_2_1_1_04/sketch.js @@ -37,9 +37,9 @@ var tileCount = 10; var tileWidth; var tileHeight; -var shapeSize = 50.0; +var shapeSize = 50; var newShapeSize = shapeSize; -var shapeAngle = 0.0; +var shapeAngle = 0; var maxDist; var currentShape; var shapes; @@ -48,17 +48,18 @@ var sizeMode = 0; function preload() { shapes = []; - shapes.push(loadImage("data/module_1.svg")); - shapes.push(loadImage("data/module_2.svg")); - shapes.push(loadImage("data/module_3.svg")); - shapes.push(loadImage("data/module_4.svg")); - shapes.push(loadImage("data/module_5.svg")); - shapes.push(loadImage("data/module_6.svg")); - shapes.push(loadImage("data/module_7.svg")); + shapes.push(loadImage('data/module_1.svg')); + shapes.push(loadImage('data/module_2.svg')); + shapes.push(loadImage('data/module_3.svg')); + shapes.push(loadImage('data/module_4.svg')); + shapes.push(loadImage('data/module_5.svg')); + shapes.push(loadImage('data/module_6.svg')); + shapes.push(loadImage('data/module_7.svg')); } function setup() { createCanvas(600, 600); + imageMode(CENTER); // set the current shape to the first in the array currentShape = shapes[0]; tileWidth = width / tileCount; diff --git a/01_P/P_2_1_2_02/sketch.js b/01_P/P_2_1_2_02/sketch.js index bc3cfb90..665e9114 100644 --- a/01_P/P_2_1_2_02/sketch.js +++ b/01_P/P_2_1_2_02/sketch.js @@ -71,8 +71,8 @@ function draw() { var posX = width / tileCount * gridX; var posY = height / tileCount * gridY; - var shiftX = random(-1, 1) * mouseX / 20; - var shiftY = random(-1, 1) * mouseY / 20; + var shiftX = random(-1, 1) * mouseX / 20; + var shiftY = random(-1, 1) * mouseY / 20; fill(moduleColorBackground); ellipse(posX + shiftX, posY + shiftY, moduleRadiusBackground, moduleRadiusBackground); @@ -139,8 +139,8 @@ function keyReleased() { } if (key == '0') { - moduleRadiusBackground = 20; - moduleRadiusForeground = 10; + moduleRadiusBackground = 30; + moduleRadiusForeground = 15; moduleAlphaBackground = 100; moduleAlphaForeground = 100; moduleColorBackground = color(0, 0, 0, moduleAlphaBackground); diff --git a/01_P/P_2_1_2_03/sketch.js b/01_P/P_2_1_2_03/sketch.js index 3fddb479..556c1dba 100644 --- a/01_P/P_2_1_2_03/sketch.js +++ b/01_P/P_2_1_2_03/sketch.js @@ -29,7 +29,6 @@ 'use strict'; var tileCount = 20; -var actRandomSeed = 0; var moduleColor; var moduleAlpha = 180; @@ -45,8 +44,6 @@ function setup() { function draw() { clear(); - randomSeed(actRandomSeed); - stroke(moduleColor); for (var gridY = 0; gridY < width; gridY += 25) { @@ -55,16 +52,12 @@ function draw() { diameter = diameter / maxDistance * 40; push(); translate(gridX, gridY, diameter * 5); - rect(0, 0, diameter, diameter); // also nice: ellipse(...) + rect(0, 0, diameter, diameter); // also nice: ellipse(...) pop(); } } } -function mousePressed() { - actRandomSeed = random(100000); -} - function keyReleased() { if (key == 's' || key == 'S') saveCanvas(gd.timestamp(), 'png'); } diff --git a/01_P/P_2_1_3_01/sketch.js b/01_P/P_2_1_3_01/sketch.js index e211d357..3e8803a8 100644 --- a/01_P/P_2_1_3_01/sketch.js +++ b/01_P/P_2_1_3_01/sketch.js @@ -33,7 +33,7 @@ var count = 0; var tileCountX = 10; var tileCountY = 10; -var tileWidth = 0; +var tileWidth = 0; var tileHeight = 0; var colorStep = 15; diff --git a/01_P/P_2_1_3_02/sketch.js b/01_P/P_2_1_3_02/sketch.js index 62d3b380..1ff71325 100644 --- a/01_P/P_2_1_3_02/sketch.js +++ b/01_P/P_2_1_3_02/sketch.js @@ -48,7 +48,7 @@ function draw() { var tileCountX = mouseX / 30 + 1; var tileCountY = mouseY / 30 + 1; - var tileWidth = width / tileCountX; + var tileWidth = width / tileCountX; var tileHeight = height / tileCountY; for (var gridY = 0; gridY <= tileCountY; gridY++) { @@ -68,22 +68,22 @@ function draw() { for (var i = 0; i < count; i++) { // move end point around the four sides of the tile switch (side) { - case 0: - x2 += tileWidth / count; - y2 = 0; - break; - case 1: - x2 = tileWidth; - y2 += tileHeight / count; - break; - case 2: - x2 -= tileWidth / count; - y2 = tileHeight; - break; - case 3: - x2 = 0; - y2 -= tileHeight / count; - break; + case 0: + x2 += tileWidth / count; + y2 = 0; + break; + case 1: + x2 = tileWidth; + y2 += tileHeight / count; + break; + case 2: + x2 -= tileWidth / count; + y2 = tileHeight; + break; + case 3: + x2 = 0; + y2 -= tileHeight / count; + break; } // adjust weight and color of the line @@ -97,20 +97,20 @@ function draw() { // set colors depending on draw mode switch (drawMode) { - case 1: - backgroundColor = 255; - stroke(0); - break; - case 2: - backgroundColor = 255; - stroke(0); - strokeWeight(lineWeight); - break; - case 3: - backgroundColor = 0; - stroke(strokeColor); - strokeWeight(mouseX / 100); - break; + case 1: + backgroundColor = 255; + stroke(0); + break; + case 2: + backgroundColor = 255; + stroke(0); + strokeWeight(lineWeight); + break; + case 3: + backgroundColor = 0; + stroke(strokeColor); + strokeWeight(mouseX / 100); + break; } // draw the line diff --git a/01_P/P_2_1_3_03/sketch.js b/01_P/P_2_1_3_03/sketch.js index 2727d134..cf4adbe8 100644 --- a/01_P/P_2_1_3_03/sketch.js +++ b/01_P/P_2_1_3_03/sketch.js @@ -64,29 +64,29 @@ function draw() { // switch between modules switch (drawMode) { - case 1: - translate(-tileWidth / 2, -tileHeight / 2); - for (var i = 0; i < count; i++) { - line(0, (para + 0.5) * tileHeight, tileWidth, i * tileHeight / count); - line(0, i * tileHeight / count, tileWidth, tileHeight - (para + 0.5) * tileHeight); - } - break; - case 2: - for (var i = 0; i <= count; i++) { - line(para * tileWidth, para * tileHeight, tileWidth / 2, (i / count - 0.5) * tileHeight); - line(para * tileWidth, para * tileHeight, -tileWidth / 2, (i / count - 0.5) * tileHeight); - line(para * tileWidth, para * tileHeight, (i / count - 0.5) * tileWidth, tileHeight / 2); - line(para * tileWidth, para * tileHeight, (i / count - 0.5) * tileWidth, -tileHeight / 2); - } - break; - case 3: - for (var i = 0; i <= count; i++) { - line(0, para * tileHeight, tileWidth / 2, (i / count - 0.5) * tileHeight); - line(0, para * tileHeight, -tileWidth / 2, (i / count - 0.5) * tileHeight); - line(0, para * tileHeight, (i / count - 0.5) * tileWidth, tileHeight / 2); - line(0, para * tileHeight, (i / count - 0.5) * tileWidth, -tileHeight / 2); - } - break; + case 1: + translate(-tileWidth / 2, -tileHeight / 2); + for (var i = 0; i < count; i++) { + line(0, (para + 0.5) * tileHeight, tileWidth, i * tileHeight / count); + line(0, i * tileHeight / count, tileWidth, tileHeight - (para + 0.5) * tileHeight); + } + break; + case 2: + for (var i = 0; i <= count; i++) { + line(para * tileWidth, para * tileHeight, tileWidth / 2, (i / count - 0.5) * tileHeight); + line(para * tileWidth, para * tileHeight, -tileWidth / 2, (i / count - 0.5) * tileHeight); + line(para * tileWidth, para * tileHeight, (i / count - 0.5) * tileWidth, tileHeight / 2); + line(para * tileWidth, para * tileHeight, (i / count - 0.5) * tileWidth, -tileHeight / 2); + } + break; + case 3: + for (var i = 0; i <= count; i++) { + line(0, para * tileHeight, tileWidth / 2, (i / count - 0.5) * tileHeight); + line(0, para * tileHeight, -tileWidth / 2, (i / count - 0.5) * tileHeight); + line(0, para * tileHeight, (i / count - 0.5) * tileWidth, tileHeight / 2); + line(0, para * tileHeight, (i / count - 0.5) * tileWidth, -tileHeight / 2); + } + break; } pop(); diff --git a/01_P/P_2_1_3_04/sketch.js b/01_P/P_2_1_3_04/sketch.js index cea8f6e1..9142f96d 100644 --- a/01_P/P_2_1_3_04/sketch.js +++ b/01_P/P_2_1_3_04/sketch.js @@ -46,7 +46,6 @@ function setup() { function draw() { clear(); noFill(); - stroke(0); count = mouseX / 10 + 10; var para = mouseY / height; @@ -65,44 +64,45 @@ function draw() { // switch between modules switch (drawMode) { - case 1: - for (var i = 0; i < count; i++) { - rect(0, 0, tileWidth, tileHeight); - scale(1 - 3 / count); - rotate(para * 0.1); - } - break; - case 2: - noStroke(); - for (var i = 0; i < count; i++) { - var gradient = lerpColor(color(0, 0), color(166, 141, 5), i / count); - fill(gradient, i / count * 200); - rotate(QUARTER_PI); - rect(0, 0, tileWidth, tileHeight); - scale(1 - 3 / count); - rotate(para * 1.5); - } - break; - case 3: - noStroke(); - for (var i = 0; i < count; i++) { - var gradient = lerpColor(color(0, 130, 164), color(255), i / count); - fill(gradient, 170); - - push(); - translate(4 * i, 0); - ellipse(0, 0, tileWidth / 4, tileHeight / 4); - pop(); - - push(); - translate(-4 * i, 0); - ellipse(0, 0, tileWidth / 4, tileHeight / 4); - pop(); - - scale(1 - 1.5 / count); - rotate(para * 1.5); - } - break; + case 1: + stroke(0); + for (var i = 0; i < count; i++) { + rect(0, 0, tileWidth, tileHeight); + scale(1 - 3 / count); + rotate(para * 0.1); + } + break; + case 2: + noStroke(); + for (var i = 0; i < count; i++) { + var gradient = lerpColor(color(0, 0), color(166, 141, 5), i / count); + fill(gradient, i / count * 200); + rotate(QUARTER_PI); + rect(0, 0, tileWidth, tileHeight); + scale(1 - 3 / count); + rotate(para * 1.5); + } + break; + case 3: + noStroke(); + for (var i = 0; i < count; i++) { + var gradient = lerpColor(color(0, 130, 164), color(255), i / count); + fill(gradient, 170); + + push(); + translate(4 * i, 0); + ellipse(0, 0, tileWidth / 4, tileHeight / 4); + pop(); + + push(); + translate(-4 * i, 0); + ellipse(0, 0, tileWidth / 4, tileHeight / 4); + pop(); + + scale(1 - 1.5 / count); + rotate(para * 1.5); + } + break; } pop(); diff --git a/01_P/P_2_1_3_05/sketch.js b/01_P/P_2_1_3_05/sketch.js index 5d6330c3..46f74362 100644 --- a/01_P/P_2_1_3_05/sketch.js +++ b/01_P/P_2_1_3_05/sketch.js @@ -54,8 +54,8 @@ function draw() { randomSeed(actRandomSeed); - stepSize = mouseX / 10; - endSize = mouseY / 10; + stepSize = min(mouseX, width) / 10; + endSize = min(mouseY, height) / 10; for (var gridY = 0; gridY <= tileCountY; gridY++) { for (var gridX = 0; gridX <= tileCountX; gridX++) { @@ -69,10 +69,10 @@ function draw() { var diameter = map(i, 0, stepSize, tileWidth, endSize); fill(255 - i * colorStep); switch (heading) { - case 0: ellipse(posX + i, posY, diameter, diameter); break; - case 1: ellipse(posX, posY + i, diameter, diameter); break; - case 2: ellipse(posX - i, posY, diameter, diameter); break; - case 3: ellipse(posX, posY - i, diameter, diameter); break; + case 0: ellipse(posX + i, posY, diameter, diameter); break; + case 1: ellipse(posX, posY + i, diameter, diameter); break; + case 2: ellipse(posX - i, posY, diameter, diameter); break; + case 3: ellipse(posX, posY - i, diameter, diameter); break; } } } diff --git a/01_P/P_2_1_4_03/sketch.js b/01_P/P_2_1_4_03/sketch.js index 2de4123e..6fbceec3 100644 --- a/01_P/P_2_1_4_03/sketch.js +++ b/01_P/P_2_1_4_03/sketch.js @@ -28,7 +28,7 @@ * INSPIRED BY * [Dan Shiffman](http://shiffman.net/) */ -"use strict"; +'use strict'; var w = 600; var h = 600; var sliderCount; @@ -39,12 +39,11 @@ var padding = 10; var sliderMin = 0; var sliderMax = 100; - function setup() { createCanvas(800,800); // get the number of sliders based on w & h - sliderWidth = w/2; - sliderCount = ceil(sliderWidth/sliderHeight) + sliderWidth = w / 2; + sliderCount = ceil(sliderWidth / sliderHeight); noLoop(); } @@ -53,35 +52,35 @@ function draw() { background(48, 58, 118); // topleft - horizontal - for(var i = 0; i <= sliderCount; i++){ - var sval = map( i, sliderCount,0, sliderMin, sliderMax); + for (var i = 0; i <= sliderCount; i++){ + var sval = map(i, sliderCount,0, sliderMin, sliderMax); createSlider(sliderMin, sliderMax, sval) - .position(padding, i*sliderHeight + padding) - .style("width", sliderWidth+"px"); + .position(padding, i * sliderHeight + padding) + .style('width', sliderWidth + 'px'); } // bottomright - horizontal - for(var i = 0; i <= sliderCount; i++){ - var sval = map( i, sliderCount,0, sliderMin, sliderMax); + for (var i = 0; i <= sliderCount; i++){ + var sval = map(i, sliderCount,0, sliderMin, sliderMax); createSlider(sliderMin, sliderMax, sval) - .position(sliderWidth + padding*3, sliderWidth + padding*2 + i*sliderHeight) - .style("width", sliderWidth+"px"); + .position(sliderWidth + padding * 3, sliderWidth + padding * 2 + i * sliderHeight) + .style('width', sliderWidth + 'px'); } // topright - vertical - for(var i = 0; i <= sliderCount; i++){ - var sval = map( i, 0,sliderCount, sliderMin, sliderMax); + for (var i = 0; i <= sliderCount; i++){ + var sval = map(i, 0,sliderCount, sliderMin, sliderMax); createSlider(sliderMin, sliderMax, sval) - .position(sliderWidth/2 + padding*2 + i*sliderHeight, sliderWidth/2 + padding) - .style("width", sliderWidth+"px").style('transform', 'rotate('+90+'deg)'); + .position(sliderWidth / 2 + padding * 2 + i * sliderHeight, sliderWidth / 2 + padding) + .style('width', sliderWidth + 'px').style('transform', 'rotate(' + 90 + 'deg)'); } // bottomleft - vertical - for(var i = 0; i <= sliderCount; i++){ - var sval = map( i, sliderCount,0, sliderMin, sliderMax); + for (var i = 0; i <= sliderCount; i++){ + var sval = map(i, sliderCount,0, sliderMin, sliderMax); createSlider(sliderMin, sliderMax, sval) - .position(sliderWidth/2 - i*sliderHeight + padding*2, sliderWidth + sliderWidth/2 + padding*3) - .style("width", sliderWidth+"px").style('transform', 'rotate('+90+'deg)'); + .position(sliderWidth / 2 - i * sliderHeight + padding * 2, sliderWidth + sliderWidth / 2 + padding * 3) + .style('width', sliderWidth + 'px').style('transform', 'rotate(' + 90 + 'deg)'); } } diff --git a/01_P/P_2_1_4_04/sketch.js b/01_P/P_2_1_4_04/sketch.js index a758630e..e4e0a71b 100755 --- a/01_P/P_2_1_4_04/sketch.js +++ b/01_P/P_2_1_4_04/sketch.js @@ -38,7 +38,7 @@ function setup() { sliders = []; createCanvas(windowWidth, windowHeight); // init canvas with slider rose to the middle - sliders.push(new SliderRose(width/2, height/2)); + sliders.push(new SliderRose(width / 2, height / 2)); } function draw() { @@ -69,15 +69,15 @@ function SliderRose(_x, _y){ // define how many degrees to skip from 360 var skip = 20; // create sliders around a circle - for(var i =0; i < 360; i+=skip){ + for (var i = 0; i < 360; i += skip){ var sliderAngle = radians(i); - var x2 = cos(sliderAngle)*roseRadius; - var y2 = sin(sliderAngle)*roseRadius; + var x2 = cos(sliderAngle) * roseRadius; + var y2 = sin(sliderAngle) * roseRadius; // create the slider, position, and rotate - sliders[counter] = createSlider(0, 255, 50) + sliders[counter] = createSlider(0, 255, 50); sliders[counter].position(this.x1 + x2, this.y1 + y2); - sliders[counter].style('width', roseRadius +'px') - sliders[counter].style('transform', 'rotate('+i+'deg)'); + sliders[counter].style('width', roseRadius + 'px'); + sliders[counter].style('transform', 'rotate(' + i + 'deg)'); counter++; } @@ -86,15 +86,14 @@ function SliderRose(_x, _y){ // update the sliders according to a sin wave this.update = function(){ var offset = 0; - for(var i = 0; i < sliders.length; i++){ + for (var i = 0; i < sliders.length; i++){ // map the value along the sine wave to the slider values var x = map(sin(sinAngle + offset), -1, 1, 0, 255); sliders[i].value(x); offset += 0.050; } sinAngle += 0.1; - } + }; } - diff --git a/01_P/P_2_1_5_01/sketch.js b/01_P/P_2_1_5_01/sketch.js index 93c2cc14..17ac66f1 100644 --- a/01_P/P_2_1_5_01/sketch.js +++ b/01_P/P_2_1_5_01/sketch.js @@ -56,8 +56,8 @@ function draw() { var a = map(mouseX, 0, width, -0.5, 0.5); var s = map(mouseY, 0, height, 0.7, 1); - if (drawMode == 2) translate(x, 0); if (drawMode == 1) rotate(a); + if (drawMode == 2) translate(x, 0); scale(s); strokeWeight(2); @@ -72,8 +72,7 @@ function overlay() { for (var i = -w / 2; i < w / 2; i += 5) { line(i, -h / 2, i, h / 2); } - } - if (drawMode == 2) { + } else if (drawMode == 2) { for (var i = 0; i < w; i += 10) { ellipse(0, 0, i); } diff --git a/01_P/P_2_1_5_03/sketch.js b/01_P/P_2_1_5_03/sketch.js index f5e27a54..220e1ea9 100644 --- a/01_P/P_2_1_5_03/sketch.js +++ b/01_P/P_2_1_5_03/sketch.js @@ -82,7 +82,7 @@ function Shape(x1, y1, x2, y2, h, c) { push(); translate(this.x1, this.y1); rotate(a); - translate(0, - this.h / 2); + translate(0, -this.h / 2); for (var i = 0; i < this.h; i += density) { line(0, i, w, i); } diff --git a/01_P/P_2_1_5_04/sketch.js b/01_P/P_2_1_5_04/sketch.js index b7bf13d4..02c62d58 100644 --- a/01_P/P_2_1_5_04/sketch.js +++ b/01_P/P_2_1_5_04/sketch.js @@ -90,7 +90,7 @@ function Shape(h, c) { }; Shape.prototype.draw = function() { - stroke(this.c) + stroke(this.c); for (var i = -this.h / 2; i < this.h / 2; i += density) { beginShape(); this.shapePath.forEach(function(pos, index, shapePath) { diff --git a/01_P/P_2_2_2_02/sketch.js b/01_P/P_2_2_2_02/sketch.js index b89da0e0..2726ccdb 100644 --- a/01_P/P_2_2_2_02/sketch.js +++ b/01_P/P_2_2_2_02/sketch.js @@ -106,11 +106,11 @@ function draw() { var distance = dist(posX, posY, posXcross, posYcross); if (distance >= minLength) { - strokeWeight(distance / dWeight); - if (drawMode == 1) stroke(0); - if (drawMode == 2) stroke(52, 100, distance / dStroke); - if (drawMode == 3) stroke(192, 100, 64, distance / dStroke); - line(posX, posY, posXcross, posYcross); + strokeWeight(distance / dWeight); + if (drawMode == 1) stroke(0); + if (drawMode == 2) stroke(52, 100, distance / dStroke); + if (drawMode == 3) stroke(192, 100, 64, distance / dStroke); + line(posX, posY, posXcross, posYcross); } posXcross = posX; diff --git a/01_P/P_2_2_3_02/sketch.js b/01_P/P_2_2_3_02/sketch.js index 8a703f4a..ecce5bf8 100644 --- a/01_P/P_2_2_3_02/sketch.js +++ b/01_P/P_2_2_3_02/sketch.js @@ -83,35 +83,35 @@ function draw() { } switch (drawMode) { - case 1: // circle - beginShape(); - // start controlpoint - curveVertex(x[formResolution - 1] + centerX, y[formResolution - 1] + centerY); - - // only these points are drawn - for (var i = 0; i < formResolution; i++) { - curveVertex(x[i] + centerX, y[i] + centerY); - } - curveVertex(x[0] + centerX, y[0] + centerY); - - // end controlpoint - curveVertex(x[1] + centerX, y[1] + centerY); - endShape(); - break; - case 2: // line - beginShape(); - // start controlpoint - curveVertex(x[0] + centerX, y[0] + centerY); - - // only these points are drawn - for (var i = 0; i < formResolution; i++) { - curveVertex(x[i] + centerX, y[i] + centerY); - } - - // end controlpoint - curveVertex(x[formResolution - 1] + centerX, y[formResolution - 1] + centerY); - endShape(); - break; + case 1: // circle + beginShape(); + // start controlpoint + curveVertex(x[formResolution - 1] + centerX, y[formResolution - 1] + centerY); + + // only these points are drawn + for (var i = 0; i < formResolution; i++) { + curveVertex(x[i] + centerX, y[i] + centerY); + } + curveVertex(x[0] + centerX, y[0] + centerY); + + // end controlpoint + curveVertex(x[1] + centerX, y[1] + centerY); + endShape(); + break; + case 2: // line + beginShape(); + // start controlpoint + curveVertex(x[0] + centerX, y[0] + centerY); + + // only these points are drawn + for (var i = 0; i < formResolution; i++) { + curveVertex(x[i] + centerX, y[i] + centerY); + } + + // end controlpoint + curveVertex(x[formResolution - 1] + centerX, y[formResolution - 1] + centerY); + endShape(); + break; } } @@ -121,27 +121,27 @@ function mousePressed() { centerY = mouseY; switch (drawMode) { - case 1: // circle - var angle = radians(360 / formResolution); - var radius = initRadius * random(0.5, 1); - for (var i = 0; i < formResolution; i++) { - x[i] = cos(angle * i) * radius; - y[i] = sin(angle * i) * radius; - } - break; - case 2: // line - var radius = initRadius * random(0.5, 5); - var angle = random(PI); - - var x1 = cos(angle) * radius; - var y1 = sin(angle) * radius; - var x2 = cos(angle - PI) * radius; - var y2 = sin(angle - PI) * radius; - for (var i = 0; i < formResolution; i++) { - x[i] = lerp(x1, x2, i / formResolution); - y[i] = lerp(y1, y2, i / formResolution); - } - break; + case 1: // circle + var angle = radians(360 / formResolution); + var radius = initRadius * random(0.5, 1); + for (var i = 0; i < formResolution; i++) { + x[i] = cos(angle * i) * radius; + y[i] = sin(angle * i) * radius; + } + break; + case 2: // line + var radius = initRadius * random(0.5, 5); + var angle = random(PI); + + var x1 = cos(angle) * radius; + var y1 = sin(angle) * radius; + var x2 = cos(angle - PI) * radius; + var y2 = sin(angle - PI) * radius; + for (var i = 0; i < formResolution; i++) { + x[i] = lerp(x1, x2, i / formResolution); + y[i] = lerp(y1, y2, i / formResolution); + } + break; } } diff --git a/01_P/P_2_2_5_01/P_2_2_5_01.png b/01_P/P_2_2_5_01/P_2_2_5_01.png old mode 100755 new mode 100644 index d4fa9943..d5aafc11 Binary files a/01_P/P_2_2_5_01/P_2_2_5_01.png and b/01_P/P_2_2_5_01/P_2_2_5_01.png differ diff --git a/01_P/P_2_2_5_01/sketch.js b/01_P/P_2_2_5_01/sketch.js index 7ed4c811..35e5fe27 100644 --- a/01_P/P_2_2_5_01/sketch.js +++ b/01_P/P_2_2_5_01/sketch.js @@ -119,7 +119,7 @@ function Circle(x, y, r) { stroke(0); strokeWeight(1.5); ellipse(this.x, this.y, this.r); - } + }; } function keyPressed() { diff --git a/01_P/P_2_2_5_02/P_2_2_5_02.png b/01_P/P_2_2_5_02/P_2_2_5_02.png old mode 100755 new mode 100644 index cd6c3c39..6c4d1fff Binary files a/01_P/P_2_2_5_02/P_2_2_5_02.png and b/01_P/P_2_2_5_02/P_2_2_5_02.png differ diff --git a/01_P/P_2_2_5_02/sketch.js b/01_P/P_2_2_5_02/sketch.js index d9f8ccc7..7c700872 100644 --- a/01_P/P_2_2_5_02/sketch.js +++ b/01_P/P_2_2_5_02/sketch.js @@ -137,7 +137,7 @@ function Circle(x, y, r) { strokeWeight(1.5); ellipse(this.x, this.y, this.r); } - } + }; } function keyPressed() { diff --git a/01_P/P_2_2_6_01/sketch.js b/01_P/P_2_2_6_01/sketch.js index 27e0105a..db8c0ff0 100644 --- a/01_P/P_2_2_6_01/sketch.js +++ b/01_P/P_2_2_6_01/sketch.js @@ -147,12 +147,12 @@ function keyPressed() { } if (key == '+') { - speedRelation++; + speedRelation += 0.5; if (speedRelation > 5) speedRelation = 5; startDrawing(); } if (key == '-') { - speedRelation--; + speedRelation -= 0.5; if (speedRelation < 2) speedRelation = 2; startDrawing(); } diff --git a/01_P/P_2_2_6_01_class_version/sketch.js b/01_P/P_2_2_6_01_class_version/sketch.js index e7929bb1..a0ff0dad 100644 --- a/01_P/P_2_2_6_01_class_version/sketch.js +++ b/01_P/P_2_2_6_01_class_version/sketch.js @@ -52,7 +52,7 @@ function setup() { colorMode(HSB, 360, 100, 100, 100); noFill(); strokeWeight(1); - shape = new Shape(width / 2, height / 2, joints, lineLength, speedRelation); + startDrawing(); } function draw() { @@ -61,6 +61,10 @@ function draw() { shape.draw(); } +function startDrawing() { + shape = new Shape(width / 2, height / 2, joints, lineLength, speedRelation); +} + function Shape(x, y, joints, lineLength, speedRelation, speed) { this.center = createVector(x, y); @@ -130,43 +134,37 @@ function keyPressed() { if (key == 's' || key == 'S') saveCanvas(gd.timestamp(), 'png'); if (keyCode == DELETE || keyCode == BACKSPACE) { - shape = new Shape(width / 2, height / 2, joints, lineLength); + startDrawing(); } if (keyCode == UP_ARROW) { lineLength += 2; - shape.lineLength = lineLength; - shape = new Shape(width / 2, height / 2, joints, lineLength, speedRelation); + startDrawing(); } if (keyCode == DOWN_ARROW) { lineLength -= 2; - shape.lineLength = lineLength; - shape = new Shape(width / 2, height / 2, joints, lineLength, speedRelation); + startDrawing(); } if (keyCode == LEFT_ARROW) { joints--; if (joints < 1) joints = 1; - shape.joints = joints; - shape = new Shape(width / 2, height / 2, joints, lineLength, speedRelation); + startDrawing(); } if (keyCode == RIGHT_ARROW) { joints++; if (joints > 10) joints = 10; - shape.joints = joints; - shape = new Shape(width / 2, height / 2, joints, lineLength, speedRelation); + startDrawing(); } if (key == '+') { - speedRelation++; + speedRelation += 0.5; if (speedRelation > 5) speedRelation = 5; - shape.speedRelation = speedRelation; - shape = new Shape(width / 2, height / 2, joints, lineLength, speedRelation); + startDrawing(); } if (key == '-') { - speedRelation--; + speedRelation -= 0.5; if (speedRelation < 2) speedRelation = 2; - shape.speedRelation = speedRelation; - shape = new Shape(width / 2, height / 2, joints, lineLength, speedRelation); + startDrawing(); } if (key == '1') showPendulum = !showPendulum; diff --git a/01_P/P_2_2_6_02/sketch.js b/01_P/P_2_2_6_02/sketch.js index 4e678c72..23223385 100644 --- a/01_P/P_2_2_6_02/sketch.js +++ b/01_P/P_2_2_6_02/sketch.js @@ -179,7 +179,7 @@ function keyPressed() { joints = max(1, joints); } if (keyCode == RIGHT_ARROW) { - joints++ + joints++; joints = max(1, joints); }; @@ -187,6 +187,6 @@ function keyPressed() { if (key == '2') showPendulum = !showPendulum; if (key == '3') showPendulumPath = !showPendulumPath; - if (key == '+') speed++; - if (key == '-') speed--; + if (key == '+') speed += 0.5; + if (key == '-') speed -= 0.5; } diff --git a/01_P/P_2_2_6_03/sketch.js b/01_P/P_2_2_6_03/sketch.js index 3eb8a3cf..558df655 100644 --- a/01_P/P_2_2_6_03/sketch.js +++ b/01_P/P_2_2_6_03/sketch.js @@ -176,7 +176,7 @@ function Pendulum(size, hierarchy) { Pendulum.prototype.getTrail = function(offset, end) { if (this.pendulumArm) { if (end) { - end.add(this.end) + end.add(this.end); } else { end = this.end.copy(); } diff --git a/01_P/P_2_2_6_05/sketch.js b/01_P/P_2_2_6_05/sketch.js index c1a6a127..a039d151 100644 --- a/01_P/P_2_2_6_05/sketch.js +++ b/01_P/P_2_2_6_05/sketch.js @@ -58,7 +58,7 @@ var showPendulum = true; var showPendulumPath = true; var font = 'Georgia'; -var letters = "Sie hören nicht die folgenden Gesänge, Die Seelen, denen ich die ersten sang, Zerstoben ist das freundliche Gedränge, Verklungen ach! der erste Wiederklang."; +var letters = 'Sie hören nicht die folgenden Gesänge, Die Seelen, denen ich die ersten sang, Zerstoben ist das freundliche Gedränge, Verklungen ach! der erste Wiederklang.'; var fontSizeMin = 6; function setup() { @@ -204,7 +204,7 @@ function Pendulum(size, hierarchy) { Pendulum.prototype.getTrail = function(offset, end) { if (this.pendulumArm) { if (end) { - end.add(this.end) + end.add(this.end); } else { end = this.end.copy(); } diff --git a/01_P/P_2_3_1_01/sketch.js b/01_P/P_2_3_1_01/sketch.js index 036534c1..c2bacb5c 100644 --- a/01_P/P_2_3_1_01/sketch.js +++ b/01_P/P_2_3_1_01/sketch.js @@ -87,7 +87,7 @@ function keyReleased() { // change color if (key == ' ') c = color(random(255), random(255), random(255), random(80, 100)); - //default colors from 1 to 4 + // default colors from 1 to 4 if (key == '1') c = color(181, 157, 0); if (key == '2') c = color(0, 130, 164); if (key == '3') c = color(87, 35, 129); diff --git a/01_P/P_2_3_1_02/sketch.js b/01_P/P_2_3_1_02/sketch.js index 61105197..10d30df2 100644 --- a/01_P/P_2_3_1_02/sketch.js +++ b/01_P/P_2_3_1_02/sketch.js @@ -123,7 +123,7 @@ function keyReleased() { // change color if (key == ' ') c = color(random(255), random(255), random(255), random(80, 100)); - //default colors from 1 to 4 + // default colors from 1 to 4 if (key == '1') c = color(181, 157, 0); if (key == '2') c = color(0, 130, 164); if (key == '3') c = color(87, 35, 129); diff --git a/01_P/P_2_3_2_01/sketch.js b/01_P/P_2_3_2_01/sketch.js index 258fb369..3fcb8cd4 100644 --- a/01_P/P_2_3_2_01/sketch.js +++ b/01_P/P_2_3_2_01/sketch.js @@ -81,7 +81,7 @@ function mousePressed() { x = mouseX; y = mouseY; col = color(random(255), random(255), random(255), random(100)); - //lineLength = random(15, 50); + // lineLength = random(15, 50); } function keyReleased() { diff --git a/01_P/P_2_3_3_01/sketch.js b/01_P/P_2_3_3_01/sketch.js index 5293af8b..e170d537 100644 --- a/01_P/P_2_3_3_01/sketch.js +++ b/01_P/P_2_3_3_01/sketch.js @@ -36,7 +36,7 @@ var y = 0; var stepSize = 5.0; var font = 'Georgia'; -var letters = "All the world's a stage, and all the men and women merely players. They have their exits and their entrances."; +var letters = 'All the world\'s a stage, and all the men and women merely players. They have their exits and their entrances.'; var fontSizeMin = 3; var angleDistortion = 0.0; diff --git a/01_P/P_2_3_3_01_TABLET/sketch.js b/01_P/P_2_3_3_01_TABLET/sketch.js index bc50c671..2f3e8a33 100644 --- a/01_P/P_2_3_3_01_TABLET/sketch.js +++ b/01_P/P_2_3_3_01_TABLET/sketch.js @@ -38,13 +38,12 @@ var y = 0; var stepSize = 5.0; var font = 'Georgia'; -var letters = "All the world's a stage, and all the men and women merely players. They have their exits and their entrances."; +var letters = 'All the world\'s a stage, and all the men and women merely players. They have their exits and their entrances.'; var fontSizeMin = 3; var angleDistortion = 0.0; var counter = 0; - function setup() { // use full screen size createCanvas(displayWidth, displayHeight); diff --git a/01_P/P_2_3_5_01_TABLET/sketch.js b/01_P/P_2_3_5_01_TABLET/sketch.js index 66cf7d10..69e629d7 100644 --- a/01_P/P_2_3_5_01_TABLET/sketch.js +++ b/01_P/P_2_3_5_01_TABLET/sketch.js @@ -59,7 +59,7 @@ function setup() { frameRate(30); tablet = new gd.WacomTablet(); - //console.log(tablet.values()); + // console.log(tablet.values()); } function draw() { @@ -80,28 +80,28 @@ function draw() { var h2 = (-10 + random(10)) * (1.2 + penLength); switch (drawMode) { - case 1: - stroke(255); - strokeWeight(0.5); - fill(0); - break; - case 2: - stroke(255); - strokeWeight(0.5); - //noStroke(); - var white = color(255, 20); - var interColor = lerpColor(fromColor, toColor, random(0, 1)); - fill(lerpColor(white, interColor, pressure)); - break; - case 3: - var julia = int(map(pressure, 0, 1, 0, 255)); - fill(0, julia); - stroke(255); - strokeWeight(0.5); - elementLength = penLength * 50; - h1 = random(5) + elementLength/2; - h2 = (random(5) + elementLength/2) * -1; - break; + case 1: + stroke(255); + strokeWeight(0.5); + fill(0); + break; + case 2: + stroke(255); + strokeWeight(0.5); + // noStroke(); + var white = color(255, 20); + var interColor = lerpColor(fromColor, toColor, random(0, 1)); + fill(lerpColor(white, interColor, pressure)); + break; + case 3: + var julia = int(map(pressure, 0, 1, 0, 255)); + fill(0, julia); + stroke(255); + strokeWeight(0.5); + elementLength = penLength * 50; + h1 = random(5) + elementLength / 2; + h2 = (random(5) + elementLength / 2) * -1; + break; } var pointsX = []; diff --git a/01_P/P_2_3_6_01/sketch.js b/01_P/P_2_3_6_01/sketch.js index 4da832b3..7bfcec88 100644 --- a/01_P/P_2_3_6_01/sketch.js +++ b/01_P/P_2_3_6_01/sketch.js @@ -41,7 +41,7 @@ var gridResolutionY; var tiles = []; var doDrawGrid = true; -var debugMode = false; +var isDebugMode = false; function preload() { // load SVG modules @@ -51,7 +51,7 @@ function preload() { // for (var i = 0; i < 16; i++) { // modules[i] = loadImage('data/' + nf(i, 2) + '.svg'); // } - + // METHOD 2: Read files one-by-one modules[0] = loadImage('data/00.svg'); modules[1] = loadImage('data/01.svg'); @@ -69,7 +69,7 @@ function preload() { modules[13] = loadImage('data/13.svg'); modules[14] = loadImage('data/14.svg'); modules[15] = loadImage('data/15.svg'); - + } function setup() { @@ -133,7 +133,7 @@ function drawGrid() { var posX = tileSize * gridX - tileSize / 2; var posY = tileSize * gridY - tileSize / 2; fill(255); - if (debugMode) { + if (isDebugMode) { if (tiles[gridX][gridY] == 1) fill(220); } rect(posX, posY, tileSize, tileSize); @@ -164,7 +164,7 @@ function drawModules() { // decimalResult is also the index for the shape array image(modules[decimalResult], posX, posY, tileSize, tileSize); - if (debugMode) { + if (isDebugMode) { fill(150); text(decimalResult + '\n' + binaryResult, posX, posY); } @@ -178,5 +178,5 @@ function keyPressed() { if (keyCode == DELETE || keyCode == BACKSPACE) initTiles(); if (key == 'g' || key == 'G') doDrawGrid = !doDrawGrid; - if (key == 'd' || key == 'D') debugMode = !debugMode; + if (key == 'd' || key == 'D') isDebugMode = !isDebugMode; } diff --git a/01_P/P_2_3_6_02/sketch.js b/01_P/P_2_3_6_02/sketch.js index 30f302a7..4c6e84fe 100644 --- a/01_P/P_2_3_6_02/sketch.js +++ b/01_P/P_2_3_6_02/sketch.js @@ -51,7 +51,7 @@ var activeTileColor; var doDrawGrid = true; var randomMode = false; -var debugMode = false; +var isDebugMode = false; function preload() { modules = []; @@ -142,7 +142,7 @@ function drawGrid() { var posX = tileSize * gridX - tileSize / 2; var posY = tileSize * gridY - tileSize / 2; fill(360); - if (debugMode) { + if (isDebugMode) { if (tiles[gridX][gridY] == 1) fill(80); } stroke(0); @@ -156,7 +156,7 @@ function drawModules() { for (var gridY = 1; gridY < gridResolutionY - 1; gridY++) { // use only active tiles var currentTile = tiles[gridX][gridY]; - if (tiles[gridX][gridY] != 0) { + if (tiles[gridX][gridY] != 0) { var binaryResult = ''; // check the four neightbours, each can be true or false // create a binary result out of it, eg. 1011 @@ -196,7 +196,7 @@ function drawModules() { // decimalResult is also the index for the shape array image(modules[tileType[gridX][gridY]][decimalResult], posX, posY, tileSize, tileSize); - if (debugMode) { + if (isDebugMode) { fill(60); text(currentTile + '\n' + decimalResult + '\n' + binaryResult, posX, posY); } @@ -210,7 +210,7 @@ function keyPressed() { if (keyCode == DELETE || keyCode == BACKSPACE) initTiles(); if (key == 'g' || key == 'G') doDrawGrid = !doDrawGrid; - if (key == 'd' || key == 'D') debugMode = !debugMode; + if (key == 'd' || key == 'D') isDebugMode = !isDebugMode; if (key == 'r' || key == 'R') randomMode = !randomMode; if (key == '1') activeModuleSet = 'A'; diff --git a/01_P/P_2_3_7_01/sketch.js b/01_P/P_2_3_7_01/sketch.js index 3cce9a1d..ccd87b0e 100644 --- a/01_P/P_2_3_7_01/sketch.js +++ b/01_P/P_2_3_7_01/sketch.js @@ -143,10 +143,10 @@ function draw() { // draw pen fill(lineColor); noStroke(); - ellipse(mouseX, mouseY, lineWidth + 2, lineWidth + 2) + ellipse(mouseX, mouseY, lineWidth + 2, lineWidth + 2); stroke(0, 50); noFill(); - ellipse(mouseX, mouseY, lineWidth + 1, lineWidth + 1) + ellipse(mouseX, mouseY, lineWidth + 1, lineWidth + 1); } } diff --git a/01_P/P_2_3_7_02_TABLET/sketch.js b/01_P/P_2_3_7_02_TABLET/sketch.js index b27f6006..5dd79603 100644 --- a/01_P/P_2_3_7_02_TABLET/sketch.js +++ b/01_P/P_2_3_7_02_TABLET/sketch.js @@ -169,10 +169,10 @@ function draw() { // draw pen fill(lineColor); noStroke(); - ellipse(mouseX, mouseY, lineWidth + 2, lineWidth + 2) + ellipse(mouseX, mouseY, lineWidth + 2, lineWidth + 2); stroke(0, 50); noFill(); - ellipse(mouseX, mouseY, lineWidth + 1, lineWidth + 1) + ellipse(mouseX, mouseY, lineWidth + 1, lineWidth + 1); } diff --git a/01_P/P_3_1_1_01/sketch.js b/01_P/P_3_1_1_01/sketch.js index 5474b828..9fdd2736 100644 --- a/01_P/P_3_1_1_01/sketch.js +++ b/01_P/P_3_1_1_01/sketch.js @@ -36,7 +36,7 @@ var minFontSize = 15; var maxFontSize = 800; var newFontSize = 0; -var pMillis; +var pMillis = 0; var maxTimeDelta = 5000.0; var spacing = 2; // line height @@ -55,8 +55,6 @@ function setup() { for (var i = 0; i < textTyped.length; i++) { fontSizes[i] = minFontSize; } - - pMillis = millis(); } function draw() { @@ -105,24 +103,16 @@ function keyReleased() { if (keyCode == CONTROL) saveCanvas(gd.timestamp(), 'png'); } -function keyPressed() { - switch(keyCode) { - case DELETE: - case BACKSPACE: - if (textTyped.length > 0) { - textTyped = textTyped.substring(0, max(0, textTyped.length - 1)); - fontSizes.pop(); - } - break; - } - - // reset timer - pMillis = millis(); -} - function keyTyped() { if (keyCode >= 32) { textTyped += key; fontSizes.push(newFontSize); + } else if (keyCode == BACKSPACE || keyCode == DELETE) { + if (textTyped.length > 0) { + textTyped = textTyped.substring(0, max(0, textTyped.length - 1)); + fontSizes.pop(); + } } + // reset timer + pMillis = millis(); } diff --git a/01_P/P_3_1_2_01/sketch.js b/01_P/P_3_1_2_01/sketch.js index 43a7b297..da4bebab 100644 --- a/01_P/P_3_1_2_01/sketch.js +++ b/01_P/P_3_1_2_01/sketch.js @@ -38,15 +38,15 @@ var textTyped = ''; var font; -var shapeSpace +var shapeSpace; var shapeSpace2; -var shapePeriod +var shapePeriod; var shapeComma; -var shapeQuestionmark -var shapeExclamationmark +var shapeQuestionmark; +var shapeExclamationmark; var shapeReturn; -var centerX +var centerX; var centerY; var offsetX; var offsetY; @@ -68,15 +68,15 @@ function preload() { function setup() { createCanvas(windowWidth, windowHeight); - textTyped += "Ich bin der Musikant mit Taschenrechner in der Hand!\n\n"; - textTyped += "Ich addiere\n"; - textTyped += "Und subtrahiere, \n\n"; - textTyped += "Kontrolliere\nUnd komponiere\nUnd wenn ich diese Taste drück,\nSpielt er ein kleines Musikstück?\n\n"; + textTyped += 'Ich bin der Musikant mit Taschenrechner in der Hand!\n\n'; + textTyped += 'Ich addiere\n'; + textTyped += 'Und subtrahiere, \n\n'; + textTyped += 'Kontrolliere\nUnd komponiere\nUnd wenn ich diese Taste drück,\nSpielt er ein kleines Musikstück?\n\n'; - textTyped += "Ich bin der Musikant mit Taschenrechner in der Hand!\n\n"; - textTyped += "Ich addiere\n"; - textTyped += "Und subtrahiere, \n\n"; - textTyped += "Kontrolliere\nUnd komponiere\nUnd wenn ich diese Taste drück,\nSpielt er ein kleines Musikstück?\n\n"; + textTyped += 'Ich bin der Musikant mit Taschenrechner in der Hand!\n\n'; + textTyped += 'Ich addiere\n'; + textTyped += 'Und subtrahiere, \n\n'; + textTyped += 'Kontrolliere\nUnd komponiere\nUnd wenn ich diese Taste drück,\nSpielt er ein kleines Musikstück?\n\n'; centerX = width / 2; centerY = height / 2; @@ -117,54 +117,54 @@ function draw() { // ------ letter rule table ------ switch (letter) { - case ' ': // space - // 50% left, 50% right - var dir = floor(random(0, 2)); - if (dir == 0) { - image(shapeSpace, 1, -15); - translate(4, 1); - rotate(QUARTER_PI); - } - if (dir == 1) { - image(shapeSpace2, 1, -15); - translate(14, -5); - rotate(-QUARTER_PI); - } - break; - - case ',': - image(shapeComma, 1, -15); - translate(35, 15); + case ' ': // space + // 50% left, 50% right + var dir = floor(random(0, 2)); + if (dir == 0) { + image(shapeSpace, 1, -15); + translate(4, 1); rotate(QUARTER_PI); - break; + } + if (dir == 1) { + image(shapeSpace2, 1, -15); + translate(14, -5); + rotate(-QUARTER_PI); + } + break; - case '.': - image(shapePeriod, 1, -55); - translate(56, -56); - rotate(-HALF_PI); - break; + case ',': + image(shapeComma, 1, -15); + translate(35, 15); + rotate(QUARTER_PI); + break; - case '!': - image(shapeExclamationmark, 1, -27); - translate(42.5, -17.5); - rotate(-QUARTER_PI); - break; + case '.': + image(shapePeriod, 1, -55); + translate(56, -56); + rotate(-HALF_PI); + break; - case '?': - image(shapeQuestionmark, 1, -27); - translate(42.5, -17.5); - rotate(-QUARTER_PI); - break; + case '!': + image(shapeExclamationmark, 1, -27); + translate(42.5, -17.5); + rotate(-QUARTER_PI); + break; - case '\n': // return - image(shapeReturn, 1, -15); - translate(1, 10); - rotate(PI); - break; + case '?': + image(shapeQuestionmark, 1, -27); + translate(42.5, -17.5); + rotate(-QUARTER_PI); + break; - default: // all others - text(letter, 0, 0); - translate(letterWidth, 0); + case '\n': // return + image(shapeReturn, 1, -15); + translate(1, 10); + rotate(PI); + break; + + default: // all others + text(letter, 0, 0); + translate(letterWidth, 0); } } @@ -172,13 +172,11 @@ function draw() { if (frameCount / 6 % 2 == 0) rect(0, 0, 15, 2); } - function mousePressed() { offsetX = mouseX - centerX; offsetY = mouseY - centerY; } - function keyReleased() { // export png if (keyCode == CONTROL) saveCanvas(gd.timestamp(), 'png'); @@ -187,22 +185,22 @@ function keyReleased() { function keyPressed() { switch (keyCode) { - case DELETE: - case BACKSPACE: - textTyped = textTyped.substring(0, max(0, textTyped.length - 1)); - print(textTyped); - break; - case ENTER: - case RETURN: - // enable linebreaks - textTyped += '\n'; - break; - case UP_ARROW: - zoom += 0.05; - break; - case DOWN_ARROW: - zoom -= 0.05; - break; + case DELETE: + case BACKSPACE: + textTyped = textTyped.substring(0, max(0, textTyped.length - 1)); + print(textTyped); + break; + case ENTER: + case RETURN: + // enable linebreaks + textTyped += '\n'; + break; + case UP_ARROW: + zoom += 0.05; + break; + case DOWN_ARROW: + zoom -= 0.05; + break; } } diff --git a/01_P/P_3_1_2_02/sketch.js b/01_P/P_3_1_2_02/sketch.js index eff399ea..f5ec7629 100644 --- a/01_P/P_3_1_2_02/sketch.js +++ b/01_P/P_3_1_2_02/sketch.js @@ -139,107 +139,107 @@ function draw() { // ------ letter rule table ------ switch (letter) { - case ' ': //space - var dir = floor(random(5)); - if (dir == 0) { - image(shapeSpace, 0, -15); - translate(2, 0); - rotate(QUARTER_PI); - } - if (dir == 1) { - image(shapeSpace2, 0, -15); - translate(13, -5); - rotate(-QUARTER_PI); - } - break; - - case ',': - image(shapeComma, 0, -15); - translate(33, 15); + case ' ': // space + var dir = floor(random(5)); + if (dir == 0) { + image(shapeSpace, 0, -15); + translate(2, 0); rotate(QUARTER_PI); - break; + } + if (dir == 1) { + image(shapeSpace2, 0, -15); + translate(13, -5); + rotate(-QUARTER_PI); + } + break; - case '.': - image(shapePeriod, 0, -56); - translate(56, -56); - rotate(-HALF_PI); - break; + case ',': + image(shapeComma, 0, -15); + translate(33, 15); + rotate(QUARTER_PI); + break; - case '!': - image(shapeExclamationmark, 0, -30); - translate(43, -18); - rotate(-QUARTER_PI); - break; + case '.': + image(shapePeriod, 0, -56); + translate(56, -56); + rotate(-HALF_PI); + break; - case '?': - image(shapeQuestionmark, 0, -30); - translate(43, -18); - rotate(-QUARTER_PI); - break; - - case '\n': - // start a new line at a random position near the center - rect(0, -25, 10, 35); - pop(); - push(); - translate(random(-300, 300), random(-300, 300)); - rotate(floor(random(8))*QUARTER_PI); - actColorIndex = (actColorIndex + 1) % palette.length; - fill(palette[actColorIndex][0], palette[actColorIndex][1], palette[actColorIndex][2]); - rect(0, -25, 10, 35); - break; - - case 'o': // Station big - rect(0, -15, letterWidth + 1, 15); - push(); - fill(0); - var station = textTyped.substring(i - 10, i - 1); - station = station.toLowerCase(); - station = station.replace(/\s+/g, ''); - station = station.substring(0, 1).toUpperCase() + station.substring(1, station.length - 1); - text(station, -10, 40); - ellipse(-5, -7, 33, 33); - fill(255); - ellipse(-5, -7, 25, 25); - pop(); - translate(letterWidth, 0); - break; - - case 'a': // Station small left - rect(0, 0 - 15, letterWidth + 1, 25); - rect(0, 0 - 15, letterWidth + 1, 15); - translate(letterWidth, 0); - break; - - case 'u': // Station small right - rect(0, 0 - 25, letterWidth + 1, 25); - rect(0, 0 - 15, letterWidth + 1, 15); - translate(letterWidth, 0); - break; - - case ':': // icon - image(icon1, 0, -60, 30, 30); - break; - - case '+': // icon - image(icon2, 0, -60, 35, 30); - break; - - case '-': // icon - image(icon3, 0, -60, 30, 30); - break; - - case 'x': // icon - image(icon4, 0, -60, 30, 30); - break; - - case 'z': // icon - image(icon5, 0, -60, 30, 30); - break; - - default: // all others - rect(0, -15, letterWidth + 1, 15); - translate(letterWidth, 0); + case '!': + image(shapeExclamationmark, 0, -30); + translate(43, -18); + rotate(-QUARTER_PI); + break; + + case '?': + image(shapeQuestionmark, 0, -30); + translate(43, -18); + rotate(-QUARTER_PI); + break; + + case '\n': + // start a new line at a random position near the center + rect(0, -25, 10, 35); + pop(); + push(); + translate(random(-300, 300), random(-300, 300)); + rotate(floor(random(8)) * QUARTER_PI); + actColorIndex = (actColorIndex + 1) % palette.length; + fill(palette[actColorIndex][0], palette[actColorIndex][1], palette[actColorIndex][2]); + rect(0, -25, 10, 35); + break; + + case 'o': // Station big + rect(0, -15, letterWidth + 1, 15); + push(); + fill(0); + var station = textTyped.substring(i - 10, i - 1); + station = station.toLowerCase(); + station = station.replace(/\s+/g, ''); + station = station.substring(0, 1).toUpperCase() + station.substring(1, station.length - 1); + text(station, -10, 40); + ellipse(-5, -7, 33, 33); + fill(255); + ellipse(-5, -7, 25, 25); + pop(); + translate(letterWidth, 0); + break; + + case 'a': // Station small left + rect(0, 0 - 15, letterWidth + 1, 25); + rect(0, 0 - 15, letterWidth + 1, 15); + translate(letterWidth, 0); + break; + + case 'u': // Station small right + rect(0, 0 - 25, letterWidth + 1, 25); + rect(0, 0 - 15, letterWidth + 1, 15); + translate(letterWidth, 0); + break; + + case ':': // icon + image(icon1, 0, -60, 30, 30); + break; + + case '+': // icon + image(icon2, 0, -60, 35, 30); + break; + + case '-': // icon + image(icon3, 0, -60, 30, 30); + break; + + case 'x': // icon + image(icon4, 0, -60, 30, 30); + break; + + case 'z': // icon + image(icon5, 0, -60, 30, 30); + break; + + default: // all others + rect(0, -15, letterWidth + 1, 15); + translate(letterWidth, 0); } } @@ -262,21 +262,21 @@ function keyReleased() { function keyPressed() { switch (keyCode) { - case DELETE: - case BACKSPACE: - textTyped = textTyped.substring(0, textTyped.length - 1); - print(textTyped); - break; - case ENTER: - case RETURN: - textTyped += '\n'; - break; - case UP_ARROW: - zoom += 0.05; - break; - case DOWN_ARROW: - zoom -= 0.05; - break; + case DELETE: + case BACKSPACE: + textTyped = textTyped.substring(0, textTyped.length - 1); + print(textTyped); + break; + case ENTER: + case RETURN: + textTyped += '\n'; + break; + case UP_ARROW: + zoom += 0.05; + break; + case DOWN_ARROW: + zoom -= 0.05; + break; } } diff --git a/01_P/P_3_1_3_05/sketch.js b/01_P/P_3_1_3_05/sketch.js index 167236ff..26c78c0d 100644 --- a/01_P/P_3_1_3_05/sketch.js +++ b/01_P/P_3_1_3_05/sketch.js @@ -138,14 +138,14 @@ function setup() { createCanvas(windowWidth, windowHeight); colorMode(HSB, 360, 100, 100, 100); - textFont("monospace", 18); + textFont('monospace', 18); fill(0); for (var i = 0; i < allPOSTags.length; i++) { counters.push(0); } - joinedText = joinedText.join(" "); + joinedText = joinedText.join(' '); joinedText = joinedText.split(/\s+/); for (var i = 0; i < joinedText.length; i++) { diff --git a/01_P/P_3_1_4_01/sketch.js b/01_P/P_3_1_4_01/sketch.js index 8e658e32..9af45918 100644 --- a/01_P/P_3_1_4_01/sketch.js +++ b/01_P/P_3_1_4_01/sketch.js @@ -45,8 +45,8 @@ function preload() { function setup() { createCanvas(windowWidth, windowHeight); - //createCanvas(windowWidth, round(windowWidth*1.343)); - //createCanvas(windowWidth*2, round(windowWidth*1.343)*2); + // createCanvas(windowWidth, round(windowWidth*1.343)); + // createCanvas(windowWidth*2, round(windowWidth*1.343)*2); joinedText = joinedText.join(' '); @@ -54,7 +54,7 @@ function setup() { // joinedText = joinedText.replace(/\d+/g, ''); var words = joinedText.match(/\w+/g); - treemap = new gd.Treemap(1, 1, width - 3, height - 3, {sort:doSort, direction:rowDirection}); + treemap = new gd.Treemap(1, 1, width - 3, height - 3, {sort: doSort, direction: rowDirection}); // count words for (var i = 0; i < words.length; i++) { @@ -122,4 +122,3 @@ function keyTyped() { } } - diff --git a/01_P/P_3_1_4_02/sketch.js b/01_P/P_3_1_4_02/sketch.js index a7db75b5..b7902502 100644 --- a/01_P/P_3_1_4_02/sketch.js +++ b/01_P/P_3_1_4_02/sketch.js @@ -49,8 +49,8 @@ function preload() { function setup() { createCanvas(windowWidth, windowHeight); - //createCanvas(windowWidth, round(windowWidth*1.343)); - //createCanvas(windowWidth*2, round(windowWidth*1.343)*2); + // createCanvas(windowWidth, round(windowWidth*1.343)); + // createCanvas(windowWidth*2, round(windowWidth*1.343)*2); joinedText = joinedText.join(' '); // If you want to get rid of all number chars too, just uncomment the following line @@ -126,8 +126,6 @@ function draw() { noLoop(); } - - function keyTyped() { // export png if (key == 's' || key == 'S') saveCanvas(gd.timestamp(), 'png'); @@ -159,8 +157,8 @@ function keyTyped() { // number key 1 - 9 if (keyCode >= 49 && keyCode <= 57) { - var num = keyCode - 48 - // search for the pressed number in the ignore array + var num = keyCode - 48; + // search for the pressed number in the ignore array var i = treemap.options.ignore.indexOf(num); if (i >= 0) { // found value, so remove it @@ -178,9 +176,8 @@ function keyTyped() { loop(); } - } function keyPressed() { - //if (keyCode == RIGHT_ARROW); + // if (keyCode == RIGHT_ARROW); } diff --git a/01_P/P_3_2_1_01/sketch.js b/01_P/P_3_2_1_01/sketch.js index ef68ad90..591d7463 100644 --- a/01_P/P_3_2_1_01/sketch.js +++ b/01_P/P_3_2_1_01/sketch.js @@ -29,7 +29,7 @@ * ctrl : save png */ -var textTyped = "Type ...!"; +var textTyped = 'Type ...!'; var font; diff --git a/01_P/P_3_2_1_02/sketch.js b/01_P/P_3_2_1_02/sketch.js index 61b45bc5..64d27c20 100644 --- a/01_P/P_3_2_1_02/sketch.js +++ b/01_P/P_3_2_1_02/sketch.js @@ -36,7 +36,7 @@ var doSave = false; -var textTyped = "Type...!"; +var textTyped = 'Type...!'; var font; @@ -44,8 +44,8 @@ var shapeSet = 0; var module1, module2; function preload() { - module1 = loadImage("data/A_01.svg"); - module2 = loadImage("data/A_02.svg"); + module1 = loadImage('data/A_01.svg'); + module2 = loadImage('data/A_02.svg'); } function setup() { @@ -140,22 +140,22 @@ function keyPressed() { if (keyCode == ALT) { shapeSet = (shapeSet + 1) % 4; switch (shapeSet) { - case 0: - module1 = loadImage("data/A_01.svg"); - module2 = loadImage("data/A_02.svg"); - break; - case 1: - module1 = loadImage("data/B_01.svg"); - module2 = loadImage("data/B_02.svg"); - break; - case 2: - module1 = loadImage("data/C_01.svg"); - module2 = loadImage("data/C_02.svg"); - break; - case 3: - module1 = loadImage("data/D_01.svg"); - module2 = loadImage("data/D_02.svg"); - break; + case 0: + module1 = loadImage('data/A_01.svg'); + module2 = loadImage('data/A_02.svg'); + break; + case 1: + module1 = loadImage('data/B_01.svg'); + module2 = loadImage('data/B_02.svg'); + break; + case 2: + module1 = loadImage('data/C_01.svg'); + module2 = loadImage('data/C_02.svg'); + break; + case 3: + module1 = loadImage('data/D_01.svg'); + module2 = loadImage('data/D_02.svg'); + break; } } } diff --git a/01_P/P_3_2_3_01/sketch.js b/01_P/P_3_2_3_01/sketch.js index 9f740a85..76ae0119 100644 --- a/01_P/P_3_2_3_01/sketch.js +++ b/01_P/P_3_2_3_01/sketch.js @@ -123,7 +123,7 @@ function getPoints() { path = g.resampleByLength(path, 25); textW = path.bounds().width; // remove all commands without a coordinate - for (var i = path.commands.length-1; i >= 0 ; i--) { + for (var i = path.commands.length - 1; i >= 0 ; i--) { if (path.commands[i].x == undefined) { path.commands.splice(i, 1); } @@ -147,23 +147,23 @@ function keyReleased() { function keyPressed() { switch (keyCode) { - case ENTER: - case RETURN: - typedKey = ''; - pnts = getPoints(typedKey); - letterY += lineSpacing; - letterX = 50; - break; - case BACKSPACE: - case DELETE: - background(255); - typedKey = ''; - pnts = getPoints(typedKey); - letterX = 50; - letterY = lineSpacing; - freeze = false; - loop(); - break; + case ENTER: + case RETURN: + typedKey = ''; + pnts = getPoints(typedKey); + letterY += lineSpacing; + letterX = 50; + break; + case BACKSPACE: + case DELETE: + background(255); + typedKey = ''; + pnts = getPoints(typedKey); + letterX = 50; + letterY = lineSpacing; + freeze = false; + loop(); + break; } } diff --git a/01_P/P_3_2_4_01/sketch.js b/01_P/P_3_2_4_01/sketch.js index 744d7224..e1e5afd5 100644 --- a/01_P/P_3_2_4_01/sketch.js +++ b/01_P/P_3_2_4_01/sketch.js @@ -120,7 +120,7 @@ function Letter(char, x, y) { endShape(CLOSE); } - } + }; } function keyReleased() { diff --git a/01_P/P_3_2_5_01/sketch.js b/01_P/P_3_2_5_01/sketch.js index dfb5e093..11d2a9c4 100644 --- a/01_P/P_3_2_5_01/sketch.js +++ b/01_P/P_3_2_5_01/sketch.js @@ -32,16 +32,16 @@ * CONTRIBUTED BY * [Joey Lee](http://jk-lee.com) */ -"use strict"; +'use strict'; var font; -var textTyped = "TYPE & CODE" +var textTyped = 'TYPE & CODE'; var drawMode = 1; var fontSize = 250; var padding = 10; var nOff = 0; -var pointDensity= 8; +var pointDensity = 8; var colors; @@ -49,7 +49,7 @@ var paths; var textImg; function preload() { - font = loadFont("data/FiraSansCompressed-Bold.otf"); + font = loadFont('data/FiraSansCompressed-Bold.otf'); } function setup() { @@ -69,7 +69,7 @@ function setupText() { textImg.pixelDensity(1); textImg.background(255); textImg.textFont(font); - textImg.textSize(fontSize) + textImg.textSize(fontSize); textImg.text(textTyped, 100, fontSize + 50); textImg.loadPixels(); } @@ -88,7 +88,7 @@ function draw() { if (r < 128) { - if(drawMode == 1){ + if (drawMode == 1){ strokeWeight(1); var noiseFac = map(mouseX, 0, width, 0, 1); @@ -110,14 +110,14 @@ function draw() { pop(); } - if(drawMode ==2){ + if (drawMode == 2){ stroke(0, 0, 0); strokeWeight(1); noStroke(); push(); translate(x, y); - var num = noise((x+nOff)/10, y/10); + var num = noise((x + nOff) / 10, y / 10); if (num < 0.6) { fill(colors[0]); @@ -127,13 +127,13 @@ function draw() { fill(colors[2]); } - var w = noise((x-nOff)/10, (y+nOff*0.1)/10) * 20; - var h = noise((x-nOff)/10, (y+nOff*0.1)/10) * 10; + var w = noise((x - nOff) / 10, (y + nOff * 0.1) / 10) * 20; + var h = noise((x - nOff) / 10, (y + nOff * 0.1) / 10) * 10; ellipse(0, 0, w, h); // rect() is cool too pop(); } - if(drawMode ==3){ + if (drawMode == 3){ stroke(0, 0, 0); strokeWeight(1); noStroke(); @@ -141,46 +141,46 @@ function draw() { var num = random(1); if (num < 0.6) { - fill(colors[0]) + fill(colors[0]); } else if (num < 0.7) { - fill(colors[1]) + fill(colors[1]); } else { - fill(colors[2]) + fill(colors[2]); } push(); beginShape(); - for(var i =0; i < 3; i ++){ - var ox = (noise((i*1000 + x-nOff)/30, (i*3000 + y+nOff)/30) - 0.5) * pointDensity*6; - var oy = (noise((i*2000 + x-nOff)/30, (i*4000 + y+nOff)/30) - 0.5) * pointDensity*6; + for (var i = 0; i < 3; i++){ + var ox = (noise((i * 1000 + x - nOff) / 30, (i * 3000 + y + nOff) / 30) - 0.5) * pointDensity * 6; + var oy = (noise((i * 2000 + x - nOff) / 30, (i * 4000 + y + nOff) / 30) - 0.5) * pointDensity * 6; vertex(x + ox, y + oy); } - endShape(CLOSE) + endShape(CLOSE); pop(); } - if(drawMode ==4){ + if (drawMode == 4){ stroke(colors[0]); strokeWeight(3); - point(x-10, y-10); + point(x - 10, y - 10); point(x, y); - point(x+10, y+10); + point(x + 10, y + 10); - for(var i = 0; i < 5; i++){ + for (var i = 0; i < 5; i++){ if (i == 1) { stroke(colors[1]); } else if (i == 3) { stroke(colors[2]); } - if(i%2 ==0){ - var ox = noise((10000 + i*100 + x-nOff)/10) * 10; - var oy = noise((20000 + i*100 + x-nOff)/10) * 10; + if (i % 2 == 0){ + var ox = noise((10000 + i * 100 + x - nOff) / 10) * 10; + var oy = noise((20000 + i * 100 + x - nOff) / 10) * 10; point(x + ox, y + oy); - }else{ - var ox = noise((30000 + i*100 + x-nOff)/10) * 10; - var oy = noise((40000 + i*100 + x-nOff)/10) * 10; + } else { + var ox = noise((30000 + i * 100 + x - nOff) / 10) * 10; + var oy = noise((40000 + i * 100 + x - nOff) / 10) * 10; point(x - ox, y - oy); } } @@ -190,18 +190,17 @@ function draw() { } } - } function keyPressed() { if (keyCode === CONTROL) saveCanvas(gd.timestamp(), 'png'); if (keyCode === DELETE || keyCode === BACKSPACE) { - textTyped = textTyped.substring(0,max(0,textTyped.length-1)); + textTyped = textTyped.substring(0,max(0,textTyped.length - 1)); setupText(); } if (keyCode === ENTER || keyCode === RETURN) { - textTyped += "\n"; + textTyped += '\n'; setupText(); } if (keyCode === LEFT_ARROW) { diff --git a/01_P/P_3_2_5_02/sketch.js b/01_P/P_3_2_5_02/sketch.js index ec0ba5c1..2838ccb3 100644 --- a/01_P/P_3_2_5_02/sketch.js +++ b/01_P/P_3_2_5_02/sketch.js @@ -31,11 +31,10 @@ * [Joey Lee](http://jk-lee.com) */ -"use strict"; +'use strict'; var aniLetters; - function setup() { createCanvas(800,800); strokeWeight(1); @@ -46,8 +45,8 @@ function setup() { aniLetters = new AniLetters(40, 100); // initialize with a message - aniLetters.textTyped.push( aniLetters.addText("TYPE")) - aniLetters.textTyped.push( aniLetters.addText("CODE")) + aniLetters.textTyped.push(aniLetters.addText('TYPE')); + aniLetters.textTyped.push(aniLetters.addText('CODE')); } @@ -75,48 +74,47 @@ function AniLetters(_lwidth, _lheight){ that.lineCount = 0; that.aniSteps = 20; that.drawMode = 3; - that.cursorLocation = {x:50, y:50}; + that.cursorLocation = {x: 50, y: 50}; that.letterPadding = 60; that.style = 1; - /* Data Handling */ // set the lineCount to the number of "lines" or text object in the textTyped Array this.getLineCount = function(){ - if(that.textTyped.length > 0){ - that.lineCount = that.textTyped.length -1; - } else{ + if (that.textTyped.length > 0){ + that.lineCount = that.textTyped.length - 1; + } else { that.lineCount = 0; } - } + }; // get each data path of the letters this.getPaths = function(){ that.paths = []; that.textTyped.forEach(function(txt, idx){ - txt.text.split("").forEach(function(d, i){ + txt.text.split('').forEach(function(d, i){ var pathData = { letter: d.toUpperCase(), x: that.cursorLocation.x + (that.letterWidth + that.letterPadding * i), - y: that.cursorLocation.y + (that.letterHeight * idx), + y: that.cursorLocation.y + (that.letterHeight * idx) }; that.paths.push(pathData); - }) - }) - } + }); + }); + }; // add a text object for each line this.addText = function(_text){ - var textObject = {counter: 0, text:_text} + var textObject = {counter: 0, text: _text}; return textObject; - } + }; /* Keyboard interactions @@ -127,81 +125,79 @@ function AniLetters(_lwidth, _lheight){ var textTypedCounter = that.lineCount; // remove letters from each object if (textTypedCounter >= 0 && that.textTyped[0].text.length > 0){ - that.textTyped[textTypedCounter].text = that.textTyped[textTypedCounter].text.substring(0,max(0,that.textTyped[textTypedCounter].text.length-1)); + that.textTyped[textTypedCounter].text = that.textTyped[textTypedCounter].text.substring(0,max(0,that.textTyped[textTypedCounter].text.length - 1)); } // remove objects if there's no characters - if(that.textTyped[textTypedCounter].text.length == 0){ - textTypedCounter--; - if(textTypedCounter < 0){ - console.log("nothing left") - textTypedCounter = 0; - }else{ - that.textTyped.pop(); - } + if (that.textTyped[textTypedCounter].text.length == 0){ + textTypedCounter--; + if (textTypedCounter < 0){ + console.log('nothing left'); + textTypedCounter = 0; + } else { + that.textTyped.pop(); + } } - } + }; // add lines this.addLines = function(){ - that.textTyped.push(that.addText("")); + that.textTyped.push(that.addText('')); that.lineCount++; - } + }; // add characters this.addCharacters = function(_key){ - if(that[_key.toUpperCase()]){ - that.textTyped[that.lineCount].text += _key; - } else{ - console.log("not a letter"); + if (that[_key.toUpperCase()]){ + that.textTyped[that.lineCount].text += _key; + } else { + console.log('not a letter'); } - } - + }; /* Call functions in render */ this.render = function(){ - if(that.paths.length > 0){ + if (that.paths.length > 0){ that.paths.forEach(function(d){ - that[d.letter](d.x, d.y); - }) + that[d.letter](d.x, d.y); + }); } - } - + }; /* Letter Definitions */ // space - this[" "] = function(){ + this[' '] = function(){ // nothing - } + }; this.A = function(x, y){ push(); translate(x, y); - this.diagonalToMiddle(that.letterWidth/2,0, 1); - this.diagonalToMiddle(-that.letterWidth/2,0, -1); - this.halfCrossBar(that.letterWidth/4, that.letterHeight/2); + this.diagonalToMiddle(that.letterWidth / 2,0, 1); + this.diagonalToMiddle(-that.letterWidth / 2,0, -1); + this.halfCrossBar(that.letterWidth / 4, that.letterHeight / 2); pop(); - } + }; this.B = function(x, y){ push(); translate(x, y); this.fullStem(0,0); this.halfBowl(0,0, -1); - this.halfBowl(0,that.letterHeight/2, -1); + this.halfBowl(0,that.letterHeight / 2, -1); pop(); - } + }; this.C = function(x, y){ push(); translate(x, y); this.fullBowl(0, 0, 1); pop(); - } + }; this.D = function(x, y){ push(); @@ -209,75 +205,75 @@ function AniLetters(_lwidth, _lheight){ this.fullStem(0,0); this.fullBowl(0, 0, -1); pop(); - } + }; this.E = function(x,y){ push(); translate(x, y); this.fullStem(0,0); this.crossBar(0,0); - this.crossBar(0,that.letterHeight/2); + this.crossBar(0,that.letterHeight / 2); this.crossBar(0,that.letterHeight); pop(); - } + }; this.F = function(x,y){ push(); translate(x, y); this.fullStem(0,0); this.crossBar(0,0); - this.crossBar(0,that.letterHeight/2); + this.crossBar(0,that.letterHeight / 2); pop(); - } + }; this.G = function(x,y){ push(); translate(x, y); this.fullBowl(0, 0, 1); - this.halfStem(that.letterWidth,that.letterHeight/2); - this.halfCrossBar(that.letterWidth/2, that.letterHeight/2); + this.halfStem(that.letterWidth,that.letterHeight / 2); + this.halfCrossBar(that.letterWidth / 2, that.letterHeight / 2); pop(); - } + }; this.H = function(x,y){ push(); translate(x, y); this.fullStem(0,0); - this.crossBar(0, that.letterHeight/2); + this.crossBar(0, that.letterHeight / 2); this.fullStem(that.letterWidth,0); pop(); - } + }; this.I = function(x,y){ push(); translate(x, y); - this.fullStem(that.letterWidth/2,0); + this.fullStem(that.letterWidth / 2,0); pop(); - } + }; this.J = function(x,y){ push(); translate(x, y); this.jCurve(0, 0); pop(); - } + }; this.K = function(x,y){ push(); translate(x, y); this.fullStem(0,0); - this.halfDiagonalLeg(0, that.letterHeight/2, 1); - this.halfDiagonalLeg(0, that.letterHeight/2, -1); + this.halfDiagonalLeg(0, that.letterHeight / 2, 1); + this.halfDiagonalLeg(0, that.letterHeight / 2, -1); pop(); - } + }; this.L = function(x,y){ push(); translate(x, y); this.fullStem(0,0); - this.crossBar(0, that.letterHeight) + this.crossBar(0, that.letterHeight); pop(); - } + }; this.M = function(x,y){ push(); @@ -287,7 +283,7 @@ function AniLetters(_lwidth, _lheight){ this.diagonalToMiddle(0, 0, 1); this.diagonalToMiddle(0, 0, -1); pop(); - } + }; this.N = function(x,y){ push(); @@ -296,14 +292,14 @@ function AniLetters(_lwidth, _lheight){ this.fullStem(that.letterWidth,0); this.diagonalToEnd(0, 0, -1); pop(); - } + }; this.O = function(x,y){ push(); translate(x, y); this.letterO(0, 0); pop(); - } + }; this.P = function(x,y){ push(); @@ -311,24 +307,24 @@ function AniLetters(_lwidth, _lheight){ this.fullStem(0,0); this.halfBowl(0,0, -1); pop(); - } + }; this.Q = function(x,y){ push(); translate(x, y); this.letterO(0,0); - this.halfDiagonalArm(that.letterWidth/2,that.letterHeight/2, -1); + this.halfDiagonalArm(that.letterWidth / 2,that.letterHeight / 2, -1); pop(); - } + }; this.R = function(x,y){ push(); translate(x, y); this.fullStem(0,0); this.halfBowl(0,0, -1); - this.halfDiagonalLeg(0, that.letterHeight/2, -1); + this.halfDiagonalLeg(0, that.letterHeight / 2, -1); pop(); - } + }; this.S = function(x,y){ push(); @@ -336,22 +332,22 @@ function AniLetters(_lwidth, _lheight){ // noFill(); this.sCurve(0,0); pop(); - } + }; this.T = function(x,y){ push(); translate(x, y); - this.fullStem(that.letterWidth/2,0); + this.fullStem(that.letterWidth / 2,0); this.crossBar(0,0); pop(); - } + }; this.U = function(x,y){ push(); translate(x, y); this.uCurve(0,0); pop(); - } + }; this.V = function(x,y){ push(); @@ -359,7 +355,7 @@ function AniLetters(_lwidth, _lheight){ this.diagonalToMiddle(0, 0, 1); this.diagonalToMiddle(0, 0, -1); pop(); - } + }; this.W = function(x,y){ push(); @@ -367,10 +363,10 @@ function AniLetters(_lwidth, _lheight){ this.diagonalToQuarter(0, 0, 1); this.diagonalToQuarter(0, 0, -1); - this.diagonalToQuarter(that.letterWidth/2, 0, 1); - this.diagonalToQuarter(that.letterWidth/2, 0, -1); + this.diagonalToQuarter(that.letterWidth / 2, 0, 1); + this.diagonalToQuarter(that.letterWidth / 2, 0, -1); pop(); - } + }; this.X = function(x, y){ push(); @@ -378,16 +374,16 @@ function AniLetters(_lwidth, _lheight){ this.diagonalToEnd(0, 0, -1); this.diagonalToEnd(0, 0, 1); pop(); - } + }; this.Y = function(x,y){ push(); translate(x, y); - this.halfStem(that.letterWidth/2, that.letterHeight/2); + this.halfStem(that.letterWidth / 2, that.letterHeight / 2); this.halfDiagonalArm(0,0, 1); this.halfDiagonalArm(0,0, -1); - pop() - } + pop(); + }; this.Z = function(x,y){ push(); @@ -395,8 +391,8 @@ function AniLetters(_lwidth, _lheight){ this.diagonalToEnd(0,0,1); this.crossBar(0,0); this.crossBar(0,that.letterHeight); - pop() - } + pop(); + }; /* Component Definitions @@ -407,29 +403,29 @@ function AniLetters(_lwidth, _lheight){ this.static = function(){ noFill(); - curve(that.letterWidth, -that.letterHeight*1.5, 0, that.letterHeight*0.25, that.letterWidth, that.letterHeight*0.75, that.letterWidth-that.letterWidth, that.letterHeight*0.75+that.letterHeight*1.5) - arc(that.letterWidth/2, that.letterHeight*0.25, that.letterWidth, that.letterHeight/2, PI, 0); - arc(that.letterWidth/2, that.letterHeight*0.75, that.letterWidth, that.letterHeight/2, 0, PI); - } + curve(that.letterWidth, -that.letterHeight * 1.5, 0, that.letterHeight * 0.25, that.letterWidth, that.letterHeight * 0.75, that.letterWidth - that.letterWidth, that.letterHeight * 0.75 + that.letterHeight * 1.5); + arc(that.letterWidth / 2, that.letterHeight * 0.25, that.letterWidth, that.letterHeight / 2, PI, 0); + arc(that.letterWidth / 2, that.letterHeight * 0.75, that.letterWidth, that.letterHeight / 2, 0, PI); + }; this.dynamic = function(){ - this.arcFromToInSteps(that.letterWidth/2, that.letterHeight*0.25, that.letterWidth/2,that.letterWidth/2, -PI, 0, that.aniSteps); - this.arcFromToInSteps(that.letterWidth/2, that.letterHeight*0.75, that.letterWidth/2,that.letterWidth/2, PI, 0, that.aniSteps); - this.curveFromToInSteps(that.letterWidth, -that.letterHeight*1.5, 0, that.letterHeight*0.25, that.letterWidth, that.letterHeight*0.75, that.letterWidth-that.letterWidth, that.letterHeight*0.75+that.letterHeight*1.5,that.aniSteps); - } + this.arcFromToInSteps(that.letterWidth / 2, that.letterHeight * 0.25, that.letterWidth / 2,that.letterWidth / 2, -PI, 0, that.aniSteps); + this.arcFromToInSteps(that.letterWidth / 2, that.letterHeight * 0.75, that.letterWidth / 2,that.letterWidth / 2, PI, 0, that.aniSteps); + this.curveFromToInSteps(that.letterWidth, -that.letterHeight * 1.5, 0, that.letterHeight * 0.25, that.letterWidth, that.letterHeight * 0.75, that.letterWidth - that.letterWidth, that.letterHeight * 0.75 + that.letterHeight * 1.5,that.aniSteps); + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; this.uCurve = function(x1, y1){ push(); @@ -437,50 +433,48 @@ function AniLetters(_lwidth, _lheight){ this.static = function(){ noFill(); - arc(that.letterWidth/2, 0, that.letterWidth, that.letterHeight*2, 0, PI); - } + arc(that.letterWidth / 2, 0, that.letterWidth, that.letterHeight * 2, 0, PI); + }; this.dynamic = function(){ - this.arcFromToInSteps(that.letterWidth/2, 0, that.letterWidth/2, that.letterHeight, 0, PI, that.aniSteps+10) - } + this.arcFromToInSteps(that.letterWidth / 2, 0, that.letterWidth / 2, that.letterHeight, 0, PI, that.aniSteps + 10); + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } - pop() - } - + pop(); + }; this.jCurve = function(x1, y1){ push(); translate(x1, y1); this.static = function(){ noFill(); - bezier(that.letterWidth, 0, that.letterWidth+10, that.letterHeight*1.5, 0, that.letterHeight, 0, that.letterHeight*0.75) - } + bezier(that.letterWidth, 0, that.letterWidth + 10, that.letterHeight * 1.5, 0, that.letterHeight, 0, that.letterHeight * 0.75); + }; this.dynamic = function(){ - this.bezierFromToInSteps(that.letterWidth, 0, that.letterWidth+10, that.letterHeight*1.5, 0, that.letterHeight, 0, that.letterHeight*0.75, that.aniSteps + 10) - } + this.bezierFromToInSteps(that.letterWidth, 0, that.letterWidth + 10, that.letterHeight * 1.5, 0, that.letterHeight, 0, that.letterHeight * 0.75, that.aniSteps + 10); + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } - pop() - } - + pop(); + }; this.letterO = function(x1, y1){ push(); @@ -488,24 +482,24 @@ function AniLetters(_lwidth, _lheight){ this.static = function(){ noFill(); - ellipse(that.letterWidth/2, that.letterHeight/2, that.letterWidth, that.letterHeight); - } + ellipse(that.letterWidth / 2, that.letterHeight / 2, that.letterWidth, that.letterHeight); + }; this.dynamic = function(){ - this.arcFromToInSteps(that.letterWidth/2, that.letterHeight/2, that.letterWidth/2, that.letterHeight/2, PI, -PI, that.aniSteps+10) - } + this.arcFromToInSteps(that.letterWidth / 2, that.letterHeight / 2, that.letterWidth / 2, that.letterHeight / 2, PI, -PI, that.aniSteps + 10); + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; this.halfDiagonalArm = function(x1, y1, direction){ push(); @@ -513,34 +507,34 @@ function AniLetters(_lwidth, _lheight){ this.static = function(){ noFill(); - if(direction == 1){ - line(that.letterWidth/2, that.letterHeight/2, that.letterWidth, 0); + if (direction == 1){ + line(that.letterWidth / 2, that.letterHeight / 2, that.letterWidth, 0); } if (direction == -1){ - line(0, 0, that.letterWidth/2, that.letterHeight/2); + line(0, 0, that.letterWidth / 2, that.letterHeight / 2); } - } + }; this.dynamic = function(){ - if(direction == 1){ - this.lineFromToInSteps(that.letterWidth/2, that.letterHeight/2, that.letterWidth, 0, that.aniSteps); + if (direction == 1){ + this.lineFromToInSteps(that.letterWidth / 2, that.letterHeight / 2, that.letterWidth, 0, that.aniSteps); } if (direction == -1){ - this.lineFromToInSteps(0, 0, that.letterWidth/2, that.letterHeight/2, that.aniSteps); + this.lineFromToInSteps(0, 0, that.letterWidth / 2, that.letterHeight / 2, that.aniSteps); } - } + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } - pop() - } + pop(); + }; this.diagonalToEnd = function(x1, y1, direction){ push(); @@ -548,134 +542,134 @@ function AniLetters(_lwidth, _lheight){ this.static = function(){ noFill(); - if(direction == 1){ + if (direction == 1){ line(that.letterWidth, 0, 0, that.letterHeight); } if (direction == -1){ line(0, 0, that.letterWidth, that.letterHeight); } - } + }; this.dynamic = function(){ - if(direction == 1){ + if (direction == 1){ this.lineFromToInSteps(that.letterWidth, 0, 0, that.letterHeight, that.aniSteps); } if (direction == -1){ this.lineFromToInSteps(0, 0, that.letterWidth, that.letterHeight, that.aniSteps); } - } + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; this.diagonalToQuarter = function(x1, y1, direction){ push(); translate(x1, y1); this.static = function(){ noFill(); - if(direction == 1){ - line(0, 0, that.letterWidth/4 , that.letterHeight); + if (direction == 1){ + line(0, 0, that.letterWidth / 4 , that.letterHeight); } - if(direction == -1){ - line(that.letterWidth/4, that.letterHeight, that.letterWidth/2, 0); + if (direction == -1){ + line(that.letterWidth / 4, that.letterHeight, that.letterWidth / 2, 0); } - } + }; this.dynamic = function(){ - if(direction == 1){ - this.lineFromToInSteps(0, 0, that.letterWidth/4 , that.letterHeight, that.aniSteps); + if (direction == 1){ + this.lineFromToInSteps(0, 0, that.letterWidth / 4 , that.letterHeight, that.aniSteps); } - if(direction == -1){ - this.lineFromToInSteps(that.letterWidth/4, that.letterHeight, that.letterWidth/2, 0, that.aniSteps); + if (direction == -1){ + this.lineFromToInSteps(that.letterWidth / 4, that.letterHeight, that.letterWidth / 2, 0, that.aniSteps); } - } + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; this.diagonalToMiddle = function(x1, y1, direction){ push(); translate(x1, y1); this.static = function(){ noFill(); - if(direction == 1){ - line(0, 0, that.letterWidth/2 , that.letterHeight); + if (direction == 1){ + line(0, 0, that.letterWidth / 2 , that.letterHeight); } - if(direction == -1){ - line(that.letterWidth/2, that.letterHeight, that.letterWidth, 0); + if (direction == -1){ + line(that.letterWidth / 2, that.letterHeight, that.letterWidth, 0); } - } + }; this.dynamic = function(){ - if(direction == 1){ - this.lineFromToInSteps(0, 0, that.letterWidth/2 , that.letterHeight, that.aniSteps); + if (direction == 1){ + this.lineFromToInSteps(0, 0, that.letterWidth / 2 , that.letterHeight, that.aniSteps); } - if(direction == -1){ - this.lineFromToInSteps(that.letterWidth/2, that.letterHeight, that.letterWidth, 0, that.aniSteps); + if (direction == -1){ + this.lineFromToInSteps(that.letterWidth / 2, that.letterHeight, that.letterWidth, 0, that.aniSteps); } - } + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; this.halfDiagonalLeg = function(x1, y1, direction){ push(); translate(x1, y1); var endpoint; - if(direction == 1){ - endpoint = -that.letterHeight/2; + if (direction == 1){ + endpoint = -that.letterHeight / 2; } - if(direction == -1){ - endpoint = that.letterHeight/2; + if (direction == -1){ + endpoint = that.letterHeight / 2; } this.static = function(){ noFill(); - line(0, 0, that.letterHeight/2, endpoint); - } + line(0, 0, that.letterHeight / 2, endpoint); + }; this.dynamic = function(){ - this.lineFromToInSteps(0, 0, that.letterHeight/2, endpoint, that.aniSteps); - } + this.lineFromToInSteps(0, 0, that.letterHeight / 2, endpoint, that.aniSteps); + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; this.fullStem = function(x1, y1){ push(); @@ -683,178 +677,178 @@ function AniLetters(_lwidth, _lheight){ this.static = function(){ noFill(); line(0, 0, 0, that.letterHeight); - } + }; this.dynamic = function(){ this.lineFromToInSteps(0, 0, 0, that.letterHeight, that.aniSteps); - } - if(that.drawMode === 1){ + }; + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; - this.halfStem =function(x1, y1){ + this.halfStem = function(x1, y1){ push(); translate(x1,y1); this.static = function(){ noFill(); - line(0, 0, 0, that.letterHeight/2); - } + line(0, 0, 0, that.letterHeight / 2); + }; this.dynamic = function(){ - this.lineFromToInSteps(0, 0, 0, that.letterHeight/2, that.aniSteps); - } - if(that.drawMode === 1){ + this.lineFromToInSteps(0, 0, 0, that.letterHeight / 2, that.aniSteps); + }; + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; this.halfCrossBar = function(x1, y1){ push(); translate(x1,y1); this.static = function(){ noFill(); - line(0, 0, that.letterWidth/2, 0); - } + line(0, 0, that.letterWidth / 2, 0); + }; this.dynamic = function(){ - this.lineFromToInSteps(0, 0, that.letterWidth/2, 0, that.aniSteps); - } + this.lineFromToInSteps(0, 0, that.letterWidth / 2, 0, that.aniSteps); + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; - this.halfBowl= function(x1, y1, direction){ - var cPoint = that.letterWidth*8; + this.halfBowl = function(x1, y1, direction){ + var cPoint = that.letterWidth * 8; noFill(); push(); - if(direction === 1){ - translate(x1+ that.letterWidth,y1); + if (direction === 1){ + translate(x1 + that.letterWidth,y1); } - if(direction === -1){ + if (direction === -1){ translate(x1,y1); } this.static = function(){ noFill(); - curve(cPoint*direction, 0, 0,0,0,that.letterHeight/2,cPoint*direction,that.letterHeight/2) - } + curve(cPoint * direction, 0, 0,0,0,that.letterHeight / 2,cPoint * direction,that.letterHeight / 2); + }; this.dynamic = function(){ - this.curveFromToInSteps(cPoint*direction, 0, 0,0,0,that.letterHeight/2,cPoint*direction,that.letterHeight/2,that.aniSteps); - } + this.curveFromToInSteps(cPoint * direction, 0, 0,0,0,that.letterHeight / 2,cPoint * direction,that.letterHeight / 2,that.aniSteps); + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; this.fullBowl = function(x1, y1, direction){ - var cPoint = that.letterWidth*8; + var cPoint = that.letterWidth * 8; noFill(); push(); - if(direction === 1){ + if (direction === 1){ translate(x1 + that.letterWidth,y1); } - if(direction === -1){ + if (direction === -1){ translate(x1,y1); } this.static = function(){ noFill(); - curve(cPoint*direction, 0, 0,0,0,that.letterHeight, cPoint*direction,that.letterHeight) - } + curve(cPoint * direction, 0, 0,0,0,that.letterHeight, cPoint * direction,that.letterHeight); + }; this.dynamic = function(){ - this.curveFromToInSteps(cPoint*direction, 0, 0,0,0,that.letterHeight, cPoint*direction,that.letterHeight, that.aniSteps); - } + this.curveFromToInSteps(cPoint * direction, 0, 0,0,0,that.letterHeight, cPoint * direction,that.letterHeight, that.aniSteps); + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } pop(); - } + }; this.crossBar = function(x1, y1){ - push() + push(); translate(x1, y1); this.static = function(){ noFill(); line(0, 0, that.letterWidth, 0); - } + }; this.dynamic = function(){ this.lineFromToInSteps(0, 0, that.letterWidth, 0, that.aniSteps); - } + }; - if(that.drawMode === 1){ + if (that.drawMode === 1){ this.static(); } - if(that.drawMode === 2){ + if (that.drawMode === 2){ this.dynamic(); } - if(that.drawMode === 3){ + if (that.drawMode === 3){ this.static(); this.dynamic(); } - pop() - } + pop(); + }; /* Animation functions */ this.lineFromToInSteps = function(x1, y1, x2, y2, stepCount) { - var aniIndex = frameCount % (stepCount+1); - var ratio = aniIndex/stepCount; + var aniIndex = frameCount % (stepCount + 1); + var ratio = aniIndex / stepCount; var posX = lerp(x1, x2, ratio); var posY = lerp(y1, y2, ratio); fill(65, 105, 185); rectMode(CENTER); - if(that.style == 1){ + if (that.style == 1){ rect(posX, posY, 10, 10); - } else if(that.style == 2){ + } else if (that.style == 2){ ellipse(posX, posY, 10, 10); - } else{ + } else { ellipse(posX, posY, 10, 10); } - } + }; - this.curveFromToInSteps = function(a1, a2, b1, b2, c1, c2, d1, d2, stepCount){ + this.curveFromToInSteps = function(a1, a2, b1, b2, c1, c2, d1, d2, stepCount){ var points = []; for (var i = 0; i <= stepCount; i++) { var t = i / stepCount; @@ -862,23 +856,23 @@ function AniLetters(_lwidth, _lheight){ var cy = curvePoint(a2, b2, c2, d2, t); points.push({x: cx, y: cy}); } - var aniIndex = frameCount % (stepCount); - var ratio = aniIndex/stepCount; - var posX = lerp(points[aniIndex].x, points[aniIndex+1].x, ratio); - var posY = lerp(points[aniIndex].y, points[aniIndex+1].y, ratio); - fill(65, 105, 185); - rectMode(CENTER); - if(that.style == 1){ - rect(posX, posY, 10, 10); - } else if(that.style == 2){ - ellipse(posX, posY, 10, 10); - } else{ - ellipse(posX, posY, 10, 10); - } + var aniIndex = frameCount % (stepCount); + var ratio = aniIndex / stepCount; + var posX = lerp(points[aniIndex].x, points[aniIndex + 1].x, ratio); + var posY = lerp(points[aniIndex].y, points[aniIndex + 1].y, ratio); + fill(65, 105, 185); + rectMode(CENTER); + if (that.style == 1){ + rect(posX, posY, 10, 10); + } else if (that.style == 2){ + ellipse(posX, posY, 10, 10); + } else { + ellipse(posX, posY, 10, 10); + } - } + }; - this.bezierFromToInSteps = function(a1, a2, b1, b2, c1, c2, d1, d2, stepCount){ + this.bezierFromToInSteps = function(a1, a2, b1, b2, c1, c2, d1, d2, stepCount){ var points = []; for (var i = 0; i <= stepCount; i++) { var t = i / stepCount; @@ -886,43 +880,42 @@ function AniLetters(_lwidth, _lheight){ var cy = bezierPoint(a2, b2, c2, d2, t); points.push({x: cx, y: cy}); } - var aniIndex = frameCount % (stepCount); - var ratio = aniIndex/stepCount; - var posX = lerp(points[aniIndex].x, points[aniIndex+1].x, ratio); - var posY = lerp(points[aniIndex].y, points[aniIndex+1].y, ratio); - fill(65, 105, 185); - rectMode(CENTER); - if(that.style == 1){ - rect(posX, posY, 10, 10); - } else if(that.style == 2){ - ellipse(posX, posY, 10, 10); - } else{ - ellipse(posX, posY, 10, 10); - } + var aniIndex = frameCount % (stepCount); + var ratio = aniIndex / stepCount; + var posX = lerp(points[aniIndex].x, points[aniIndex + 1].x, ratio); + var posY = lerp(points[aniIndex].y, points[aniIndex + 1].y, ratio); + fill(65, 105, 185); + rectMode(CENTER); + if (that.style == 1){ + rect(posX, posY, 10, 10); + } else if (that.style == 2){ + ellipse(posX, posY, 10, 10); + } else { + ellipse(posX, posY, 10, 10); + } - } + }; this.arcFromToInSteps = function(x, y, radiusWidth, radiusHeight, a1, a2, stepCount) { - var aniIndex = frameCount % (stepCount+1); - var ratio = aniIndex/stepCount; + var aniIndex = frameCount % (stepCount + 1); + var ratio = aniIndex / stepCount; var angle = lerp(a1, a2, ratio); var posX = x + cos(angle) * radiusWidth; var posY = y + sin(angle) * radiusHeight; fill(65, 105, 185); rectMode(CENTER); - if(that.style == 1){ + if (that.style == 1){ rect(posX, posY, 10, 10); - } else if(that.style == 2){ + } else if (that.style == 2){ ellipse(posX, posY, 10, 10); - } else{ + } else { ellipse(posX, posY, 10, 10); } - } + }; } // end AniType() object - function keyPressed() { if (keyCode === CONTROL) saveCanvas(gd.timestamp(), 'png'); @@ -945,8 +938,8 @@ function keyPressed() { } // change between ellipses and rect - if (key === "1") aniLetters.style = 1; - if (key === "2") aniLetters.style = 2; + if (key === '1') aniLetters.style = 1; + if (key === '2') aniLetters.style = 2; // on return if (keyCode == ENTER || keyCode == RETURN) { @@ -960,12 +953,9 @@ function keyPressed() { } } - function keyTyped() { if (keyCode >= 32){ aniLetters.addCharacters(key); } } - - diff --git a/01_P/P_3_2_5_03/sketch.js b/01_P/P_3_2_5_03/sketch.js index fe82ff42..0b691ae2 100644 --- a/01_P/P_3_2_5_03/sketch.js +++ b/01_P/P_3_2_5_03/sketch.js @@ -32,14 +32,13 @@ * CONTRIBUTED BY * [Joey Lee](http://jk-lee.com) */ -"use strict"; +'use strict'; var font; var fontSize = 120; // declare your animatedText variable var myAnimatedText; - function setup() { createCanvas(windowWidth, windowHeight); noLoop(); @@ -50,8 +49,8 @@ function setup() { // initialize the animatedType Object myAnimatedText = new animatedType(); // add some text in - myAnimatedText.textTyped.push(myAnimatedText.addText("TYPE!")); - myAnimatedText.textTyped.push(myAnimatedText.addText("CODE!")); + myAnimatedText.textTyped.push(myAnimatedText.addText('TYPE!')); + myAnimatedText.textTyped.push(myAnimatedText.addText('CODE!')); // read in the font to opentype.js opentype.load('data/FreeSans.otf', function(err, f) { @@ -66,8 +65,6 @@ function setup() { // frameRate(1) } - - function draw() { // noLoop(); if (!font) return; @@ -84,37 +81,33 @@ function draw() { myAnimatedText.getCoordinates(); // draw methods - if(myAnimatedText.drawMode == 1){ - myAnimatedText.animatedPoints("ellipse"); + if (myAnimatedText.drawMode == 1){ + myAnimatedText.animatedPoints('ellipse'); } - if(myAnimatedText.drawMode == 2){ - myAnimatedText.animatedPoints("rect"); + if (myAnimatedText.drawMode == 2){ + myAnimatedText.animatedPoints('rect'); } - if(myAnimatedText.drawMode == 3){ + if (myAnimatedText.drawMode == 3){ myAnimatedText.lines2mouse(); } - if(myAnimatedText.drawMode == 4){ + if (myAnimatedText.drawMode == 4){ myAnimatedText.radialLines(); } - if(myAnimatedText.drawMode == 5){ - myAnimatedText.orbitingPoints("points"); + if (myAnimatedText.drawMode == 5){ + myAnimatedText.orbitingPoints('points'); } - if(myAnimatedText.drawMode == 6){ - myAnimatedText.wobblyShapes("TRIANGLE_FAN"); + if (myAnimatedText.drawMode == 6){ + myAnimatedText.wobblyShapes('TRIANGLE_FAN'); } - if(myAnimatedText.drawMode == 7){ - myAnimatedText.wobblyShapes("TRIANGLES"); + if (myAnimatedText.drawMode == 7){ + myAnimatedText.wobblyShapes('TRIANGLES'); } - if(myAnimatedText.drawMode == 8){ + if (myAnimatedText.drawMode == 8){ myAnimatedText.outwardLines(); } - - } - - function animatedType(){ var that = this; that.textTyped = []; @@ -125,7 +118,7 @@ function animatedType(){ that.letterCoordinates = []; that.pointDensity = 2; that.startX = 0; - that.colors = [color(65, 105, 185), color(245, 95, 80), color(15, 233, 118), color(233, 15, 130), color(118, 15, 233), color( 15, 233, 118)]; + that.colors = [color(65, 105, 185), color(245, 95, 80), color(15, 233, 118), color(233, 15, 130), color(118, 15, 233), color(15, 233, 118)]; that.angle = 0; that.drawMode = 8; @@ -137,19 +130,19 @@ function animatedType(){ // set the lineCount to the number of "lines" or text object in the textTyped Array this.getLineCount = function(){ - if(that.textTyped.length > 0){ - that.lineCount = that.textTyped.length -1; - } else{ + if (that.textTyped.length > 0){ + that.lineCount = that.textTyped.length - 1; + } else { that.lineCount = 0; } - } + }; // create a text object to hold each line of text // usage: this.textTyped.push(this.addText("hello")) this.addText = function(_text){ - var textObject = {counter:0, text:_text} + var textObject = {counter: 0, text: _text}; return textObject; - } + }; // get the path objects for each line typed this.getPaths = function(){ @@ -158,40 +151,40 @@ function animatedType(){ // go though each of the text objects that.textTyped.forEach(function(txt, lineNum){ - if(txt.text.length > 0){ - var fontPath = font.getPath(txt.text, 0, 0, fontSize); - // convert it to a g.Path object - var path = new g.Path(fontPath.commands); - // resample it with equidistant points - path = g.resampleByLength(path, that.pointDensity); - // console.log(fontPath.getBoundingBox()) - - // structure the relevant path data - var pathData = { - data: path, - lineNumber: lineNum, - len: path.commands.length, - breaks: floor(path.commands.length / txt.text.length), - ranges: [] - }; - - // get the start point of each letter - for(var i = 0; i < pathData.len-1; i += pathData.breaks){ - pathData.ranges.push(floor(i)); - } + if (txt.text.length > 0){ + var fontPath = font.getPath(txt.text, 0, 0, fontSize); + // convert it to a g.Path object + var path = new g.Path(fontPath.commands); + // resample it with equidistant points + path = g.resampleByLength(path, that.pointDensity); + // console.log(fontPath.getBoundingBox()) + + // structure the relevant path data + var pathData = { + data: path, + lineNumber: lineNum, + len: path.commands.length, + breaks: floor(path.commands.length / txt.text.length), + ranges: [] + }; + + // get the start point of each letter + for (var i = 0; i < pathData.len - 1; i += pathData.breaks){ + pathData.ranges.push(floor(i)); + } - that.paths.push(pathData); + that.paths.push(pathData); } }); - } + }; this.getIndividualPaths = function(){ that.individualPaths = []; // go though each of the text objects that.textTyped.forEach(function(txt, lineNum){ - if(txt.text.length > 0){ - txt.text.split("").forEach(function(d){ + if (txt.text.length > 0){ + txt.text.split('').forEach(function(d){ var fontPath = font.getPath(d, 0, 0, fontSize); // convert it to a g.Path object var path = new g.Path(fontPath.commands); @@ -212,30 +205,30 @@ function animatedType(){ pathData.distX = ceil(dist(pathData.bbox.x1, 0, pathData.bbox.x2, 0)); that.individualPaths.push(pathData); - }) + }); } }); // set the startX to zero that.startX = 0; - for(var i = 0; i < that.individualPaths.length-1; i++){ + for (var i = 0; i < that.individualPaths.length - 1; i++){ // if the linenumbers are the same - if(that.individualPaths[i].lineNumber === that.individualPaths[i+1].lineNumber){ + if (that.individualPaths[i].lineNumber === that.individualPaths[i + 1].lineNumber){ // then add to the startX and assign it to the individualpath startX that.individualPaths[i].startX = that.startX; that.startX += that.individualPaths[i].distX + 15; - } else{ + } else { that.individualPaths[i].startX = that.startX; that.startX = 0; } // when reaching the end - if(i == that.individualPaths.length-2){ - that.individualPaths[i+1].startX = that.startX; + if (i == that.individualPaths.length - 2){ + that.individualPaths[i + 1].startX = that.startX; } } - } + }; // get all the coordinates this.getCoordinates = function(){ @@ -246,16 +239,14 @@ function animatedType(){ that.paths.forEach(function(path, idx){ path.data.commands.forEach(function(coord){ - if(coord.x != undefined && coord.y != undefined){ - var yOffset = path.lineNumber*fontSize; - that.coordinates.push({x: coord.x, y: coord.y + yOffset}) + if (coord.x != undefined && coord.y != undefined){ + var yOffset = path.lineNumber * fontSize; + that.coordinates.push({x: coord.x, y: coord.y + yOffset}); } - }) + }); }); - } - - + }; /* keyboard interaction Methods @@ -266,31 +257,30 @@ function animatedType(){ var textTypedCounter = that.lineCount; // remove letters from each object if (textTypedCounter >= 0 && that.textTyped[0].text.length > 0){ - that.textTyped[textTypedCounter].text = that.textTyped[textTypedCounter].text.substring(0,max(0,that.textTyped[textTypedCounter].text.length-1)); + that.textTyped[textTypedCounter].text = that.textTyped[textTypedCounter].text.substring(0,max(0,that.textTyped[textTypedCounter].text.length - 1)); } // remove objects if there's no characters - if(that.textTyped[textTypedCounter].text.length == 0){ - textTypedCounter--; - if(textTypedCounter < 0){ - console.log("nothing left") - textTypedCounter = 0; - }else{ - that.textTyped.pop(); - } + if (that.textTyped[textTypedCounter].text.length == 0){ + textTypedCounter--; + if (textTypedCounter < 0){ + console.log('nothing left'); + textTypedCounter = 0; + } else { + that.textTyped.pop(); + } } - } + }; // add lines this.addLines = function(){ - that.textTyped.push(that.addText("")); + that.textTyped.push(that.addText('')); that.lineCount++; - } + }; // add characters this.addCharacters = function(_key){ that.textTyped[that.lineCount].text += _key; - } - + }; /* Rendering Methods @@ -299,129 +289,128 @@ function animatedType(){ // show all the points with random color this.randomStrokes = function(){ that.coordinates.forEach(function(coords){ - stroke(random(255),random(255),random(255)) + stroke(random(255),random(255),random(255)); ellipse(coords.x, coords.y,5, 5); - }) - } // end this.show(); + }); + }; // end this.show(); // follow the mouse with extruded lines this.lines2mouse = function(){ - stroke(that.colors[0]) + stroke(that.colors[0]); that.coordinates.forEach(function(coords){ - strokeWeight(1); - line( coords.x + map(mouseX, 0, width, -100, 100), coords.y + map(mouseY, 0, height, -100, 100), coords.x, coords.y) - }) - } - + strokeWeight(1); + line(coords.x + map(mouseX, 0, width, -100, 100), coords.y + map(mouseY, 0, height, -100, 100), coords.x, coords.y); + }); + }; // animate the points this.animatedPoints = function(_shape){ that.paths.forEach(function(path, idx){ - fill(that.colors[path.lineNumber]) - stroke(that.colors[path.lineNumber]) + fill(that.colors[path.lineNumber]); + stroke(that.colors[path.lineNumber]); path.ranges.forEach(function(d){ var cmd = path.data.commands[that.textTyped[idx].counter + d]; - if(cmd != undefined ){ - if(that.textTyped[idx].counter < path.breaks){ - var yOffset = path.lineNumber*fontSize; - if(_shape == "ellipse"){ - ellipse(cmd.x, cmd.y + yOffset, fontSize*0.10, fontSize*0.10); - }else if(_shape == "rect"){ - rect(cmd.x, cmd.y + yOffset, fontSize*0.10, fontSize*0.10); + if (cmd != undefined){ + if (that.textTyped[idx].counter < path.breaks){ + var yOffset = path.lineNumber * fontSize; + if (_shape == 'ellipse'){ + ellipse(cmd.x, cmd.y + yOffset, fontSize * 0.10, fontSize * 0.10); + } else if (_shape == 'rect'){ + rect(cmd.x, cmd.y + yOffset, fontSize * 0.10, fontSize * 0.10); } that.textTyped[idx].counter++; - }else{ + } else { that.textTyped[idx].counter = 0; } } }); - }) + }); - } + }; // radial lines this.radialLines = function(){ - stroke(that.colors[0]) + stroke(that.colors[0]); that.coordinates.forEach(function(coords){ - strokeWeight(1); - for(var i = 0; i < 360; i+=60){ - var angle = radians(i); - var radiusDistanceX = map(mouseX, 0, width, 0, random(20)); - var radiusDistanceY = map(mouseY, 0, width, 0, random(20)); - - var ptX = cos(angle) * radiusDistanceX + coords.x; - var ptY = sin(angle) * radiusDistanceY + coords.y; - line(ptX, ptY, coords.x, coords.y) - } - }) - } + strokeWeight(1); + for (var i = 0; i < 360; i += 60){ + var angle = radians(i); + var radiusDistanceX = map(mouseX, 0, width, 0, random(20)); + var radiusDistanceY = map(mouseY, 0, width, 0, random(20)); + + var ptX = cos(angle) * radiusDistanceX + coords.x; + var ptY = sin(angle) * radiusDistanceY + coords.y; + line(ptX, ptY, coords.x, coords.y); + } + }); + }; // orbiting points this.orbitingPoints = function(_type){ - stroke(that.colors[0]) - var rectSize = fontSize*0.05; - var shiftX1 = mouseX/100 * random(-1, 1); - var shiftY1 = mouseY/100 * random(-1, 1); - var shiftX2 = mouseX/100 * random(-1, 1); - var shiftY2 = mouseY/100 * random(-1, 1); - var shiftX3 = mouseX/100 * random(-1, 1); - var shiftY3 = mouseY/100 * random(-1, 1); - var shiftX4 = mouseX/100 * random(-1, 1); - var shiftY4 = mouseY/100 * random(-1, 1); + stroke(that.colors[0]); + var rectSize = fontSize * 0.05; + var shiftX1 = mouseX / 100 * random(-1, 1); + var shiftY1 = mouseY / 100 * random(-1, 1); + var shiftX2 = mouseX / 100 * random(-1, 1); + var shiftY2 = mouseY / 100 * random(-1, 1); + var shiftX3 = mouseX / 100 * random(-1, 1); + var shiftY3 = mouseY / 100 * random(-1, 1); + var shiftX4 = mouseX / 100 * random(-1, 1); + var shiftY4 = mouseY / 100 * random(-1, 1); that.coordinates.forEach(function(coords, idx){ - if(idx%2 ==0){ - var angle = radians(frameCount%360); - } else{ - var angle = radians(-frameCount%360); - } + if (idx % 2 == 0){ + var angle = radians(frameCount % 360); + } else { + var angle = radians(-frameCount % 360); + } - if(_type == "points"){ - push() - translate(coords.x, coords.y) - rotate(angle); - point(0+shiftX1, 0+shiftY1); - point(0+rectSize+shiftX2, 0+shiftY2); - pop() - } - }) - } + if (_type == 'points'){ + push(); + translate(coords.x, coords.y); + rotate(angle); + point(0 + shiftX1, 0 + shiftY1); + point(0 + rectSize + shiftX2, 0 + shiftY2); + pop(); + } + }); + }; // make a triangle blob from the points this.triangleBlob = function(){ - fill(that.colors[1]) - stroke(that.colors[1]) + fill(that.colors[1]); + stroke(that.colors[1]); beginShape(TRIANGLE_STRIP); that.coordinates.forEach(function(coords, idx){ vertex(coords.x, coords.y); - }) + }); endShape(); - } + }; // wobblyShapes - this.wobblyShapes= function(_type){ + this.wobblyShapes = function(_type){ that.individualPaths.forEach(function(path, idx){ - stroke(that.colors[path.lineNumber]) - fill(that.colors[path.lineNumber]) + stroke(that.colors[path.lineNumber]); + fill(that.colors[path.lineNumber]); - that.angle +=0.01; - if(idx %2){ + that.angle += 0.01; + if (idx % 2){ var shifter = sin(that.angle) * 0.05 ; - } else{ + } else { var shifter = sin(that.angle) * -0.05 ; } - var yOffset = path.lineNumber*fontSize; + var yOffset = path.lineNumber * fontSize; var xOffset = path.startX; push(); @@ -429,54 +418,51 @@ function animatedType(){ rotate(shifter); // choose a beginShape mode - if(_type == "TRIANGLES"){ + if (_type == 'TRIANGLES'){ beginShape(TRIANGLES); - } - else if(_type == "TRIANGLE_STRIP"){ + } else if (_type == 'TRIANGLE_STRIP'){ beginShape(TRIANGLE_STRIP); - } - else if(_type == "LINES"){ + } else if (_type == 'LINES'){ beginShape(LINES); - } - else if(_type == "TRIANGLE_FAN"){ + } else if (_type == 'TRIANGLE_FAN'){ beginShape(TRIANGLE_FAN); - } else{ + } else { beginShape(TRIANGLES); } // add all those vertices to the shape path.data.commands.forEach(function(d){ - vertex(d.x, d.y) - }) + vertex(d.x, d.y); + }); endShape(); pop(); }); - } + }; // outward lines following mouse this.outwardLines = function(){ that.individualPaths.forEach(function(path, idx){ - stroke(that.colors[path.lineNumber]) + stroke(that.colors[path.lineNumber]); strokeWeight(0.5); - fill(that.colors[path.lineNumber]) - var yOffset = path.lineNumber*fontSize; + fill(that.colors[path.lineNumber]); + var yOffset = path.lineNumber * fontSize; var xOffset = path.startX; push(); translate(xOffset,yOffset); - var cX = (path.bbox.x1 + path.bbox.x2)/2 + map(mouseX, 0, width, -50, 50); - var cY = (path.bbox.y1 + path.bbox.y2)/2 + map(mouseY, 0, height, -50, 50); - // add all those vertices to the shape - path.data.commands.forEach(function(d){ - line(cX, cY, d.x, d.y) + var cX = (path.bbox.x1 + path.bbox.x2) / 2 + map(mouseX, 0, width, -50, 50); + var cY = (path.bbox.y1 + path.bbox.y2) / 2 + map(mouseY, 0, height, -50, 50); + // add all those vertices to the shape + path.data.commands.forEach(function(d){ + line(cX, cY, d.x, d.y); - }) + }); pop(); }); - } + }; } // end animatedType object @@ -517,4 +503,3 @@ function keyTyped() { } } - diff --git a/01_P/P_4_1_1_01/sketch.js b/01_P/P_4_1_1_01/sketch.js index 6dc763fe..c3e7b903 100644 --- a/01_P/P_4_1_1_01/sketch.js +++ b/01_P/P_4_1_1_01/sketch.js @@ -81,7 +81,7 @@ function draw() { } function cropTiles() { - tileWidth = width / tileCountY; + tileWidth = width / tileCountY; tileHeight = height / tileCountX; imgTiles = []; diff --git a/01_P/P_4_2_1_01/sketch.js b/01_P/P_4_2_1_01/sketch.js index 3cce99c8..c7591d01 100644 --- a/01_P/P_4_2_1_01/sketch.js +++ b/01_P/P_4_2_1_01/sketch.js @@ -36,7 +36,6 @@ var layer1Items = []; var layer2Items = []; var layer3Items = []; - function preload() { layer1Images.push(loadImage('../../data/P_4_2_1_footage/layer1_01.png')); layer1Images.push(loadImage('../../data/P_4_2_1_footage/layer1_02.png')); diff --git a/01_P/P_4_2_1_02/sketch.js b/01_P/P_4_2_1_02/sketch.js index 745d749e..e7422171 100644 --- a/01_P/P_4_2_1_02/sketch.js +++ b/01_P/P_4_2_1_02/sketch.js @@ -36,7 +36,6 @@ var layer1Items = []; var layer2Items = []; var layer3Items = []; - function preload() { layer1Images.push(loadImage('../../data/P_4_2_1_footage/layer1_01.png')); layer1Images.push(loadImage('../../data/P_4_2_1_footage/layer1_02.png')); diff --git a/01_P/P_4_2_2_02/sketch.js b/01_P/P_4_2_2_02/sketch.js index 0fd0bf4a..550c83e9 100644 --- a/01_P/P_4_2_2_02/sketch.js +++ b/01_P/P_4_2_2_02/sketch.js @@ -36,7 +36,9 @@ var streamReady = false; function setup() { createCanvas(640, 480); - cam = createCapture(VIDEO, function() { streamReady = true }); + cam = createCapture(VIDEO, function() { + streamReady = true; + }); cam.hide(); noStroke(); } diff --git a/01_P/P_4_2_3_01/sketch.js b/01_P/P_4_2_3_01/sketch.js index 4f8f1c37..4e0474c1 100644 --- a/01_P/P_4_2_3_01/sketch.js +++ b/01_P/P_4_2_3_01/sketch.js @@ -95,11 +95,11 @@ function SubTitleObject(startTime, endTime, dialog) { } function getTimeInSeconds(timeString) { - var hours = parseInt(timeString.replace(/:.+$/, '')); - var minutes = parseInt(timeString.replace(/^\d.+?:|:\d.+$/, '')); - var seconds = parseInt(timeString.replace(/^\d.+:|(\,|\.).+$/, '')); - var milSeconds = parseInt(timeString.replace(/^.+(\,|\.)/, '')); - return (hours * 60 * 60) + (minutes * 60) + seconds + (milSeconds / 1000); + var hours = parseInt(timeString.replace(/:.+$/, '')); + var minutes = parseInt(timeString.replace(/^\d.+?:|:\d.+$/, '')); + var seconds = parseInt(timeString.replace(/^\d.+:|(\,|\.).+$/, '')); + var milSeconds = parseInt(timeString.replace(/^.+(\,|\.)/, '')); + return (hours * 60 * 60) + (minutes * 60) + seconds + (milSeconds / 1000); } function findSubtiles(searchPattern) { diff --git a/01_P/P_4_2_3_02/sketch.js b/01_P/P_4_2_3_02/sketch.js index 6e3de069..4626e294 100644 --- a/01_P/P_4_2_3_02/sketch.js +++ b/01_P/P_4_2_3_02/sketch.js @@ -97,11 +97,11 @@ function SubTitleObject(startTime, endTime, dialog) { } function getTimeInSeconds(timeString) { - var hours = parseInt(timeString.replace(/:.+$/, '')); - var minutes = parseInt(timeString.replace(/^\d.+?:|:\d.+$/, '')); - var seconds = parseInt(timeString.replace(/^\d.+:|(\,|\.).+$/, '')); - var milSeconds = parseInt(timeString.replace(/^.+(\,|\.)/, '')); - return (hours * 60 * 60) + (minutes * 60) + seconds + (milSeconds / 1000); + var hours = parseInt(timeString.replace(/:.+$/, '')); + var minutes = parseInt(timeString.replace(/^\d.+?:|:\d.+$/, '')); + var seconds = parseInt(timeString.replace(/^\d.+:|(\,|\.).+$/, '')); + var milSeconds = parseInt(timeString.replace(/^.+(\,|\.)/, '')); + return (hours * 60 * 60) + (minutes * 60) + seconds + (milSeconds / 1000); } function findSubtiles(searchPattern) { diff --git a/01_P/P_4_2_3_03/sketch.js b/01_P/P_4_2_3_03/sketch.js index fe934e7e..2881ef35 100644 --- a/01_P/P_4_2_3_03/sketch.js +++ b/01_P/P_4_2_3_03/sketch.js @@ -97,11 +97,11 @@ function SubTitleObject(startTime, endTime, dialog) { } function getTimeInSeconds(timeString) { - var hours = parseInt(timeString.replace(/:.+$/, '')); - var minutes = parseInt(timeString.replace(/^\d.+?:|:\d.+$/, '')); - var seconds = parseInt(timeString.replace(/^\d.+:|(\,|\.).+$/, '')); - var milSeconds = parseInt(timeString.replace(/^.+(\,|\.)/, '')); - return (hours * 60 * 60) + (minutes * 60) + seconds + (milSeconds / 1000); + var hours = parseInt(timeString.replace(/:.+$/, '')); + var minutes = parseInt(timeString.replace(/^\d.+?:|:\d.+$/, '')); + var seconds = parseInt(timeString.replace(/^\d.+:|(\,|\.).+$/, '')); + var milSeconds = parseInt(timeString.replace(/^.+(\,|\.)/, '')); + return (hours * 60 * 60) + (minutes * 60) + seconds + (milSeconds / 1000); } function findSubtiles(searchPattern) { @@ -128,9 +128,9 @@ function findSubtiles(searchPattern) { break; } if (i % 5 - 2 === 0 || i % 5 - 3 === 0) { - results.push(rhymeB.shift()); + results.push(rhymeB.shift()); } else { - results.push(rhymeA.shift()); + results.push(rhymeA.shift()); } } results.splice(results.length - results.length % 5); diff --git a/01_P/P_4_2_3_04/sketch.js b/01_P/P_4_2_3_04/sketch.js index 7a61e2b7..1094419d 100644 --- a/01_P/P_4_2_3_04/sketch.js +++ b/01_P/P_4_2_3_04/sketch.js @@ -96,11 +96,11 @@ function SubTitleObject(startTime, endTime, dialog) { } function getTimeInSeconds(timeString) { - var hours = parseInt(timeString.replace(/:.+$/, '')); - var minutes = parseInt(timeString.replace(/^\d.+?:|:\d.+$/, '')); - var seconds = parseInt(timeString.replace(/^\d.+:|(\,|\.).+$/, '')); - var milSeconds = parseInt(timeString.replace(/^.+(\,|\.)/, '')); - return (hours * 60 * 60) + (minutes * 60) + seconds + (milSeconds / 1000); + var hours = parseInt(timeString.replace(/:.+$/, '')); + var minutes = parseInt(timeString.replace(/^\d.+?:|:\d.+$/, '')); + var seconds = parseInt(timeString.replace(/^\d.+:|(\,|\.).+$/, '')); + var milSeconds = parseInt(timeString.replace(/^.+(\,|\.)/, '')); + return (hours * 60 * 60) + (minutes * 60) + seconds + (milSeconds / 1000); } function findSubtiles(searchPattern) { @@ -171,7 +171,7 @@ function queryResultMontage(searchResults, i) { video.elt.ontimeupdate = null; return false; }; - } + }; } function togglePlayback() { diff --git a/01_P/P_4_3_1_01/sketch.js b/01_P/P_4_3_1_01/sketch.js index 23dcf5b7..cbf08bfe 100644 --- a/01_P/P_4_3_1_01/sketch.js +++ b/01_P/P_4_3_1_01/sketch.js @@ -63,95 +63,95 @@ function draw() { var greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); switch (drawMode) { - case 1: - // greyscale to stroke weight - var w1 = map(greyscale, 0, 255, 15, 0.1); - stroke(0); - strokeWeight(w1 * mouseXFactor); - line(posX, posY, posX + 5, posY + 5); - break; - case 2: - // greyscale to ellipse area - fill(0); - noStroke(); - var r2 = 1.1284 * sqrt(tileWidth * tileWidth * (1 - greyscale / 255)); - r2 *= mouseXFactor * 3; - ellipse(posX, posY, r2, r2); - break; - case 3: - // greyscale to line length - var l3 = map(greyscale, 0, 255, 30, 0.1); - l3 *= mouseXFactor; - stroke(0); - strokeWeight(10 * mouseYFactor); - line(posX, posY, posX + l3, posY + l3); - break; - case 4: - // greyscale to rotation, line length and stroke weight - stroke(0); - var w4 = map(greyscale, 0, 255, 10, 0); - strokeWeight(w4 * mouseXFactor + 0.1); - var l4 = map(greyscale, 0, 255, 35, 0); - l4 *= mouseYFactor; - push(); - translate(posX, posY); - rotate(greyscale / 255 * PI); - line(0, 0, 0 + l4, 0 + l4); - pop(); - break; - case 5: - // greyscale to line relief - var w5 = map(greyscale, 0, 255, 5, 0.2); - strokeWeight(w5 * mouseYFactor + 0.1); - // get neighbour pixel, limit it to image width - var c2 = color(img.get(min(gridX + 1, img.width - 1), gridY)); - stroke(c2); - var greyscale2 = floor(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); - var h5 = 50 * mouseXFactor; - var d1 = map(greyscale, 0, 255, h5, 0); - var d2 = map(greyscale2, 0, 255, h5, 0); - line(posX - d1, posY + d1, posX + tileWidth - d2, posY + d2); - break; - case 6: - // pixel color to fill, greyscale to ellipse size - var w6 = map(greyscale, 0, 255, 25, 0); - noStroke(); - fill(c); - ellipse(posX, posY, w6 * mouseXFactor, w6 * mouseXFactor); - break; - case 7: - stroke(c); - var w7 = map(greyscale, 0, 255, 5, 0.1); - strokeWeight(w7); - fill(255, 255 * mouseXFactor); - push(); - translate(posX, posY); - rotate(greyscale / 255 * PI * mouseYFactor); - rect(0, 0, 15, 15); - pop(); - break; - case 8: - noStroke(); - fill(greyscale, greyscale * mouseXFactor, 255 * mouseYFactor); - rect(posX, posY, 3.5, 3.5); - rect(posX + 4, posY, 3.5, 3.5); - rect(posX, posY + 4, 3.5, 3.5); - rect(posX + 4, posY + 4, 3.5, 3.5); - break; - case 9: - stroke(255, greyscale, 0); - noFill(); - push(); - translate(posX, posY); - rotate(greyscale / 255 * PI); - strokeWeight(1); - rect(0, 0, 15 * mouseXFactor, 15 * mouseYFactor); - var w9 = map(greyscale, 0, 255, 15, 0.1); - strokeWeight(w9); - stroke(0, 70); - ellipse(0, 0, 10, 5); - pop(); - break; + case 1: + // greyscale to stroke weight + var w1 = map(greyscale, 0, 255, 15, 0.1); + stroke(0); + strokeWeight(w1 * mouseXFactor); + line(posX, posY, posX + 5, posY + 5); + break; + case 2: + // greyscale to ellipse area + fill(0); + noStroke(); + var r2 = 1.1284 * sqrt(tileWidth * tileWidth * (1 - greyscale / 255)); + r2 *= mouseXFactor * 3; + ellipse(posX, posY, r2, r2); + break; + case 3: + // greyscale to line length + var l3 = map(greyscale, 0, 255, 30, 0.1); + l3 *= mouseXFactor; + stroke(0); + strokeWeight(10 * mouseYFactor); + line(posX, posY, posX + l3, posY + l3); + break; + case 4: + // greyscale to rotation, line length and stroke weight + stroke(0); + var w4 = map(greyscale, 0, 255, 10, 0); + strokeWeight(w4 * mouseXFactor + 0.1); + var l4 = map(greyscale, 0, 255, 35, 0); + l4 *= mouseYFactor; + push(); + translate(posX, posY); + rotate(greyscale / 255 * PI); + line(0, 0, 0 + l4, 0 + l4); + pop(); + break; + case 5: + // greyscale to line relief + var w5 = map(greyscale, 0, 255, 5, 0.2); + strokeWeight(w5 * mouseYFactor + 0.1); + // get neighbour pixel, limit it to image width + var c2 = color(img.get(min(gridX + 1, img.width - 1), gridY)); + stroke(c2); + var greyscale2 = floor(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); + var h5 = 50 * mouseXFactor; + var d1 = map(greyscale, 0, 255, h5, 0); + var d2 = map(greyscale2, 0, 255, h5, 0); + line(posX - d1, posY + d1, posX + tileWidth - d2, posY + d2); + break; + case 6: + // pixel color to fill, greyscale to ellipse size + var w6 = map(greyscale, 0, 255, 25, 0); + noStroke(); + fill(c); + ellipse(posX, posY, w6 * mouseXFactor, w6 * mouseXFactor); + break; + case 7: + stroke(c); + var w7 = map(greyscale, 0, 255, 5, 0.1); + strokeWeight(w7); + fill(255, 255 * mouseXFactor); + push(); + translate(posX, posY); + rotate(greyscale / 255 * PI * mouseYFactor); + rect(0, 0, 15, 15); + pop(); + break; + case 8: + noStroke(); + fill(greyscale, greyscale * mouseXFactor, 255 * mouseYFactor); + rect(posX, posY, 3.5, 3.5); + rect(posX + 4, posY, 3.5, 3.5); + rect(posX, posY + 4, 3.5, 3.5); + rect(posX + 4, posY + 4, 3.5, 3.5); + break; + case 9: + stroke(255, greyscale, 0); + noFill(); + push(); + translate(posX, posY); + rotate(greyscale / 255 * PI); + strokeWeight(1); + rect(0, 0, 15 * mouseXFactor, 15 * mouseYFactor); + var w9 = map(greyscale, 0, 255, 15, 0.1); + strokeWeight(w9); + stroke(0, 70); + ellipse(0, 0, 10, 5); + pop(); + break; } } } diff --git a/01_P/P_4_3_2_01/sketch.js b/01_P/P_4_3_2_01/sketch.js index 1aafdb3f..681a3994 100644 --- a/01_P/P_4_3_2_01/sketch.js +++ b/01_P/P_4_3_2_01/sketch.js @@ -29,7 +29,7 @@ */ 'use strict'; -var inputText = "All the world's a stage, And all the men and women merely players; They have their exits and their entrances; And one man in his time plays many parts, His acts being seven ages. At first the infant, Mewling and puking in the nurse's arms; Then the whining school-boy, with his satchel And shining morning face, creeping like snail Unwillingly to school. And then the lover, Sighing like furnace, with a woeful ballad Made to his mistress' eyebrow. Then a soldier, Full of strange oaths, and bearded like the pard, Jealous in honour, sudden and quick in quarrel, Seeking the bubble reputation Even in the cannon's mouth. And then the justice, In fair round belly with good capon lin'd, With eyes severe and beard of formal cut, Full of wise saws and modern instances; And so he plays his part. The sixth age shifts Into the lean and slipper'd pantaloon, With spectacles on nose and pouch on side, His youthful hose, well sav'd, a world too wide For his shrunk shank; and his big manly voice, Turning again toward childish treble, pipes And whistles in his sound. Last scene of all, That ends this strange eventful history, Is second childishness and mere oblivion; Sans teeth, sans eyes, sans taste, sans every thing."; +var inputText = 'All the world\'s a stage, And all the men and women merely players; They have their exits and their entrances; And one man in his time plays many parts, His acts being seven ages. At first the infant, Mewling and puking in the nurse\'s arms; Then the whining school-boy, with his satchel And shining morning face, creeping like snail Unwillingly to school. And then the lover, Sighing like furnace, with a woeful ballad Made to his mistress\' eyebrow. Then a soldier, Full of strange oaths, and bearded like the pard, Jealous in honour, sudden and quick in quarrel, Seeking the bubble reputation Even in the cannon\'s mouth. And then the justice, In fair round belly with good capon lin\'d, With eyes severe and beard of formal cut, Full of wise saws and modern instances; And so he plays his part. The sixth age shifts Into the lean and slipper\'d pantaloon, With spectacles on nose and pouch on side, His youthful hose, well sav\'d, a world too wide For his shrunk shank; and his big manly voice, Turning again toward childish treble, pipes And whistles in his sound. Last scene of all, That ends this strange eventful history, Is second childishness and mere oblivion; Sans teeth, sans eyes, sans taste, sans every thing.'; var fontSizeMax = 20; var fontSizeMin = 10; var spacing = 12; // line height @@ -63,8 +63,8 @@ function draw() { // translate position (display) to position (image) img.loadPixels(); // get current color - var imgX = round(map(x, 0, width, 0, img.width)) - var imgY = round(map(y, 0, height, 0, img.height)) + var imgX = round(map(x, 0, width, 0, img.width)); + var imgY = round(map(y, 0, height, 0, img.height)); var c = color(img.get(imgX, imgY)); var greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); diff --git a/01_P/P_4_3_3_01/sketch.js b/01_P/P_4_3_3_01/sketch.js index 6b8ff47f..ca248bfd 100644 --- a/01_P/P_4_3_3_01/sketch.js +++ b/01_P/P_4_3_3_01/sketch.js @@ -50,9 +50,9 @@ function setup() { x = width / 2; y = height / 2; video = createCapture(VIDEO, function() { - streamReady = true + streamReady = true; }); - video.size(width, height); + video.size(width * pixelDensity(), height * pixelDensity()); video.hide(); noFill(); } @@ -60,12 +60,9 @@ function setup() { function draw() { if (streamReady) { for (var j = 0; j <= mouseX / 50; j++) { - // get actual web cam image - video.loadPixels(); - // first line - var pixelIndex = ((video.width - 1 - x) + y * video.width) * 4; - var c = color(video.pixels[pixelIndex], video.pixels[pixelIndex + 1], video.pixels[pixelIndex + 2]); + // Retrieve color from capture device + var c = color(video.get(width - x, y)); // convert color c to HSV var cHSV = chroma(red(c), green(c), blue(c)); diff --git a/01_P/P_4_3_3_02/sketch.js b/01_P/P_4_3_3_02/sketch.js index 381c50c9..4791b867 100644 --- a/01_P/P_4_3_3_02/sketch.js +++ b/01_P/P_4_3_3_02/sketch.js @@ -30,7 +30,6 @@ 'use strict'; var video; -var pixelIndex; var c; var x1, x2, x3, y1, y2, y3; var curvePointX = 0; @@ -42,9 +41,12 @@ var streamReady = false; function setup() { createCanvas(640, 480); background(255); - video = createCapture(VIDEO, function() { streamReady = true }); - video.size(width, height); + video = createCapture(VIDEO, function() { + streamReady = true; + }); + video.size(width * pixelDensity(), height * pixelDensity()); video.hide(); + noFill(); x1 = 0; y1 = height / 2; @@ -56,14 +58,10 @@ function setup() { function draw() { if (streamReady) { - noFill(); - - // get actual webcam image - video.loadPixels(); // first line - pixelIndex = ((video.width - 1 - int(x1)) + int(y1) * video.width) * 4; - c = color(video.pixels[pixelIndex], video.pixels[pixelIndex + 1], video.pixels[pixelIndex + 2], video.pixels[pixelIndex + 3]); + // Retrieve color from capture device + c = color(video.get(x1, y1)); // convert color c to HSV var cHSV = chroma(red(c), green(c), blue(c)); var hueValue = cHSV.get('hsv.h'); @@ -84,8 +82,8 @@ function draw() { y1 = curvePointY; // second line - pixelIndex = ((video.width - 1 - int(x2)) + int(y2) * video.width) * 4; - c = color(video.pixels[pixelIndex], video.pixels[pixelIndex + 1], video.pixels[pixelIndex + 2], video.pixels[pixelIndex + 3]); + // Retrieve color from capture device + c = color(video.get(x2, y2)); // convert color c to HSV var cHSV = chroma(red(c), green(c), blue(c)); var saturationValue = cHSV.get('hsv.s'); @@ -106,8 +104,8 @@ function draw() { y2 = curvePointY; // third line - pixelIndex = ((video.width - 1 - int(x3)) + int(y3) * video.width) * 4; - c = color(video.pixels[pixelIndex], video.pixels[pixelIndex + 1], video.pixels[pixelIndex + 2], video.pixels[pixelIndex + 3]); + // Retrieve color from capture device + c = color(video.get(x3, y3)); // convert color c to HSV var cHSV = chroma(red(c), green(c), blue(c)); var brightnessValue = cHSV.get('hsv.v'); diff --git a/01_P/P_4_3_4_01/emoji-average-colors.js b/01_P/P_4_3_4_01/emoji-average-colors.js index c5f8cc85..63b74c04 100644 --- a/01_P/P_4_3_4_01/emoji-average-colors.js +++ b/01_P/P_4_3_4_01/emoji-average-colors.js @@ -1,6106 +1,6106 @@ var emojis = { - "2049": { - "averageColor": { - "r": 190, - "g": 25, - "b": 48 + '2049': { + 'averageColor': { + 'r': 190, + 'g': 25, + 'b': 48 } }, - "2122": { - "averageColor": { - "r": 0, - "g": 0, - "b": 0 + '2122': { + 'averageColor': { + 'r': 0, + 'g': 0, + 'b': 0 } }, - "2139": { - "averageColor": { - "r": 73, - "g": 144, - "b": 199 + '2139': { + 'averageColor': { + 'r': 73, + 'g': 144, + 'b': 199 } }, - "2194": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '2194': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "2195": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '2195': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "2196": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '2196': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "2197": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '2197': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "2198": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '2198': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "2199": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '2199': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "2600": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '2600': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "2601": { - "averageColor": { - "r": 150, - "g": 167, - "b": 178 + '2601': { + 'averageColor': { + 'r': 150, + 'g': 167, + 'b': 178 } }, - "2611": { - "averageColor": { - "r": 54, - "g": 114, - "b": 159 + '2611': { + 'averageColor': { + 'r': 54, + 'g': 114, + 'b': 159 } }, - "2614": { - "averageColor": { - "r": 114, - "g": 114, - "b": 188 + '2614': { + 'averageColor': { + 'r': 114, + 'g': 114, + 'b': 188 } }, - "2615": { - "averageColor": { - "r": 193, - "g": 177, - "b": 173 + '2615': { + 'averageColor': { + 'r': 193, + 'g': 177, + 'b': 173 } }, - "2648": { - "averageColor": { - "r": 226, - "g": 80, - "b": 98 + '2648': { + 'averageColor': { + 'r': 226, + 'g': 80, + 'b': 98 } }, - "2649": { - "averageColor": { - "r": 245, - "g": 163, - "b": 53 + '2649': { + 'averageColor': { + 'r': 245, + 'g': 163, + 'b': 53 } }, - "2650": { - "averageColor": { - "r": 226, - "g": 79, - "b": 98 + '2650': { + 'averageColor': { + 'r': 226, + 'g': 79, + 'b': 98 } }, - "2651": { - "averageColor": { - "r": 245, - "g": 163, - "b": 55 + '2651': { + 'averageColor': { + 'r': 245, + 'g': 163, + 'b': 55 } }, - "2652": { - "averageColor": { - "r": 132, - "g": 172, - "b": 107 + '2652': { + 'averageColor': { + 'r': 132, + 'g': 172, + 'b': 107 } }, - "2653": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '2653': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "2660": { - "averageColor": { - "r": 0, - "g": 0, - "b": 0 + '2660': { + 'averageColor': { + 'r': 0, + 'g': 0, + 'b': 0 } }, - "2663": { - "averageColor": { - "r": 0, - "g": 0, - "b": 0 + '2663': { + 'averageColor': { + 'r': 0, + 'g': 0, + 'b': 0 } }, - "2665": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '2665': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "2666": { - "averageColor": { - "r": 221, - "g": 46, - "b": 68 + '2666': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 68 } }, - "2668": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '2668': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "2693": { - "averageColor": { - "r": 33, - "g": 101, - "b": 153 + '2693': { + 'averageColor': { + 'r': 33, + 'g': 101, + 'b': 153 } }, - "2702": { - "averageColor": { - "r": 201, - "g": 117, - "b": 132 + '2702': { + 'averageColor': { + 'r': 201, + 'g': 117, + 'b': 132 } }, - "2705": { - "averageColor": { - "r": 138, - "g": 188, - "b": 108 + '2705': { + 'averageColor': { + 'r': 138, + 'g': 188, + 'b': 108 } }, - "2708": { - "averageColor": { - "r": 139, - "g": 185, - "b": 219 + '2708': { + 'averageColor': { + 'r': 139, + 'g': 185, + 'b': 219 } }, - "2709": { - "averageColor": { - "r": 203, - "g": 213, - "b": 220 + '2709': { + 'averageColor': { + 'r': 203, + 'g': 213, + 'b': 220 } }, - "2712": { - "averageColor": { - "r": 97, - "g": 97, - "b": 100 + '2712': { + 'averageColor': { + 'r': 97, + 'g': 97, + 'b': 100 } }, - "2714": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2714': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2716": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2716': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2728": { - "averageColor": { - "r": 172, - "g": 149, - "b": 195 + '2728': { + 'averageColor': { + 'r': 172, + 'g': 149, + 'b': 195 } }, - "2733": { - "averageColor": { - "r": 170, - "g": 140, - "b": 215 + '2733': { + 'averageColor': { + 'r': 170, + 'g': 140, + 'b': 215 } }, - "2734": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2734': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2744": { - "averageColor": { - "r": 136, - "g": 200, - "b": 249 + '2744': { + 'averageColor': { + 'r': 136, + 'g': 200, + 'b': 249 } }, - "2747": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '2747': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "2753": { - "averageColor": { - "r": 190, - "g": 25, - "b": 48 + '2753': { + 'averageColor': { + 'r': 190, + 'g': 25, + 'b': 48 } }, - "2754": { - "averageColor": { - "r": 146, - "g": 148, - "b": 152 + '2754': { + 'averageColor': { + 'r': 146, + 'g': 148, + 'b': 152 } }, - "2755": { - "averageColor": { - "r": 146, - "g": 149, - "b": 152 + '2755': { + 'averageColor': { + 'r': 146, + 'g': 149, + 'b': 152 } }, - "2757": { - "averageColor": { - "r": 190, - "g": 25, - "b": 48 + '2757': { + 'averageColor': { + 'r': 190, + 'g': 25, + 'b': 48 } }, - "2764": { - "averageColor": { - "r": 187, - "g": 26, - "b": 51 + '2764': { + 'averageColor': { + 'r': 187, + 'g': 26, + 'b': 51 } }, - "2795": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2795': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2796": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2796': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2797": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2797': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2934": { - "averageColor": { - "r": 80, - "g": 148, - "b": 201 + '2934': { + 'averageColor': { + 'r': 80, + 'g': 148, + 'b': 201 } }, - "2935": { - "averageColor": { - "r": 80, - "g": 148, - "b": 201 + '2935': { + 'averageColor': { + 'r': 80, + 'g': 148, + 'b': 201 } }, - "3030": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '3030': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "3297": { - "averageColor": { - "r": 228, - "g": 91, - "b": 109 + '3297': { + 'averageColor': { + 'r': 228, + 'g': 91, + 'b': 109 } }, - "3299": { - "averageColor": { - "r": 229, - "g": 98, - "b": 115 + '3299': { + 'averageColor': { + 'r': 229, + 'g': 98, + 'b': 115 } }, - "1f0cf": { - "averageColor": { - "r": 210, - "g": 193, - "b": 198 + '1f0cf': { + 'averageColor': { + 'r': 210, + 'g': 193, + 'b': 198 } }, - "1f1e6": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '1f1e6': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "1f1e7": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '1f1e7': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "1f1e8-1f1f3": { - "averageColor": { - "r": 222, - "g": 51, - "b": 70 + '1f1e8-1f1f3': { + 'averageColor': { + 'r': 222, + 'g': 51, + 'b': 70 } }, - "1f1e8": { - "averageColor": { - "r": 88, - "g": 153, - "b": 204 + '1f1e8': { + 'averageColor': { + 'r': 88, + 'g': 153, + 'b': 204 } }, - "1f1e9-1f1ea": { - "averageColor": { - "r": 176, - "g": 94, - "b": 65 + '1f1e9-1f1ea': { + 'averageColor': { + 'r': 176, + 'g': 94, + 'b': 65 } }, - "1f1e9": { - "averageColor": { - "r": 97, - "g": 159, - "b": 206 + '1f1e9': { + 'averageColor': { + 'r': 97, + 'g': 159, + 'b': 206 } }, - "1f1ea-1f1f8": { - "averageColor": { - "r": 233, - "g": 112, - "b": 75 + '1f1ea-1f1f8': { + 'averageColor': { + 'r': 233, + 'g': 112, + 'b': 75 } }, - "1f1ea": { - "averageColor": { - "r": 89, - "g": 154, - "b": 204 + '1f1ea': { + 'averageColor': { + 'r': 89, + 'g': 154, + 'b': 204 } }, - "1f1eb-1f1f7": { - "averageColor": { - "r": 164, - "g": 129, - "b": 153 + '1f1eb-1f1f7': { + 'averageColor': { + 'r': 164, + 'g': 129, + 'b': 153 } }, - "1f1eb": { - "averageColor": { - "r": 83, - "g": 150, - "b": 202 + '1f1eb': { + 'averageColor': { + 'r': 83, + 'g': 150, + 'b': 202 } }, - "1f1ec-1f1e7": { - "averageColor": { - "r": 206, - "g": 130, - "b": 147 + '1f1ec-1f1e7': { + 'averageColor': { + 'r': 206, + 'g': 130, + 'b': 147 } }, - "1f1ec": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '1f1ec': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "1f1ed": { - "averageColor": { - "r": 98, - "g": 160, - "b": 207 + '1f1ed': { + 'averageColor': { + 'r': 98, + 'g': 160, + 'b': 207 } }, - "1f1ee-1f1f9": { - "averageColor": { - "r": 183, - "g": 143, - "b": 122 + '1f1ee-1f1f9': { + 'averageColor': { + 'r': 183, + 'g': 143, + 'b': 122 } }, - "1f1ee": { - "averageColor": { - "r": 74, - "g": 145, - "b": 199 + '1f1ee': { + 'averageColor': { + 'r': 74, + 'g': 145, + 'b': 199 } }, - "1f1ef-1f1f5": { - "averageColor": { - "r": 235, - "g": 205, - "b": 209 + '1f1ef-1f1f5': { + 'averageColor': { + 'r': 235, + 'g': 205, + 'b': 209 } }, - "1f1ef": { - "averageColor": { - "r": 78, - "g": 148, - "b": 201 + '1f1ef': { + 'averageColor': { + 'r': 78, + 'g': 148, + 'b': 201 } }, - "1f1f0-1f1f7": { - "averageColor": { - "r": 200, - "g": 192, - "b": 199 + '1f1f0-1f1f7': { + 'averageColor': { + 'r': 200, + 'g': 192, + 'b': 199 } }, - "1f1f0": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '1f1f0': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "1f1f1": { - "averageColor": { - "r": 79, - "g": 148, - "b": 201 + '1f1f1': { + 'averageColor': { + 'r': 79, + 'g': 148, + 'b': 201 } }, - "1f1f2": { - "averageColor": { - "r": 111, - "g": 168, - "b": 211 + '1f1f2': { + 'averageColor': { + 'r': 111, + 'g': 168, + 'b': 211 } }, - "1f1f3": { - "averageColor": { - "r": 100, - "g": 161, - "b": 207 + '1f1f3': { + 'averageColor': { + 'r': 100, + 'g': 161, + 'b': 207 } }, - "1f1f4": { - "averageColor": { - "r": 98, - "g": 160, - "b": 207 + '1f1f4': { + 'averageColor': { + 'r': 98, + 'g': 160, + 'b': 207 } }, - "1f1f5": { - "averageColor": { - "r": 91, - "g": 155, - "b": 204 + '1f1f5': { + 'averageColor': { + 'r': 91, + 'g': 155, + 'b': 204 } }, - "1f1f6": { - "averageColor": { - "r": 104, - "g": 163, - "b": 208 + '1f1f6': { + 'averageColor': { + 'r': 104, + 'g': 163, + 'b': 208 } }, - "1f1f7-1f1fa": { - "averageColor": { - "r": 163, - "g": 139, - "b": 169 + '1f1f7-1f1fa': { + 'averageColor': { + 'r': 163, + 'g': 139, + 'b': 169 } }, - "1f1f7": { - "averageColor": { - "r": 96, - "g": 159, - "b": 206 + '1f1f7': { + 'averageColor': { + 'r': 96, + 'g': 159, + 'b': 206 } }, - "1f1f8": { - "averageColor": { - "r": 91, - "g": 155, - "b": 205 + '1f1f8': { + 'averageColor': { + 'r': 91, + 'g': 155, + 'b': 205 } }, - "1f1f9": { - "averageColor": { - "r": 81, - "g": 149, - "b": 201 + '1f1f9': { + 'averageColor': { + 'r': 81, + 'g': 149, + 'b': 201 } }, - "1f1fa-1f1f8": { - "averageColor": { - "r": 193, - "g": 143, - "b": 165 + '1f1fa-1f1f8': { + 'averageColor': { + 'r': 193, + 'g': 143, + 'b': 165 } }, - "1f1fa": { - "averageColor": { - "r": 95, - "g": 158, - "b": 206 + '1f1fa': { + 'averageColor': { + 'r': 95, + 'g': 158, + 'b': 206 } }, - "1f1fb": { - "averageColor": { - "r": 88, - "g": 153, - "b": 203 + '1f1fb': { + 'averageColor': { + 'r': 88, + 'g': 153, + 'b': 203 } }, - "1f1fc": { - "averageColor": { - "r": 112, - "g": 168, - "b": 211 + '1f1fc': { + 'averageColor': { + 'r': 112, + 'g': 168, + 'b': 211 } }, - "1f1fd": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '1f1fd': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "1f1fe": { - "averageColor": { - "r": 85, - "g": 151, - "b": 203 + '1f1fe': { + 'averageColor': { + 'r': 85, + 'g': 151, + 'b': 203 } }, - "1f1ff": { - "averageColor": { - "r": 90, - "g": 155, - "b": 204 + '1f1ff': { + 'averageColor': { + 'r': 90, + 'g': 155, + 'b': 204 } }, - "1f3a0": { - "averageColor": { - "r": 156, - "g": 196, - "b": 232 + '1f3a0': { + 'averageColor': { + 'r': 156, + 'g': 196, + 'b': 232 } }, - "1f3a1": { - "averageColor": { - "r": 154, - "g": 184, - "b": 217 + '1f3a1': { + 'averageColor': { + 'r': 154, + 'g': 184, + 'b': 217 } }, - "1f3a2": { - "averageColor": { - "r": 148, - "g": 167, - "b": 202 + '1f3a2': { + 'averageColor': { + 'r': 148, + 'g': 167, + 'b': 202 } }, - "1f3a3": { - "averageColor": { - "r": 91, - "g": 120, - "b": 153 + '1f3a3': { + 'averageColor': { + 'r': 91, + 'g': 120, + 'b': 153 } }, - "1f3a4": { - "averageColor": { - "r": 90, - "g": 114, - "b": 134 + '1f3a4': { + 'averageColor': { + 'r': 90, + 'g': 114, + 'b': 134 } }, - "1f3a5": { - "averageColor": { - "r": 105, - "g": 106, - "b": 108 + '1f3a5': { + 'averageColor': { + 'r': 105, + 'g': 106, + 'b': 108 } }, - "1f3a6": { - "averageColor": { - "r": 138, - "g": 184, - "b": 219 + '1f3a6': { + 'averageColor': { + 'r': 138, + 'g': 184, + 'b': 219 } }, - "1f3a7": { - "averageColor": { - "r": 77, - "g": 121, - "b": 154 + '1f3a7': { + 'averageColor': { + 'r': 77, + 'g': 121, + 'b': 154 } }, - "1f3a8": { - "averageColor": { - "r": 207, - "g": 153, - "b": 124 + '1f3a8': { + 'averageColor': { + 'r': 207, + 'g': 153, + 'b': 124 } }, - "1f3a9": { - "averageColor": { - "r": 60, - "g": 57, - "b": 81 + '1f3a9': { + 'averageColor': { + 'r': 60, + 'g': 57, + 'b': 81 } }, - "1f3aa": { - "averageColor": { - "r": 184, - "g": 132, - "b": 145 + '1f3aa': { + 'averageColor': { + 'r': 184, + 'g': 132, + 'b': 145 } }, - "1f3ab": { - "averageColor": { - "r": 197, - "g": 208, - "b": 215 + '1f3ab': { + 'averageColor': { + 'r': 197, + 'g': 208, + 'b': 215 } }, - "1f3ac": { - "averageColor": { - "r": 94, - "g": 123, - "b": 88 + '1f3ac': { + 'averageColor': { + 'r': 94, + 'g': 123, + 'b': 88 } }, - "1f3ad": { - "averageColor": { - "r": 174, - "g": 184, - "b": 177 + '1f3ad': { + 'averageColor': { + 'r': 174, + 'g': 184, + 'b': 177 } }, - "1f3ae": { - "averageColor": { - "r": 75, - "g": 71, - "b": 64 + '1f3ae': { + 'averageColor': { + 'r': 75, + 'g': 71, + 'b': 64 } }, - "1f3af": { - "averageColor": { - "r": 155, - "g": 135, - "b": 144 + '1f3af': { + 'averageColor': { + 'r': 155, + 'g': 135, + 'b': 144 } }, - "1f3b0": { - "averageColor": { - "r": 136, - "g": 127, - "b": 133 + '1f3b0': { + 'averageColor': { + 'r': 136, + 'g': 127, + 'b': 133 } }, - "1f3b1": { - "averageColor": { - "r": 73, - "g": 79, - "b": 83 + '1f3b1': { + 'averageColor': { + 'r': 73, + 'g': 79, + 'b': 83 } }, - "1f3b2": { - "averageColor": { - "r": 218, - "g": 81, - "b": 101 + '1f3b2': { + 'averageColor': { + 'r': 218, + 'g': 81, + 'b': 101 } }, - "1f3b3": { - "averageColor": { - "r": 111, - "g": 112, - "b": 118 + '1f3b3': { + 'averageColor': { + 'r': 111, + 'g': 112, + 'b': 118 } }, - "1f3b4": { - "averageColor": { - "r": 158, - "g": 70, - "b": 81 + '1f3b4': { + 'averageColor': { + 'r': 158, + 'g': 70, + 'b': 81 } }, - "1f3b5": { - "averageColor": { - "r": 93, - "g": 173, - "b": 235 + '1f3b5': { + 'averageColor': { + 'r': 93, + 'g': 173, + 'b': 235 } }, - "1f3b6": { - "averageColor": { - "r": 93, - "g": 173, - "b": 235 + '1f3b6': { + 'averageColor': { + 'r': 93, + 'g': 173, + 'b': 235 } }, - "1f3b7": { - "averageColor": { - "r": 243, - "g": 181, - "b": 88 + '1f3b7': { + 'averageColor': { + 'r': 243, + 'g': 181, + 'b': 88 } }, - "1f3b8": { - "averageColor": { - "r": 222, - "g": 133, - "b": 43 + '1f3b8': { + 'averageColor': { + 'r': 222, + 'g': 133, + 'b': 43 } }, - "1f3b9": { - "averageColor": { - "r": 115, - "g": 122, - "b": 126 + '1f3b9': { + 'averageColor': { + 'r': 115, + 'g': 122, + 'b': 126 } }, - "1f3ba": { - "averageColor": { - "r": 246, - "g": 176, - "b": 83 + '1f3ba': { + 'averageColor': { + 'r': 246, + 'g': 176, + 'b': 83 } }, - "1f3bb": { - "averageColor": { - "r": 204, - "g": 126, - "b": 43 + '1f3bb': { + 'averageColor': { + 'r': 204, + 'g': 126, + 'b': 43 } }, - "1f3bc": { - "averageColor": { - "r": 103, - "g": 113, - "b": 120 + '1f3bc': { + 'averageColor': { + 'r': 103, + 'g': 113, + 'b': 120 } }, - "1f3bd": { - "averageColor": { - "r": 114, - "g": 173, - "b": 207 + '1f3bd': { + 'averageColor': { + 'r': 114, + 'g': 173, + 'b': 207 } }, - "1f3be": { - "averageColor": { - "r": 148, - "g": 196, - "b": 120 + '1f3be': { + 'averageColor': { + 'r': 148, + 'g': 196, + 'b': 120 } }, - "1f3bf": { - "averageColor": { - "r": 167, - "g": 182, - "b": 209 + '1f3bf': { + 'averageColor': { + 'r': 167, + 'g': 182, + 'b': 209 } }, - "1f3c0": { - "averageColor": { - "r": 193, - "g": 116, - "b": 16 + '1f3c0': { + 'averageColor': { + 'r': 193, + 'g': 116, + 'b': 16 } }, - "1f3c1": { - "averageColor": { - "r": 125, - "g": 126, - "b": 142 + '1f3c1': { + 'averageColor': { + 'r': 125, + 'g': 126, + 'b': 142 } }, - "1f3c2": { - "averageColor": { - "r": 187, - "g": 175, - "b": 194 + '1f3c2': { + 'averageColor': { + 'r': 187, + 'g': 175, + 'b': 194 } }, - "1f3c3": { - "averageColor": { - "r": 131, - "g": 101, - "b": 109 + '1f3c3': { + 'averageColor': { + 'r': 131, + 'g': 101, + 'b': 109 } }, - "1f3c4": { - "averageColor": { - "r": 130, - "g": 160, - "b": 166 + '1f3c4': { + 'averageColor': { + 'r': 130, + 'g': 160, + 'b': 166 } }, - "1f3c6": { - "averageColor": { - "r": 245, - "g": 179, - "b": 69 + '1f3c6': { + 'averageColor': { + 'r': 245, + 'g': 179, + 'b': 69 } }, - "1f3c7": { - "averageColor": { - "r": 175, - "g": 124, - "b": 101 + '1f3c7': { + 'averageColor': { + 'r': 175, + 'g': 124, + 'b': 101 } }, - "1f3c8": { - "averageColor": { - "r": 124, - "g": 70, - "b": 59 + '1f3c8': { + 'averageColor': { + 'r': 124, + 'g': 70, + 'b': 59 } }, - "1f3c9": { - "averageColor": { - "r": 171, - "g": 199, - "b": 221 + '1f3c9': { + 'averageColor': { + 'r': 171, + 'g': 199, + 'b': 221 } }, - "1f3ca": { - "averageColor": { - "r": 137, - "g": 161, - "b": 187 + '1f3ca': { + 'averageColor': { + 'r': 137, + 'g': 161, + 'b': 187 } }, - "1f3e0": { - "averageColor": { - "r": 207, - "g": 199, - "b": 172 + '1f3e0': { + 'averageColor': { + 'r': 207, + 'g': 199, + 'b': 172 } }, - "1f3e1": { - "averageColor": { - "r": 182, - "g": 191, - "b": 142 + '1f3e1': { + 'averageColor': { + 'r': 182, + 'g': 191, + 'b': 142 } }, - "1f3e2": { - "averageColor": { - "r": 156, - "g": 190, - "b": 215 + '1f3e2': { + 'averageColor': { + 'r': 156, + 'g': 190, + 'b': 215 } }, - "1f3e3": { - "averageColor": { - "r": 173, - "g": 182, - "b": 197 + '1f3e3': { + 'averageColor': { + 'r': 173, + 'g': 182, + 'b': 197 } }, - "1f3e4": { - "averageColor": { - "r": 199, - "g": 103, - "b": 104 + '1f3e4': { + 'averageColor': { + 'r': 199, + 'g': 103, + 'b': 104 } }, - "1f3e5": { - "averageColor": { - "r": 162, - "g": 189, - "b": 215 + '1f3e5': { + 'averageColor': { + 'r': 162, + 'g': 189, + 'b': 215 } }, - "1f3e6": { - "averageColor": { - "r": 162, - "g": 164, - "b": 165 + '1f3e6': { + 'averageColor': { + 'r': 162, + 'g': 164, + 'b': 165 } }, - "1f3e7": { - "averageColor": { - "r": 96, - "g": 158, - "b": 204 + '1f3e7': { + 'averageColor': { + 'r': 96, + 'g': 158, + 'b': 204 } }, - "1f3e8": { - "averageColor": { - "r": 192, - "g": 189, - "b": 161 + '1f3e8': { + 'averageColor': { + 'r': 192, + 'g': 189, + 'b': 161 } }, - "1f3e9": { - "averageColor": { - "r": 196, - "g": 155, - "b": 182 + '1f3e9': { + 'averageColor': { + 'r': 196, + 'g': 155, + 'b': 182 } }, - "1f3ea": { - "averageColor": { - "r": 168, - "g": 135, - "b": 158 + '1f3ea': { + 'averageColor': { + 'r': 168, + 'g': 135, + 'b': 158 } }, - "1f3eb": { - "averageColor": { - "r": 192, - "g": 191, - "b": 163 + '1f3eb': { + 'averageColor': { + 'r': 192, + 'g': 191, + 'b': 163 } }, - "1f3ec": { - "averageColor": { - "r": 159, - "g": 182, - "b": 191 + '1f3ec': { + 'averageColor': { + 'r': 159, + 'g': 182, + 'b': 191 } }, - "1f3ed": { - "averageColor": { - "r": 178, - "g": 70, - "b": 85 + '1f3ed': { + 'averageColor': { + 'r': 178, + 'g': 70, + 'b': 85 } }, - "1f3ee": { - "averageColor": { - "r": 178, - "g": 37, - "b": 57 + '1f3ee': { + 'averageColor': { + 'r': 178, + 'g': 37, + 'b': 57 } }, - "1f3ef": { - "averageColor": { - "r": 161, - "g": 152, - "b": 150 + '1f3ef': { + 'averageColor': { + 'r': 161, + 'g': 152, + 'b': 150 } }, - "1f3f0": { - "averageColor": { - "r": 149, - "g": 166, - "b": 179 + '1f3f0': { + 'averageColor': { + 'r': 149, + 'g': 166, + 'b': 179 } }, - "1f004": { - "averageColor": { - "r": 224, - "g": 202, - "b": 206 + '1f004': { + 'averageColor': { + 'r': 224, + 'g': 202, + 'b': 206 } }, - "1f4a0": { - "averageColor": { - "r": 95, - "g": 174, - "b": 234 + '1f4a0': { + 'averageColor': { + 'r': 95, + 'g': 174, + 'b': 234 } }, - "1f4a1": { - "averageColor": { - "r": 239, - "g": 211, - "b": 142 + '1f4a1': { + 'averageColor': { + 'r': 239, + 'g': 211, + 'b': 142 } }, - "1f4a2": { - "averageColor": { - "r": 190, - "g": 25, - "b": 48 + '1f4a2': { + 'averageColor': { + 'r': 190, + 'g': 25, + 'b': 48 } }, - "1f4a3": { - "averageColor": { - "r": 57, - "g": 57, - "b": 52 + '1f4a3': { + 'averageColor': { + 'r': 57, + 'g': 57, + 'b': 52 } }, - "1f4a4": { - "averageColor": { - "r": 65, - "g": 137, - "b": 192 + '1f4a4': { + 'averageColor': { + 'r': 65, + 'g': 137, + 'b': 192 } }, - "1f4a5": { - "averageColor": { - "r": 208, - "g": 78, - "b": 67 + '1f4a5': { + 'averageColor': { + 'r': 208, + 'g': 78, + 'b': 67 } }, - "1f4a6": { - "averageColor": { - "r": 93, - "g": 173, - "b": 236 + '1f4a6': { + 'averageColor': { + 'r': 93, + 'g': 173, + 'b': 236 } }, - "1f4a7": { - "averageColor": { - "r": 93, - "g": 173, - "b": 236 + '1f4a7': { + 'averageColor': { + 'r': 93, + 'g': 173, + 'b': 236 } }, - "1f4a8": { - "averageColor": { - "r": 188, - "g": 221, - "b": 243 + '1f4a8': { + 'averageColor': { + 'r': 188, + 'g': 221, + 'b': 243 } }, - "1f4a9": { - "averageColor": { - "r": 183, - "g": 113, - "b": 96 + '1f4a9': { + 'averageColor': { + 'r': 183, + 'g': 113, + 'b': 96 } }, - "1f4aa": { - "averageColor": { - "r": 215, - "g": 155, - "b": 127 + '1f4aa': { + 'averageColor': { + 'r': 215, + 'g': 155, + 'b': 127 } }, - "1f4ab": { - "averageColor": { - "r": 252, - "g": 194, - "b": 100 + '1f4ab': { + 'averageColor': { + 'r': 252, + 'g': 194, + 'b': 100 } }, - "1f4ac": { - "averageColor": { - "r": 182, - "g": 215, - "b": 239 + '1f4ac': { + 'averageColor': { + 'r': 182, + 'g': 215, + 'b': 239 } }, - "1f4ad": { - "averageColor": { - "r": 189, - "g": 221, - "b": 243 + '1f4ad': { + 'averageColor': { + 'r': 189, + 'g': 221, + 'b': 243 } }, - "1f4ae": { - "averageColor": { - "r": 242, - "g": 157, - "b": 169 + '1f4ae': { + 'averageColor': { + 'r': 242, + 'g': 157, + 'b': 169 } }, - "1f4af": { - "averageColor": { - "r": 187, - "g": 26, - "b": 51 + '1f4af': { + 'averageColor': { + 'r': 187, + 'g': 26, + 'b': 51 } }, - "1f4b0": { - "averageColor": { - "r": 231, - "g": 199, - "b": 133 + '1f4b0': { + 'averageColor': { + 'r': 231, + 'g': 199, + 'b': 133 } }, - "1f4b1": { - "averageColor": { - "r": 121, - "g": 136, - "b": 146 + '1f4b1': { + 'averageColor': { + 'r': 121, + 'g': 136, + 'b': 146 } }, - "1f4b2": { - "averageColor": { - "r": 102, - "g": 116, - "b": 127 + '1f4b2': { + 'averageColor': { + 'r': 102, + 'g': 116, + 'b': 127 } }, - "1f4b3": { - "averageColor": { - "r": 183, - "g": 193, - "b": 200 + '1f4b3': { + 'averageColor': { + 'r': 183, + 'g': 193, + 'b': 200 } }, - "1f4b4": { - "averageColor": { - "r": 216, - "g": 197, - "b": 147 + '1f4b4': { + 'averageColor': { + 'r': 216, + 'g': 197, + 'b': 147 } }, - "1f4b5": { - "averageColor": { - "r": 159, - "g": 193, - "b": 149 + '1f4b5': { + 'averageColor': { + 'r': 159, + 'g': 193, + 'b': 149 } }, - "1f4b6": { - "averageColor": { - "r": 180, - "g": 206, - "b": 178 + '1f4b6': { + 'averageColor': { + 'r': 180, + 'g': 206, + 'b': 178 } }, - "1f4b7": { - "averageColor": { - "r": 183, - "g": 176, - "b": 212 + '1f4b7': { + 'averageColor': { + 'r': 183, + 'g': 176, + 'b': 212 } }, - "1f4b8": { - "averageColor": { - "r": 177, - "g": 205, - "b": 171 + '1f4b8': { + 'averageColor': { + 'r': 177, + 'g': 205, + 'b': 171 } }, - "1f4b9": { - "averageColor": { - "r": 149, - "g": 193, - "b": 127 + '1f4b9': { + 'averageColor': { + 'r': 149, + 'g': 193, + 'b': 127 } }, - "1f4ba": { - "averageColor": { - "r": 96, - "g": 148, - "b": 189 + '1f4ba': { + 'averageColor': { + 'r': 96, + 'g': 148, + 'b': 189 } }, - "1f4bb": { - "averageColor": { - "r": 160, - "g": 199, - "b": 229 + '1f4bb': { + 'averageColor': { + 'r': 160, + 'g': 199, + 'b': 229 } }, - "1f4bc": { - "averageColor": { - "r": 151, - "g": 78, - "b": 32 + '1f4bc': { + 'averageColor': { + 'r': 151, + 'g': 78, + 'b': 32 } }, - "1f4bd": { - "averageColor": { - "r": 174, - "g": 156, - "b": 114 + '1f4bd': { + 'averageColor': { + 'r': 174, + 'g': 156, + 'b': 114 } }, - "1f4be": { - "averageColor": { - "r": 124, - "g": 135, - "b": 143 + '1f4be': { + 'averageColor': { + 'r': 124, + 'g': 135, + 'b': 143 } }, - "1f4bf": { - "averageColor": { - "r": 163, - "g": 177, - "b": 187 + '1f4bf': { + 'averageColor': { + 'r': 163, + 'g': 177, + 'b': 187 } }, - "1f4c0": { - "averageColor": { - "r": 255, - "g": 212, - "b": 126 + '1f4c0': { + 'averageColor': { + 'r': 255, + 'g': 212, + 'b': 126 } }, - "1f4c1": { - "averageColor": { - "r": 70, - "g": 151, - "b": 213 + '1f4c1': { + 'averageColor': { + 'r': 70, + 'g': 151, + 'b': 213 } }, - "1f4c2": { - "averageColor": { - "r": 66, - "g": 145, - "b": 206 + '1f4c2': { + 'averageColor': { + 'r': 66, + 'g': 145, + 'b': 206 } }, - "1f4c3": { - "averageColor": { - "r": 203, - "g": 213, - "b": 220 + '1f4c3': { + 'averageColor': { + 'r': 203, + 'g': 213, + 'b': 220 } }, - "1f4c4": { - "averageColor": { - "r": 192, - "g": 204, - "b": 212 + '1f4c4': { + 'averageColor': { + 'r': 192, + 'g': 204, + 'b': 212 } }, - "1f4c5": { - "averageColor": { - "r": 209, - "g": 162, - "b": 173 + '1f4c5': { + 'averageColor': { + 'r': 209, + 'g': 162, + 'b': 173 } }, - "1f4c6": { - "averageColor": { - "r": 167, - "g": 136, - "b": 145 + '1f4c6': { + 'averageColor': { + 'r': 167, + 'g': 136, + 'b': 145 } }, - "1f4c7": { - "averageColor": { - "r": 144, - "g": 162, - "b": 175 + '1f4c7': { + 'averageColor': { + 'r': 144, + 'g': 162, + 'b': 175 } }, - "1f4c8": { - "averageColor": { - "r": 185, - "g": 201, - "b": 191 + '1f4c8': { + 'averageColor': { + 'r': 185, + 'g': 201, + 'b': 191 } }, - "1f4c9": { - "averageColor": { - "r": 213, - "g": 189, - "b": 198 + '1f4c9': { + 'averageColor': { + 'r': 213, + 'g': 189, + 'b': 198 } }, - "1f4ca": { - "averageColor": { - "r": 192, - "g": 188, - "b": 199 + '1f4ca': { + 'averageColor': { + 'r': 192, + 'g': 188, + 'b': 199 } }, - "1f4cb": { - "averageColor": { - "r": 210, - "g": 189, - "b": 184 + '1f4cb': { + 'averageColor': { + 'r': 210, + 'g': 189, + 'b': 184 } }, - "1f4cc": { - "averageColor": { - "r": 202, - "g": 64, - "b": 84 + '1f4cc': { + 'averageColor': { + 'r': 202, + 'g': 64, + 'b': 84 } }, - "1f4cd": { - "averageColor": { - "r": 190, - "g": 83, - "b": 100 + '1f4cd': { + 'averageColor': { + 'r': 190, + 'g': 83, + 'b': 100 } }, - "1f4ce": { - "averageColor": { - "r": 153, - "g": 170, - "b": 180 + '1f4ce': { + 'averageColor': { + 'r': 153, + 'g': 170, + 'b': 180 } }, - "1f4cf": { - "averageColor": { - "r": 227, - "g": 184, - "b": 73 + '1f4cf': { + 'averageColor': { + 'r': 227, + 'g': 184, + 'b': 73 } }, - "1f4d0": { - "averageColor": { - "r": 255, - "g": 204, - "b": 77 + '1f4d0': { + 'averageColor': { + 'r': 255, + 'g': 204, + 'b': 77 } }, - "1f4d1": { - "averageColor": { - "r": 183, - "g": 190, - "b": 206 + '1f4d1': { + 'averageColor': { + 'r': 183, + 'g': 190, + 'b': 206 } }, - "1f4d2": { - "averageColor": { - "r": 229, - "g": 179, - "b": 85 + '1f4d2': { + 'averageColor': { + 'r': 229, + 'g': 179, + 'b': 85 } }, - "1f4d3": { - "averageColor": { - "r": 122, - "g": 131, - "b": 138 + '1f4d3': { + 'averageColor': { + 'r': 122, + 'g': 131, + 'b': 138 } }, - "1f4d4": { - "averageColor": { - "r": 208, - "g": 153, - "b": 132 + '1f4d4': { + 'averageColor': { + 'r': 208, + 'g': 153, + 'b': 132 } }, - "1f4d5": { - "averageColor": { - "r": 200, - "g": 57, - "b": 78 + '1f4d5': { + 'averageColor': { + 'r': 200, + 'g': 57, + 'b': 78 } }, - "1f4d6": { - "averageColor": { - "r": 171, - "g": 191, - "b": 206 + '1f4d6': { + 'averageColor': { + 'r': 171, + 'g': 191, + 'b': 206 } }, - "1f4d7": { - "averageColor": { - "r": 114, - "g": 164, - "b": 87 + '1f4d7': { + 'averageColor': { + 'r': 114, + 'g': 164, + 'b': 87 } }, - "1f4d8": { - "averageColor": { - "r": 86, - "g": 157, - "b": 210 + '1f4d8': { + 'averageColor': { + 'r': 86, + 'g': 157, + 'b': 210 } }, - "1f4d9": { - "averageColor": { - "r": 245, - "g": 168, - "b": 61 + '1f4d9': { + 'averageColor': { + 'r': 245, + 'g': 168, + 'b': 61 } }, - "1f4da": { - "averageColor": { - "r": 170, - "g": 165, - "b": 175 + '1f4da': { + 'averageColor': { + 'r': 170, + 'g': 165, + 'b': 175 } }, - "1f4db": { - "averageColor": { - "r": 228, - "g": 108, - "b": 124 + '1f4db': { + 'averageColor': { + 'r': 228, + 'g': 108, + 'b': 124 } }, - "1f4dc": { - "averageColor": { - "r": 242, - "g": 195, - "b": 124 + '1f4dc': { + 'averageColor': { + 'r': 242, + 'g': 195, + 'b': 124 } }, - "1f4dd": { - "averageColor": { - "r": 198, - "g": 194, - "b": 182 + '1f4dd': { + 'averageColor': { + 'r': 198, + 'g': 194, + 'b': 182 } }, - "1f4de": { - "averageColor": { - "r": 41, - "g": 47, - "b": 50 + '1f4de': { + 'averageColor': { + 'r': 41, + 'g': 47, + 'b': 50 } }, - "1f4df": { - "averageColor": { - "r": 131, - "g": 150, - "b": 123 + '1f4df': { + 'averageColor': { + 'r': 131, + 'g': 150, + 'b': 123 } }, - "1f4e0": { - "averageColor": { - "r": 129, - "g": 143, - "b": 149 + '1f4e0': { + 'averageColor': { + 'r': 129, + 'g': 143, + 'b': 149 } }, - "1f4e1": { - "averageColor": { - "r": 151, - "g": 154, - "b": 148 + '1f4e1': { + 'averageColor': { + 'r': 151, + 'g': 154, + 'b': 148 } }, - "1f4e2": { - "averageColor": { - "r": 187, - "g": 120, - "b": 134 + '1f4e2': { + 'averageColor': { + 'r': 187, + 'g': 120, + 'b': 134 } }, - "1f4e3": { - "averageColor": { - "r": 67, - "g": 148, - "b": 209 + '1f4e3': { + 'averageColor': { + 'r': 67, + 'g': 148, + 'b': 209 } }, - "1f4e4": { - "averageColor": { - "r": 201, - "g": 107, - "b": 93 + '1f4e4': { + 'averageColor': { + 'r': 201, + 'g': 107, + 'b': 93 } }, - "1f4e5": { - "averageColor": { - "r": 176, - "g": 140, - "b": 97 + '1f4e5': { + 'averageColor': { + 'r': 176, + 'g': 140, + 'b': 97 } }, - "1f4e6": { - "averageColor": { - "r": 182, - "g": 129, - "b": 111 + '1f4e6': { + 'averageColor': { + 'r': 182, + 'g': 129, + 'b': 111 } }, - "1f4e7": { - "averageColor": { - "r": 197, - "g": 208, - "b": 215 + '1f4e7': { + 'averageColor': { + 'r': 197, + 'g': 208, + 'b': 215 } }, - "1f4e8": { - "averageColor": { - "r": 194, - "g": 209, - "b": 219 + '1f4e8': { + 'averageColor': { + 'r': 194, + 'g': 209, + 'b': 219 } }, - "1f4e9": { - "averageColor": { - "r": 182, - "g": 205, - "b": 222 + '1f4e9': { + 'averageColor': { + 'r': 182, + 'g': 205, + 'b': 222 } }, - "1f4ea": { - "averageColor": { - "r": 160, - "g": 140, - "b": 147 + '1f4ea': { + 'averageColor': { + 'r': 160, + 'g': 140, + 'b': 147 } }, - "1f4eb": { - "averageColor": { - "r": 160, - "g": 140, - "b": 147 + '1f4eb': { + 'averageColor': { + 'r': 160, + 'g': 140, + 'b': 147 } }, - "1f4ec": { - "averageColor": { - "r": 175, - "g": 154, - "b": 160 + '1f4ec': { + 'averageColor': { + 'r': 175, + 'g': 154, + 'b': 160 } }, - "1f4ed": { - "averageColor": { - "r": 120, - "g": 96, - "b": 101 + '1f4ed': { + 'averageColor': { + 'r': 120, + 'g': 96, + 'b': 101 } }, - "1f4ee": { - "averageColor": { - "r": 191, - "g": 92, - "b": 108 + '1f4ee': { + 'averageColor': { + 'r': 191, + 'g': 92, + 'b': 108 } }, - "1f4ef": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f4ef': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f4f0": { - "averageColor": { - "r": 172, - "g": 192, - "b": 206 + '1f4f0': { + 'averageColor': { + 'r': 172, + 'g': 192, + 'b': 206 } }, - "1f4f1": { - "averageColor": { - "r": 67, - "g": 121, - "b": 162 + '1f4f1': { + 'averageColor': { + 'r': 67, + 'g': 121, + 'b': 162 } }, - "1f4f2": { - "averageColor": { - "r": 69, - "g": 128, - "b": 173 + '1f4f2': { + 'averageColor': { + 'r': 69, + 'g': 128, + 'b': 173 } }, - "1f4f3": { - "averageColor": { - "r": 246, - "g": 172, - "b": 74 + '1f4f3': { + 'averageColor': { + 'r': 246, + 'g': 172, + 'b': 74 } }, - "1f4f4": { - "averageColor": { - "r": 246, - "g": 173, - "b": 77 + '1f4f4': { + 'averageColor': { + 'r': 246, + 'g': 173, + 'b': 77 } }, - "1f4f5": { - "averageColor": { - "r": 114, - "g": 58, - "b": 65 + '1f4f5': { + 'averageColor': { + 'r': 114, + 'g': 58, + 'b': 65 } }, - "1f4f6": { - "averageColor": { - "r": 95, - "g": 158, - "b": 206 + '1f4f6': { + 'averageColor': { + 'r': 95, + 'g': 158, + 'b': 206 } }, - "1f4f7": { - "averageColor": { - "r": 69, - "g": 82, - "b": 91 + '1f4f7': { + 'averageColor': { + 'r': 69, + 'g': 82, + 'b': 91 } }, - "1f4f9": { - "averageColor": { - "r": 64, - "g": 73, - "b": 80 + '1f4f9': { + 'averageColor': { + 'r': 64, + 'g': 73, + 'b': 80 } }, - "1f4fa": { - "averageColor": { - "r": 75, - "g": 118, - "b": 152 + '1f4fa': { + 'averageColor': { + 'r': 75, + 'g': 118, + 'b': 152 } }, - "1f4fb": { - "averageColor": { - "r": 126, - "g": 140, - "b": 149 + '1f4fb': { + 'averageColor': { + 'r': 126, + 'g': 140, + 'b': 149 } }, - "1f4fc": { - "averageColor": { - "r": 53, - "g": 64, - "b": 71 + '1f4fc': { + 'averageColor': { + 'r': 53, + 'g': 64, + 'b': 71 } }, - "1f5fb": { - "averageColor": { - "r": 116, - "g": 153, - "b": 181 + '1f5fb': { + 'averageColor': { + 'r': 116, + 'g': 153, + 'b': 181 } }, - "1f5fc": { - "averageColor": { - "r": 150, - "g": 184, - "b": 227 + '1f5fc': { + 'averageColor': { + 'r': 150, + 'g': 184, + 'b': 227 } }, - "1f5fd": { - "averageColor": { - "r": 61, - "g": 157, - "b": 161 + '1f5fd': { + 'averageColor': { + 'r': 61, + 'g': 157, + 'b': 161 } }, - "1f5fe": { - "averageColor": { - "r": 127, - "g": 191, - "b": 224 + '1f5fe': { + 'averageColor': { + 'r': 127, + 'g': 191, + 'b': 224 } }, - "1f5ff": { - "averageColor": { - "r": 164, - "g": 176, - "b": 184 + '1f5ff': { + 'averageColor': { + 'r': 164, + 'g': 176, + 'b': 184 } }, - "1f6a0": { - "averageColor": { - "r": 116, - "g": 153, - "b": 171 + '1f6a0': { + 'averageColor': { + 'r': 116, + 'g': 153, + 'b': 171 } }, - "1f6a1": { - "averageColor": { - "r": 157, - "g": 113, - "b": 138 + '1f6a1': { + 'averageColor': { + 'r': 157, + 'g': 113, + 'b': 138 } }, - "1f6a2": { - "averageColor": { - "r": 148, - "g": 166, - "b": 188 + '1f6a2': { + 'averageColor': { + 'r': 148, + 'g': 166, + 'b': 188 } }, - "1f6a3": { - "averageColor": { - "r": 136, - "g": 157, - "b": 163 + '1f6a3': { + 'averageColor': { + 'r': 136, + 'g': 157, + 'b': 163 } }, - "1f6a4": { - "averageColor": { - "r": 126, - "g": 149, - "b": 174 + '1f6a4': { + 'averageColor': { + 'r': 126, + 'g': 149, + 'b': 174 } }, - "1f6a5": { - "averageColor": { - "r": 79, - "g": 70, - "b": 57 + '1f6a5': { + 'averageColor': { + 'r': 79, + 'g': 70, + 'b': 57 } }, - "1f6a6": { - "averageColor": { - "r": 79, - "g": 70, - "b": 57 + '1f6a6': { + 'averageColor': { + 'r': 79, + 'g': 70, + 'b': 57 } }, - "1f6a7": { - "averageColor": { - "r": 153, - "g": 137, - "b": 87 + '1f6a7': { + 'averageColor': { + 'r': 153, + 'g': 137, + 'b': 87 } }, - "1f6a8": { - "averageColor": { - "r": 202, - "g": 97, - "b": 115 + '1f6a8': { + 'averageColor': { + 'r': 202, + 'g': 97, + 'b': 115 } }, - "1f6a9": { - "averageColor": { - "r": 187, - "g": 66, - "b": 84 + '1f6a9': { + 'averageColor': { + 'r': 187, + 'g': 66, + 'b': 84 } }, - "1f6aa": { - "averageColor": { - "r": 192, - "g": 71, - "b": 87 + '1f6aa': { + 'averageColor': { + 'r': 192, + 'g': 71, + 'b': 87 } }, - "1f6ab": { - "averageColor": { - "r": 220, - "g": 46, - "b": 68 + '1f6ab': { + 'averageColor': { + 'r': 220, + 'g': 46, + 'b': 68 } }, - "1f6ac": { - "averageColor": { - "r": 195, - "g": 186, - "b": 184 + '1f6ac': { + 'averageColor': { + 'r': 195, + 'g': 186, + 'b': 184 } }, - "1f6ad": { - "averageColor": { - "r": 103, - "g": 47, - "b": 54 + '1f6ad': { + 'averageColor': { + 'r': 103, + 'g': 47, + 'b': 54 } }, - "1f6ae": { - "averageColor": { - "r": 176, - "g": 189, - "b": 198 + '1f6ae': { + 'averageColor': { + 'r': 176, + 'g': 189, + 'b': 198 } }, - "1f6af": { - "averageColor": { - "r": 122, - "g": 66, - "b": 73 + '1f6af': { + 'averageColor': { + 'r': 122, + 'g': 66, + 'b': 73 } }, - "1f6b0": { - "averageColor": { - "r": 124, - "g": 191, - "b": 241 + '1f6b0': { + 'averageColor': { + 'r': 124, + 'g': 191, + 'b': 241 } }, - "1f6b1": { - "averageColor": { - "r": 114, - "g": 57, - "b": 64 + '1f6b1': { + 'averageColor': { + 'r': 114, + 'g': 57, + 'b': 64 } }, - "1f6b2": { - "averageColor": { - "r": 130, - "g": 54, - "b": 66 + '1f6b2': { + 'averageColor': { + 'r': 130, + 'g': 54, + 'b': 66 } }, - "1f6b3": { - "averageColor": { - "r": 128, - "g": 72, - "b": 79 + '1f6b3': { + 'averageColor': { + 'r': 128, + 'g': 72, + 'b': 79 } }, - "1f6b4": { - "averageColor": { - "r": 107, - "g": 70, - "b": 93 + '1f6b4': { + 'averageColor': { + 'r': 107, + 'g': 70, + 'b': 93 } }, - "1f6b5": { - "averageColor": { - "r": 125, - "g": 131, - "b": 87 + '1f6b5': { + 'averageColor': { + 'r': 125, + 'g': 131, + 'b': 87 } }, - "1f6b6": { - "averageColor": { - "r": 129, - "g": 104, - "b": 112 + '1f6b6': { + 'averageColor': { + 'r': 129, + 'g': 104, + 'b': 112 } }, - "1f6b7": { - "averageColor": { - "r": 101, - "g": 47, - "b": 53 + '1f6b7': { + 'averageColor': { + 'r': 101, + 'g': 47, + 'b': 53 } }, - "1f6b8": { - "averageColor": { - "r": 152, - "g": 122, - "b": 46 + '1f6b8': { + 'averageColor': { + 'r': 152, + 'g': 122, + 'b': 46 } }, - "1f6b9": { - "averageColor": { - "r": 114, - "g": 186, - "b": 240 + '1f6b9': { + 'averageColor': { + 'r': 114, + 'g': 186, + 'b': 240 } }, - "1f6ba": { - "averageColor": { - "r": 237, - "g": 117, - "b": 134 + '1f6ba': { + 'averageColor': { + 'r': 237, + 'g': 117, + 'b': 134 } }, - "1f6bb": { - "averageColor": { - "r": 154, - "g": 164, - "b": 170 + '1f6bb': { + 'averageColor': { + 'r': 154, + 'g': 164, + 'b': 170 } }, - "1f6bc": { - "averageColor": { - "r": 246, - "g": 168, - "b": 65 + '1f6bc': { + 'averageColor': { + 'r': 246, + 'g': 168, + 'b': 65 } }, - "1f6bd": { - "averageColor": { - "r": 197, - "g": 198, - "b": 200 + '1f6bd': { + 'averageColor': { + 'r': 197, + 'g': 198, + 'b': 200 } }, - "1f6be": { - "averageColor": { - "r": 81, - "g": 135, - "b": 175 + '1f6be': { + 'averageColor': { + 'r': 81, + 'g': 135, + 'b': 175 } }, - "1f6bf": { - "averageColor": { - "r": 105, - "g": 153, - "b": 188 + '1f6bf': { + 'averageColor': { + 'r': 105, + 'g': 153, + 'b': 188 } }, - "1f6c0": { - "averageColor": { - "r": 194, - "g": 199, - "b": 204 + '1f6c0': { + 'averageColor': { + 'r': 194, + 'g': 199, + 'b': 204 } }, - "1f6c1": { - "averageColor": { - "r": 194, - "g": 205, - "b": 213 + '1f6c1': { + 'averageColor': { + 'r': 194, + 'g': 205, + 'b': 213 } }, - "1f6c2": { - "averageColor": { - "r": 99, - "g": 147, - "b": 182 + '1f6c2': { + 'averageColor': { + 'r': 99, + 'g': 147, + 'b': 182 } }, - "1f6c3": { - "averageColor": { - "r": 98, - "g": 146, - "b": 182 + '1f6c3': { + 'averageColor': { + 'r': 98, + 'g': 146, + 'b': 182 } }, - "1f6c4": { - "averageColor": { - "r": 119, - "g": 161, - "b": 192 + '1f6c4': { + 'averageColor': { + 'r': 119, + 'g': 161, + 'b': 192 } }, - "1f6c5": { - "averageColor": { - "r": 114, - "g": 157, - "b": 189 + '1f6c5': { + 'averageColor': { + 'r': 114, + 'g': 157, + 'b': 189 } }, - "1f17e": { - "averageColor": { - "r": 204, - "g": 74, - "b": 93 + '1f17e': { + 'averageColor': { + 'r': 204, + 'g': 74, + 'b': 93 } }, - "1f17f": { - "averageColor": { - "r": 72, - "g": 128, - "b": 170 + '1f17f': { + 'averageColor': { + 'r': 72, + 'g': 128, + 'b': 170 } }, - "1f18e": { - "averageColor": { - "r": 210, - "g": 95, - "b": 112 + '1f18e': { + 'averageColor': { + 'r': 210, + 'g': 95, + 'b': 112 } }, - "1f19a": { - "averageColor": { - "r": 247, - "g": 176, - "b": 83 + '1f19a': { + 'averageColor': { + 'r': 247, + 'g': 176, + 'b': 83 } }, - "1f21a": { - "averageColor": { - "r": 246, - "g": 165, - "b": 60 + '1f21a': { + 'averageColor': { + 'r': 246, + 'g': 165, + 'b': 60 } }, - "1f22f": { - "averageColor": { - "r": 122, - "g": 165, - "b": 96 + '1f22f': { + 'averageColor': { + 'r': 122, + 'g': 165, + 'b': 96 } }, - "1f23a": { - "averageColor": { - "r": 246, - "g": 164, - "b": 56 + '1f23a': { + 'averageColor': { + 'r': 246, + 'g': 164, + 'b': 56 } }, - "1f30a": { - "averageColor": { - "r": 77, - "g": 161, - "b": 225 + '1f30a': { + 'averageColor': { + 'r': 77, + 'g': 161, + 'b': 225 } }, - "1f30b": { - "averageColor": { - "r": 166, - "g": 78, - "b": 51 + '1f30b': { + 'averageColor': { + 'r': 166, + 'g': 78, + 'b': 51 } }, - "1f30c": { - "averageColor": { - "r": 96, - "g": 71, - "b": 137 + '1f30c': { + 'averageColor': { + 'r': 96, + 'g': 71, + 'b': 137 } }, - "1f30d": { - "averageColor": { - "r": 119, - "g": 179, - "b": 175 + '1f30d': { + 'averageColor': { + 'r': 119, + 'g': 179, + 'b': 175 } }, - "1f30e": { - "averageColor": { - "r": 121, - "g": 182, - "b": 187 + '1f30e': { + 'averageColor': { + 'r': 121, + 'g': 182, + 'b': 187 } }, - "1f30f": { - "averageColor": { - "r": 118, - "g": 178, - "b": 172 + '1f30f': { + 'averageColor': { + 'r': 118, + 'g': 178, + 'b': 172 } }, - "1f31a": { - "averageColor": { - "r": 98, - "g": 112, - "b": 122 + '1f31a': { + 'averageColor': { + 'r': 98, + 'g': 112, + 'b': 122 } }, - "1f31b": { - "averageColor": { - "r": 197, - "g": 208, - "b": 215 + '1f31b': { + 'averageColor': { + 'r': 197, + 'g': 208, + 'b': 215 } }, - "1f31c": { - "averageColor": { - "r": 197, - "g": 208, - "b": 215 + '1f31c': { + 'averageColor': { + 'r': 197, + 'g': 208, + 'b': 215 } }, - "1f31d": { - "averageColor": { - "r": 196, - "g": 207, - "b": 215 + '1f31d': { + 'averageColor': { + 'r': 196, + 'g': 207, + 'b': 215 } }, - "1f31e": { - "averageColor": { - "r": 249, - "g": 175, - "b": 45 + '1f31e': { + 'averageColor': { + 'r': 249, + 'g': 175, + 'b': 45 } }, - "1f31f": { - "averageColor": { - "r": 255, - "g": 206, - "b": 88 + '1f31f': { + 'averageColor': { + 'r': 255, + 'g': 206, + 'b': 88 } }, - "1f33a": { - "averageColor": { - "r": 222, - "g": 155, - "b": 149 + '1f33a': { + 'averageColor': { + 'r': 222, + 'g': 155, + 'b': 149 } }, - "1f33b": { - "averageColor": { - "r": 173, - "g": 129, - "b": 34 + '1f33b': { + 'averageColor': { + 'r': 173, + 'g': 129, + 'b': 34 } }, - "1f33c": { - "averageColor": { - "r": 199, - "g": 204, - "b": 174 + '1f33c': { + 'averageColor': { + 'r': 199, + 'g': 204, + 'b': 174 } }, - "1f33d": { - "averageColor": { - "r": 166, - "g": 164, - "b": 56 + '1f33d': { + 'averageColor': { + 'r': 166, + 'g': 164, + 'b': 56 } }, - "1f33e": { - "averageColor": { - "r": 158, - "g": 185, - "b": 82 + '1f33e': { + 'averageColor': { + 'r': 158, + 'g': 185, + 'b': 82 } }, - "1f33f": { - "averageColor": { - "r": 135, - "g": 166, - "b": 94 + '1f33f': { + 'averageColor': { + 'r': 135, + 'g': 166, + 'b': 94 } }, - "1f34a": { - "averageColor": { - "r": 228, - "g": 140, - "b": 15 + '1f34a': { + 'averageColor': { + 'r': 228, + 'g': 140, + 'b': 15 } }, - "1f34b": { - "averageColor": { - "r": 226, - "g": 197, - "b": 77 + '1f34b': { + 'averageColor': { + 'r': 226, + 'g': 197, + 'b': 77 } }, - "1f34c": { - "averageColor": { - "r": 252, - "g": 218, - "b": 137 + '1f34c': { + 'averageColor': { + 'r': 252, + 'g': 218, + 'b': 137 } }, - "1f34d": { - "averageColor": { - "r": 189, - "g": 176, - "b": 66 + '1f34d': { + 'averageColor': { + 'r': 189, + 'g': 176, + 'b': 66 } }, - "1f34e": { - "averageColor": { - "r": 210, - "g": 54, - "b": 67 + '1f34e': { + 'averageColor': { + 'r': 210, + 'g': 54, + 'b': 67 } }, - "1f34f": { - "averageColor": { - "r": 114, - "g": 169, - "b": 79 + '1f34f': { + 'averageColor': { + 'r': 114, + 'g': 169, + 'b': 79 } }, - "1f35a": { - "averageColor": { - "r": 224, - "g": 159, - "b": 168 + '1f35a': { + 'averageColor': { + 'r': 224, + 'g': 159, + 'b': 168 } }, - "1f35b": { - "averageColor": { - "r": 228, - "g": 204, - "b": 170 + '1f35b': { + 'averageColor': { + 'r': 228, + 'g': 204, + 'b': 170 } }, - "1f35c": { - "averageColor": { - "r": 214, - "g": 174, - "b": 135 + '1f35c': { + 'averageColor': { + 'r': 214, + 'g': 174, + 'b': 135 } }, - "1f35d": { - "averageColor": { - "r": 221, - "g": 181, - "b": 151 + '1f35d': { + 'averageColor': { + 'r': 221, + 'g': 181, + 'b': 151 } }, - "1f35e": { - "averageColor": { - "r": 232, - "g": 188, - "b": 151 + '1f35e': { + 'averageColor': { + 'r': 232, + 'g': 188, + 'b': 151 } }, - "1f35f": { - "averageColor": { - "r": 223, - "g": 86, - "b": 55 + '1f35f': { + 'averageColor': { + 'r': 223, + 'g': 86, + 'b': 55 } }, - "1f36a": { - "averageColor": { - "r": 207, - "g": 148, - "b": 121 + '1f36a': { + 'averageColor': { + 'r': 207, + 'g': 148, + 'b': 121 } }, - "1f36b": { - "averageColor": { - "r": 201, - "g": 105, - "b": 109 + '1f36b': { + 'averageColor': { + 'r': 201, + 'g': 105, + 'b': 109 } }, - "1f36c": { - "averageColor": { - "r": 223, - "g": 87, - "b": 105 + '1f36c': { + 'averageColor': { + 'r': 223, + 'g': 87, + 'b': 105 } }, - "1f36d": { - "averageColor": { - "r": 239, - "g": 127, - "b": 57 + '1f36d': { + 'averageColor': { + 'r': 239, + 'g': 127, + 'b': 57 } }, - "1f36e": { - "averageColor": { - "r": 203, - "g": 169, - "b": 131 + '1f36e': { + 'averageColor': { + 'r': 203, + 'g': 169, + 'b': 131 } }, - "1f36f": { - "averageColor": { - "r": 242, - "g": 166, - "b": 55 + '1f36f': { + 'averageColor': { + 'r': 242, + 'g': 166, + 'b': 55 } }, - "1f37a": { - "averageColor": { - "r": 245, - "g": 199, - "b": 110 + '1f37a': { + 'averageColor': { + 'r': 245, + 'g': 199, + 'b': 110 } }, - "1f37b": { - "averageColor": { - "r": 241, - "g": 200, - "b": 117 + '1f37b': { + 'averageColor': { + 'r': 241, + 'g': 200, + 'b': 117 } }, - "1f37c": { - "averageColor": { - "r": 186, - "g": 198, - "b": 201 + '1f37c': { + 'averageColor': { + 'r': 186, + 'g': 198, + 'b': 201 } }, - "1f38a": { - "averageColor": { - "r": 187, - "g": 113, - "b": 78 + '1f38a': { + 'averageColor': { + 'r': 187, + 'g': 113, + 'b': 78 } }, - "1f38b": { - "averageColor": { - "r": 128, - "g": 113, - "b": 59 + '1f38b': { + 'averageColor': { + 'r': 128, + 'g': 113, + 'b': 59 } }, - "1f38c": { - "averageColor": { - "r": 210, - "g": 194, - "b": 200 + '1f38c': { + 'averageColor': { + 'r': 210, + 'g': 194, + 'b': 200 } }, - "1f38d": { - "averageColor": { - "r": 142, - "g": 173, - "b": 96 + '1f38d': { + 'averageColor': { + 'r': 142, + 'g': 173, + 'b': 96 } }, - "1f38e": { - "averageColor": { - "r": 130, - "g": 92, - "b": 119 + '1f38e': { + 'averageColor': { + 'r': 130, + 'g': 92, + 'b': 119 } }, - "1f38f": { - "averageColor": { - "r": 192, - "g": 165, - "b": 184 + '1f38f': { + 'averageColor': { + 'r': 192, + 'g': 165, + 'b': 184 } }, - "1f40a": { - "averageColor": { - "r": 94, - "g": 146, - "b": 62 + '1f40a': { + 'averageColor': { + 'r': 94, + 'g': 146, + 'b': 62 } }, - "1f40b": { - "averageColor": { - "r": 64, - "g": 143, - "b": 202 + '1f40b': { + 'averageColor': { + 'r': 64, + 'g': 143, + 'b': 202 } }, - "1f40c": { - "averageColor": { - "r": 218, - "g": 162, - "b": 124 + '1f40c': { + 'averageColor': { + 'r': 218, + 'g': 162, + 'b': 124 } }, - "1f40d": { - "averageColor": { - "r": 121, - "g": 173, - "b": 84 + '1f40d': { + 'averageColor': { + 'r': 121, + 'g': 173, + 'b': 84 } }, - "1f40e": { - "averageColor": { - "r": 178, - "g": 105, - "b": 82 + '1f40e': { + 'averageColor': { + 'r': 178, + 'g': 105, + 'b': 82 } }, - "1f40f": { - "averageColor": { - "r": 207, - "g": 207, - "b": 192 + '1f40f': { + 'averageColor': { + 'r': 207, + 'g': 207, + 'b': 192 } }, - "1f41a": { - "averageColor": { - "r": 185, - "g": 197, - "b": 204 + '1f41a': { + 'averageColor': { + 'r': 185, + 'g': 197, + 'b': 204 } }, - "1f41b": { - "averageColor": { - "r": 140, - "g": 98, - "b": 196 + '1f41b': { + 'averageColor': { + 'r': 140, + 'g': 98, + 'b': 196 } }, - "1f41c": { - "averageColor": { - "r": 41, - "g": 47, - "b": 50 + '1f41c': { + 'averageColor': { + 'r': 41, + 'g': 47, + 'b': 50 } }, - "1f41d": { - "averageColor": { - "r": 142, - "g": 141, - "b": 126 + '1f41d': { + 'averageColor': { + 'r': 142, + 'g': 141, + 'b': 126 } }, - "1f41e": { - "averageColor": { - "r": 134, - "g": 46, - "b": 59 + '1f41e': { + 'averageColor': { + 'r': 134, + 'g': 46, + 'b': 59 } }, - "1f41f": { - "averageColor": { - "r": 73, - "g": 153, - "b": 215 + '1f41f': { + 'averageColor': { + 'r': 73, + 'g': 153, + 'b': 215 } }, - "1f42a": { - "averageColor": { - "r": 192, - "g": 104, - "b": 78 + '1f42a': { + 'averageColor': { + 'r': 192, + 'g': 104, + 'b': 78 } }, - "1f42b": { - "averageColor": { - "r": 192, - "g": 104, - "b": 78 + '1f42b': { + 'averageColor': { + 'r': 192, + 'g': 104, + 'b': 78 } }, - "1f42c": { - "averageColor": { - "r": 58, - "g": 134, - "b": 192 + '1f42c': { + 'averageColor': { + 'r': 58, + 'g': 134, + 'b': 192 } }, - "1f42d": { - "averageColor": { - "r": 160, - "g": 157, - "b": 168 + '1f42d': { + 'averageColor': { + 'r': 160, + 'g': 157, + 'b': 168 } }, - "1f42e": { - "averageColor": { - "r": 209, - "g": 182, - "b": 181 + '1f42e': { + 'averageColor': { + 'r': 209, + 'g': 182, + 'b': 181 } }, - "1f42f": { - "averageColor": { - "r": 204, - "g": 174, - "b": 111 + '1f42f': { + 'averageColor': { + 'r': 204, + 'g': 174, + 'b': 111 } }, - "1f43a": { - "averageColor": { - "r": 133, - "g": 141, - "b": 149 + '1f43a': { + 'averageColor': { + 'r': 133, + 'g': 141, + 'b': 149 } }, - "1f43b": { - "averageColor": { - "r": 187, - "g": 111, - "b": 88 + '1f43b': { + 'averageColor': { + 'r': 187, + 'g': 111, + 'b': 88 } }, - "1f43c": { - "averageColor": { - "r": 184, - "g": 185, - "b": 186 + '1f43c': { + 'averageColor': { + 'r': 184, + 'g': 185, + 'b': 186 } }, - "1f43d": { - "averageColor": { - "r": 200, - "g": 138, - "b": 134 + '1f43d': { + 'averageColor': { + 'r': 200, + 'g': 138, + 'b': 134 } }, - "1f43e": { - "averageColor": { - "r": 101, - "g": 32, - "b": 18 + '1f43e': { + 'averageColor': { + 'r': 101, + 'g': 32, + 'b': 18 } }, - "1f44a": { - "averageColor": { - "r": 212, - "g": 147, - "b": 120 + '1f44a': { + 'averageColor': { + 'r': 212, + 'g': 147, + 'b': 120 } }, - "1f44b": { - "averageColor": { - "r": 203, - "g": 160, - "b": 123 + '1f44b': { + 'averageColor': { + 'r': 203, + 'g': 160, + 'b': 123 } }, - "1f44c": { - "averageColor": { - "r": 214, - "g": 153, - "b": 125 + '1f44c': { + 'averageColor': { + 'r': 214, + 'g': 153, + 'b': 125 } }, - "1f44d": { - "averageColor": { - "r": 212, - "g": 147, - "b": 119 + '1f44d': { + 'averageColor': { + 'r': 212, + 'g': 147, + 'b': 119 } }, - "1f44e": { - "averageColor": { - "r": 212, - "g": 147, - "b": 119 + '1f44e': { + 'averageColor': { + 'r': 212, + 'g': 147, + 'b': 119 } }, - "1f44f": { - "averageColor": { - "r": 214, - "g": 148, - "b": 115 + '1f44f': { + 'averageColor': { + 'r': 214, + 'g': 148, + 'b': 115 } }, - "1f45a": { - "averageColor": { - "r": 162, - "g": 131, - "b": 211 + '1f45a': { + 'averageColor': { + 'r': 162, + 'g': 131, + 'b': 211 } }, - "1f45b": { - "averageColor": { - "r": 231, - "g": 97, - "b": 116 + '1f45b': { + 'averageColor': { + 'r': 231, + 'g': 97, + 'b': 116 } }, - "1f45c": { - "averageColor": { - "r": 162, - "g": 117, - "b": 190 + '1f45c': { + 'averageColor': { + 'r': 162, + 'g': 117, + 'b': 190 } }, - "1f45d": { - "averageColor": { - "r": 165, - "g": 203, - "b": 131 + '1f45d': { + 'averageColor': { + 'r': 165, + 'g': 203, + 'b': 131 } }, - "1f45e": { - "averageColor": { - "r": 83, - "g": 96, - "b": 104 + '1f45e': { + 'averageColor': { + 'r': 83, + 'g': 96, + 'b': 104 } }, - "1f45f": { - "averageColor": { - "r": 98, - "g": 169, - "b": 223 + '1f45f': { + 'averageColor': { + 'r': 98, + 'g': 169, + 'b': 223 } }, - "1f46a": { - "averageColor": { - "r": 143, - "g": 110, - "b": 117 + '1f46a': { + 'averageColor': { + 'r': 143, + 'g': 110, + 'b': 117 } }, - "1f46b": { - "averageColor": { - "r": 151, - "g": 101, - "b": 93 + '1f46b': { + 'averageColor': { + 'r': 151, + 'g': 101, + 'b': 93 } }, - "1f46c": { - "averageColor": { - "r": 144, - "g": 118, - "b": 96 + '1f46c': { + 'averageColor': { + 'r': 144, + 'g': 118, + 'b': 96 } }, - "1f46d": { - "averageColor": { - "r": 170, - "g": 102, - "b": 105 + '1f46d': { + 'averageColor': { + 'r': 170, + 'g': 102, + 'b': 105 } }, - "1f46e": { - "averageColor": { - "r": 129, - "g": 124, - "b": 122 + '1f46e': { + 'averageColor': { + 'r': 129, + 'g': 124, + 'b': 122 } }, - "1f46f": { - "averageColor": { - "r": 168, - "g": 134, - "b": 104 + '1f46f': { + 'averageColor': { + 'r': 168, + 'g': 134, + 'b': 104 } }, - "1f47a": { - "averageColor": { - "r": 190, - "g": 87, - "b": 96 + '1f47a': { + 'averageColor': { + 'r': 190, + 'g': 87, + 'b': 96 } }, - "1f47b": { - "averageColor": { - "r": 194, - "g": 201, - "b": 205 + '1f47b': { + 'averageColor': { + 'r': 194, + 'g': 201, + 'b': 205 } }, - "1f47c": { - "averageColor": { - "r": 195, - "g": 166, - "b": 160 + '1f47c': { + 'averageColor': { + 'r': 195, + 'g': 166, + 'b': 160 } }, - "1f47d": { - "averageColor": { - "r": 165, - "g": 174, - "b": 180 + '1f47d': { + 'averageColor': { + 'r': 165, + 'g': 174, + 'b': 180 } }, - "1f47e": { - "averageColor": { - "r": 85, - "g": 57, - "b": 134 + '1f47e': { + 'averageColor': { + 'r': 85, + 'g': 57, + 'b': 134 } }, - "1f47f": { - "averageColor": { - "r": 158, - "g": 130, - "b": 203 + '1f47f': { + 'averageColor': { + 'r': 158, + 'g': 130, + 'b': 203 } }, - "1f48a": { - "averageColor": { - "r": 219, - "g": 113, - "b": 69 + '1f48a': { + 'averageColor': { + 'r': 219, + 'g': 113, + 'b': 69 } }, - "1f48b": { - "averageColor": { - "r": 230, - "g": 90, - "b": 112 + '1f48b': { + 'averageColor': { + 'r': 230, + 'g': 90, + 'b': 112 } }, - "1f48c": { - "averageColor": { - "r": 209, - "g": 184, - "b": 194 + '1f48c': { + 'averageColor': { + 'r': 209, + 'g': 184, + 'b': 194 } }, - "1f48d": { - "averageColor": { - "r": 140, - "g": 176, - "b": 202 + '1f48d': { + 'averageColor': { + 'r': 140, + 'g': 176, + 'b': 202 } }, - "1f48e": { - "averageColor": { - "r": 115, - "g": 182, - "b": 233 + '1f48e': { + 'averageColor': { + 'r': 115, + 'g': 182, + 'b': 233 } }, - "1f48f": { - "averageColor": { - "r": 187, - "g": 129, - "b": 115 + '1f48f': { + 'averageColor': { + 'r': 187, + 'g': 129, + 'b': 115 } }, - "1f49a": { - "averageColor": { - "r": 120, - "g": 176, - "b": 89 + '1f49a': { + 'averageColor': { + 'r': 120, + 'g': 176, + 'b': 89 } }, - "1f49b": { - "averageColor": { - "r": 253, - "g": 203, - "b": 88 + '1f49b': { + 'averageColor': { + 'r': 253, + 'g': 203, + 'b': 88 } }, - "1f49c": { - "averageColor": { - "r": 170, - "g": 142, - "b": 213 + '1f49c': { + 'averageColor': { + 'r': 170, + 'g': 142, + 'b': 213 } }, - "1f49d": { - "averageColor": { - "r": 241, - "g": 149, - "b": 115 + '1f49d': { + 'averageColor': { + 'r': 241, + 'g': 149, + 'b': 115 } }, - "1f49e": { - "averageColor": { - "r": 232, - "g": 102, - "b": 123 + '1f49e': { + 'averageColor': { + 'r': 232, + 'g': 102, + 'b': 123 } }, - "1f49f": { - "averageColor": { - "r": 199, - "g": 184, - "b": 228 + '1f49f': { + 'averageColor': { + 'r': 199, + 'g': 184, + 'b': 228 } }, - "1f50a": { - "averageColor": { - "r": 170, - "g": 184, - "b": 194 + '1f50a': { + 'averageColor': { + 'r': 170, + 'g': 184, + 'b': 194 } }, - "1f50b": { - "averageColor": { - "r": 168, - "g": 202, - "b": 155 + '1f50b': { + 'averageColor': { + 'r': 168, + 'g': 202, + 'b': 155 } }, - "1f50c": { - "averageColor": { - "r": 60, - "g": 68, - "b": 72 + '1f50c': { + 'averageColor': { + 'r': 60, + 'g': 68, + 'b': 72 } }, - "1f50d": { - "averageColor": { - "r": 153, - "g": 173, - "b": 188 + '1f50d': { + 'averageColor': { + 'r': 153, + 'g': 173, + 'b': 188 } }, - "1f50e": { - "averageColor": { - "r": 153, - "g": 173, - "b": 188 + '1f50e': { + 'averageColor': { + 'r': 153, + 'g': 173, + 'b': 188 } }, - "1f50f": { - "averageColor": { - "r": 190, - "g": 176, - "b": 134 + '1f50f': { + 'averageColor': { + 'r': 190, + 'g': 176, + 'b': 134 } }, - "1f51a": { - "averageColor": { - "r": 102, - "g": 116, - "b": 127 + '1f51a': { + 'averageColor': { + 'r': 102, + 'g': 116, + 'b': 127 } }, - "1f51b": { - "averageColor": { - "r": 102, - "g": 116, - "b": 127 + '1f51b': { + 'averageColor': { + 'r': 102, + 'g': 116, + 'b': 127 } }, - "1f51c": { - "averageColor": { - "r": 102, - "g": 116, - "b": 127 + '1f51c': { + 'averageColor': { + 'r': 102, + 'g': 116, + 'b': 127 } }, - "1f51d": { - "averageColor": { - "r": 102, - "g": 117, - "b": 127 + '1f51d': { + 'averageColor': { + 'r': 102, + 'g': 117, + 'b': 127 } }, - "1f51e": { - "averageColor": { - "r": 130, - "g": 74, - "b": 82 + '1f51e': { + 'averageColor': { + 'r': 130, + 'g': 74, + 'b': 82 } }, - "1f51f": { - "averageColor": { - "r": 182, - "g": 194, - "b": 201 + '1f51f': { + 'averageColor': { + 'r': 182, + 'g': 194, + 'b': 201 } }, - "1f52a": { - "averageColor": { - "r": 155, - "g": 164, - "b": 170 + '1f52a': { + 'averageColor': { + 'r': 155, + 'g': 164, + 'b': 170 } }, - "1f52b": { - "averageColor": { - "r": 161, - "g": 146, - "b": 146 + '1f52b': { + 'averageColor': { + 'r': 161, + 'g': 146, + 'b': 146 } }, - "1f52c": { - "averageColor": { - "r": 220, - "g": 158, - "b": 70 + '1f52c': { + 'averageColor': { + 'r': 220, + 'g': 158, + 'b': 70 } }, - "1f52d": { - "averageColor": { - "r": 154, - "g": 85, - "b": 100 + '1f52d': { + 'averageColor': { + 'r': 154, + 'g': 85, + 'b': 100 } }, - "1f52e": { - "averageColor": { - "r": 146, - "g": 177, - "b": 209 + '1f52e': { + 'averageColor': { + 'r': 146, + 'g': 177, + 'b': 209 } }, - "1f52f": { - "averageColor": { - "r": 249, - "g": 199, - "b": 133 + '1f52f': { + 'averageColor': { + 'r': 249, + 'g': 199, + 'b': 133 } }, - "1f53a": { - "averageColor": { - "r": 230, - "g": 90, - "b": 112 + '1f53a': { + 'averageColor': { + 'r': 230, + 'g': 90, + 'b': 112 } }, - "1f53b": { - "averageColor": { - "r": 230, - "g": 90, - "b": 112 + '1f53b': { + 'averageColor': { + 'r': 230, + 'g': 90, + 'b': 112 } }, - "1f53c": { - "averageColor": { - "r": 173, - "g": 186, - "b": 194 + '1f53c': { + 'averageColor': { + 'r': 173, + 'g': 186, + 'b': 194 } }, - "1f53d": { - "averageColor": { - "r": 173, - "g": 186, - "b": 194 + '1f53d': { + 'averageColor': { + 'r': 173, + 'g': 186, + 'b': 194 } }, - "1f55a": { - "averageColor": { - "r": 191, - "g": 202, - "b": 209 + '1f55a': { + 'averageColor': { + 'r': 191, + 'g': 202, + 'b': 209 } }, - "1f55b": { - "averageColor": { - "r": 193, - "g": 204, - "b": 211 + '1f55b': { + 'averageColor': { + 'r': 193, + 'g': 204, + 'b': 211 } }, - "1f55c": { - "averageColor": { - "r": 191, - "g": 202, - "b": 209 + '1f55c': { + 'averageColor': { + 'r': 191, + 'g': 202, + 'b': 209 } }, - "1f55d": { - "averageColor": { - "r": 191, - "g": 202, - "b": 209 + '1f55d': { + 'averageColor': { + 'r': 191, + 'g': 202, + 'b': 209 } }, - "1f55e": { - "averageColor": { - "r": 191, - "g": 202, - "b": 209 + '1f55e': { + 'averageColor': { + 'r': 191, + 'g': 202, + 'b': 209 } }, - "1f55f": { - "averageColor": { - "r": 191, - "g": 202, - "b": 209 + '1f55f': { + 'averageColor': { + 'r': 191, + 'g': 202, + 'b': 209 } }, - "1f60a": { - "averageColor": { - "r": 241, - "g": 179, - "b": 80 + '1f60a': { + 'averageColor': { + 'r': 241, + 'g': 179, + 'b': 80 } }, - "1f60b": { - "averageColor": { - "r": 239, - "g": 183, - "b": 73 + '1f60b': { + 'averageColor': { + 'r': 239, + 'g': 183, + 'b': 73 } }, - "1f60c": { - "averageColor": { - "r": 237, - "g": 188, - "b": 68 + '1f60c': { + 'averageColor': { + 'r': 237, + 'g': 188, + 'b': 68 } }, - "1f60d": { - "averageColor": { - "r": 229, - "g": 148, - "b": 80 + '1f60d': { + 'averageColor': { + 'r': 229, + 'g': 148, + 'b': 80 } }, - "1f60e": { - "averageColor": { - "r": 193, - "g": 157, - "b": 66 + '1f60e': { + 'averageColor': { + 'r': 193, + 'g': 157, + 'b': 66 } }, - "1f60f": { - "averageColor": { - "r": 238, - "g": 189, - "b": 68 + '1f60f': { + 'averageColor': { + 'r': 238, + 'g': 189, + 'b': 68 } }, - "1f61a": { - "averageColor": { - "r": 240, - "g": 178, - "b": 79 + '1f61a': { + 'averageColor': { + 'r': 240, + 'g': 178, + 'b': 79 } }, - "1f61b": { - "averageColor": { - "r": 232, - "g": 171, - "b": 72 + '1f61b': { + 'averageColor': { + 'r': 232, + 'g': 171, + 'b': 72 } }, - "1f61c": { - "averageColor": { - "r": 232, - "g": 178, - "b": 95 + '1f61c': { + 'averageColor': { + 'r': 232, + 'g': 178, + 'b': 95 } }, - "1f61d": { - "averageColor": { - "r": 228, - "g": 168, - "b": 70 + '1f61d': { + 'averageColor': { + 'r': 228, + 'g': 168, + 'b': 70 } }, - "1f61e": { - "averageColor": { - "r": 243, - "g": 193, - "b": 71 + '1f61e': { + 'averageColor': { + 'r': 243, + 'g': 193, + 'b': 71 } }, - "1f61f": { - "averageColor": { - "r": 238, - "g": 189, - "b": 68 + '1f61f': { + 'averageColor': { + 'r': 238, + 'g': 189, + 'b': 68 } }, - "1f62a": { - "averageColor": { - "r": 227, - "g": 188, - "b": 81 + '1f62a': { + 'averageColor': { + 'r': 227, + 'g': 188, + 'b': 81 } }, - "1f62b": { - "averageColor": { - "r": 221, - "g": 175, - "b": 62 + '1f62b': { + 'averageColor': { + 'r': 221, + 'g': 175, + 'b': 62 } }, - "1f62c": { - "averageColor": { - "r": 225, - "g": 181, - "b": 74 + '1f62c': { + 'averageColor': { + 'r': 225, + 'g': 181, + 'b': 74 } }, - "1f62d": { - "averageColor": { - "r": 202, - "g": 180, - "b": 104 + '1f62d': { + 'averageColor': { + 'r': 202, + 'g': 180, + 'b': 104 } }, - "1f62e": { - "averageColor": { - "r": 239, - "g": 190, - "b": 69 + '1f62e': { + 'averageColor': { + 'r': 239, + 'g': 190, + 'b': 69 } }, - "1f62f": { - "averageColor": { - "r": 237, - "g": 188, - "b": 68 + '1f62f': { + 'averageColor': { + 'r': 237, + 'g': 188, + 'b': 68 } }, - "1f63a": { - "averageColor": { - "r": 218, - "g": 180, - "b": 84 + '1f63a': { + 'averageColor': { + 'r': 218, + 'g': 180, + 'b': 84 } }, - "1f63b": { - "averageColor": { - "r": 219, - "g": 149, - "b": 96 + '1f63b': { + 'averageColor': { + 'r': 219, + 'g': 149, + 'b': 96 } }, - "1f63c": { - "averageColor": { - "r": 227, - "g": 185, - "b": 79 + '1f63c': { + 'averageColor': { + 'r': 227, + 'g': 185, + 'b': 79 } }, - "1f63d": { - "averageColor": { - "r": 229, - "g": 186, - "b": 79 + '1f63d': { + 'averageColor': { + 'r': 229, + 'g': 186, + 'b': 79 } }, - "1f63e": { - "averageColor": { - "r": 228, - "g": 186, - "b": 78 + '1f63e': { + 'averageColor': { + 'r': 228, + 'g': 186, + 'b': 78 } }, - "1f63f": { - "averageColor": { - "r": 208, - "g": 181, - "b": 95 + '1f63f': { + 'averageColor': { + 'r': 208, + 'g': 181, + 'b': 95 } }, - "1f64a": { - "averageColor": { - "r": 194, - "g": 123, - "b": 99 + '1f64a': { + 'averageColor': { + 'r': 194, + 'g': 123, + 'b': 99 } }, - "1f64b": { - "averageColor": { - "r": 157, - "g": 102, - "b": 126 + '1f64b': { + 'averageColor': { + 'r': 157, + 'g': 102, + 'b': 126 } }, - "1f64c": { - "averageColor": { - "r": 236, - "g": 184, - "b": 150 + '1f64c': { + 'averageColor': { + 'r': 236, + 'g': 184, + 'b': 150 } }, - "1f64d": { - "averageColor": { - "r": 147, - "g": 89, - "b": 101 + '1f64d': { + 'averageColor': { + 'r': 147, + 'g': 89, + 'b': 101 } }, - "1f64e": { - "averageColor": { - "r": 147, - "g": 90, - "b": 102 + '1f64e': { + 'averageColor': { + 'r': 147, + 'g': 90, + 'b': 102 } }, - "1f64f": { - "averageColor": { - "r": 168, - "g": 139, - "b": 127 + '1f64f': { + 'averageColor': { + 'r': 168, + 'g': 139, + 'b': 127 } }, - "1f68a": { - "averageColor": { - "r": 133, - "g": 149, - "b": 146 + '1f68a': { + 'averageColor': { + 'r': 133, + 'g': 149, + 'b': 146 } }, - "1f68b": { - "averageColor": { - "r": 176, - "g": 129, - "b": 150 + '1f68b': { + 'averageColor': { + 'r': 176, + 'g': 129, + 'b': 150 } }, - "1f68c": { - "averageColor": { - "r": 111, - "g": 131, - "b": 147 + '1f68c': { + 'averageColor': { + 'r': 111, + 'g': 131, + 'b': 147 } }, - "1f68d": { - "averageColor": { - "r": 163, - "g": 168, - "b": 157 + '1f68d': { + 'averageColor': { + 'r': 163, + 'g': 168, + 'b': 157 } }, - "1f68e": { - "averageColor": { - "r": 134, - "g": 166, - "b": 150 + '1f68e': { + 'averageColor': { + 'r': 134, + 'g': 166, + 'b': 150 } }, - "1f68f": { - "averageColor": { - "r": 166, - "g": 109, - "b": 107 + '1f68f': { + 'averageColor': { + 'r': 166, + 'g': 109, + 'b': 107 } }, - "1f69a": { - "averageColor": { - "r": 193, - "g": 160, - "b": 152 + '1f69a': { + 'averageColor': { + 'r': 193, + 'g': 160, + 'b': 152 } }, - "1f69b": { - "averageColor": { - "r": 136, - "g": 162, - "b": 107 + '1f69b': { + 'averageColor': { + 'r': 136, + 'g': 162, + 'b': 107 } }, - "1f69c": { - "averageColor": { - "r": 120, - "g": 135, - "b": 86 + '1f69c': { + 'averageColor': { + 'r': 120, + 'g': 135, + 'b': 86 } }, - "1f69d": { - "averageColor": { - "r": 158, - "g": 179, - "b": 177 + '1f69d': { + 'averageColor': { + 'r': 158, + 'g': 179, + 'b': 177 } }, - "1f69e": { - "averageColor": { - "r": 180, - "g": 189, - "b": 163 + '1f69e': { + 'averageColor': { + 'r': 180, + 'g': 189, + 'b': 163 } }, - "1f69f": { - "averageColor": { - "r": 143, - "g": 130, - "b": 102 + '1f69f': { + 'averageColor': { + 'r': 143, + 'g': 130, + 'b': 102 } }, - "1f170": { - "averageColor": { - "r": 226, - "g": 82, - "b": 100 + '1f170': { + 'averageColor': { + 'r': 226, + 'g': 82, + 'b': 100 } }, - "1f171": { - "averageColor": { - "r": 228, - "g": 89, - "b": 106 + '1f171': { + 'averageColor': { + 'r': 228, + 'g': 89, + 'b': 106 } }, - "1f191": { - "averageColor": { - "r": 229, - "g": 99, - "b": 115 + '1f191': { + 'averageColor': { + 'r': 229, + 'g': 99, + 'b': 115 } }, - "1f192": { - "averageColor": { - "r": 86, - "g": 152, - "b": 203 + '1f192': { + 'averageColor': { + 'r': 86, + 'g': 152, + 'b': 203 } }, - "1f193": { - "averageColor": { - "r": 101, - "g": 162, - "b": 208 + '1f193': { + 'averageColor': { + 'r': 101, + 'g': 162, + 'b': 208 } }, - "1f194": { - "averageColor": { - "r": 176, - "g": 145, - "b": 218 + '1f194': { + 'averageColor': { + 'r': 176, + 'g': 145, + 'b': 218 } }, - "1f195": { - "averageColor": { - "r": 97, - "g": 159, - "b": 206 + '1f195': { + 'averageColor': { + 'r': 97, + 'g': 159, + 'b': 206 } }, - "1f196": { - "averageColor": { - "r": 108, - "g": 166, - "b": 210 + '1f196': { + 'averageColor': { + 'r': 108, + 'g': 166, + 'b': 210 } }, - "1f197": { - "averageColor": { - "r": 104, - "g": 163, - "b": 208 + '1f197': { + 'averageColor': { + 'r': 104, + 'g': 163, + 'b': 208 } }, - "1f198": { - "averageColor": { - "r": 228, - "g": 93, - "b": 110 + '1f198': { + 'averageColor': { + 'r': 228, + 'g': 93, + 'b': 110 } }, - "1f199": { - "averageColor": { - "r": 96, - "g": 158, - "b": 206 + '1f199': { + 'averageColor': { + 'r': 96, + 'g': 158, + 'b': 206 } }, - "1f201": { - "averageColor": { - "r": 83, - "g": 151, - "b": 202 + '1f201': { + 'averageColor': { + 'r': 83, + 'g': 151, + 'b': 202 } }, - "1f202": { - "averageColor": { - "r": 80, - "g": 149, - "b": 201 + '1f202': { + 'averageColor': { + 'r': 80, + 'g': 149, + 'b': 201 } }, - "1f232": { - "averageColor": { - "r": 227, - "g": 86, - "b": 103 + '1f232': { + 'averageColor': { + 'r': 227, + 'g': 86, + 'b': 103 } }, - "1f233": { - "averageColor": { - "r": 163, - "g": 126, - "b": 212 + '1f233': { + 'averageColor': { + 'r': 163, + 'g': 126, + 'b': 212 } }, - "1f234": { - "averageColor": { - "r": 225, - "g": 75, - "b": 94 + '1f234': { + 'averageColor': { + 'r': 225, + 'g': 75, + 'b': 94 } }, - "1f235": { - "averageColor": { - "r": 227, - "g": 88, - "b": 105 + '1f235': { + 'averageColor': { + 'r': 227, + 'g': 88, + 'b': 105 } }, - "1f236": { - "averageColor": { - "r": 245, - "g": 162, - "b": 52 + '1f236': { + 'averageColor': { + 'r': 245, + 'g': 162, + 'b': 52 } }, - "1f237": { - "averageColor": { - "r": 245, - "g": 159, - "b": 46 + '1f237': { + 'averageColor': { + 'r': 245, + 'g': 159, + 'b': 46 } }, - "1f238": { - "averageColor": { - "r": 245, - "g": 160, - "b": 48 + '1f238': { + 'averageColor': { + 'r': 245, + 'g': 160, + 'b': 48 } }, - "1f239": { - "averageColor": { - "r": 227, - "g": 86, - "b": 104 + '1f239': { + 'averageColor': { + 'r': 227, + 'g': 86, + 'b': 104 } }, - "1f250": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '1f250': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "1f251": { - "averageColor": { - "r": 245, - "g": 162, - "b": 53 + '1f251': { + 'averageColor': { + 'r': 245, + 'g': 162, + 'b': 53 } }, - "1f300": { - "averageColor": { - "r": 84, - "g": 172, - "b": 238 + '1f300': { + 'averageColor': { + 'r': 84, + 'g': 172, + 'b': 238 } }, - "1f301": { - "averageColor": { - "r": 152, - "g": 178, - "b": 195 + '1f301': { + 'averageColor': { + 'r': 152, + 'g': 178, + 'b': 195 } }, - "1f302": { - "averageColor": { - "r": 125, - "g": 93, - "b": 176 + '1f302': { + 'averageColor': { + 'r': 125, + 'g': 93, + 'b': 176 } }, - "1f303": { - "averageColor": { - "r": 56, - "g": 81, - "b": 95 + '1f303': { + 'averageColor': { + 'r': 56, + 'g': 81, + 'b': 95 } }, - "1f304": { - "averageColor": { - "r": 189, - "g": 175, - "b": 75 + '1f304': { + 'averageColor': { + 'r': 189, + 'g': 175, + 'b': 75 } }, - "1f305": { - "averageColor": { - "r": 169, - "g": 165, - "b": 120 + '1f305': { + 'averageColor': { + 'r': 169, + 'g': 165, + 'b': 120 } }, - "1f306": { - "averageColor": { - "r": 123, - "g": 94, - "b": 49 + '1f306': { + 'averageColor': { + 'r': 123, + 'g': 94, + 'b': 49 } }, - "1f307": { - "averageColor": { - "r": 170, - "g": 142, - "b": 79 + '1f307': { + 'averageColor': { + 'r': 170, + 'g': 142, + 'b': 79 } }, - "1f308": { - "averageColor": { - "r": 161, - "g": 152, - "b": 148 + '1f308': { + 'averageColor': { + 'r': 161, + 'g': 152, + 'b': 148 } }, - "1f309": { - "averageColor": { - "r": 83, - "g": 81, - "b": 92 + '1f309': { + 'averageColor': { + 'r': 83, + 'g': 81, + 'b': 92 } }, - "1f310": { - "averageColor": { - "r": 59, - "g": 136, - "b": 194 + '1f310': { + 'averageColor': { + 'r': 59, + 'g': 136, + 'b': 194 } }, - "1f311": { - "averageColor": { - "r": 100, - "g": 115, - "b": 125 + '1f311': { + 'averageColor': { + 'r': 100, + 'g': 115, + 'b': 125 } }, - "1f312": { - "averageColor": { - "r": 121, - "g": 135, - "b": 145 + '1f312': { + 'averageColor': { + 'r': 121, + 'g': 135, + 'b': 145 } }, - "1f313": { - "averageColor": { - "r": 150, - "g": 163, - "b": 172 + '1f313': { + 'averageColor': { + 'r': 150, + 'g': 163, + 'b': 172 } }, - "1f314": { - "averageColor": { - "r": 178, - "g": 190, - "b": 197 + '1f314': { + 'averageColor': { + 'r': 178, + 'g': 190, + 'b': 197 } }, - "1f315": { - "averageColor": { - "r": 200, - "g": 211, - "b": 218 + '1f315': { + 'averageColor': { + 'r': 200, + 'g': 211, + 'b': 218 } }, - "1f316": { - "averageColor": { - "r": 178, - "g": 190, - "b": 197 + '1f316': { + 'averageColor': { + 'r': 178, + 'g': 190, + 'b': 197 } }, - "1f317": { - "averageColor": { - "r": 150, - "g": 163, - "b": 172 + '1f317': { + 'averageColor': { + 'r': 150, + 'g': 163, + 'b': 172 } }, - "1f318": { - "averageColor": { - "r": 121, - "g": 135, - "b": 145 + '1f318': { + 'averageColor': { + 'r': 121, + 'g': 135, + 'b': 145 } }, - "1f319": { - "averageColor": { - "r": 201, - "g": 212, - "b": 219 + '1f319': { + 'averageColor': { + 'r': 201, + 'g': 212, + 'b': 219 } }, - "1f320": { - "averageColor": { - "r": 117, - "g": 136, - "b": 129 + '1f320': { + 'averageColor': { + 'r': 117, + 'g': 136, + 'b': 129 } }, - "1f330": { - "averageColor": { - "r": 175, - "g": 89, - "b": 64 + '1f330': { + 'averageColor': { + 'r': 175, + 'g': 89, + 'b': 64 } }, - "1f331": { - "averageColor": { - "r": 118, - "g": 177, - "b": 84 + '1f331': { + 'averageColor': { + 'r': 118, + 'g': 177, + 'b': 84 } }, - "1f332": { - "averageColor": { - "r": 82, - "g": 125, - "b": 45 + '1f332': { + 'averageColor': { + 'r': 82, + 'g': 125, + 'b': 45 } }, - "1f333": { - "averageColor": { - "r": 89, - "g": 133, - "b": 52 + '1f333': { + 'averageColor': { + 'r': 89, + 'g': 133, + 'b': 52 } }, - "1f334": { - "averageColor": { - "r": 125, - "g": 138, - "b": 71 + '1f334': { + 'averageColor': { + 'r': 125, + 'g': 138, + 'b': 71 } }, - "1f335": { - "averageColor": { - "r": 115, - "g": 173, - "b": 81 + '1f335': { + 'averageColor': { + 'r': 115, + 'g': 173, + 'b': 81 } }, - "1f337": { - "averageColor": { - "r": 196, - "g": 161, - "b": 137 + '1f337': { + 'averageColor': { + 'r': 196, + 'g': 161, + 'b': 137 } }, - "1f338": { - "averageColor": { - "r": 243, - "g": 166, - "b": 172 + '1f338': { + 'averageColor': { + 'r': 243, + 'g': 166, + 'b': 172 } }, - "1f339": { - "averageColor": { - "r": 152, - "g": 40, - "b": 39 + '1f339': { + 'averageColor': { + 'r': 152, + 'g': 40, + 'b': 39 } }, - "1f340": { - "averageColor": { - "r": 118, - "g": 177, - "b": 84 + '1f340': { + 'averageColor': { + 'r': 118, + 'g': 177, + 'b': 84 } }, - "1f341": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '1f341': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "1f342": { - "averageColor": { - "r": 207, - "g": 137, - "b": 110 + '1f342': { + 'averageColor': { + 'r': 207, + 'g': 137, + 'b': 110 } }, - "1f343": { - "averageColor": { - "r": 140, - "g": 195, - "b": 129 + '1f343': { + 'averageColor': { + 'r': 140, + 'g': 195, + 'b': 129 } }, - "1f344": { - "averageColor": { - "r": 211, - "g": 116, - "b": 133 + '1f344': { + 'averageColor': { + 'r': 211, + 'g': 116, + 'b': 133 } }, - "1f345": { - "averageColor": { - "r": 212, - "g": 57, - "b": 69 + '1f345': { + 'averageColor': { + 'r': 212, + 'g': 57, + 'b': 69 } }, - "1f346": { - "averageColor": { - "r": 116, - "g": 85, - "b": 163 + '1f346': { + 'averageColor': { + 'r': 116, + 'g': 85, + 'b': 163 } }, - "1f347": { - "averageColor": { - "r": 134, - "g": 98, - "b": 186 + '1f347': { + 'averageColor': { + 'r': 134, + 'g': 98, + 'b': 186 } }, - "1f348": { - "averageColor": { - "r": 150, - "g": 199, - "b": 119 + '1f348': { + 'averageColor': { + 'r': 150, + 'g': 199, + 'b': 119 } }, - "1f349": { - "averageColor": { - "r": 191, - "g": 99, - "b": 84 + '1f349': { + 'averageColor': { + 'r': 191, + 'g': 99, + 'b': 84 } }, - "1f350": { - "averageColor": { - "r": 162, - "g": 202, - "b": 130 + '1f350': { + 'averageColor': { + 'r': 162, + 'g': 202, + 'b': 130 } }, - "1f351": { - "averageColor": { - "r": 230, - "g": 136, - "b": 101 + '1f351': { + 'averageColor': { + 'r': 230, + 'g': 136, + 'b': 101 } }, - "1f352": { - "averageColor": { - "r": 161, - "g": 69, - "b": 56 + '1f352': { + 'averageColor': { + 'r': 161, + 'g': 69, + 'b': 56 } }, - "1f353": { - "averageColor": { - "r": 184, - "g": 57, - "b": 64 + '1f353': { + 'averageColor': { + 'r': 184, + 'g': 57, + 'b': 64 } }, - "1f354": { - "averageColor": { - "r": 203, - "g": 144, - "b": 111 + '1f354': { + 'averageColor': { + 'r': 203, + 'g': 144, + 'b': 111 } }, - "1f355": { - "averageColor": { - "r": 229, - "g": 127, - "b": 55 + '1f355': { + 'averageColor': { + 'r': 229, + 'g': 127, + 'b': 55 } }, - "1f356": { - "averageColor": { - "r": 202, - "g": 126, - "b": 87 + '1f356': { + 'averageColor': { + 'r': 202, + 'g': 126, + 'b': 87 } }, - "1f357": { - "averageColor": { - "r": 202, - "g": 123, - "b": 87 + '1f357': { + 'averageColor': { + 'r': 202, + 'g': 123, + 'b': 87 } }, - "1f358": { - "averageColor": { - "r": 154, - "g": 92, - "b": 74 + '1f358': { + 'averageColor': { + 'r': 154, + 'g': 92, + 'b': 74 } }, - "1f359": { - "averageColor": { - "r": 185, - "g": 187, - "b": 189 + '1f359': { + 'averageColor': { + 'r': 185, + 'g': 187, + 'b': 189 } }, - "1f360": { - "averageColor": { - "r": 221, - "g": 129, - "b": 51 + '1f360': { + 'averageColor': { + 'r': 221, + 'g': 129, + 'b': 51 } }, - "1f361": { - "averageColor": { - "r": 222, - "g": 197, - "b": 160 + '1f361': { + 'averageColor': { + 'r': 222, + 'g': 197, + 'b': 160 } }, - "1f362": { - "averageColor": { - "r": 183, - "g": 167, - "b": 161 + '1f362': { + 'averageColor': { + 'r': 183, + 'g': 167, + 'b': 161 } }, - "1f363": { - "averageColor": { - "r": 179, - "g": 98, - "b": 104 + '1f363': { + 'averageColor': { + 'r': 179, + 'g': 98, + 'b': 104 } }, - "1f364": { - "averageColor": { - "r": 253, - "g": 160, - "b": 67 + '1f364': { + 'averageColor': { + 'r': 253, + 'g': 160, + 'b': 67 } }, - "1f365": { - "averageColor": { - "r": 222, - "g": 210, - "b": 227 + '1f365': { + 'averageColor': { + 'r': 222, + 'g': 210, + 'b': 227 } }, - "1f366": { - "averageColor": { - "r": 254, - "g": 215, - "b": 128 + '1f366': { + 'averageColor': { + 'r': 254, + 'g': 215, + 'b': 128 } }, - "1f367": { - "averageColor": { - "r": 182, - "g": 171, - "b": 205 + '1f367': { + 'averageColor': { + 'r': 182, + 'g': 171, + 'b': 205 } }, - "1f368": { - "averageColor": { - "r": 147, - "g": 162, - "b": 182 + '1f368': { + 'averageColor': { + 'r': 147, + 'g': 162, + 'b': 182 } }, - "1f369": { - "averageColor": { - "r": 176, - "g": 112, - "b": 65 + '1f369': { + 'averageColor': { + 'r': 176, + 'g': 112, + 'b': 65 } }, - "1f370": { - "averageColor": { - "r": 235, - "g": 210, - "b": 184 + '1f370': { + 'averageColor': { + 'r': 235, + 'g': 210, + 'b': 184 } }, - "1f371": { - "averageColor": { - "r": 135, - "g": 88, - "b": 80 + '1f371': { + 'averageColor': { + 'r': 135, + 'g': 88, + 'b': 80 } }, - "1f372": { - "averageColor": { - "r": 129, - "g": 125, - "b": 89 + '1f372': { + 'averageColor': { + 'r': 129, + 'g': 125, + 'b': 89 } }, - "1f373": { - "averageColor": { - "r": 123, - "g": 124, - "b": 121 + '1f373': { + 'averageColor': { + 'r': 123, + 'g': 124, + 'b': 121 } }, - "1f374": { - "averageColor": { - "r": 153, - "g": 170, - "b": 180 + '1f374': { + 'averageColor': { + 'r': 153, + 'g': 170, + 'b': 180 } }, - "1f375": { - "averageColor": { - "r": 152, - "g": 181, - "b": 145 + '1f375': { + 'averageColor': { + 'r': 152, + 'g': 181, + 'b': 145 } }, - "1f376": { - "averageColor": { - "r": 128, - "g": 186, - "b": 230 + '1f376': { + 'averageColor': { + 'r': 128, + 'g': 186, + 'b': 230 } }, - "1f377": { - "averageColor": { - "r": 174, - "g": 139, - "b": 153 + '1f377': { + 'averageColor': { + 'r': 174, + 'g': 139, + 'b': 153 } }, - "1f378": { - "averageColor": { - "r": 171, - "g": 180, - "b": 183 + '1f378': { + 'averageColor': { + 'r': 171, + 'g': 180, + 'b': 183 } }, - "1f379": { - "averageColor": { - "r": 177, - "g": 167, - "b": 113 + '1f379': { + 'averageColor': { + 'r': 177, + 'g': 167, + 'b': 113 } }, - "1f380": { - "averageColor": { - "r": 215, - "g": 45, - "b": 67 + '1f380': { + 'averageColor': { + 'r': 215, + 'g': 45, + 'b': 67 } }, - "1f381": { - "averageColor": { - "r": 240, - "g": 155, - "b": 110 + '1f381': { + 'averageColor': { + 'r': 240, + 'g': 155, + 'b': 110 } }, - "1f382": { - "averageColor": { - "r": 171, - "g": 124, - "b": 107 + '1f382': { + 'averageColor': { + 'r': 171, + 'g': 124, + 'b': 107 } }, - "1f383": { - "averageColor": { - "r": 200, - "g": 119, - "b": 35 + '1f383': { + 'averageColor': { + 'r': 200, + 'g': 119, + 'b': 35 } }, - "1f384": { - "averageColor": { - "r": 114, - "g": 129, - "b": 53 + '1f384': { + 'averageColor': { + 'r': 114, + 'g': 129, + 'b': 53 } }, - "1f385": { - "averageColor": { - "r": 222, - "g": 152, - "b": 151 + '1f385': { + 'averageColor': { + 'r': 222, + 'g': 152, + 'b': 151 } }, - "1f386": { - "averageColor": { - "r": 102, - "g": 141, - "b": 152 + '1f386': { + 'averageColor': { + 'r': 102, + 'g': 141, + 'b': 152 } }, - "1f387": { - "averageColor": { - "r": 99, - "g": 140, - "b": 156 + '1f387': { + 'averageColor': { + 'r': 99, + 'g': 140, + 'b': 156 } }, - "1f388": { - "averageColor": { - "r": 195, - "g": 44, - "b": 53 + '1f388': { + 'averageColor': { + 'r': 195, + 'g': 44, + 'b': 53 } }, - "1f389": { - "averageColor": { - "r": 185, - "g": 91, - "b": 92 + '1f389': { + 'averageColor': { + 'r': 185, + 'g': 91, + 'b': 92 } }, - "1f390": { - "averageColor": { - "r": 145, - "g": 178, - "b": 143 + '1f390': { + 'averageColor': { + 'r': 145, + 'g': 178, + 'b': 143 } }, - "1f391": { - "averageColor": { - "r": 100, - "g": 141, - "b": 146 + '1f391': { + 'averageColor': { + 'r': 100, + 'g': 141, + 'b': 146 } }, - "1f392": { - "averageColor": { - "r": 173, - "g": 42, - "b": 51 + '1f392': { + 'averageColor': { + 'r': 173, + 'g': 42, + 'b': 51 } }, - "1f393": { - "averageColor": { - "r": 75, - "g": 74, - "b": 67 + '1f393': { + 'averageColor': { + 'r': 75, + 'g': 74, + 'b': 67 } }, - "1f400": { - "averageColor": { - "r": 122, - "g": 114, - "b": 125 + '1f400': { + 'averageColor': { + 'r': 122, + 'g': 114, + 'b': 125 } }, - "1f401": { - "averageColor": { - "r": 210, - "g": 193, - "b": 202 + '1f401': { + 'averageColor': { + 'r': 210, + 'g': 193, + 'b': 202 } }, - "1f402": { - "averageColor": { - "r": 192, - "g": 109, - "b": 84 + '1f402': { + 'averageColor': { + 'r': 192, + 'g': 109, + 'b': 84 } }, - "1f403": { - "averageColor": { - "r": 53, - "g": 60, - "b": 65 + '1f403': { + 'averageColor': { + 'r': 53, + 'g': 60, + 'b': 65 } }, - "1f404": { - "averageColor": { - "r": 112, - "g": 120, - "b": 125 + '1f404': { + 'averageColor': { + 'r': 112, + 'g': 120, + 'b': 125 } }, - "1f405": { - "averageColor": { - "r": 225, - "g": 154, - "b": 51 + '1f405': { + 'averageColor': { + 'r': 225, + 'g': 154, + 'b': 51 } }, - "1f406": { - "averageColor": { - "r": 250, - "g": 192, - "b": 66 + '1f406': { + 'averageColor': { + 'r': 250, + 'g': 192, + 'b': 66 } }, - "1f407": { - "averageColor": { - "r": 161, - "g": 170, - "b": 181 + '1f407': { + 'averageColor': { + 'r': 161, + 'g': 170, + 'b': 181 } }, - "1f408": { - "averageColor": { - "r": 187, - "g": 102, - "b": 76 + '1f408': { + 'averageColor': { + 'r': 187, + 'g': 102, + 'b': 76 } }, - "1f409": { - "averageColor": { - "r": 107, - "g": 163, - "b": 73 + '1f409': { + 'averageColor': { + 'r': 107, + 'g': 163, + 'b': 73 } }, - "1f410": { - "averageColor": { - "r": 206, - "g": 212, - "b": 212 + '1f410': { + 'averageColor': { + 'r': 206, + 'g': 212, + 'b': 212 } }, - "1f411": { - "averageColor": { - "r": 228, - "g": 225, - "b": 208 + '1f411': { + 'averageColor': { + 'r': 228, + 'g': 225, + 'b': 208 } }, - "1f412": { - "averageColor": { - "r": 193, - "g": 112, - "b": 89 + '1f412': { + 'averageColor': { + 'r': 193, + 'g': 112, + 'b': 89 } }, - "1f413": { - "averageColor": { - "r": 226, - "g": 206, - "b": 203 + '1f413': { + 'averageColor': { + 'r': 226, + 'g': 206, + 'b': 203 } }, - "1f414": { - "averageColor": { - "r": 223, - "g": 194, - "b": 181 + '1f414': { + 'averageColor': { + 'r': 223, + 'g': 194, + 'b': 181 } }, - "1f415": { - "averageColor": { - "r": 195, - "g": 132, - "b": 107 + '1f415': { + 'averageColor': { + 'r': 195, + 'g': 132, + 'b': 107 } }, - "1f416": { - "averageColor": { - "r": 242, - "g": 170, - "b": 185 + '1f416': { + 'averageColor': { + 'r': 242, + 'g': 170, + 'b': 185 } }, - "1f417": { - "averageColor": { - "r": 202, - "g": 142, - "b": 117 + '1f417': { + 'averageColor': { + 'r': 202, + 'g': 142, + 'b': 117 } }, - "1f418": { - "averageColor": { - "r": 150, - "g": 166, - "b": 177 + '1f418': { + 'averageColor': { + 'r': 150, + 'g': 166, + 'b': 177 } }, - "1f419": { - "averageColor": { - "r": 139, - "g": 97, - "b": 195 + '1f419': { + 'averageColor': { + 'r': 139, + 'g': 97, + 'b': 195 } }, - "1f420": { - "averageColor": { - "r": 251, - "g": 193, - "b": 67 + '1f420': { + 'averageColor': { + 'r': 251, + 'g': 193, + 'b': 67 } }, - "1f421": { - "averageColor": { - "r": 201, - "g": 128, - "b": 101 + '1f421': { + 'averageColor': { + 'r': 201, + 'g': 128, + 'b': 101 } }, - "1f422": { - "averageColor": { - "r": 89, - "g": 144, - "b": 57 + '1f422': { + 'averageColor': { + 'r': 89, + 'g': 144, + 'b': 57 } }, - "1f423": { - "averageColor": { - "r": 239, - "g": 207, - "b": 128 + '1f423': { + 'averageColor': { + 'r': 239, + 'g': 207, + 'b': 128 } }, - "1f424": { - "averageColor": { - "r": 252, - "g": 195, - "b": 71 + '1f424': { + 'averageColor': { + 'r': 252, + 'g': 195, + 'b': 71 } }, - "1f425": { - "averageColor": { - "r": 251, - "g": 196, - "b": 71 + '1f425': { + 'averageColor': { + 'r': 251, + 'g': 196, + 'b': 71 } }, - "1f426": { - "averageColor": { - "r": 216, - "g": 57, - "b": 62 + '1f426': { + 'averageColor': { + 'r': 216, + 'g': 57, + 'b': 62 } }, - "1f427": { - "averageColor": { - "r": 167, - "g": 160, - "b": 147 + '1f427': { + 'averageColor': { + 'r': 167, + 'g': 160, + 'b': 147 } }, - "1f428": { - "averageColor": { - "r": 136, - "g": 152, - "b": 162 + '1f428': { + 'averageColor': { + 'r': 136, + 'g': 152, + 'b': 162 } }, - "1f429": { - "averageColor": { - "r": 151, - "g": 166, - "b": 176 + '1f429': { + 'averageColor': { + 'r': 151, + 'g': 166, + 'b': 176 } }, - "1f430": { - "averageColor": { - "r": 174, - "g": 174, - "b": 185 + '1f430': { + 'averageColor': { + 'r': 174, + 'g': 174, + 'b': 185 } }, - "1f431": { - "averageColor": { - "r": 238, - "g": 181, - "b": 79 + '1f431': { + 'averageColor': { + 'r': 238, + 'g': 181, + 'b': 79 } }, - "1f432": { - "averageColor": { - "r": 108, - "g": 163, - "b": 76 + '1f432': { + 'averageColor': { + 'r': 108, + 'g': 163, + 'b': 76 } }, - "1f433": { - "averageColor": { - "r": 120, - "g": 95, - "b": 181 + '1f433': { + 'averageColor': { + 'r': 120, + 'g': 95, + 'b': 181 } }, - "1f434": { - "averageColor": { - "r": 181, - "g": 124, - "b": 106 + '1f434': { + 'averageColor': { + 'r': 181, + 'g': 124, + 'b': 106 } }, - "1f435": { - "averageColor": { - "r": 190, - "g": 119, - "b": 97 + '1f435': { + 'averageColor': { + 'r': 190, + 'g': 119, + 'b': 97 } }, - "1f436": { - "averageColor": { - "r": 132, - "g": 137, - "b": 143 + '1f436': { + 'averageColor': { + 'r': 132, + 'g': 137, + 'b': 143 } }, - "1f437": { - "averageColor": { - "r": 232, - "g": 144, - "b": 159 + '1f437': { + 'averageColor': { + 'r': 232, + 'g': 144, + 'b': 159 } }, - "1f438": { - "averageColor": { - "r": 149, - "g": 195, - "b": 122 + '1f438': { + 'averageColor': { + 'r': 149, + 'g': 195, + 'b': 122 } }, - "1f439": { - "averageColor": { - "r": 236, - "g": 173, - "b": 106 + '1f439': { + 'averageColor': { + 'r': 236, + 'g': 173, + 'b': 106 } }, - "1f440": { - "averageColor": { - "r": 205, - "g": 212, - "b": 217 + '1f440': { + 'averageColor': { + 'r': 205, + 'g': 212, + 'b': 217 } }, - "1f442": { - "averageColor": { - "r": 212, - "g": 148, - "b": 120 + '1f442': { + 'averageColor': { + 'r': 212, + 'g': 148, + 'b': 120 } }, - "1f443": { - "averageColor": { - "r": 208, - "g": 150, - "b": 124 + '1f443': { + 'averageColor': { + 'r': 208, + 'g': 150, + 'b': 124 } }, - "1f444": { - "averageColor": { - "r": 204, - "g": 94, - "b": 106 + '1f444': { + 'averageColor': { + 'r': 204, + 'g': 94, + 'b': 106 } }, - "1f445": { - "averageColor": { - "r": 202, - "g": 73, - "b": 86 + '1f445': { + 'averageColor': { + 'r': 202, + 'g': 73, + 'b': 86 } }, - "1f446": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '1f446': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "1f447": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '1f447': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "1f448": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '1f448': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "1f449": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '1f449': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "1f450": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '1f450': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "1f451": { - "averageColor": { - "r": 234, - "g": 186, - "b": 65 + '1f451': { + 'averageColor': { + 'r': 234, + 'g': 186, + 'b': 65 } }, - "1f452": { - "averageColor": { - "r": 241, - "g": 205, - "b": 148 + '1f452': { + 'averageColor': { + 'r': 241, + 'g': 205, + 'b': 148 } }, - "1f453": { - "averageColor": { - "r": 55, - "g": 88, - "b": 112 + '1f453': { + 'averageColor': { + 'r': 55, + 'g': 88, + 'b': 112 } }, - "1f454": { - "averageColor": { - "r": 137, - "g": 148, - "b": 190 + '1f454': { + 'averageColor': { + 'r': 137, + 'g': 148, + 'b': 190 } }, - "1f455": { - "averageColor": { - "r": 61, - "g": 139, - "b": 198 + '1f455': { + 'averageColor': { + 'r': 61, + 'g': 139, + 'b': 198 } }, - "1f456": { - "averageColor": { - "r": 56, - "g": 132, - "b": 190 + '1f456': { + 'averageColor': { + 'r': 56, + 'g': 132, + 'b': 190 } }, - "1f457": { - "averageColor": { - "r": 86, - "g": 171, - "b": 235 + '1f457': { + 'averageColor': { + 'r': 86, + 'g': 171, + 'b': 235 } }, - "1f458": { - "averageColor": { - "r": 84, - "g": 151, - "b": 202 + '1f458': { + 'averageColor': { + 'r': 84, + 'g': 151, + 'b': 202 } }, - "1f459": { - "averageColor": { - "r": 108, - "g": 72, - "b": 161 + '1f459': { + 'averageColor': { + 'r': 108, + 'g': 72, + 'b': 161 } }, - "1f460": { - "averageColor": { - "r": 106, - "g": 81, - "b": 146 + '1f460': { + 'averageColor': { + 'r': 106, + 'g': 81, + 'b': 146 } }, - "1f461": { - "averageColor": { - "r": 197, - "g": 93, - "b": 81 + '1f461': { + 'averageColor': { + 'r': 197, + 'g': 93, + 'b': 81 } }, - "1f462": { - "averageColor": { - "r": 178, - "g": 95, - "b": 71 + '1f462': { + 'averageColor': { + 'r': 178, + 'g': 95, + 'b': 71 } }, - "1f463": { - "averageColor": { - "r": 101, - "g": 32, - "b": 18 + '1f463': { + 'averageColor': { + 'r': 101, + 'g': 32, + 'b': 18 } }, - "1f464": { - "averageColor": { - "r": 41, - "g": 47, - "b": 50 + '1f464': { + 'averageColor': { + 'r': 41, + 'g': 47, + 'b': 50 } }, - "1f465": { - "averageColor": { - "r": 68, - "g": 78, - "b": 85 + '1f465': { + 'averageColor': { + 'r': 68, + 'g': 78, + 'b': 85 } }, - "1f466": { - "averageColor": { - "r": 171, - "g": 107, - "b": 85 + '1f466': { + 'averageColor': { + 'r': 171, + 'g': 107, + 'b': 85 } }, - "1f467": { - "averageColor": { - "r": 163, - "g": 97, - "b": 77 + '1f467': { + 'averageColor': { + 'r': 163, + 'g': 97, + 'b': 77 } }, - "1f468": { - "averageColor": { - "r": 150, - "g": 115, - "b": 100 + '1f468': { + 'averageColor': { + 'r': 150, + 'g': 115, + 'b': 100 } }, - "1f469": { - "averageColor": { - "r": 200, - "g": 122, - "b": 96 + '1f469': { + 'averageColor': { + 'r': 200, + 'g': 122, + 'b': 96 } }, - "1f470": { - "averageColor": { - "r": 192, - "g": 156, - "b": 146 + '1f470': { + 'averageColor': { + 'r': 192, + 'g': 156, + 'b': 146 } }, - "1f471": { - "averageColor": { - "r": 226, - "g": 176, - "b": 129 + '1f471': { + 'averageColor': { + 'r': 226, + 'g': 176, + 'b': 129 } }, - "1f472": { - "averageColor": { - "r": 175, - "g": 123, - "b": 98 + '1f472': { + 'averageColor': { + 'r': 175, + 'g': 123, + 'b': 98 } }, - "1f473": { - "averageColor": { - "r": 214, - "g": 177, - "b": 160 + '1f473': { + 'averageColor': { + 'r': 214, + 'g': 177, + 'b': 160 } }, - "1f474": { - "averageColor": { - "r": 212, - "g": 158, - "b": 133 + '1f474': { + 'averageColor': { + 'r': 212, + 'g': 158, + 'b': 133 } }, - "1f475": { - "averageColor": { - "r": 174, - "g": 140, - "b": 127 + '1f475': { + 'averageColor': { + 'r': 174, + 'g': 140, + 'b': 127 } }, - "1f476": { - "averageColor": { - "r": 200, - "g": 140, - "b": 114 + '1f476': { + 'averageColor': { + 'r': 200, + 'g': 140, + 'b': 114 } }, - "1f477": { - "averageColor": { - "r": 232, - "g": 184, - "b": 121 + '1f477': { + 'averageColor': { + 'r': 232, + 'g': 184, + 'b': 121 } }, - "1f478": { - "averageColor": { - "r": 230, - "g": 187, - "b": 134 + '1f478': { + 'averageColor': { + 'r': 230, + 'g': 187, + 'b': 134 } }, - "1f479": { - "averageColor": { - "r": 127, - "g": 37, - "b": 36 + '1f479': { + 'averageColor': { + 'r': 127, + 'g': 37, + 'b': 36 } }, - "1f480": { - "averageColor": { - "r": 163, - "g": 165, - "b": 167 + '1f480': { + 'averageColor': { + 'r': 163, + 'g': 165, + 'b': 167 } }, - "1f481": { - "averageColor": { - "r": 151, - "g": 94, - "b": 112 + '1f481': { + 'averageColor': { + 'r': 151, + 'g': 94, + 'b': 112 } }, - "1f482": { - "averageColor": { - "r": 82, - "g": 66, - "b": 58 + '1f482': { + 'averageColor': { + 'r': 82, + 'g': 66, + 'b': 58 } }, - "1f483": { - "averageColor": { - "r": 198, - "g": 66, - "b": 71 + '1f483': { + 'averageColor': { + 'r': 198, + 'g': 66, + 'b': 71 } }, - "1f484": { - "averageColor": { - "r": 241, - "g": 132, - "b": 98 + '1f484': { + 'averageColor': { + 'r': 241, + 'g': 132, + 'b': 98 } }, - "1f485": { - "averageColor": { - "r": 204, - "g": 108, - "b": 109 + '1f485': { + 'averageColor': { + 'r': 204, + 'g': 108, + 'b': 109 } }, - "1f486": { - "averageColor": { - "r": 163, - "g": 107, - "b": 114 + '1f486': { + 'averageColor': { + 'r': 163, + 'g': 107, + 'b': 114 } }, - "1f487": { - "averageColor": { - "r": 138, - "g": 89, - "b": 96 + '1f487': { + 'averageColor': { + 'r': 138, + 'g': 89, + 'b': 96 } }, - "1f488": { - "averageColor": { - "r": 189, - "g": 183, - "b": 199 + '1f488': { + 'averageColor': { + 'r': 189, + 'g': 183, + 'b': 199 } }, - "1f489": { - "averageColor": { - "r": 197, - "g": 114, - "b": 129 + '1f489': { + 'averageColor': { + 'r': 197, + 'g': 114, + 'b': 129 } }, - "1f490": { - "averageColor": { - "r": 158, - "g": 138, - "b": 66 + '1f490': { + 'averageColor': { + 'r': 158, + 'g': 138, + 'b': 66 } }, - "1f491": { - "averageColor": { - "r": 154, - "g": 102, - "b": 114 + '1f491': { + 'averageColor': { + 'r': 154, + 'g': 102, + 'b': 114 } }, - "1f492": { - "averageColor": { - "r": 214, - "g": 113, - "b": 126 + '1f492': { + 'averageColor': { + 'r': 214, + 'g': 113, + 'b': 126 } }, - "1f493": { - "averageColor": { - "r": 233, - "g": 102, - "b": 109 + '1f493': { + 'averageColor': { + 'r': 233, + 'g': 102, + 'b': 109 } }, - "1f494": { - "averageColor": { - "r": 230, - "g": 90, - "b": 112 + '1f494': { + 'averageColor': { + 'r': 230, + 'g': 90, + 'b': 112 } }, - "1f495": { - "averageColor": { - "r": 230, - "g": 90, - "b": 112 + '1f495': { + 'averageColor': { + 'r': 230, + 'g': 90, + 'b': 112 } }, - "1f496": { - "averageColor": { - "r": 233, - "g": 105, - "b": 108 + '1f496': { + 'averageColor': { + 'r': 233, + 'g': 105, + 'b': 108 } }, - "1f497": { - "averageColor": { - "r": 224, - "g": 110, - "b": 130 + '1f497': { + 'averageColor': { + 'r': 224, + 'g': 110, + 'b': 130 } }, - "1f498": { - "averageColor": { - "r": 186, - "g": 102, - "b": 134 + '1f498': { + 'averageColor': { + 'r': 186, + 'g': 102, + 'b': 134 } }, - "1f499": { - "averageColor": { - "r": 93, - "g": 173, - "b": 236 + '1f499': { + 'averageColor': { + 'r': 93, + 'g': 173, + 'b': 236 } }, - "1f500": { - "averageColor": { - "r": 95, - "g": 158, - "b": 206 + '1f500': { + 'averageColor': { + 'r': 95, + 'g': 158, + 'b': 206 } }, - "1f501": { - "averageColor": { - "r": 101, - "g": 162, - "b": 208 + '1f501': { + 'averageColor': { + 'r': 101, + 'g': 162, + 'b': 208 } }, - "1f502": { - "averageColor": { - "r": 103, - "g": 163, - "b": 208 + '1f502': { + 'averageColor': { + 'r': 103, + 'g': 163, + 'b': 208 } }, - "1f503": { - "averageColor": { - "r": 101, - "g": 162, - "b": 208 + '1f503': { + 'averageColor': { + 'r': 101, + 'g': 162, + 'b': 208 } }, - "1f504": { - "averageColor": { - "r": 109, - "g": 166, - "b": 210 + '1f504': { + 'averageColor': { + 'r': 109, + 'g': 166, + 'b': 210 } }, - "1f505": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f505': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f506": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f506': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f507": { - "averageColor": { - "r": 130, - "g": 74, - "b": 81 + '1f507': { + 'averageColor': { + 'r': 130, + 'g': 74, + 'b': 81 } }, - "1f508": { - "averageColor": { - "r": 185, - "g": 197, - "b": 205 + '1f508': { + 'averageColor': { + 'r': 185, + 'g': 197, + 'b': 205 } }, - "1f509": { - "averageColor": { - "r": 180, - "g": 192, - "b": 201 + '1f509': { + 'averageColor': { + 'r': 180, + 'g': 192, + 'b': 201 } }, - "1f510": { - "averageColor": { - "r": 220, - "g": 145, - "b": 79 + '1f510': { + 'averageColor': { + 'r': 220, + 'g': 145, + 'b': 79 } }, - "1f511": { - "averageColor": { - "r": 192, - "g": 105, - "b": 79 + '1f511': { + 'averageColor': { + 'r': 192, + 'g': 105, + 'b': 79 } }, - "1f512": { - "averageColor": { - "r": 237, - "g": 176, - "b": 87 + '1f512': { + 'averageColor': { + 'r': 237, + 'g': 176, + 'b': 87 } }, - "1f513": { - "averageColor": { - "r": 238, - "g": 176, - "b": 86 + '1f513': { + 'averageColor': { + 'r': 238, + 'g': 176, + 'b': 86 } }, - "1f514": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f514': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f515": { - "averageColor": { - "r": 138, - "g": 82, - "b": 89 + '1f515': { + 'averageColor': { + 'r': 138, + 'g': 82, + 'b': 89 } }, - "1f516": { - "averageColor": { - "r": 85, - "g": 171, - "b": 237 + '1f516': { + 'averageColor': { + 'r': 85, + 'g': 171, + 'b': 237 } }, - "1f517": { - "averageColor": { - "r": 136, - "g": 153, - "b": 165 + '1f517': { + 'averageColor': { + 'r': 136, + 'g': 153, + 'b': 165 } }, - "1f518": { - "averageColor": { - "r": 62, - "g": 122, - "b": 166 + '1f518': { + 'averageColor': { + 'r': 62, + 'g': 122, + 'b': 166 } }, - "1f519": { - "averageColor": { - "r": 102, - "g": 116, - "b": 127 + '1f519': { + 'averageColor': { + 'r': 102, + 'g': 116, + 'b': 127 } }, - "1f520": { - "averageColor": { - "r": 113, - "g": 169, - "b": 211 + '1f520': { + 'averageColor': { + 'r': 113, + 'g': 169, + 'b': 211 } }, - "1f521": { - "averageColor": { - "r": 104, - "g": 163, - "b": 208 + '1f521': { + 'averageColor': { + 'r': 104, + 'g': 163, + 'b': 208 } }, - "1f522": { - "averageColor": { - "r": 101, - "g": 161, - "b": 207 + '1f522': { + 'averageColor': { + 'r': 101, + 'g': 161, + 'b': 207 } }, - "1f523": { - "averageColor": { - "r": 114, - "g": 169, - "b": 211 + '1f523': { + 'averageColor': { + 'r': 114, + 'g': 169, + 'b': 211 } }, - "1f524": { - "averageColor": { - "r": 91, - "g": 155, - "b": 204 + '1f524': { + 'averageColor': { + 'r': 91, + 'g': 155, + 'b': 204 } }, - "1f525": { - "averageColor": { - "r": 247, - "g": 164, - "b": 34 + '1f525': { + 'averageColor': { + 'r': 247, + 'g': 164, + 'b': 34 } }, - "1f526": { - "averageColor": { - "r": 139, - "g": 147, - "b": 144 + '1f526': { + 'averageColor': { + 'r': 139, + 'g': 147, + 'b': 144 } }, - "1f527": { - "averageColor": { - "r": 136, - "g": 153, - "b": 165 + '1f527': { + 'averageColor': { + 'r': 136, + 'g': 153, + 'b': 165 } }, - "1f528": { - "averageColor": { - "r": 179, - "g": 131, - "b": 64 + '1f528': { + 'averageColor': { + 'r': 179, + 'g': 131, + 'b': 64 } }, - "1f529": { - "averageColor": { - "r": 161, - "g": 174, - "b": 183 + '1f529': { + 'averageColor': { + 'r': 161, + 'g': 174, + 'b': 183 } }, - "1f530": { - "averageColor": { - "r": 142, - "g": 197, - "b": 157 + '1f530': { + 'averageColor': { + 'r': 142, + 'g': 197, + 'b': 157 } }, - "1f531": { - "averageColor": { - "r": 255, - "g": 204, - "b": 77 + '1f531': { + 'averageColor': { + 'r': 255, + 'g': 204, + 'b': 77 } }, - "1f532": { - "averageColor": { - "r": 121, - "g": 120, - "b": 121 + '1f532': { + 'averageColor': { + 'r': 121, + 'g': 120, + 'b': 121 } }, - "1f533": { - "averageColor": { - "r": 143, - "g": 141, - "b": 142 + '1f533': { + 'averageColor': { + 'r': 143, + 'g': 141, + 'b': 142 } }, - "1f534": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '1f534': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "1f535": { - "averageColor": { - "r": 84, - "g": 172, - "b": 238 + '1f535': { + 'averageColor': { + 'r': 84, + 'g': 172, + 'b': 238 } }, - "1f536": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f536': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f537": { - "averageColor": { - "r": 84, - "g": 172, - "b": 238 + '1f537': { + 'averageColor': { + 'r': 84, + 'g': 172, + 'b': 238 } }, - "1f538": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f538': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f539": { - "averageColor": { - "r": 84, - "g": 172, - "b": 238 + '1f539': { + 'averageColor': { + 'r': 84, + 'g': 172, + 'b': 238 } }, - "1f550": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f550': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f551": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f551': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f552": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f552': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f553": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f553': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f554": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f554': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f555": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f555': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f556": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f556': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f557": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f557': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f558": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f558': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f559": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f559': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f560": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f560': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f561": { - "averageColor": { - "r": 192, - "g": 204, - "b": 211 + '1f561': { + 'averageColor': { + 'r': 192, + 'g': 204, + 'b': 211 } }, - "1f562": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f562': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f563": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f563': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f564": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f564': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f565": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f565': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f566": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f566': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f567": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f567': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f600": { - "averageColor": { - "r": 227, - "g": 181, - "b": 70 + '1f600': { + 'averageColor': { + 'r': 227, + 'g': 181, + 'b': 70 } }, - "1f601": { - "averageColor": { - "r": 225, - "g": 181, - "b": 73 + '1f601': { + 'averageColor': { + 'r': 225, + 'g': 181, + 'b': 73 } }, - "1f602": { - "averageColor": { - "r": 190, - "g": 173, - "b": 104 + '1f602': { + 'averageColor': { + 'r': 190, + 'g': 173, + 'b': 104 } }, - "1f603": { - "averageColor": { - "r": 217, - "g": 172, - "b": 66 + '1f603': { + 'averageColor': { + 'r': 217, + 'g': 172, + 'b': 66 } }, - "1f604": { - "averageColor": { - "r": 224, - "g": 179, - "b": 69 + '1f604': { + 'averageColor': { + 'r': 224, + 'g': 179, + 'b': 69 } }, - "1f605": { - "averageColor": { - "r": 206, - "g": 176, - "b": 87 + '1f605': { + 'averageColor': { + 'r': 206, + 'g': 176, + 'b': 87 } }, - "1f606": { - "averageColor": { - "r": 218, - "g": 173, - "b": 66 + '1f606': { + 'averageColor': { + 'r': 218, + 'g': 173, + 'b': 66 } }, - "1f607": { - "averageColor": { - "r": 214, - "g": 186, - "b": 96 + '1f607': { + 'averageColor': { + 'r': 214, + 'g': 186, + 'b': 96 } }, - "1f608": { - "averageColor": { - "r": 158, - "g": 130, - "b": 203 + '1f608': { + 'averageColor': { + 'r': 158, + 'g': 130, + 'b': 203 } }, - "1f609": { - "averageColor": { - "r": 234, - "g": 185, - "b": 66 + '1f609': { + 'averageColor': { + 'r': 234, + 'g': 185, + 'b': 66 } }, - "1f610": { - "averageColor": { - "r": 240, - "g": 191, - "b": 69 + '1f610': { + 'averageColor': { + 'r': 240, + 'g': 191, + 'b': 69 } }, - "1f611": { - "averageColor": { - "r": 244, - "g": 194, - "b": 71 + '1f611': { + 'averageColor': { + 'r': 244, + 'g': 194, + 'b': 71 } }, - "1f612": { - "averageColor": { - "r": 233, - "g": 185, - "b": 76 + '1f612': { + 'averageColor': { + 'r': 233, + 'g': 185, + 'b': 76 } }, - "1f613": { - "averageColor": { - "r": 225, - "g": 191, - "b": 89 + '1f613': { + 'averageColor': { + 'r': 225, + 'g': 191, + 'b': 89 } }, - "1f614": { - "averageColor": { - "r": 238, - "g": 189, - "b": 68 + '1f614': { + 'averageColor': { + 'r': 238, + 'g': 189, + 'b': 68 } }, - "1f615": { - "averageColor": { - "r": 242, - "g": 193, - "b": 70 + '1f615': { + 'averageColor': { + 'r': 242, + 'g': 193, + 'b': 70 } }, - "1f616": { - "averageColor": { - "r": 224, - "g": 177, - "b": 71 + '1f616': { + 'averageColor': { + 'r': 224, + 'g': 177, + 'b': 71 } }, - "1f617": { - "averageColor": { - "r": 240, - "g": 191, - "b": 69 + '1f617': { + 'averageColor': { + 'r': 240, + 'g': 191, + 'b': 69 } }, - "1f618": { - "averageColor": { - "r": 233, - "g": 176, - "b": 70 + '1f618': { + 'averageColor': { + 'r': 233, + 'g': 176, + 'b': 70 } }, - "1f619": { - "averageColor": { - "r": 243, - "g": 193, - "b": 71 + '1f619': { + 'averageColor': { + 'r': 243, + 'g': 193, + 'b': 71 } }, - "1f620": { - "averageColor": { - "r": 232, - "g": 184, - "b": 76 + '1f620': { + 'averageColor': { + 'r': 232, + 'g': 184, + 'b': 76 } }, - "1f621": { - "averageColor": { - "r": 193, - "g": 47, - "b": 68 + '1f621': { + 'averageColor': { + 'r': 193, + 'g': 47, + 'b': 68 } }, - "1f622": { - "averageColor": { - "r": 200, - "g": 180, - "b": 102 + '1f622': { + 'averageColor': { + 'r': 200, + 'g': 180, + 'b': 102 } }, - "1f623": { - "averageColor": { - "r": 230, - "g": 182, - "b": 64 + '1f623': { + 'averageColor': { + 'r': 230, + 'g': 182, + 'b': 64 } }, - "1f624": { - "averageColor": { - "r": 234, - "g": 198, - "b": 105 + '1f624': { + 'averageColor': { + 'r': 234, + 'g': 198, + 'b': 105 } }, - "1f625": { - "averageColor": { - "r": 216, - "g": 182, - "b": 84 + '1f625': { + 'averageColor': { + 'r': 216, + 'g': 182, + 'b': 84 } }, - "1f626": { - "averageColor": { - "r": 241, - "g": 192, - "b": 70 + '1f626': { + 'averageColor': { + 'r': 241, + 'g': 192, + 'b': 70 } }, - "1f627": { - "averageColor": { - "r": 235, - "g": 186, - "b": 67 + '1f627': { + 'averageColor': { + 'r': 235, + 'g': 186, + 'b': 67 } }, - "1f628": { - "averageColor": { - "r": 214, - "g": 192, - "b": 120 + '1f628': { + 'averageColor': { + 'r': 214, + 'g': 192, + 'b': 120 } }, - "1f629": { - "averageColor": { - "r": 221, - "g": 175, - "b": 66 + '1f629': { + 'averageColor': { + 'r': 221, + 'g': 175, + 'b': 66 } }, - "1f630": { - "averageColor": { - "r": 198, - "g": 189, - "b": 135 + '1f630': { + 'averageColor': { + 'r': 198, + 'g': 189, + 'b': 135 } }, - "1f631": { - "averageColor": { - "r": 216, - "g": 194, - "b": 143 + '1f631': { + 'averageColor': { + 'r': 216, + 'g': 194, + 'b': 143 } }, - "1f632": { - "averageColor": { - "r": 228, - "g": 181, - "b": 67 + '1f632': { + 'averageColor': { + 'r': 228, + 'g': 181, + 'b': 67 } }, - "1f633": { - "averageColor": { - "r": 238, - "g": 186, - "b": 103 + '1f633': { + 'averageColor': { + 'r': 238, + 'g': 186, + 'b': 103 } }, - "1f634": { - "averageColor": { - "r": 223, - "g": 184, - "b": 79 + '1f634': { + 'averageColor': { + 'r': 223, + 'g': 184, + 'b': 79 } }, - "1f635": { - "averageColor": { - "r": 225, - "g": 178, - "b": 62 + '1f635': { + 'averageColor': { + 'r': 225, + 'g': 178, + 'b': 62 } }, - "1f636": { - "averageColor": { - "r": 245, - "g": 195, - "b": 72 + '1f636': { + 'averageColor': { + 'r': 245, + 'g': 195, + 'b': 72 } }, - "1f637": { - "averageColor": { - "r": 246, - "g": 213, - "b": 130 + '1f637': { + 'averageColor': { + 'r': 246, + 'g': 213, + 'b': 130 } }, - "1f638": { - "averageColor": { - "r": 213, - "g": 177, - "b": 83 + '1f638': { + 'averageColor': { + 'r': 213, + 'g': 177, + 'b': 83 } }, - "1f639": { - "averageColor": { - "r": 197, - "g": 176, - "b": 102 + '1f639': { + 'averageColor': { + 'r': 197, + 'g': 176, + 'b': 102 } }, - "1f640": { - "averageColor": { - "r": 229, - "g": 191, - "b": 107 + '1f640': { + 'averageColor': { + 'r': 229, + 'g': 191, + 'b': 107 } }, - "1f645": { - "averageColor": { - "r": 147, - "g": 95, - "b": 128 + '1f645': { + 'averageColor': { + 'r': 147, + 'g': 95, + 'b': 128 } }, - "1f646": { - "averageColor": { - "r": 156, - "g": 103, - "b": 139 + '1f646': { + 'averageColor': { + 'r': 156, + 'g': 103, + 'b': 139 } }, - "1f647": { - "averageColor": { - "r": 106, - "g": 117, - "b": 132 + '1f647': { + 'averageColor': { + 'r': 106, + 'g': 117, + 'b': 132 } }, - "1f648": { - "averageColor": { - "r": 196, - "g": 121, - "b": 97 + '1f648': { + 'averageColor': { + 'r': 196, + 'g': 121, + 'b': 97 } }, - "1f649": { - "averageColor": { - "r": 193, - "g": 123, - "b": 100 + '1f649': { + 'averageColor': { + 'r': 193, + 'g': 123, + 'b': 100 } }, - "1f680": { - "averageColor": { - "r": 130, - "g": 119, - "b": 141 + '1f680': { + 'averageColor': { + 'r': 130, + 'g': 119, + 'b': 141 } }, - "1f681": { - "averageColor": { - "r": 179, - "g": 177, - "b": 131 + '1f681': { + 'averageColor': { + 'r': 179, + 'g': 177, + 'b': 131 } }, - "1f682": { - "averageColor": { - "r": 128, - "g": 80, - "b": 84 + '1f682': { + 'averageColor': { + 'r': 128, + 'g': 80, + 'b': 84 } }, - "1f683": { - "averageColor": { - "r": 138, - "g": 171, - "b": 148 + '1f683': { + 'averageColor': { + 'r': 138, + 'g': 171, + 'b': 148 } }, - "1f684": { - "averageColor": { - "r": 110, - "g": 145, - "b": 172 + '1f684': { + 'averageColor': { + 'r': 110, + 'g': 145, + 'b': 172 } }, - "1f685": { - "averageColor": { - "r": 141, - "g": 173, - "b": 197 + '1f685': { + 'averageColor': { + 'r': 141, + 'g': 173, + 'b': 197 } }, - "1f686": { - "averageColor": { - "r": 172, - "g": 179, - "b": 183 + '1f686': { + 'averageColor': { + 'r': 172, + 'g': 179, + 'b': 183 } }, - "1f687": { - "averageColor": { - "r": 86, - "g": 70, - "b": 78 + '1f687': { + 'averageColor': { + 'r': 86, + 'g': 70, + 'b': 78 } }, - "1f688": { - "averageColor": { - "r": 156, - "g": 150, - "b": 134 + '1f688': { + 'averageColor': { + 'r': 156, + 'g': 150, + 'b': 134 } }, - "1f689": { - "averageColor": { - "r": 130, - "g": 142, - "b": 140 + '1f689': { + 'averageColor': { + 'r': 130, + 'g': 142, + 'b': 140 } }, - "1f690": { - "averageColor": { - "r": 147, - "g": 175, - "b": 196 + '1f690': { + 'averageColor': { + 'r': 147, + 'g': 175, + 'b': 196 } }, - "1f691": { - "averageColor": { - "r": 182, - "g": 166, - "b": 180 + '1f691': { + 'averageColor': { + 'r': 182, + 'g': 166, + 'b': 180 } }, - "1f692": { - "averageColor": { - "r": 187, - "g": 100, - "b": 117 + '1f692': { + 'averageColor': { + 'r': 187, + 'g': 100, + 'b': 117 } }, - "1f693": { - "averageColor": { - "r": 114, - "g": 129, - "b": 142 + '1f693': { + 'averageColor': { + 'r': 114, + 'g': 129, + 'b': 142 } }, - "1f694": { - "averageColor": { - "r": 119, - "g": 141, - "b": 160 + '1f694': { + 'averageColor': { + 'r': 119, + 'g': 141, + 'b': 160 } }, - "1f695": { - "averageColor": { - "r": 198, - "g": 170, - "b": 93 + '1f695': { + 'averageColor': { + 'r': 198, + 'g': 170, + 'b': 93 } }, - "1f696": { - "averageColor": { - "r": 199, - "g": 184, - "b": 121 + '1f696': { + 'averageColor': { + 'r': 199, + 'g': 184, + 'b': 121 } }, - "1f697": { - "averageColor": { - "r": 189, - "g": 77, - "b": 96 + '1f697': { + 'averageColor': { + 'r': 189, + 'g': 77, + 'b': 96 } }, - "1f698": { - "averageColor": { - "r": 98, - "g": 153, - "b": 187 + '1f698': { + 'averageColor': { + 'r': 98, + 'g': 153, + 'b': 187 } }, - "1f699": { - "averageColor": { - "r": 79, - "g": 138, - "b": 184 + '1f699': { + 'averageColor': { + 'r': 79, + 'g': 138, + 'b': 184 } }, - "2b1b": { - "averageColor": { - "r": 34, - "g": 31, - "b": 32 + '2b1b': { + 'averageColor': { + 'r': 34, + 'g': 31, + 'b': 32 } }, - "2b1c": { - "averageColor": { - "r": 230, - "g": 231, - "b": 231 + '2b1c': { + 'averageColor': { + 'r': 230, + 'g': 231, + 'b': 231 } }, - "2b05": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '2b05': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "2b06": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '2b06': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "2b07": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '2b07': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "2b50": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '2b50': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "2b55": { - "averageColor": { - "r": 221, - "g": 46, - "b": 68 + '2b55': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 68 } }, - "21a9": { - "averageColor": { - "r": 91, - "g": 155, - "b": 204 + '21a9': { + 'averageColor': { + 'r': 91, + 'g': 155, + 'b': 204 } }, - "21aa": { - "averageColor": { - "r": 91, - "g": 155, - "b": 204 + '21aa': { + 'averageColor': { + 'r': 91, + 'g': 155, + 'b': 204 } }, - "23-20e3": { - "averageColor": { - "r": 90, - "g": 155, - "b": 204 + '23-20e3': { + 'averageColor': { + 'r': 90, + 'g': 155, + 'b': 204 } }, - "23e9": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '23e9': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "23ea": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '23ea': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "23eb": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '23eb': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "23ec": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '23ec': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "23f0": { - "averageColor": { - "r": 225, - "g": 151, - "b": 139 + '23f0': { + 'averageColor': { + 'r': 225, + 'g': 151, + 'b': 139 } }, - "23f3": { - "averageColor": { - "r": 196, - "g": 187, - "b": 151 + '23f3': { + 'averageColor': { + 'r': 196, + 'g': 187, + 'b': 151 } }, - "24c2": { - "averageColor": { - "r": 124, - "g": 175, - "b": 214 + '24c2': { + 'averageColor': { + 'r': 124, + 'g': 175, + 'b': 214 } }, - "25aa": { - "averageColor": { - "r": 35, - "g": 31, - "b": 32 + '25aa': { + 'averageColor': { + 'r': 35, + 'g': 31, + 'b': 32 } }, - "25ab": { - "averageColor": { - "r": 229, - "g": 231, - "b": 231 + '25ab': { + 'averageColor': { + 'r': 229, + 'g': 231, + 'b': 231 } }, - "25b6": { - "averageColor": { - "r": 96, - "g": 158, - "b": 206 + '25b6': { + 'averageColor': { + 'r': 96, + 'g': 158, + 'b': 206 } }, - "25c0": { - "averageColor": { - "r": 96, - "g": 158, - "b": 206 + '25c0': { + 'averageColor': { + 'r': 96, + 'g': 158, + 'b': 206 } }, - "25fb": { - "averageColor": { - "r": 229, - "g": 231, - "b": 232 + '25fb': { + 'averageColor': { + 'r': 229, + 'g': 231, + 'b': 232 } }, - "25fc": { - "averageColor": { - "r": 34, - "g": 31, - "b": 32 + '25fc': { + 'averageColor': { + 'r': 34, + 'g': 31, + 'b': 32 } }, - "25fd": { - "averageColor": { - "r": 230, - "g": 230, - "b": 232 + '25fd': { + 'averageColor': { + 'r': 230, + 'g': 230, + 'b': 232 } }, - "25fe": { - "averageColor": { - "r": 35, - "g": 31, - "b": 32 + '25fe': { + 'averageColor': { + 'r': 35, + 'g': 31, + 'b': 32 } }, - "26a0": { - "averageColor": { - "r": 226, - "g": 181, - "b": 71 + '26a0': { + 'averageColor': { + 'r': 226, + 'g': 181, + 'b': 71 } }, - "26a1": { - "averageColor": { - "r": 243, - "g": 143, - "b": 12 + '26a1': { + 'averageColor': { + 'r': 243, + 'g': 143, + 'b': 12 } }, - "26aa": { - "averageColor": { - "r": 230, - "g": 231, - "b": 231 + '26aa': { + 'averageColor': { + 'r': 230, + 'g': 231, + 'b': 231 } }, - "26ab": { - "averageColor": { - "r": 34, - "g": 31, - "b": 32 + '26ab': { + 'averageColor': { + 'r': 34, + 'g': 31, + 'b': 32 } }, - "26bd": { - "averageColor": { - "r": 146, - "g": 151, - "b": 155 + '26bd': { + 'averageColor': { + 'r': 146, + 'g': 151, + 'b': 155 } }, - "26be": { - "averageColor": { - "r": 221, - "g": 202, - "b": 210 + '26be': { + 'averageColor': { + 'r': 221, + 'g': 202, + 'b': 210 } }, - "26c4": { - "averageColor": { - "r": 209, - "g": 180, - "b": 165 + '26c4': { + 'averageColor': { + 'r': 209, + 'g': 180, + 'b': 165 } }, - "26c5": { - "averageColor": { - "r": 206, - "g": 186, - "b": 150 + '26c5': { + 'averageColor': { + 'r': 206, + 'g': 186, + 'b': 150 } }, - "26ce": { - "averageColor": { - "r": 246, - "g": 166, - "b": 60 + '26ce': { + 'averageColor': { + 'r': 246, + 'g': 166, + 'b': 60 } }, - "26d4": { - "averageColor": { - "r": 203, - "g": 73, - "b": 92 + '26d4': { + 'averageColor': { + 'r': 203, + 'g': 73, + 'b': 92 } }, - "26ea": { - "averageColor": { - "r": 216, - "g": 145, - "b": 99 + '26ea': { + 'averageColor': { + 'r': 216, + 'g': 145, + 'b': 99 } }, - "26f2": { - "averageColor": { - "r": 81, - "g": 137, - "b": 159 + '26f2': { + 'averageColor': { + 'r': 81, + 'g': 137, + 'b': 159 } }, - "26f3": { - "averageColor": { - "r": 139, - "g": 142, - "b": 75 + '26f3': { + 'averageColor': { + 'r': 139, + 'g': 142, + 'b': 75 } }, - "26f5": { - "averageColor": { - "r": 186, - "g": 177, - "b": 149 + '26f5': { + 'averageColor': { + 'r': 186, + 'g': 177, + 'b': 149 } }, - "26fa": { - "averageColor": { - "r": 80, - "g": 118, - "b": 93 + '26fa': { + 'averageColor': { + 'r': 80, + 'g': 118, + 'b': 93 } }, - "26fd": { - "averageColor": { - "r": 182, - "g": 151, - "b": 114 + '26fd': { + 'averageColor': { + 'r': 182, + 'g': 151, + 'b': 114 } }, - "27a1": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '27a1': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "27b0": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '27b0': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "27bf": { - "averageColor": { - "r": 121, - "g": 189, - "b": 241 + '27bf': { + 'averageColor': { + 'r': 121, + 'g': 189, + 'b': 241 } }, - "30-20e3": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '30-20e3': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "31-20e3": { - "averageColor": { - "r": 77, - "g": 146, - "b": 200 + '31-20e3': { + 'averageColor': { + 'r': 77, + 'g': 146, + 'b': 200 } }, - "32-20e3": { - "averageColor": { - "r": 89, - "g": 154, - "b": 204 + '32-20e3': { + 'averageColor': { + 'r': 89, + 'g': 154, + 'b': 204 } }, - "33-20e3": { - "averageColor": { - "r": 89, - "g": 154, - "b": 204 + '33-20e3': { + 'averageColor': { + 'r': 89, + 'g': 154, + 'b': 204 } }, - "34-20e3": { - "averageColor": { - "r": 89, - "g": 154, - "b": 204 + '34-20e3': { + 'averageColor': { + 'r': 89, + 'g': 154, + 'b': 204 } }, - "35-20e3": { - "averageColor": { - "r": 89, - "g": 154, - "b": 204 + '35-20e3': { + 'averageColor': { + 'r': 89, + 'g': 154, + 'b': 204 } }, - "36-20e3": { - "averageColor": { - "r": 90, - "g": 154, - "b": 204 + '36-20e3': { + 'averageColor': { + 'r': 90, + 'g': 154, + 'b': 204 } }, - "37-20e3": { - "averageColor": { - "r": 83, - "g": 150, - "b": 202 + '37-20e3': { + 'averageColor': { + 'r': 83, + 'g': 150, + 'b': 202 } }, - "38-20e3": { - "averageColor": { - "r": 95, - "g": 157, - "b": 206 + '38-20e3': { + 'averageColor': { + 'r': 95, + 'g': 157, + 'b': 206 } }, - "39-20e3": { - "averageColor": { - "r": 90, - "g": 154, - "b": 204 + '39-20e3': { + 'averageColor': { + 'r': 90, + 'g': 154, + 'b': 204 } }, - "203c": { - "averageColor": { - "r": 190, - "g": 25, - "b": 48 + '203c': { + 'averageColor': { + 'r': 190, + 'g': 25, + 'b': 48 } }, - "231a": { - "averageColor": { - "r": 172, - "g": 173, - "b": 174 + '231a': { + 'averageColor': { + 'r': 172, + 'g': 173, + 'b': 174 } }, - "231b": { - "averageColor": { - "r": 196, - "g": 187, - "b": 151 + '231b': { + 'averageColor': { + 'r': 196, + 'g': 187, + 'b': 151 } }, - "260e": { - "averageColor": { - "r": 216, - "g": 63, - "b": 83 + '260e': { + 'averageColor': { + 'r': 216, + 'g': 63, + 'b': 83 } }, - "261d": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '261d': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "263a": { - "averageColor": { - "r": 239, - "g": 177, - "b": 79 + '263a': { + 'averageColor': { + 'r': 239, + 'g': 177, + 'b': 79 } }, - "264a": { - "averageColor": { - "r": 124, - "g": 166, - "b": 98 + '264a': { + 'averageColor': { + 'r': 124, + 'g': 166, + 'b': 98 } }, - "264b": { - "averageColor": { - "r": 95, - "g": 158, - "b": 206 + '264b': { + 'averageColor': { + 'r': 95, + 'g': 158, + 'b': 206 } }, - "264c": { - "averageColor": { - "r": 227, - "g": 87, - "b": 105 + '264c': { + 'averageColor': { + 'r': 227, + 'g': 87, + 'b': 105 } }, - "264d": { - "averageColor": { - "r": 246, - "g": 169, - "b": 68 + '264d': { + 'averageColor': { + 'r': 246, + 'g': 169, + 'b': 68 } }, - "264e": { - "averageColor": { - "r": 125, - "g": 167, - "b": 99 + '264e': { + 'averageColor': { + 'r': 125, + 'g': 167, + 'b': 99 } }, - "264f": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '264f': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "267b": { - "averageColor": { - "r": 105, - "g": 162, - "b": 71 + '267b': { + 'averageColor': { + 'r': 105, + 'g': 162, + 'b': 71 } }, - "267f": { - "averageColor": { - "r": 97, - "g": 159, - "b": 206 + '267f': { + 'averageColor': { + 'r': 97, + 'g': 159, + 'b': 206 } }, - "270a": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '270a': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "270b": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '270b': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "270c": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '270c': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "270f": { - "averageColor": { - "r": 228, - "g": 179, - "b": 110 + '270f': { + 'averageColor': { + 'r': 228, + 'g': 179, + 'b': 110 } }, - "274c": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '274c': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "274e": { - "averageColor": { - "r": 151, - "g": 196, - "b": 125 + '274e': { + 'averageColor': { + 'r': 151, + 'g': 196, + 'b': 125 } }, - "303d": { - "averageColor": { - "r": 255, - "g": 204, - "b": 77 + '303d': { + 'averageColor': { + 'r': 255, + 'g': 204, + 'b': 77 } }, - "a9": { - "averageColor": { - "r": 0, - "g": 0, - "b": 0 + 'a9': { + 'averageColor': { + 'r': 0, + 'g': 0, + 'b': 0 } }, - "ae": { - "averageColor": { - "r": 0, - "g": 0, - "b": 0 + 'ae': { + 'averageColor': { + 'r': 0, + 'g': 0, + 'b': 0 } }, - "e50a": { - "averageColor": { - "r": 185, - "g": 173, - "b": 177 + 'e50a': { + 'averageColor': { + 'r': 185, + 'g': 173, + 'b': 177 } } -} +}; diff --git a/01_P/P_4_3_4_01/sketch.js b/01_P/P_4_3_4_01/sketch.js index cb18d003..d5e506a6 100644 --- a/01_P/P_4_3_4_01/sketch.js +++ b/01_P/P_4_3_4_01/sketch.js @@ -37,15 +37,15 @@ var img; // You will have to download the emoji files first // Please see https://github.com/generative-design/Code-Package-p5.js/tree/master/data -var emojisPath = "../../data/twemoji/"; +var emojisPath = '../../data/twemoji/'; var tree; function preload() { - img = loadImage("data/pic.png"); + img = loadImage('data/pic.png'); icons = {}; for (var name in emojis) { - icons[name] = loadImage(emojisPath + "36x36/" + name + ".png"); + icons[name] = loadImage(emojisPath + '36x36/' + name + '.png'); } } @@ -61,15 +61,15 @@ function setup() { } var distance = function(a, b){ return Math.pow(a.r - b.r, 2) + Math.pow(a.g - b.g, 2) + Math.pow(a.b - b.b, 2); - } - tree = new kdTree(colors, distance, ["r", "g", "b"]); + }; + tree = new kdTree(colors, distance, ['r', 'g', 'b']); } function draw() { background(255); for (var gridX = 0; gridX < img.width; gridX++) { - for(var gridY = 0; gridY < img.height; gridY++) { + for (var gridY = 0; gridY < img.height; gridY++) { // grid position var posX = tileWidth * gridX; var posY = tileHeight * gridY; @@ -78,7 +78,7 @@ function draw() { var c = color(img.get(gridX, gridY)); // find emoji with 'nearest' color - var nearest = tree.nearest({r:red(c), g:green(c), b:blue(c)}, 1); + var nearest = tree.nearest({r: red(c), g: green(c), b: blue(c)}, 1); var name = nearest[0][0].name; image(icons[name], posX, posY, tileWidth, tileHeight); diff --git a/01_P/P_4_3_4_01_emoji_icon_analyser/sketch.js b/01_P/P_4_3_4_01_emoji_icon_analyser/sketch.js index 5c83689f..6e23d7ad 100755 --- a/01_P/P_4_3_4_01_emoji_icon_analyser/sketch.js +++ b/01_P/P_4_3_4_01_emoji_icon_analyser/sketch.js @@ -30,11 +30,10 @@ var results = {}; // You will have to download the emoji files first // Please see https://github.com/generative-design/Code-Package-p5.js/tree/master/data -var emojisPath = "../../data/twemoji/"; - +var emojisPath = '../../data/twemoji/'; function preload() { - emojiNames = loadTable("data/emoji-names.csv", "csv", "header"); + emojiNames = loadTable('data/emoji-names.csv', 'csv', 'header'); } function setup() { @@ -44,8 +43,8 @@ function setup() { function draw() { if (counter >= emojiNames.getRowCount()) { - saveJSON(results, "emoji-average-colors.json"); - print("done"); + saveJSON(results, 'emoji-average-colors.json'); + print('done'); noLoop(); return; } @@ -53,30 +52,30 @@ function draw() { noLoop(); var currentEmoji = emojiNames.getString(counter, 0); print(currentEmoji); - loadImage(emojisPath + "72x72/" + currentEmoji + ".png", function(img) { + loadImage(emojisPath + '72x72/' + currentEmoji + '.png', function(img) { clear(); image(img, 0, 0); loadPixels(); var rgb = {r: 0, g: 0, b: 0}; var pixCounter = 0; for (var i = 0; i < pixels.length; i += 4) { - if (pixels[i+3] === 0) continue; // skip if alpha == 0 + if (pixels[i + 3] === 0) continue; // skip if alpha == 0 rgb.r += pixels[i]; rgb.g += pixels[i + 1]; rgb.b += pixels[i + 2]; pixCounter++; } // ~~ used to floor values - rgb.r = ~~(rgb.r/pixCounter); - rgb.g = ~~(rgb.g/pixCounter); - rgb.b = ~~(rgb.b/pixCounter); + rgb.r = ~~(rgb.r / pixCounter); + rgb.g = ~~(rgb.g / pixCounter); + rgb.b = ~~(rgb.b / pixCounter); results[currentEmoji] = {}; results[currentEmoji].averageColor = rgb; - //noStroke(); - //fill(rgb.r, rgb.g, rgb.b); - //ellipse(width/2, height/2, 30, 30); + // noStroke(); + // fill(rgb.r, rgb.g, rgb.b); + // ellipse(width/2, height/2, 30, 30); counter++; loop(); }); diff --git a/01_P/P_4_3_4_02/emoji-average-colors.js b/01_P/P_4_3_4_02/emoji-average-colors.js index c5f8cc85..63b74c04 100644 --- a/01_P/P_4_3_4_02/emoji-average-colors.js +++ b/01_P/P_4_3_4_02/emoji-average-colors.js @@ -1,6106 +1,6106 @@ var emojis = { - "2049": { - "averageColor": { - "r": 190, - "g": 25, - "b": 48 + '2049': { + 'averageColor': { + 'r': 190, + 'g': 25, + 'b': 48 } }, - "2122": { - "averageColor": { - "r": 0, - "g": 0, - "b": 0 + '2122': { + 'averageColor': { + 'r': 0, + 'g': 0, + 'b': 0 } }, - "2139": { - "averageColor": { - "r": 73, - "g": 144, - "b": 199 + '2139': { + 'averageColor': { + 'r': 73, + 'g': 144, + 'b': 199 } }, - "2194": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '2194': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "2195": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '2195': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "2196": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '2196': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "2197": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '2197': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "2198": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '2198': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "2199": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '2199': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "2600": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '2600': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "2601": { - "averageColor": { - "r": 150, - "g": 167, - "b": 178 + '2601': { + 'averageColor': { + 'r': 150, + 'g': 167, + 'b': 178 } }, - "2611": { - "averageColor": { - "r": 54, - "g": 114, - "b": 159 + '2611': { + 'averageColor': { + 'r': 54, + 'g': 114, + 'b': 159 } }, - "2614": { - "averageColor": { - "r": 114, - "g": 114, - "b": 188 + '2614': { + 'averageColor': { + 'r': 114, + 'g': 114, + 'b': 188 } }, - "2615": { - "averageColor": { - "r": 193, - "g": 177, - "b": 173 + '2615': { + 'averageColor': { + 'r': 193, + 'g': 177, + 'b': 173 } }, - "2648": { - "averageColor": { - "r": 226, - "g": 80, - "b": 98 + '2648': { + 'averageColor': { + 'r': 226, + 'g': 80, + 'b': 98 } }, - "2649": { - "averageColor": { - "r": 245, - "g": 163, - "b": 53 + '2649': { + 'averageColor': { + 'r': 245, + 'g': 163, + 'b': 53 } }, - "2650": { - "averageColor": { - "r": 226, - "g": 79, - "b": 98 + '2650': { + 'averageColor': { + 'r': 226, + 'g': 79, + 'b': 98 } }, - "2651": { - "averageColor": { - "r": 245, - "g": 163, - "b": 55 + '2651': { + 'averageColor': { + 'r': 245, + 'g': 163, + 'b': 55 } }, - "2652": { - "averageColor": { - "r": 132, - "g": 172, - "b": 107 + '2652': { + 'averageColor': { + 'r': 132, + 'g': 172, + 'b': 107 } }, - "2653": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '2653': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "2660": { - "averageColor": { - "r": 0, - "g": 0, - "b": 0 + '2660': { + 'averageColor': { + 'r': 0, + 'g': 0, + 'b': 0 } }, - "2663": { - "averageColor": { - "r": 0, - "g": 0, - "b": 0 + '2663': { + 'averageColor': { + 'r': 0, + 'g': 0, + 'b': 0 } }, - "2665": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '2665': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "2666": { - "averageColor": { - "r": 221, - "g": 46, - "b": 68 + '2666': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 68 } }, - "2668": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '2668': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "2693": { - "averageColor": { - "r": 33, - "g": 101, - "b": 153 + '2693': { + 'averageColor': { + 'r': 33, + 'g': 101, + 'b': 153 } }, - "2702": { - "averageColor": { - "r": 201, - "g": 117, - "b": 132 + '2702': { + 'averageColor': { + 'r': 201, + 'g': 117, + 'b': 132 } }, - "2705": { - "averageColor": { - "r": 138, - "g": 188, - "b": 108 + '2705': { + 'averageColor': { + 'r': 138, + 'g': 188, + 'b': 108 } }, - "2708": { - "averageColor": { - "r": 139, - "g": 185, - "b": 219 + '2708': { + 'averageColor': { + 'r': 139, + 'g': 185, + 'b': 219 } }, - "2709": { - "averageColor": { - "r": 203, - "g": 213, - "b": 220 + '2709': { + 'averageColor': { + 'r': 203, + 'g': 213, + 'b': 220 } }, - "2712": { - "averageColor": { - "r": 97, - "g": 97, - "b": 100 + '2712': { + 'averageColor': { + 'r': 97, + 'g': 97, + 'b': 100 } }, - "2714": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2714': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2716": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2716': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2728": { - "averageColor": { - "r": 172, - "g": 149, - "b": 195 + '2728': { + 'averageColor': { + 'r': 172, + 'g': 149, + 'b': 195 } }, - "2733": { - "averageColor": { - "r": 170, - "g": 140, - "b": 215 + '2733': { + 'averageColor': { + 'r': 170, + 'g': 140, + 'b': 215 } }, - "2734": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2734': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2744": { - "averageColor": { - "r": 136, - "g": 200, - "b": 249 + '2744': { + 'averageColor': { + 'r': 136, + 'g': 200, + 'b': 249 } }, - "2747": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '2747': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "2753": { - "averageColor": { - "r": 190, - "g": 25, - "b": 48 + '2753': { + 'averageColor': { + 'r': 190, + 'g': 25, + 'b': 48 } }, - "2754": { - "averageColor": { - "r": 146, - "g": 148, - "b": 152 + '2754': { + 'averageColor': { + 'r': 146, + 'g': 148, + 'b': 152 } }, - "2755": { - "averageColor": { - "r": 146, - "g": 149, - "b": 152 + '2755': { + 'averageColor': { + 'r': 146, + 'g': 149, + 'b': 152 } }, - "2757": { - "averageColor": { - "r": 190, - "g": 25, - "b": 48 + '2757': { + 'averageColor': { + 'r': 190, + 'g': 25, + 'b': 48 } }, - "2764": { - "averageColor": { - "r": 187, - "g": 26, - "b": 51 + '2764': { + 'averageColor': { + 'r': 187, + 'g': 26, + 'b': 51 } }, - "2795": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2795': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2796": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2796': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2797": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '2797': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "2934": { - "averageColor": { - "r": 80, - "g": 148, - "b": 201 + '2934': { + 'averageColor': { + 'r': 80, + 'g': 148, + 'b': 201 } }, - "2935": { - "averageColor": { - "r": 80, - "g": 148, - "b": 201 + '2935': { + 'averageColor': { + 'r': 80, + 'g': 148, + 'b': 201 } }, - "3030": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '3030': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "3297": { - "averageColor": { - "r": 228, - "g": 91, - "b": 109 + '3297': { + 'averageColor': { + 'r': 228, + 'g': 91, + 'b': 109 } }, - "3299": { - "averageColor": { - "r": 229, - "g": 98, - "b": 115 + '3299': { + 'averageColor': { + 'r': 229, + 'g': 98, + 'b': 115 } }, - "1f0cf": { - "averageColor": { - "r": 210, - "g": 193, - "b": 198 + '1f0cf': { + 'averageColor': { + 'r': 210, + 'g': 193, + 'b': 198 } }, - "1f1e6": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '1f1e6': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "1f1e7": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '1f1e7': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "1f1e8-1f1f3": { - "averageColor": { - "r": 222, - "g": 51, - "b": 70 + '1f1e8-1f1f3': { + 'averageColor': { + 'r': 222, + 'g': 51, + 'b': 70 } }, - "1f1e8": { - "averageColor": { - "r": 88, - "g": 153, - "b": 204 + '1f1e8': { + 'averageColor': { + 'r': 88, + 'g': 153, + 'b': 204 } }, - "1f1e9-1f1ea": { - "averageColor": { - "r": 176, - "g": 94, - "b": 65 + '1f1e9-1f1ea': { + 'averageColor': { + 'r': 176, + 'g': 94, + 'b': 65 } }, - "1f1e9": { - "averageColor": { - "r": 97, - "g": 159, - "b": 206 + '1f1e9': { + 'averageColor': { + 'r': 97, + 'g': 159, + 'b': 206 } }, - "1f1ea-1f1f8": { - "averageColor": { - "r": 233, - "g": 112, - "b": 75 + '1f1ea-1f1f8': { + 'averageColor': { + 'r': 233, + 'g': 112, + 'b': 75 } }, - "1f1ea": { - "averageColor": { - "r": 89, - "g": 154, - "b": 204 + '1f1ea': { + 'averageColor': { + 'r': 89, + 'g': 154, + 'b': 204 } }, - "1f1eb-1f1f7": { - "averageColor": { - "r": 164, - "g": 129, - "b": 153 + '1f1eb-1f1f7': { + 'averageColor': { + 'r': 164, + 'g': 129, + 'b': 153 } }, - "1f1eb": { - "averageColor": { - "r": 83, - "g": 150, - "b": 202 + '1f1eb': { + 'averageColor': { + 'r': 83, + 'g': 150, + 'b': 202 } }, - "1f1ec-1f1e7": { - "averageColor": { - "r": 206, - "g": 130, - "b": 147 + '1f1ec-1f1e7': { + 'averageColor': { + 'r': 206, + 'g': 130, + 'b': 147 } }, - "1f1ec": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '1f1ec': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "1f1ed": { - "averageColor": { - "r": 98, - "g": 160, - "b": 207 + '1f1ed': { + 'averageColor': { + 'r': 98, + 'g': 160, + 'b': 207 } }, - "1f1ee-1f1f9": { - "averageColor": { - "r": 183, - "g": 143, - "b": 122 + '1f1ee-1f1f9': { + 'averageColor': { + 'r': 183, + 'g': 143, + 'b': 122 } }, - "1f1ee": { - "averageColor": { - "r": 74, - "g": 145, - "b": 199 + '1f1ee': { + 'averageColor': { + 'r': 74, + 'g': 145, + 'b': 199 } }, - "1f1ef-1f1f5": { - "averageColor": { - "r": 235, - "g": 205, - "b": 209 + '1f1ef-1f1f5': { + 'averageColor': { + 'r': 235, + 'g': 205, + 'b': 209 } }, - "1f1ef": { - "averageColor": { - "r": 78, - "g": 148, - "b": 201 + '1f1ef': { + 'averageColor': { + 'r': 78, + 'g': 148, + 'b': 201 } }, - "1f1f0-1f1f7": { - "averageColor": { - "r": 200, - "g": 192, - "b": 199 + '1f1f0-1f1f7': { + 'averageColor': { + 'r': 200, + 'g': 192, + 'b': 199 } }, - "1f1f0": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '1f1f0': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "1f1f1": { - "averageColor": { - "r": 79, - "g": 148, - "b": 201 + '1f1f1': { + 'averageColor': { + 'r': 79, + 'g': 148, + 'b': 201 } }, - "1f1f2": { - "averageColor": { - "r": 111, - "g": 168, - "b": 211 + '1f1f2': { + 'averageColor': { + 'r': 111, + 'g': 168, + 'b': 211 } }, - "1f1f3": { - "averageColor": { - "r": 100, - "g": 161, - "b": 207 + '1f1f3': { + 'averageColor': { + 'r': 100, + 'g': 161, + 'b': 207 } }, - "1f1f4": { - "averageColor": { - "r": 98, - "g": 160, - "b": 207 + '1f1f4': { + 'averageColor': { + 'r': 98, + 'g': 160, + 'b': 207 } }, - "1f1f5": { - "averageColor": { - "r": 91, - "g": 155, - "b": 204 + '1f1f5': { + 'averageColor': { + 'r': 91, + 'g': 155, + 'b': 204 } }, - "1f1f6": { - "averageColor": { - "r": 104, - "g": 163, - "b": 208 + '1f1f6': { + 'averageColor': { + 'r': 104, + 'g': 163, + 'b': 208 } }, - "1f1f7-1f1fa": { - "averageColor": { - "r": 163, - "g": 139, - "b": 169 + '1f1f7-1f1fa': { + 'averageColor': { + 'r': 163, + 'g': 139, + 'b': 169 } }, - "1f1f7": { - "averageColor": { - "r": 96, - "g": 159, - "b": 206 + '1f1f7': { + 'averageColor': { + 'r': 96, + 'g': 159, + 'b': 206 } }, - "1f1f8": { - "averageColor": { - "r": 91, - "g": 155, - "b": 205 + '1f1f8': { + 'averageColor': { + 'r': 91, + 'g': 155, + 'b': 205 } }, - "1f1f9": { - "averageColor": { - "r": 81, - "g": 149, - "b": 201 + '1f1f9': { + 'averageColor': { + 'r': 81, + 'g': 149, + 'b': 201 } }, - "1f1fa-1f1f8": { - "averageColor": { - "r": 193, - "g": 143, - "b": 165 + '1f1fa-1f1f8': { + 'averageColor': { + 'r': 193, + 'g': 143, + 'b': 165 } }, - "1f1fa": { - "averageColor": { - "r": 95, - "g": 158, - "b": 206 + '1f1fa': { + 'averageColor': { + 'r': 95, + 'g': 158, + 'b': 206 } }, - "1f1fb": { - "averageColor": { - "r": 88, - "g": 153, - "b": 203 + '1f1fb': { + 'averageColor': { + 'r': 88, + 'g': 153, + 'b': 203 } }, - "1f1fc": { - "averageColor": { - "r": 112, - "g": 168, - "b": 211 + '1f1fc': { + 'averageColor': { + 'r': 112, + 'g': 168, + 'b': 211 } }, - "1f1fd": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '1f1fd': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "1f1fe": { - "averageColor": { - "r": 85, - "g": 151, - "b": 203 + '1f1fe': { + 'averageColor': { + 'r': 85, + 'g': 151, + 'b': 203 } }, - "1f1ff": { - "averageColor": { - "r": 90, - "g": 155, - "b": 204 + '1f1ff': { + 'averageColor': { + 'r': 90, + 'g': 155, + 'b': 204 } }, - "1f3a0": { - "averageColor": { - "r": 156, - "g": 196, - "b": 232 + '1f3a0': { + 'averageColor': { + 'r': 156, + 'g': 196, + 'b': 232 } }, - "1f3a1": { - "averageColor": { - "r": 154, - "g": 184, - "b": 217 + '1f3a1': { + 'averageColor': { + 'r': 154, + 'g': 184, + 'b': 217 } }, - "1f3a2": { - "averageColor": { - "r": 148, - "g": 167, - "b": 202 + '1f3a2': { + 'averageColor': { + 'r': 148, + 'g': 167, + 'b': 202 } }, - "1f3a3": { - "averageColor": { - "r": 91, - "g": 120, - "b": 153 + '1f3a3': { + 'averageColor': { + 'r': 91, + 'g': 120, + 'b': 153 } }, - "1f3a4": { - "averageColor": { - "r": 90, - "g": 114, - "b": 134 + '1f3a4': { + 'averageColor': { + 'r': 90, + 'g': 114, + 'b': 134 } }, - "1f3a5": { - "averageColor": { - "r": 105, - "g": 106, - "b": 108 + '1f3a5': { + 'averageColor': { + 'r': 105, + 'g': 106, + 'b': 108 } }, - "1f3a6": { - "averageColor": { - "r": 138, - "g": 184, - "b": 219 + '1f3a6': { + 'averageColor': { + 'r': 138, + 'g': 184, + 'b': 219 } }, - "1f3a7": { - "averageColor": { - "r": 77, - "g": 121, - "b": 154 + '1f3a7': { + 'averageColor': { + 'r': 77, + 'g': 121, + 'b': 154 } }, - "1f3a8": { - "averageColor": { - "r": 207, - "g": 153, - "b": 124 + '1f3a8': { + 'averageColor': { + 'r': 207, + 'g': 153, + 'b': 124 } }, - "1f3a9": { - "averageColor": { - "r": 60, - "g": 57, - "b": 81 + '1f3a9': { + 'averageColor': { + 'r': 60, + 'g': 57, + 'b': 81 } }, - "1f3aa": { - "averageColor": { - "r": 184, - "g": 132, - "b": 145 + '1f3aa': { + 'averageColor': { + 'r': 184, + 'g': 132, + 'b': 145 } }, - "1f3ab": { - "averageColor": { - "r": 197, - "g": 208, - "b": 215 + '1f3ab': { + 'averageColor': { + 'r': 197, + 'g': 208, + 'b': 215 } }, - "1f3ac": { - "averageColor": { - "r": 94, - "g": 123, - "b": 88 + '1f3ac': { + 'averageColor': { + 'r': 94, + 'g': 123, + 'b': 88 } }, - "1f3ad": { - "averageColor": { - "r": 174, - "g": 184, - "b": 177 + '1f3ad': { + 'averageColor': { + 'r': 174, + 'g': 184, + 'b': 177 } }, - "1f3ae": { - "averageColor": { - "r": 75, - "g": 71, - "b": 64 + '1f3ae': { + 'averageColor': { + 'r': 75, + 'g': 71, + 'b': 64 } }, - "1f3af": { - "averageColor": { - "r": 155, - "g": 135, - "b": 144 + '1f3af': { + 'averageColor': { + 'r': 155, + 'g': 135, + 'b': 144 } }, - "1f3b0": { - "averageColor": { - "r": 136, - "g": 127, - "b": 133 + '1f3b0': { + 'averageColor': { + 'r': 136, + 'g': 127, + 'b': 133 } }, - "1f3b1": { - "averageColor": { - "r": 73, - "g": 79, - "b": 83 + '1f3b1': { + 'averageColor': { + 'r': 73, + 'g': 79, + 'b': 83 } }, - "1f3b2": { - "averageColor": { - "r": 218, - "g": 81, - "b": 101 + '1f3b2': { + 'averageColor': { + 'r': 218, + 'g': 81, + 'b': 101 } }, - "1f3b3": { - "averageColor": { - "r": 111, - "g": 112, - "b": 118 + '1f3b3': { + 'averageColor': { + 'r': 111, + 'g': 112, + 'b': 118 } }, - "1f3b4": { - "averageColor": { - "r": 158, - "g": 70, - "b": 81 + '1f3b4': { + 'averageColor': { + 'r': 158, + 'g': 70, + 'b': 81 } }, - "1f3b5": { - "averageColor": { - "r": 93, - "g": 173, - "b": 235 + '1f3b5': { + 'averageColor': { + 'r': 93, + 'g': 173, + 'b': 235 } }, - "1f3b6": { - "averageColor": { - "r": 93, - "g": 173, - "b": 235 + '1f3b6': { + 'averageColor': { + 'r': 93, + 'g': 173, + 'b': 235 } }, - "1f3b7": { - "averageColor": { - "r": 243, - "g": 181, - "b": 88 + '1f3b7': { + 'averageColor': { + 'r': 243, + 'g': 181, + 'b': 88 } }, - "1f3b8": { - "averageColor": { - "r": 222, - "g": 133, - "b": 43 + '1f3b8': { + 'averageColor': { + 'r': 222, + 'g': 133, + 'b': 43 } }, - "1f3b9": { - "averageColor": { - "r": 115, - "g": 122, - "b": 126 + '1f3b9': { + 'averageColor': { + 'r': 115, + 'g': 122, + 'b': 126 } }, - "1f3ba": { - "averageColor": { - "r": 246, - "g": 176, - "b": 83 + '1f3ba': { + 'averageColor': { + 'r': 246, + 'g': 176, + 'b': 83 } }, - "1f3bb": { - "averageColor": { - "r": 204, - "g": 126, - "b": 43 + '1f3bb': { + 'averageColor': { + 'r': 204, + 'g': 126, + 'b': 43 } }, - "1f3bc": { - "averageColor": { - "r": 103, - "g": 113, - "b": 120 + '1f3bc': { + 'averageColor': { + 'r': 103, + 'g': 113, + 'b': 120 } }, - "1f3bd": { - "averageColor": { - "r": 114, - "g": 173, - "b": 207 + '1f3bd': { + 'averageColor': { + 'r': 114, + 'g': 173, + 'b': 207 } }, - "1f3be": { - "averageColor": { - "r": 148, - "g": 196, - "b": 120 + '1f3be': { + 'averageColor': { + 'r': 148, + 'g': 196, + 'b': 120 } }, - "1f3bf": { - "averageColor": { - "r": 167, - "g": 182, - "b": 209 + '1f3bf': { + 'averageColor': { + 'r': 167, + 'g': 182, + 'b': 209 } }, - "1f3c0": { - "averageColor": { - "r": 193, - "g": 116, - "b": 16 + '1f3c0': { + 'averageColor': { + 'r': 193, + 'g': 116, + 'b': 16 } }, - "1f3c1": { - "averageColor": { - "r": 125, - "g": 126, - "b": 142 + '1f3c1': { + 'averageColor': { + 'r': 125, + 'g': 126, + 'b': 142 } }, - "1f3c2": { - "averageColor": { - "r": 187, - "g": 175, - "b": 194 + '1f3c2': { + 'averageColor': { + 'r': 187, + 'g': 175, + 'b': 194 } }, - "1f3c3": { - "averageColor": { - "r": 131, - "g": 101, - "b": 109 + '1f3c3': { + 'averageColor': { + 'r': 131, + 'g': 101, + 'b': 109 } }, - "1f3c4": { - "averageColor": { - "r": 130, - "g": 160, - "b": 166 + '1f3c4': { + 'averageColor': { + 'r': 130, + 'g': 160, + 'b': 166 } }, - "1f3c6": { - "averageColor": { - "r": 245, - "g": 179, - "b": 69 + '1f3c6': { + 'averageColor': { + 'r': 245, + 'g': 179, + 'b': 69 } }, - "1f3c7": { - "averageColor": { - "r": 175, - "g": 124, - "b": 101 + '1f3c7': { + 'averageColor': { + 'r': 175, + 'g': 124, + 'b': 101 } }, - "1f3c8": { - "averageColor": { - "r": 124, - "g": 70, - "b": 59 + '1f3c8': { + 'averageColor': { + 'r': 124, + 'g': 70, + 'b': 59 } }, - "1f3c9": { - "averageColor": { - "r": 171, - "g": 199, - "b": 221 + '1f3c9': { + 'averageColor': { + 'r': 171, + 'g': 199, + 'b': 221 } }, - "1f3ca": { - "averageColor": { - "r": 137, - "g": 161, - "b": 187 + '1f3ca': { + 'averageColor': { + 'r': 137, + 'g': 161, + 'b': 187 } }, - "1f3e0": { - "averageColor": { - "r": 207, - "g": 199, - "b": 172 + '1f3e0': { + 'averageColor': { + 'r': 207, + 'g': 199, + 'b': 172 } }, - "1f3e1": { - "averageColor": { - "r": 182, - "g": 191, - "b": 142 + '1f3e1': { + 'averageColor': { + 'r': 182, + 'g': 191, + 'b': 142 } }, - "1f3e2": { - "averageColor": { - "r": 156, - "g": 190, - "b": 215 + '1f3e2': { + 'averageColor': { + 'r': 156, + 'g': 190, + 'b': 215 } }, - "1f3e3": { - "averageColor": { - "r": 173, - "g": 182, - "b": 197 + '1f3e3': { + 'averageColor': { + 'r': 173, + 'g': 182, + 'b': 197 } }, - "1f3e4": { - "averageColor": { - "r": 199, - "g": 103, - "b": 104 + '1f3e4': { + 'averageColor': { + 'r': 199, + 'g': 103, + 'b': 104 } }, - "1f3e5": { - "averageColor": { - "r": 162, - "g": 189, - "b": 215 + '1f3e5': { + 'averageColor': { + 'r': 162, + 'g': 189, + 'b': 215 } }, - "1f3e6": { - "averageColor": { - "r": 162, - "g": 164, - "b": 165 + '1f3e6': { + 'averageColor': { + 'r': 162, + 'g': 164, + 'b': 165 } }, - "1f3e7": { - "averageColor": { - "r": 96, - "g": 158, - "b": 204 + '1f3e7': { + 'averageColor': { + 'r': 96, + 'g': 158, + 'b': 204 } }, - "1f3e8": { - "averageColor": { - "r": 192, - "g": 189, - "b": 161 + '1f3e8': { + 'averageColor': { + 'r': 192, + 'g': 189, + 'b': 161 } }, - "1f3e9": { - "averageColor": { - "r": 196, - "g": 155, - "b": 182 + '1f3e9': { + 'averageColor': { + 'r': 196, + 'g': 155, + 'b': 182 } }, - "1f3ea": { - "averageColor": { - "r": 168, - "g": 135, - "b": 158 + '1f3ea': { + 'averageColor': { + 'r': 168, + 'g': 135, + 'b': 158 } }, - "1f3eb": { - "averageColor": { - "r": 192, - "g": 191, - "b": 163 + '1f3eb': { + 'averageColor': { + 'r': 192, + 'g': 191, + 'b': 163 } }, - "1f3ec": { - "averageColor": { - "r": 159, - "g": 182, - "b": 191 + '1f3ec': { + 'averageColor': { + 'r': 159, + 'g': 182, + 'b': 191 } }, - "1f3ed": { - "averageColor": { - "r": 178, - "g": 70, - "b": 85 + '1f3ed': { + 'averageColor': { + 'r': 178, + 'g': 70, + 'b': 85 } }, - "1f3ee": { - "averageColor": { - "r": 178, - "g": 37, - "b": 57 + '1f3ee': { + 'averageColor': { + 'r': 178, + 'g': 37, + 'b': 57 } }, - "1f3ef": { - "averageColor": { - "r": 161, - "g": 152, - "b": 150 + '1f3ef': { + 'averageColor': { + 'r': 161, + 'g': 152, + 'b': 150 } }, - "1f3f0": { - "averageColor": { - "r": 149, - "g": 166, - "b": 179 + '1f3f0': { + 'averageColor': { + 'r': 149, + 'g': 166, + 'b': 179 } }, - "1f004": { - "averageColor": { - "r": 224, - "g": 202, - "b": 206 + '1f004': { + 'averageColor': { + 'r': 224, + 'g': 202, + 'b': 206 } }, - "1f4a0": { - "averageColor": { - "r": 95, - "g": 174, - "b": 234 + '1f4a0': { + 'averageColor': { + 'r': 95, + 'g': 174, + 'b': 234 } }, - "1f4a1": { - "averageColor": { - "r": 239, - "g": 211, - "b": 142 + '1f4a1': { + 'averageColor': { + 'r': 239, + 'g': 211, + 'b': 142 } }, - "1f4a2": { - "averageColor": { - "r": 190, - "g": 25, - "b": 48 + '1f4a2': { + 'averageColor': { + 'r': 190, + 'g': 25, + 'b': 48 } }, - "1f4a3": { - "averageColor": { - "r": 57, - "g": 57, - "b": 52 + '1f4a3': { + 'averageColor': { + 'r': 57, + 'g': 57, + 'b': 52 } }, - "1f4a4": { - "averageColor": { - "r": 65, - "g": 137, - "b": 192 + '1f4a4': { + 'averageColor': { + 'r': 65, + 'g': 137, + 'b': 192 } }, - "1f4a5": { - "averageColor": { - "r": 208, - "g": 78, - "b": 67 + '1f4a5': { + 'averageColor': { + 'r': 208, + 'g': 78, + 'b': 67 } }, - "1f4a6": { - "averageColor": { - "r": 93, - "g": 173, - "b": 236 + '1f4a6': { + 'averageColor': { + 'r': 93, + 'g': 173, + 'b': 236 } }, - "1f4a7": { - "averageColor": { - "r": 93, - "g": 173, - "b": 236 + '1f4a7': { + 'averageColor': { + 'r': 93, + 'g': 173, + 'b': 236 } }, - "1f4a8": { - "averageColor": { - "r": 188, - "g": 221, - "b": 243 + '1f4a8': { + 'averageColor': { + 'r': 188, + 'g': 221, + 'b': 243 } }, - "1f4a9": { - "averageColor": { - "r": 183, - "g": 113, - "b": 96 + '1f4a9': { + 'averageColor': { + 'r': 183, + 'g': 113, + 'b': 96 } }, - "1f4aa": { - "averageColor": { - "r": 215, - "g": 155, - "b": 127 + '1f4aa': { + 'averageColor': { + 'r': 215, + 'g': 155, + 'b': 127 } }, - "1f4ab": { - "averageColor": { - "r": 252, - "g": 194, - "b": 100 + '1f4ab': { + 'averageColor': { + 'r': 252, + 'g': 194, + 'b': 100 } }, - "1f4ac": { - "averageColor": { - "r": 182, - "g": 215, - "b": 239 + '1f4ac': { + 'averageColor': { + 'r': 182, + 'g': 215, + 'b': 239 } }, - "1f4ad": { - "averageColor": { - "r": 189, - "g": 221, - "b": 243 + '1f4ad': { + 'averageColor': { + 'r': 189, + 'g': 221, + 'b': 243 } }, - "1f4ae": { - "averageColor": { - "r": 242, - "g": 157, - "b": 169 + '1f4ae': { + 'averageColor': { + 'r': 242, + 'g': 157, + 'b': 169 } }, - "1f4af": { - "averageColor": { - "r": 187, - "g": 26, - "b": 51 + '1f4af': { + 'averageColor': { + 'r': 187, + 'g': 26, + 'b': 51 } }, - "1f4b0": { - "averageColor": { - "r": 231, - "g": 199, - "b": 133 + '1f4b0': { + 'averageColor': { + 'r': 231, + 'g': 199, + 'b': 133 } }, - "1f4b1": { - "averageColor": { - "r": 121, - "g": 136, - "b": 146 + '1f4b1': { + 'averageColor': { + 'r': 121, + 'g': 136, + 'b': 146 } }, - "1f4b2": { - "averageColor": { - "r": 102, - "g": 116, - "b": 127 + '1f4b2': { + 'averageColor': { + 'r': 102, + 'g': 116, + 'b': 127 } }, - "1f4b3": { - "averageColor": { - "r": 183, - "g": 193, - "b": 200 + '1f4b3': { + 'averageColor': { + 'r': 183, + 'g': 193, + 'b': 200 } }, - "1f4b4": { - "averageColor": { - "r": 216, - "g": 197, - "b": 147 + '1f4b4': { + 'averageColor': { + 'r': 216, + 'g': 197, + 'b': 147 } }, - "1f4b5": { - "averageColor": { - "r": 159, - "g": 193, - "b": 149 + '1f4b5': { + 'averageColor': { + 'r': 159, + 'g': 193, + 'b': 149 } }, - "1f4b6": { - "averageColor": { - "r": 180, - "g": 206, - "b": 178 + '1f4b6': { + 'averageColor': { + 'r': 180, + 'g': 206, + 'b': 178 } }, - "1f4b7": { - "averageColor": { - "r": 183, - "g": 176, - "b": 212 + '1f4b7': { + 'averageColor': { + 'r': 183, + 'g': 176, + 'b': 212 } }, - "1f4b8": { - "averageColor": { - "r": 177, - "g": 205, - "b": 171 + '1f4b8': { + 'averageColor': { + 'r': 177, + 'g': 205, + 'b': 171 } }, - "1f4b9": { - "averageColor": { - "r": 149, - "g": 193, - "b": 127 + '1f4b9': { + 'averageColor': { + 'r': 149, + 'g': 193, + 'b': 127 } }, - "1f4ba": { - "averageColor": { - "r": 96, - "g": 148, - "b": 189 + '1f4ba': { + 'averageColor': { + 'r': 96, + 'g': 148, + 'b': 189 } }, - "1f4bb": { - "averageColor": { - "r": 160, - "g": 199, - "b": 229 + '1f4bb': { + 'averageColor': { + 'r': 160, + 'g': 199, + 'b': 229 } }, - "1f4bc": { - "averageColor": { - "r": 151, - "g": 78, - "b": 32 + '1f4bc': { + 'averageColor': { + 'r': 151, + 'g': 78, + 'b': 32 } }, - "1f4bd": { - "averageColor": { - "r": 174, - "g": 156, - "b": 114 + '1f4bd': { + 'averageColor': { + 'r': 174, + 'g': 156, + 'b': 114 } }, - "1f4be": { - "averageColor": { - "r": 124, - "g": 135, - "b": 143 + '1f4be': { + 'averageColor': { + 'r': 124, + 'g': 135, + 'b': 143 } }, - "1f4bf": { - "averageColor": { - "r": 163, - "g": 177, - "b": 187 + '1f4bf': { + 'averageColor': { + 'r': 163, + 'g': 177, + 'b': 187 } }, - "1f4c0": { - "averageColor": { - "r": 255, - "g": 212, - "b": 126 + '1f4c0': { + 'averageColor': { + 'r': 255, + 'g': 212, + 'b': 126 } }, - "1f4c1": { - "averageColor": { - "r": 70, - "g": 151, - "b": 213 + '1f4c1': { + 'averageColor': { + 'r': 70, + 'g': 151, + 'b': 213 } }, - "1f4c2": { - "averageColor": { - "r": 66, - "g": 145, - "b": 206 + '1f4c2': { + 'averageColor': { + 'r': 66, + 'g': 145, + 'b': 206 } }, - "1f4c3": { - "averageColor": { - "r": 203, - "g": 213, - "b": 220 + '1f4c3': { + 'averageColor': { + 'r': 203, + 'g': 213, + 'b': 220 } }, - "1f4c4": { - "averageColor": { - "r": 192, - "g": 204, - "b": 212 + '1f4c4': { + 'averageColor': { + 'r': 192, + 'g': 204, + 'b': 212 } }, - "1f4c5": { - "averageColor": { - "r": 209, - "g": 162, - "b": 173 + '1f4c5': { + 'averageColor': { + 'r': 209, + 'g': 162, + 'b': 173 } }, - "1f4c6": { - "averageColor": { - "r": 167, - "g": 136, - "b": 145 + '1f4c6': { + 'averageColor': { + 'r': 167, + 'g': 136, + 'b': 145 } }, - "1f4c7": { - "averageColor": { - "r": 144, - "g": 162, - "b": 175 + '1f4c7': { + 'averageColor': { + 'r': 144, + 'g': 162, + 'b': 175 } }, - "1f4c8": { - "averageColor": { - "r": 185, - "g": 201, - "b": 191 + '1f4c8': { + 'averageColor': { + 'r': 185, + 'g': 201, + 'b': 191 } }, - "1f4c9": { - "averageColor": { - "r": 213, - "g": 189, - "b": 198 + '1f4c9': { + 'averageColor': { + 'r': 213, + 'g': 189, + 'b': 198 } }, - "1f4ca": { - "averageColor": { - "r": 192, - "g": 188, - "b": 199 + '1f4ca': { + 'averageColor': { + 'r': 192, + 'g': 188, + 'b': 199 } }, - "1f4cb": { - "averageColor": { - "r": 210, - "g": 189, - "b": 184 + '1f4cb': { + 'averageColor': { + 'r': 210, + 'g': 189, + 'b': 184 } }, - "1f4cc": { - "averageColor": { - "r": 202, - "g": 64, - "b": 84 + '1f4cc': { + 'averageColor': { + 'r': 202, + 'g': 64, + 'b': 84 } }, - "1f4cd": { - "averageColor": { - "r": 190, - "g": 83, - "b": 100 + '1f4cd': { + 'averageColor': { + 'r': 190, + 'g': 83, + 'b': 100 } }, - "1f4ce": { - "averageColor": { - "r": 153, - "g": 170, - "b": 180 + '1f4ce': { + 'averageColor': { + 'r': 153, + 'g': 170, + 'b': 180 } }, - "1f4cf": { - "averageColor": { - "r": 227, - "g": 184, - "b": 73 + '1f4cf': { + 'averageColor': { + 'r': 227, + 'g': 184, + 'b': 73 } }, - "1f4d0": { - "averageColor": { - "r": 255, - "g": 204, - "b": 77 + '1f4d0': { + 'averageColor': { + 'r': 255, + 'g': 204, + 'b': 77 } }, - "1f4d1": { - "averageColor": { - "r": 183, - "g": 190, - "b": 206 + '1f4d1': { + 'averageColor': { + 'r': 183, + 'g': 190, + 'b': 206 } }, - "1f4d2": { - "averageColor": { - "r": 229, - "g": 179, - "b": 85 + '1f4d2': { + 'averageColor': { + 'r': 229, + 'g': 179, + 'b': 85 } }, - "1f4d3": { - "averageColor": { - "r": 122, - "g": 131, - "b": 138 + '1f4d3': { + 'averageColor': { + 'r': 122, + 'g': 131, + 'b': 138 } }, - "1f4d4": { - "averageColor": { - "r": 208, - "g": 153, - "b": 132 + '1f4d4': { + 'averageColor': { + 'r': 208, + 'g': 153, + 'b': 132 } }, - "1f4d5": { - "averageColor": { - "r": 200, - "g": 57, - "b": 78 + '1f4d5': { + 'averageColor': { + 'r': 200, + 'g': 57, + 'b': 78 } }, - "1f4d6": { - "averageColor": { - "r": 171, - "g": 191, - "b": 206 + '1f4d6': { + 'averageColor': { + 'r': 171, + 'g': 191, + 'b': 206 } }, - "1f4d7": { - "averageColor": { - "r": 114, - "g": 164, - "b": 87 + '1f4d7': { + 'averageColor': { + 'r': 114, + 'g': 164, + 'b': 87 } }, - "1f4d8": { - "averageColor": { - "r": 86, - "g": 157, - "b": 210 + '1f4d8': { + 'averageColor': { + 'r': 86, + 'g': 157, + 'b': 210 } }, - "1f4d9": { - "averageColor": { - "r": 245, - "g": 168, - "b": 61 + '1f4d9': { + 'averageColor': { + 'r': 245, + 'g': 168, + 'b': 61 } }, - "1f4da": { - "averageColor": { - "r": 170, - "g": 165, - "b": 175 + '1f4da': { + 'averageColor': { + 'r': 170, + 'g': 165, + 'b': 175 } }, - "1f4db": { - "averageColor": { - "r": 228, - "g": 108, - "b": 124 + '1f4db': { + 'averageColor': { + 'r': 228, + 'g': 108, + 'b': 124 } }, - "1f4dc": { - "averageColor": { - "r": 242, - "g": 195, - "b": 124 + '1f4dc': { + 'averageColor': { + 'r': 242, + 'g': 195, + 'b': 124 } }, - "1f4dd": { - "averageColor": { - "r": 198, - "g": 194, - "b": 182 + '1f4dd': { + 'averageColor': { + 'r': 198, + 'g': 194, + 'b': 182 } }, - "1f4de": { - "averageColor": { - "r": 41, - "g": 47, - "b": 50 + '1f4de': { + 'averageColor': { + 'r': 41, + 'g': 47, + 'b': 50 } }, - "1f4df": { - "averageColor": { - "r": 131, - "g": 150, - "b": 123 + '1f4df': { + 'averageColor': { + 'r': 131, + 'g': 150, + 'b': 123 } }, - "1f4e0": { - "averageColor": { - "r": 129, - "g": 143, - "b": 149 + '1f4e0': { + 'averageColor': { + 'r': 129, + 'g': 143, + 'b': 149 } }, - "1f4e1": { - "averageColor": { - "r": 151, - "g": 154, - "b": 148 + '1f4e1': { + 'averageColor': { + 'r': 151, + 'g': 154, + 'b': 148 } }, - "1f4e2": { - "averageColor": { - "r": 187, - "g": 120, - "b": 134 + '1f4e2': { + 'averageColor': { + 'r': 187, + 'g': 120, + 'b': 134 } }, - "1f4e3": { - "averageColor": { - "r": 67, - "g": 148, - "b": 209 + '1f4e3': { + 'averageColor': { + 'r': 67, + 'g': 148, + 'b': 209 } }, - "1f4e4": { - "averageColor": { - "r": 201, - "g": 107, - "b": 93 + '1f4e4': { + 'averageColor': { + 'r': 201, + 'g': 107, + 'b': 93 } }, - "1f4e5": { - "averageColor": { - "r": 176, - "g": 140, - "b": 97 + '1f4e5': { + 'averageColor': { + 'r': 176, + 'g': 140, + 'b': 97 } }, - "1f4e6": { - "averageColor": { - "r": 182, - "g": 129, - "b": 111 + '1f4e6': { + 'averageColor': { + 'r': 182, + 'g': 129, + 'b': 111 } }, - "1f4e7": { - "averageColor": { - "r": 197, - "g": 208, - "b": 215 + '1f4e7': { + 'averageColor': { + 'r': 197, + 'g': 208, + 'b': 215 } }, - "1f4e8": { - "averageColor": { - "r": 194, - "g": 209, - "b": 219 + '1f4e8': { + 'averageColor': { + 'r': 194, + 'g': 209, + 'b': 219 } }, - "1f4e9": { - "averageColor": { - "r": 182, - "g": 205, - "b": 222 + '1f4e9': { + 'averageColor': { + 'r': 182, + 'g': 205, + 'b': 222 } }, - "1f4ea": { - "averageColor": { - "r": 160, - "g": 140, - "b": 147 + '1f4ea': { + 'averageColor': { + 'r': 160, + 'g': 140, + 'b': 147 } }, - "1f4eb": { - "averageColor": { - "r": 160, - "g": 140, - "b": 147 + '1f4eb': { + 'averageColor': { + 'r': 160, + 'g': 140, + 'b': 147 } }, - "1f4ec": { - "averageColor": { - "r": 175, - "g": 154, - "b": 160 + '1f4ec': { + 'averageColor': { + 'r': 175, + 'g': 154, + 'b': 160 } }, - "1f4ed": { - "averageColor": { - "r": 120, - "g": 96, - "b": 101 + '1f4ed': { + 'averageColor': { + 'r': 120, + 'g': 96, + 'b': 101 } }, - "1f4ee": { - "averageColor": { - "r": 191, - "g": 92, - "b": 108 + '1f4ee': { + 'averageColor': { + 'r': 191, + 'g': 92, + 'b': 108 } }, - "1f4ef": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f4ef': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f4f0": { - "averageColor": { - "r": 172, - "g": 192, - "b": 206 + '1f4f0': { + 'averageColor': { + 'r': 172, + 'g': 192, + 'b': 206 } }, - "1f4f1": { - "averageColor": { - "r": 67, - "g": 121, - "b": 162 + '1f4f1': { + 'averageColor': { + 'r': 67, + 'g': 121, + 'b': 162 } }, - "1f4f2": { - "averageColor": { - "r": 69, - "g": 128, - "b": 173 + '1f4f2': { + 'averageColor': { + 'r': 69, + 'g': 128, + 'b': 173 } }, - "1f4f3": { - "averageColor": { - "r": 246, - "g": 172, - "b": 74 + '1f4f3': { + 'averageColor': { + 'r': 246, + 'g': 172, + 'b': 74 } }, - "1f4f4": { - "averageColor": { - "r": 246, - "g": 173, - "b": 77 + '1f4f4': { + 'averageColor': { + 'r': 246, + 'g': 173, + 'b': 77 } }, - "1f4f5": { - "averageColor": { - "r": 114, - "g": 58, - "b": 65 + '1f4f5': { + 'averageColor': { + 'r': 114, + 'g': 58, + 'b': 65 } }, - "1f4f6": { - "averageColor": { - "r": 95, - "g": 158, - "b": 206 + '1f4f6': { + 'averageColor': { + 'r': 95, + 'g': 158, + 'b': 206 } }, - "1f4f7": { - "averageColor": { - "r": 69, - "g": 82, - "b": 91 + '1f4f7': { + 'averageColor': { + 'r': 69, + 'g': 82, + 'b': 91 } }, - "1f4f9": { - "averageColor": { - "r": 64, - "g": 73, - "b": 80 + '1f4f9': { + 'averageColor': { + 'r': 64, + 'g': 73, + 'b': 80 } }, - "1f4fa": { - "averageColor": { - "r": 75, - "g": 118, - "b": 152 + '1f4fa': { + 'averageColor': { + 'r': 75, + 'g': 118, + 'b': 152 } }, - "1f4fb": { - "averageColor": { - "r": 126, - "g": 140, - "b": 149 + '1f4fb': { + 'averageColor': { + 'r': 126, + 'g': 140, + 'b': 149 } }, - "1f4fc": { - "averageColor": { - "r": 53, - "g": 64, - "b": 71 + '1f4fc': { + 'averageColor': { + 'r': 53, + 'g': 64, + 'b': 71 } }, - "1f5fb": { - "averageColor": { - "r": 116, - "g": 153, - "b": 181 + '1f5fb': { + 'averageColor': { + 'r': 116, + 'g': 153, + 'b': 181 } }, - "1f5fc": { - "averageColor": { - "r": 150, - "g": 184, - "b": 227 + '1f5fc': { + 'averageColor': { + 'r': 150, + 'g': 184, + 'b': 227 } }, - "1f5fd": { - "averageColor": { - "r": 61, - "g": 157, - "b": 161 + '1f5fd': { + 'averageColor': { + 'r': 61, + 'g': 157, + 'b': 161 } }, - "1f5fe": { - "averageColor": { - "r": 127, - "g": 191, - "b": 224 + '1f5fe': { + 'averageColor': { + 'r': 127, + 'g': 191, + 'b': 224 } }, - "1f5ff": { - "averageColor": { - "r": 164, - "g": 176, - "b": 184 + '1f5ff': { + 'averageColor': { + 'r': 164, + 'g': 176, + 'b': 184 } }, - "1f6a0": { - "averageColor": { - "r": 116, - "g": 153, - "b": 171 + '1f6a0': { + 'averageColor': { + 'r': 116, + 'g': 153, + 'b': 171 } }, - "1f6a1": { - "averageColor": { - "r": 157, - "g": 113, - "b": 138 + '1f6a1': { + 'averageColor': { + 'r': 157, + 'g': 113, + 'b': 138 } }, - "1f6a2": { - "averageColor": { - "r": 148, - "g": 166, - "b": 188 + '1f6a2': { + 'averageColor': { + 'r': 148, + 'g': 166, + 'b': 188 } }, - "1f6a3": { - "averageColor": { - "r": 136, - "g": 157, - "b": 163 + '1f6a3': { + 'averageColor': { + 'r': 136, + 'g': 157, + 'b': 163 } }, - "1f6a4": { - "averageColor": { - "r": 126, - "g": 149, - "b": 174 + '1f6a4': { + 'averageColor': { + 'r': 126, + 'g': 149, + 'b': 174 } }, - "1f6a5": { - "averageColor": { - "r": 79, - "g": 70, - "b": 57 + '1f6a5': { + 'averageColor': { + 'r': 79, + 'g': 70, + 'b': 57 } }, - "1f6a6": { - "averageColor": { - "r": 79, - "g": 70, - "b": 57 + '1f6a6': { + 'averageColor': { + 'r': 79, + 'g': 70, + 'b': 57 } }, - "1f6a7": { - "averageColor": { - "r": 153, - "g": 137, - "b": 87 + '1f6a7': { + 'averageColor': { + 'r': 153, + 'g': 137, + 'b': 87 } }, - "1f6a8": { - "averageColor": { - "r": 202, - "g": 97, - "b": 115 + '1f6a8': { + 'averageColor': { + 'r': 202, + 'g': 97, + 'b': 115 } }, - "1f6a9": { - "averageColor": { - "r": 187, - "g": 66, - "b": 84 + '1f6a9': { + 'averageColor': { + 'r': 187, + 'g': 66, + 'b': 84 } }, - "1f6aa": { - "averageColor": { - "r": 192, - "g": 71, - "b": 87 + '1f6aa': { + 'averageColor': { + 'r': 192, + 'g': 71, + 'b': 87 } }, - "1f6ab": { - "averageColor": { - "r": 220, - "g": 46, - "b": 68 + '1f6ab': { + 'averageColor': { + 'r': 220, + 'g': 46, + 'b': 68 } }, - "1f6ac": { - "averageColor": { - "r": 195, - "g": 186, - "b": 184 + '1f6ac': { + 'averageColor': { + 'r': 195, + 'g': 186, + 'b': 184 } }, - "1f6ad": { - "averageColor": { - "r": 103, - "g": 47, - "b": 54 + '1f6ad': { + 'averageColor': { + 'r': 103, + 'g': 47, + 'b': 54 } }, - "1f6ae": { - "averageColor": { - "r": 176, - "g": 189, - "b": 198 + '1f6ae': { + 'averageColor': { + 'r': 176, + 'g': 189, + 'b': 198 } }, - "1f6af": { - "averageColor": { - "r": 122, - "g": 66, - "b": 73 + '1f6af': { + 'averageColor': { + 'r': 122, + 'g': 66, + 'b': 73 } }, - "1f6b0": { - "averageColor": { - "r": 124, - "g": 191, - "b": 241 + '1f6b0': { + 'averageColor': { + 'r': 124, + 'g': 191, + 'b': 241 } }, - "1f6b1": { - "averageColor": { - "r": 114, - "g": 57, - "b": 64 + '1f6b1': { + 'averageColor': { + 'r': 114, + 'g': 57, + 'b': 64 } }, - "1f6b2": { - "averageColor": { - "r": 130, - "g": 54, - "b": 66 + '1f6b2': { + 'averageColor': { + 'r': 130, + 'g': 54, + 'b': 66 } }, - "1f6b3": { - "averageColor": { - "r": 128, - "g": 72, - "b": 79 + '1f6b3': { + 'averageColor': { + 'r': 128, + 'g': 72, + 'b': 79 } }, - "1f6b4": { - "averageColor": { - "r": 107, - "g": 70, - "b": 93 + '1f6b4': { + 'averageColor': { + 'r': 107, + 'g': 70, + 'b': 93 } }, - "1f6b5": { - "averageColor": { - "r": 125, - "g": 131, - "b": 87 + '1f6b5': { + 'averageColor': { + 'r': 125, + 'g': 131, + 'b': 87 } }, - "1f6b6": { - "averageColor": { - "r": 129, - "g": 104, - "b": 112 + '1f6b6': { + 'averageColor': { + 'r': 129, + 'g': 104, + 'b': 112 } }, - "1f6b7": { - "averageColor": { - "r": 101, - "g": 47, - "b": 53 + '1f6b7': { + 'averageColor': { + 'r': 101, + 'g': 47, + 'b': 53 } }, - "1f6b8": { - "averageColor": { - "r": 152, - "g": 122, - "b": 46 + '1f6b8': { + 'averageColor': { + 'r': 152, + 'g': 122, + 'b': 46 } }, - "1f6b9": { - "averageColor": { - "r": 114, - "g": 186, - "b": 240 + '1f6b9': { + 'averageColor': { + 'r': 114, + 'g': 186, + 'b': 240 } }, - "1f6ba": { - "averageColor": { - "r": 237, - "g": 117, - "b": 134 + '1f6ba': { + 'averageColor': { + 'r': 237, + 'g': 117, + 'b': 134 } }, - "1f6bb": { - "averageColor": { - "r": 154, - "g": 164, - "b": 170 + '1f6bb': { + 'averageColor': { + 'r': 154, + 'g': 164, + 'b': 170 } }, - "1f6bc": { - "averageColor": { - "r": 246, - "g": 168, - "b": 65 + '1f6bc': { + 'averageColor': { + 'r': 246, + 'g': 168, + 'b': 65 } }, - "1f6bd": { - "averageColor": { - "r": 197, - "g": 198, - "b": 200 + '1f6bd': { + 'averageColor': { + 'r': 197, + 'g': 198, + 'b': 200 } }, - "1f6be": { - "averageColor": { - "r": 81, - "g": 135, - "b": 175 + '1f6be': { + 'averageColor': { + 'r': 81, + 'g': 135, + 'b': 175 } }, - "1f6bf": { - "averageColor": { - "r": 105, - "g": 153, - "b": 188 + '1f6bf': { + 'averageColor': { + 'r': 105, + 'g': 153, + 'b': 188 } }, - "1f6c0": { - "averageColor": { - "r": 194, - "g": 199, - "b": 204 + '1f6c0': { + 'averageColor': { + 'r': 194, + 'g': 199, + 'b': 204 } }, - "1f6c1": { - "averageColor": { - "r": 194, - "g": 205, - "b": 213 + '1f6c1': { + 'averageColor': { + 'r': 194, + 'g': 205, + 'b': 213 } }, - "1f6c2": { - "averageColor": { - "r": 99, - "g": 147, - "b": 182 + '1f6c2': { + 'averageColor': { + 'r': 99, + 'g': 147, + 'b': 182 } }, - "1f6c3": { - "averageColor": { - "r": 98, - "g": 146, - "b": 182 + '1f6c3': { + 'averageColor': { + 'r': 98, + 'g': 146, + 'b': 182 } }, - "1f6c4": { - "averageColor": { - "r": 119, - "g": 161, - "b": 192 + '1f6c4': { + 'averageColor': { + 'r': 119, + 'g': 161, + 'b': 192 } }, - "1f6c5": { - "averageColor": { - "r": 114, - "g": 157, - "b": 189 + '1f6c5': { + 'averageColor': { + 'r': 114, + 'g': 157, + 'b': 189 } }, - "1f17e": { - "averageColor": { - "r": 204, - "g": 74, - "b": 93 + '1f17e': { + 'averageColor': { + 'r': 204, + 'g': 74, + 'b': 93 } }, - "1f17f": { - "averageColor": { - "r": 72, - "g": 128, - "b": 170 + '1f17f': { + 'averageColor': { + 'r': 72, + 'g': 128, + 'b': 170 } }, - "1f18e": { - "averageColor": { - "r": 210, - "g": 95, - "b": 112 + '1f18e': { + 'averageColor': { + 'r': 210, + 'g': 95, + 'b': 112 } }, - "1f19a": { - "averageColor": { - "r": 247, - "g": 176, - "b": 83 + '1f19a': { + 'averageColor': { + 'r': 247, + 'g': 176, + 'b': 83 } }, - "1f21a": { - "averageColor": { - "r": 246, - "g": 165, - "b": 60 + '1f21a': { + 'averageColor': { + 'r': 246, + 'g': 165, + 'b': 60 } }, - "1f22f": { - "averageColor": { - "r": 122, - "g": 165, - "b": 96 + '1f22f': { + 'averageColor': { + 'r': 122, + 'g': 165, + 'b': 96 } }, - "1f23a": { - "averageColor": { - "r": 246, - "g": 164, - "b": 56 + '1f23a': { + 'averageColor': { + 'r': 246, + 'g': 164, + 'b': 56 } }, - "1f30a": { - "averageColor": { - "r": 77, - "g": 161, - "b": 225 + '1f30a': { + 'averageColor': { + 'r': 77, + 'g': 161, + 'b': 225 } }, - "1f30b": { - "averageColor": { - "r": 166, - "g": 78, - "b": 51 + '1f30b': { + 'averageColor': { + 'r': 166, + 'g': 78, + 'b': 51 } }, - "1f30c": { - "averageColor": { - "r": 96, - "g": 71, - "b": 137 + '1f30c': { + 'averageColor': { + 'r': 96, + 'g': 71, + 'b': 137 } }, - "1f30d": { - "averageColor": { - "r": 119, - "g": 179, - "b": 175 + '1f30d': { + 'averageColor': { + 'r': 119, + 'g': 179, + 'b': 175 } }, - "1f30e": { - "averageColor": { - "r": 121, - "g": 182, - "b": 187 + '1f30e': { + 'averageColor': { + 'r': 121, + 'g': 182, + 'b': 187 } }, - "1f30f": { - "averageColor": { - "r": 118, - "g": 178, - "b": 172 + '1f30f': { + 'averageColor': { + 'r': 118, + 'g': 178, + 'b': 172 } }, - "1f31a": { - "averageColor": { - "r": 98, - "g": 112, - "b": 122 + '1f31a': { + 'averageColor': { + 'r': 98, + 'g': 112, + 'b': 122 } }, - "1f31b": { - "averageColor": { - "r": 197, - "g": 208, - "b": 215 + '1f31b': { + 'averageColor': { + 'r': 197, + 'g': 208, + 'b': 215 } }, - "1f31c": { - "averageColor": { - "r": 197, - "g": 208, - "b": 215 + '1f31c': { + 'averageColor': { + 'r': 197, + 'g': 208, + 'b': 215 } }, - "1f31d": { - "averageColor": { - "r": 196, - "g": 207, - "b": 215 + '1f31d': { + 'averageColor': { + 'r': 196, + 'g': 207, + 'b': 215 } }, - "1f31e": { - "averageColor": { - "r": 249, - "g": 175, - "b": 45 + '1f31e': { + 'averageColor': { + 'r': 249, + 'g': 175, + 'b': 45 } }, - "1f31f": { - "averageColor": { - "r": 255, - "g": 206, - "b": 88 + '1f31f': { + 'averageColor': { + 'r': 255, + 'g': 206, + 'b': 88 } }, - "1f33a": { - "averageColor": { - "r": 222, - "g": 155, - "b": 149 + '1f33a': { + 'averageColor': { + 'r': 222, + 'g': 155, + 'b': 149 } }, - "1f33b": { - "averageColor": { - "r": 173, - "g": 129, - "b": 34 + '1f33b': { + 'averageColor': { + 'r': 173, + 'g': 129, + 'b': 34 } }, - "1f33c": { - "averageColor": { - "r": 199, - "g": 204, - "b": 174 + '1f33c': { + 'averageColor': { + 'r': 199, + 'g': 204, + 'b': 174 } }, - "1f33d": { - "averageColor": { - "r": 166, - "g": 164, - "b": 56 + '1f33d': { + 'averageColor': { + 'r': 166, + 'g': 164, + 'b': 56 } }, - "1f33e": { - "averageColor": { - "r": 158, - "g": 185, - "b": 82 + '1f33e': { + 'averageColor': { + 'r': 158, + 'g': 185, + 'b': 82 } }, - "1f33f": { - "averageColor": { - "r": 135, - "g": 166, - "b": 94 + '1f33f': { + 'averageColor': { + 'r': 135, + 'g': 166, + 'b': 94 } }, - "1f34a": { - "averageColor": { - "r": 228, - "g": 140, - "b": 15 + '1f34a': { + 'averageColor': { + 'r': 228, + 'g': 140, + 'b': 15 } }, - "1f34b": { - "averageColor": { - "r": 226, - "g": 197, - "b": 77 + '1f34b': { + 'averageColor': { + 'r': 226, + 'g': 197, + 'b': 77 } }, - "1f34c": { - "averageColor": { - "r": 252, - "g": 218, - "b": 137 + '1f34c': { + 'averageColor': { + 'r': 252, + 'g': 218, + 'b': 137 } }, - "1f34d": { - "averageColor": { - "r": 189, - "g": 176, - "b": 66 + '1f34d': { + 'averageColor': { + 'r': 189, + 'g': 176, + 'b': 66 } }, - "1f34e": { - "averageColor": { - "r": 210, - "g": 54, - "b": 67 + '1f34e': { + 'averageColor': { + 'r': 210, + 'g': 54, + 'b': 67 } }, - "1f34f": { - "averageColor": { - "r": 114, - "g": 169, - "b": 79 + '1f34f': { + 'averageColor': { + 'r': 114, + 'g': 169, + 'b': 79 } }, - "1f35a": { - "averageColor": { - "r": 224, - "g": 159, - "b": 168 + '1f35a': { + 'averageColor': { + 'r': 224, + 'g': 159, + 'b': 168 } }, - "1f35b": { - "averageColor": { - "r": 228, - "g": 204, - "b": 170 + '1f35b': { + 'averageColor': { + 'r': 228, + 'g': 204, + 'b': 170 } }, - "1f35c": { - "averageColor": { - "r": 214, - "g": 174, - "b": 135 + '1f35c': { + 'averageColor': { + 'r': 214, + 'g': 174, + 'b': 135 } }, - "1f35d": { - "averageColor": { - "r": 221, - "g": 181, - "b": 151 + '1f35d': { + 'averageColor': { + 'r': 221, + 'g': 181, + 'b': 151 } }, - "1f35e": { - "averageColor": { - "r": 232, - "g": 188, - "b": 151 + '1f35e': { + 'averageColor': { + 'r': 232, + 'g': 188, + 'b': 151 } }, - "1f35f": { - "averageColor": { - "r": 223, - "g": 86, - "b": 55 + '1f35f': { + 'averageColor': { + 'r': 223, + 'g': 86, + 'b': 55 } }, - "1f36a": { - "averageColor": { - "r": 207, - "g": 148, - "b": 121 + '1f36a': { + 'averageColor': { + 'r': 207, + 'g': 148, + 'b': 121 } }, - "1f36b": { - "averageColor": { - "r": 201, - "g": 105, - "b": 109 + '1f36b': { + 'averageColor': { + 'r': 201, + 'g': 105, + 'b': 109 } }, - "1f36c": { - "averageColor": { - "r": 223, - "g": 87, - "b": 105 + '1f36c': { + 'averageColor': { + 'r': 223, + 'g': 87, + 'b': 105 } }, - "1f36d": { - "averageColor": { - "r": 239, - "g": 127, - "b": 57 + '1f36d': { + 'averageColor': { + 'r': 239, + 'g': 127, + 'b': 57 } }, - "1f36e": { - "averageColor": { - "r": 203, - "g": 169, - "b": 131 + '1f36e': { + 'averageColor': { + 'r': 203, + 'g': 169, + 'b': 131 } }, - "1f36f": { - "averageColor": { - "r": 242, - "g": 166, - "b": 55 + '1f36f': { + 'averageColor': { + 'r': 242, + 'g': 166, + 'b': 55 } }, - "1f37a": { - "averageColor": { - "r": 245, - "g": 199, - "b": 110 + '1f37a': { + 'averageColor': { + 'r': 245, + 'g': 199, + 'b': 110 } }, - "1f37b": { - "averageColor": { - "r": 241, - "g": 200, - "b": 117 + '1f37b': { + 'averageColor': { + 'r': 241, + 'g': 200, + 'b': 117 } }, - "1f37c": { - "averageColor": { - "r": 186, - "g": 198, - "b": 201 + '1f37c': { + 'averageColor': { + 'r': 186, + 'g': 198, + 'b': 201 } }, - "1f38a": { - "averageColor": { - "r": 187, - "g": 113, - "b": 78 + '1f38a': { + 'averageColor': { + 'r': 187, + 'g': 113, + 'b': 78 } }, - "1f38b": { - "averageColor": { - "r": 128, - "g": 113, - "b": 59 + '1f38b': { + 'averageColor': { + 'r': 128, + 'g': 113, + 'b': 59 } }, - "1f38c": { - "averageColor": { - "r": 210, - "g": 194, - "b": 200 + '1f38c': { + 'averageColor': { + 'r': 210, + 'g': 194, + 'b': 200 } }, - "1f38d": { - "averageColor": { - "r": 142, - "g": 173, - "b": 96 + '1f38d': { + 'averageColor': { + 'r': 142, + 'g': 173, + 'b': 96 } }, - "1f38e": { - "averageColor": { - "r": 130, - "g": 92, - "b": 119 + '1f38e': { + 'averageColor': { + 'r': 130, + 'g': 92, + 'b': 119 } }, - "1f38f": { - "averageColor": { - "r": 192, - "g": 165, - "b": 184 + '1f38f': { + 'averageColor': { + 'r': 192, + 'g': 165, + 'b': 184 } }, - "1f40a": { - "averageColor": { - "r": 94, - "g": 146, - "b": 62 + '1f40a': { + 'averageColor': { + 'r': 94, + 'g': 146, + 'b': 62 } }, - "1f40b": { - "averageColor": { - "r": 64, - "g": 143, - "b": 202 + '1f40b': { + 'averageColor': { + 'r': 64, + 'g': 143, + 'b': 202 } }, - "1f40c": { - "averageColor": { - "r": 218, - "g": 162, - "b": 124 + '1f40c': { + 'averageColor': { + 'r': 218, + 'g': 162, + 'b': 124 } }, - "1f40d": { - "averageColor": { - "r": 121, - "g": 173, - "b": 84 + '1f40d': { + 'averageColor': { + 'r': 121, + 'g': 173, + 'b': 84 } }, - "1f40e": { - "averageColor": { - "r": 178, - "g": 105, - "b": 82 + '1f40e': { + 'averageColor': { + 'r': 178, + 'g': 105, + 'b': 82 } }, - "1f40f": { - "averageColor": { - "r": 207, - "g": 207, - "b": 192 + '1f40f': { + 'averageColor': { + 'r': 207, + 'g': 207, + 'b': 192 } }, - "1f41a": { - "averageColor": { - "r": 185, - "g": 197, - "b": 204 + '1f41a': { + 'averageColor': { + 'r': 185, + 'g': 197, + 'b': 204 } }, - "1f41b": { - "averageColor": { - "r": 140, - "g": 98, - "b": 196 + '1f41b': { + 'averageColor': { + 'r': 140, + 'g': 98, + 'b': 196 } }, - "1f41c": { - "averageColor": { - "r": 41, - "g": 47, - "b": 50 + '1f41c': { + 'averageColor': { + 'r': 41, + 'g': 47, + 'b': 50 } }, - "1f41d": { - "averageColor": { - "r": 142, - "g": 141, - "b": 126 + '1f41d': { + 'averageColor': { + 'r': 142, + 'g': 141, + 'b': 126 } }, - "1f41e": { - "averageColor": { - "r": 134, - "g": 46, - "b": 59 + '1f41e': { + 'averageColor': { + 'r': 134, + 'g': 46, + 'b': 59 } }, - "1f41f": { - "averageColor": { - "r": 73, - "g": 153, - "b": 215 + '1f41f': { + 'averageColor': { + 'r': 73, + 'g': 153, + 'b': 215 } }, - "1f42a": { - "averageColor": { - "r": 192, - "g": 104, - "b": 78 + '1f42a': { + 'averageColor': { + 'r': 192, + 'g': 104, + 'b': 78 } }, - "1f42b": { - "averageColor": { - "r": 192, - "g": 104, - "b": 78 + '1f42b': { + 'averageColor': { + 'r': 192, + 'g': 104, + 'b': 78 } }, - "1f42c": { - "averageColor": { - "r": 58, - "g": 134, - "b": 192 + '1f42c': { + 'averageColor': { + 'r': 58, + 'g': 134, + 'b': 192 } }, - "1f42d": { - "averageColor": { - "r": 160, - "g": 157, - "b": 168 + '1f42d': { + 'averageColor': { + 'r': 160, + 'g': 157, + 'b': 168 } }, - "1f42e": { - "averageColor": { - "r": 209, - "g": 182, - "b": 181 + '1f42e': { + 'averageColor': { + 'r': 209, + 'g': 182, + 'b': 181 } }, - "1f42f": { - "averageColor": { - "r": 204, - "g": 174, - "b": 111 + '1f42f': { + 'averageColor': { + 'r': 204, + 'g': 174, + 'b': 111 } }, - "1f43a": { - "averageColor": { - "r": 133, - "g": 141, - "b": 149 + '1f43a': { + 'averageColor': { + 'r': 133, + 'g': 141, + 'b': 149 } }, - "1f43b": { - "averageColor": { - "r": 187, - "g": 111, - "b": 88 + '1f43b': { + 'averageColor': { + 'r': 187, + 'g': 111, + 'b': 88 } }, - "1f43c": { - "averageColor": { - "r": 184, - "g": 185, - "b": 186 + '1f43c': { + 'averageColor': { + 'r': 184, + 'g': 185, + 'b': 186 } }, - "1f43d": { - "averageColor": { - "r": 200, - "g": 138, - "b": 134 + '1f43d': { + 'averageColor': { + 'r': 200, + 'g': 138, + 'b': 134 } }, - "1f43e": { - "averageColor": { - "r": 101, - "g": 32, - "b": 18 + '1f43e': { + 'averageColor': { + 'r': 101, + 'g': 32, + 'b': 18 } }, - "1f44a": { - "averageColor": { - "r": 212, - "g": 147, - "b": 120 + '1f44a': { + 'averageColor': { + 'r': 212, + 'g': 147, + 'b': 120 } }, - "1f44b": { - "averageColor": { - "r": 203, - "g": 160, - "b": 123 + '1f44b': { + 'averageColor': { + 'r': 203, + 'g': 160, + 'b': 123 } }, - "1f44c": { - "averageColor": { - "r": 214, - "g": 153, - "b": 125 + '1f44c': { + 'averageColor': { + 'r': 214, + 'g': 153, + 'b': 125 } }, - "1f44d": { - "averageColor": { - "r": 212, - "g": 147, - "b": 119 + '1f44d': { + 'averageColor': { + 'r': 212, + 'g': 147, + 'b': 119 } }, - "1f44e": { - "averageColor": { - "r": 212, - "g": 147, - "b": 119 + '1f44e': { + 'averageColor': { + 'r': 212, + 'g': 147, + 'b': 119 } }, - "1f44f": { - "averageColor": { - "r": 214, - "g": 148, - "b": 115 + '1f44f': { + 'averageColor': { + 'r': 214, + 'g': 148, + 'b': 115 } }, - "1f45a": { - "averageColor": { - "r": 162, - "g": 131, - "b": 211 + '1f45a': { + 'averageColor': { + 'r': 162, + 'g': 131, + 'b': 211 } }, - "1f45b": { - "averageColor": { - "r": 231, - "g": 97, - "b": 116 + '1f45b': { + 'averageColor': { + 'r': 231, + 'g': 97, + 'b': 116 } }, - "1f45c": { - "averageColor": { - "r": 162, - "g": 117, - "b": 190 + '1f45c': { + 'averageColor': { + 'r': 162, + 'g': 117, + 'b': 190 } }, - "1f45d": { - "averageColor": { - "r": 165, - "g": 203, - "b": 131 + '1f45d': { + 'averageColor': { + 'r': 165, + 'g': 203, + 'b': 131 } }, - "1f45e": { - "averageColor": { - "r": 83, - "g": 96, - "b": 104 + '1f45e': { + 'averageColor': { + 'r': 83, + 'g': 96, + 'b': 104 } }, - "1f45f": { - "averageColor": { - "r": 98, - "g": 169, - "b": 223 + '1f45f': { + 'averageColor': { + 'r': 98, + 'g': 169, + 'b': 223 } }, - "1f46a": { - "averageColor": { - "r": 143, - "g": 110, - "b": 117 + '1f46a': { + 'averageColor': { + 'r': 143, + 'g': 110, + 'b': 117 } }, - "1f46b": { - "averageColor": { - "r": 151, - "g": 101, - "b": 93 + '1f46b': { + 'averageColor': { + 'r': 151, + 'g': 101, + 'b': 93 } }, - "1f46c": { - "averageColor": { - "r": 144, - "g": 118, - "b": 96 + '1f46c': { + 'averageColor': { + 'r': 144, + 'g': 118, + 'b': 96 } }, - "1f46d": { - "averageColor": { - "r": 170, - "g": 102, - "b": 105 + '1f46d': { + 'averageColor': { + 'r': 170, + 'g': 102, + 'b': 105 } }, - "1f46e": { - "averageColor": { - "r": 129, - "g": 124, - "b": 122 + '1f46e': { + 'averageColor': { + 'r': 129, + 'g': 124, + 'b': 122 } }, - "1f46f": { - "averageColor": { - "r": 168, - "g": 134, - "b": 104 + '1f46f': { + 'averageColor': { + 'r': 168, + 'g': 134, + 'b': 104 } }, - "1f47a": { - "averageColor": { - "r": 190, - "g": 87, - "b": 96 + '1f47a': { + 'averageColor': { + 'r': 190, + 'g': 87, + 'b': 96 } }, - "1f47b": { - "averageColor": { - "r": 194, - "g": 201, - "b": 205 + '1f47b': { + 'averageColor': { + 'r': 194, + 'g': 201, + 'b': 205 } }, - "1f47c": { - "averageColor": { - "r": 195, - "g": 166, - "b": 160 + '1f47c': { + 'averageColor': { + 'r': 195, + 'g': 166, + 'b': 160 } }, - "1f47d": { - "averageColor": { - "r": 165, - "g": 174, - "b": 180 + '1f47d': { + 'averageColor': { + 'r': 165, + 'g': 174, + 'b': 180 } }, - "1f47e": { - "averageColor": { - "r": 85, - "g": 57, - "b": 134 + '1f47e': { + 'averageColor': { + 'r': 85, + 'g': 57, + 'b': 134 } }, - "1f47f": { - "averageColor": { - "r": 158, - "g": 130, - "b": 203 + '1f47f': { + 'averageColor': { + 'r': 158, + 'g': 130, + 'b': 203 } }, - "1f48a": { - "averageColor": { - "r": 219, - "g": 113, - "b": 69 + '1f48a': { + 'averageColor': { + 'r': 219, + 'g': 113, + 'b': 69 } }, - "1f48b": { - "averageColor": { - "r": 230, - "g": 90, - "b": 112 + '1f48b': { + 'averageColor': { + 'r': 230, + 'g': 90, + 'b': 112 } }, - "1f48c": { - "averageColor": { - "r": 209, - "g": 184, - "b": 194 + '1f48c': { + 'averageColor': { + 'r': 209, + 'g': 184, + 'b': 194 } }, - "1f48d": { - "averageColor": { - "r": 140, - "g": 176, - "b": 202 + '1f48d': { + 'averageColor': { + 'r': 140, + 'g': 176, + 'b': 202 } }, - "1f48e": { - "averageColor": { - "r": 115, - "g": 182, - "b": 233 + '1f48e': { + 'averageColor': { + 'r': 115, + 'g': 182, + 'b': 233 } }, - "1f48f": { - "averageColor": { - "r": 187, - "g": 129, - "b": 115 + '1f48f': { + 'averageColor': { + 'r': 187, + 'g': 129, + 'b': 115 } }, - "1f49a": { - "averageColor": { - "r": 120, - "g": 176, - "b": 89 + '1f49a': { + 'averageColor': { + 'r': 120, + 'g': 176, + 'b': 89 } }, - "1f49b": { - "averageColor": { - "r": 253, - "g": 203, - "b": 88 + '1f49b': { + 'averageColor': { + 'r': 253, + 'g': 203, + 'b': 88 } }, - "1f49c": { - "averageColor": { - "r": 170, - "g": 142, - "b": 213 + '1f49c': { + 'averageColor': { + 'r': 170, + 'g': 142, + 'b': 213 } }, - "1f49d": { - "averageColor": { - "r": 241, - "g": 149, - "b": 115 + '1f49d': { + 'averageColor': { + 'r': 241, + 'g': 149, + 'b': 115 } }, - "1f49e": { - "averageColor": { - "r": 232, - "g": 102, - "b": 123 + '1f49e': { + 'averageColor': { + 'r': 232, + 'g': 102, + 'b': 123 } }, - "1f49f": { - "averageColor": { - "r": 199, - "g": 184, - "b": 228 + '1f49f': { + 'averageColor': { + 'r': 199, + 'g': 184, + 'b': 228 } }, - "1f50a": { - "averageColor": { - "r": 170, - "g": 184, - "b": 194 + '1f50a': { + 'averageColor': { + 'r': 170, + 'g': 184, + 'b': 194 } }, - "1f50b": { - "averageColor": { - "r": 168, - "g": 202, - "b": 155 + '1f50b': { + 'averageColor': { + 'r': 168, + 'g': 202, + 'b': 155 } }, - "1f50c": { - "averageColor": { - "r": 60, - "g": 68, - "b": 72 + '1f50c': { + 'averageColor': { + 'r': 60, + 'g': 68, + 'b': 72 } }, - "1f50d": { - "averageColor": { - "r": 153, - "g": 173, - "b": 188 + '1f50d': { + 'averageColor': { + 'r': 153, + 'g': 173, + 'b': 188 } }, - "1f50e": { - "averageColor": { - "r": 153, - "g": 173, - "b": 188 + '1f50e': { + 'averageColor': { + 'r': 153, + 'g': 173, + 'b': 188 } }, - "1f50f": { - "averageColor": { - "r": 190, - "g": 176, - "b": 134 + '1f50f': { + 'averageColor': { + 'r': 190, + 'g': 176, + 'b': 134 } }, - "1f51a": { - "averageColor": { - "r": 102, - "g": 116, - "b": 127 + '1f51a': { + 'averageColor': { + 'r': 102, + 'g': 116, + 'b': 127 } }, - "1f51b": { - "averageColor": { - "r": 102, - "g": 116, - "b": 127 + '1f51b': { + 'averageColor': { + 'r': 102, + 'g': 116, + 'b': 127 } }, - "1f51c": { - "averageColor": { - "r": 102, - "g": 116, - "b": 127 + '1f51c': { + 'averageColor': { + 'r': 102, + 'g': 116, + 'b': 127 } }, - "1f51d": { - "averageColor": { - "r": 102, - "g": 117, - "b": 127 + '1f51d': { + 'averageColor': { + 'r': 102, + 'g': 117, + 'b': 127 } }, - "1f51e": { - "averageColor": { - "r": 130, - "g": 74, - "b": 82 + '1f51e': { + 'averageColor': { + 'r': 130, + 'g': 74, + 'b': 82 } }, - "1f51f": { - "averageColor": { - "r": 182, - "g": 194, - "b": 201 + '1f51f': { + 'averageColor': { + 'r': 182, + 'g': 194, + 'b': 201 } }, - "1f52a": { - "averageColor": { - "r": 155, - "g": 164, - "b": 170 + '1f52a': { + 'averageColor': { + 'r': 155, + 'g': 164, + 'b': 170 } }, - "1f52b": { - "averageColor": { - "r": 161, - "g": 146, - "b": 146 + '1f52b': { + 'averageColor': { + 'r': 161, + 'g': 146, + 'b': 146 } }, - "1f52c": { - "averageColor": { - "r": 220, - "g": 158, - "b": 70 + '1f52c': { + 'averageColor': { + 'r': 220, + 'g': 158, + 'b': 70 } }, - "1f52d": { - "averageColor": { - "r": 154, - "g": 85, - "b": 100 + '1f52d': { + 'averageColor': { + 'r': 154, + 'g': 85, + 'b': 100 } }, - "1f52e": { - "averageColor": { - "r": 146, - "g": 177, - "b": 209 + '1f52e': { + 'averageColor': { + 'r': 146, + 'g': 177, + 'b': 209 } }, - "1f52f": { - "averageColor": { - "r": 249, - "g": 199, - "b": 133 + '1f52f': { + 'averageColor': { + 'r': 249, + 'g': 199, + 'b': 133 } }, - "1f53a": { - "averageColor": { - "r": 230, - "g": 90, - "b": 112 + '1f53a': { + 'averageColor': { + 'r': 230, + 'g': 90, + 'b': 112 } }, - "1f53b": { - "averageColor": { - "r": 230, - "g": 90, - "b": 112 + '1f53b': { + 'averageColor': { + 'r': 230, + 'g': 90, + 'b': 112 } }, - "1f53c": { - "averageColor": { - "r": 173, - "g": 186, - "b": 194 + '1f53c': { + 'averageColor': { + 'r': 173, + 'g': 186, + 'b': 194 } }, - "1f53d": { - "averageColor": { - "r": 173, - "g": 186, - "b": 194 + '1f53d': { + 'averageColor': { + 'r': 173, + 'g': 186, + 'b': 194 } }, - "1f55a": { - "averageColor": { - "r": 191, - "g": 202, - "b": 209 + '1f55a': { + 'averageColor': { + 'r': 191, + 'g': 202, + 'b': 209 } }, - "1f55b": { - "averageColor": { - "r": 193, - "g": 204, - "b": 211 + '1f55b': { + 'averageColor': { + 'r': 193, + 'g': 204, + 'b': 211 } }, - "1f55c": { - "averageColor": { - "r": 191, - "g": 202, - "b": 209 + '1f55c': { + 'averageColor': { + 'r': 191, + 'g': 202, + 'b': 209 } }, - "1f55d": { - "averageColor": { - "r": 191, - "g": 202, - "b": 209 + '1f55d': { + 'averageColor': { + 'r': 191, + 'g': 202, + 'b': 209 } }, - "1f55e": { - "averageColor": { - "r": 191, - "g": 202, - "b": 209 + '1f55e': { + 'averageColor': { + 'r': 191, + 'g': 202, + 'b': 209 } }, - "1f55f": { - "averageColor": { - "r": 191, - "g": 202, - "b": 209 + '1f55f': { + 'averageColor': { + 'r': 191, + 'g': 202, + 'b': 209 } }, - "1f60a": { - "averageColor": { - "r": 241, - "g": 179, - "b": 80 + '1f60a': { + 'averageColor': { + 'r': 241, + 'g': 179, + 'b': 80 } }, - "1f60b": { - "averageColor": { - "r": 239, - "g": 183, - "b": 73 + '1f60b': { + 'averageColor': { + 'r': 239, + 'g': 183, + 'b': 73 } }, - "1f60c": { - "averageColor": { - "r": 237, - "g": 188, - "b": 68 + '1f60c': { + 'averageColor': { + 'r': 237, + 'g': 188, + 'b': 68 } }, - "1f60d": { - "averageColor": { - "r": 229, - "g": 148, - "b": 80 + '1f60d': { + 'averageColor': { + 'r': 229, + 'g': 148, + 'b': 80 } }, - "1f60e": { - "averageColor": { - "r": 193, - "g": 157, - "b": 66 + '1f60e': { + 'averageColor': { + 'r': 193, + 'g': 157, + 'b': 66 } }, - "1f60f": { - "averageColor": { - "r": 238, - "g": 189, - "b": 68 + '1f60f': { + 'averageColor': { + 'r': 238, + 'g': 189, + 'b': 68 } }, - "1f61a": { - "averageColor": { - "r": 240, - "g": 178, - "b": 79 + '1f61a': { + 'averageColor': { + 'r': 240, + 'g': 178, + 'b': 79 } }, - "1f61b": { - "averageColor": { - "r": 232, - "g": 171, - "b": 72 + '1f61b': { + 'averageColor': { + 'r': 232, + 'g': 171, + 'b': 72 } }, - "1f61c": { - "averageColor": { - "r": 232, - "g": 178, - "b": 95 + '1f61c': { + 'averageColor': { + 'r': 232, + 'g': 178, + 'b': 95 } }, - "1f61d": { - "averageColor": { - "r": 228, - "g": 168, - "b": 70 + '1f61d': { + 'averageColor': { + 'r': 228, + 'g': 168, + 'b': 70 } }, - "1f61e": { - "averageColor": { - "r": 243, - "g": 193, - "b": 71 + '1f61e': { + 'averageColor': { + 'r': 243, + 'g': 193, + 'b': 71 } }, - "1f61f": { - "averageColor": { - "r": 238, - "g": 189, - "b": 68 + '1f61f': { + 'averageColor': { + 'r': 238, + 'g': 189, + 'b': 68 } }, - "1f62a": { - "averageColor": { - "r": 227, - "g": 188, - "b": 81 + '1f62a': { + 'averageColor': { + 'r': 227, + 'g': 188, + 'b': 81 } }, - "1f62b": { - "averageColor": { - "r": 221, - "g": 175, - "b": 62 + '1f62b': { + 'averageColor': { + 'r': 221, + 'g': 175, + 'b': 62 } }, - "1f62c": { - "averageColor": { - "r": 225, - "g": 181, - "b": 74 + '1f62c': { + 'averageColor': { + 'r': 225, + 'g': 181, + 'b': 74 } }, - "1f62d": { - "averageColor": { - "r": 202, - "g": 180, - "b": 104 + '1f62d': { + 'averageColor': { + 'r': 202, + 'g': 180, + 'b': 104 } }, - "1f62e": { - "averageColor": { - "r": 239, - "g": 190, - "b": 69 + '1f62e': { + 'averageColor': { + 'r': 239, + 'g': 190, + 'b': 69 } }, - "1f62f": { - "averageColor": { - "r": 237, - "g": 188, - "b": 68 + '1f62f': { + 'averageColor': { + 'r': 237, + 'g': 188, + 'b': 68 } }, - "1f63a": { - "averageColor": { - "r": 218, - "g": 180, - "b": 84 + '1f63a': { + 'averageColor': { + 'r': 218, + 'g': 180, + 'b': 84 } }, - "1f63b": { - "averageColor": { - "r": 219, - "g": 149, - "b": 96 + '1f63b': { + 'averageColor': { + 'r': 219, + 'g': 149, + 'b': 96 } }, - "1f63c": { - "averageColor": { - "r": 227, - "g": 185, - "b": 79 + '1f63c': { + 'averageColor': { + 'r': 227, + 'g': 185, + 'b': 79 } }, - "1f63d": { - "averageColor": { - "r": 229, - "g": 186, - "b": 79 + '1f63d': { + 'averageColor': { + 'r': 229, + 'g': 186, + 'b': 79 } }, - "1f63e": { - "averageColor": { - "r": 228, - "g": 186, - "b": 78 + '1f63e': { + 'averageColor': { + 'r': 228, + 'g': 186, + 'b': 78 } }, - "1f63f": { - "averageColor": { - "r": 208, - "g": 181, - "b": 95 + '1f63f': { + 'averageColor': { + 'r': 208, + 'g': 181, + 'b': 95 } }, - "1f64a": { - "averageColor": { - "r": 194, - "g": 123, - "b": 99 + '1f64a': { + 'averageColor': { + 'r': 194, + 'g': 123, + 'b': 99 } }, - "1f64b": { - "averageColor": { - "r": 157, - "g": 102, - "b": 126 + '1f64b': { + 'averageColor': { + 'r': 157, + 'g': 102, + 'b': 126 } }, - "1f64c": { - "averageColor": { - "r": 236, - "g": 184, - "b": 150 + '1f64c': { + 'averageColor': { + 'r': 236, + 'g': 184, + 'b': 150 } }, - "1f64d": { - "averageColor": { - "r": 147, - "g": 89, - "b": 101 + '1f64d': { + 'averageColor': { + 'r': 147, + 'g': 89, + 'b': 101 } }, - "1f64e": { - "averageColor": { - "r": 147, - "g": 90, - "b": 102 + '1f64e': { + 'averageColor': { + 'r': 147, + 'g': 90, + 'b': 102 } }, - "1f64f": { - "averageColor": { - "r": 168, - "g": 139, - "b": 127 + '1f64f': { + 'averageColor': { + 'r': 168, + 'g': 139, + 'b': 127 } }, - "1f68a": { - "averageColor": { - "r": 133, - "g": 149, - "b": 146 + '1f68a': { + 'averageColor': { + 'r': 133, + 'g': 149, + 'b': 146 } }, - "1f68b": { - "averageColor": { - "r": 176, - "g": 129, - "b": 150 + '1f68b': { + 'averageColor': { + 'r': 176, + 'g': 129, + 'b': 150 } }, - "1f68c": { - "averageColor": { - "r": 111, - "g": 131, - "b": 147 + '1f68c': { + 'averageColor': { + 'r': 111, + 'g': 131, + 'b': 147 } }, - "1f68d": { - "averageColor": { - "r": 163, - "g": 168, - "b": 157 + '1f68d': { + 'averageColor': { + 'r': 163, + 'g': 168, + 'b': 157 } }, - "1f68e": { - "averageColor": { - "r": 134, - "g": 166, - "b": 150 + '1f68e': { + 'averageColor': { + 'r': 134, + 'g': 166, + 'b': 150 } }, - "1f68f": { - "averageColor": { - "r": 166, - "g": 109, - "b": 107 + '1f68f': { + 'averageColor': { + 'r': 166, + 'g': 109, + 'b': 107 } }, - "1f69a": { - "averageColor": { - "r": 193, - "g": 160, - "b": 152 + '1f69a': { + 'averageColor': { + 'r': 193, + 'g': 160, + 'b': 152 } }, - "1f69b": { - "averageColor": { - "r": 136, - "g": 162, - "b": 107 + '1f69b': { + 'averageColor': { + 'r': 136, + 'g': 162, + 'b': 107 } }, - "1f69c": { - "averageColor": { - "r": 120, - "g": 135, - "b": 86 + '1f69c': { + 'averageColor': { + 'r': 120, + 'g': 135, + 'b': 86 } }, - "1f69d": { - "averageColor": { - "r": 158, - "g": 179, - "b": 177 + '1f69d': { + 'averageColor': { + 'r': 158, + 'g': 179, + 'b': 177 } }, - "1f69e": { - "averageColor": { - "r": 180, - "g": 189, - "b": 163 + '1f69e': { + 'averageColor': { + 'r': 180, + 'g': 189, + 'b': 163 } }, - "1f69f": { - "averageColor": { - "r": 143, - "g": 130, - "b": 102 + '1f69f': { + 'averageColor': { + 'r': 143, + 'g': 130, + 'b': 102 } }, - "1f170": { - "averageColor": { - "r": 226, - "g": 82, - "b": 100 + '1f170': { + 'averageColor': { + 'r': 226, + 'g': 82, + 'b': 100 } }, - "1f171": { - "averageColor": { - "r": 228, - "g": 89, - "b": 106 + '1f171': { + 'averageColor': { + 'r': 228, + 'g': 89, + 'b': 106 } }, - "1f191": { - "averageColor": { - "r": 229, - "g": 99, - "b": 115 + '1f191': { + 'averageColor': { + 'r': 229, + 'g': 99, + 'b': 115 } }, - "1f192": { - "averageColor": { - "r": 86, - "g": 152, - "b": 203 + '1f192': { + 'averageColor': { + 'r': 86, + 'g': 152, + 'b': 203 } }, - "1f193": { - "averageColor": { - "r": 101, - "g": 162, - "b": 208 + '1f193': { + 'averageColor': { + 'r': 101, + 'g': 162, + 'b': 208 } }, - "1f194": { - "averageColor": { - "r": 176, - "g": 145, - "b": 218 + '1f194': { + 'averageColor': { + 'r': 176, + 'g': 145, + 'b': 218 } }, - "1f195": { - "averageColor": { - "r": 97, - "g": 159, - "b": 206 + '1f195': { + 'averageColor': { + 'r': 97, + 'g': 159, + 'b': 206 } }, - "1f196": { - "averageColor": { - "r": 108, - "g": 166, - "b": 210 + '1f196': { + 'averageColor': { + 'r': 108, + 'g': 166, + 'b': 210 } }, - "1f197": { - "averageColor": { - "r": 104, - "g": 163, - "b": 208 + '1f197': { + 'averageColor': { + 'r': 104, + 'g': 163, + 'b': 208 } }, - "1f198": { - "averageColor": { - "r": 228, - "g": 93, - "b": 110 + '1f198': { + 'averageColor': { + 'r': 228, + 'g': 93, + 'b': 110 } }, - "1f199": { - "averageColor": { - "r": 96, - "g": 158, - "b": 206 + '1f199': { + 'averageColor': { + 'r': 96, + 'g': 158, + 'b': 206 } }, - "1f201": { - "averageColor": { - "r": 83, - "g": 151, - "b": 202 + '1f201': { + 'averageColor': { + 'r': 83, + 'g': 151, + 'b': 202 } }, - "1f202": { - "averageColor": { - "r": 80, - "g": 149, - "b": 201 + '1f202': { + 'averageColor': { + 'r': 80, + 'g': 149, + 'b': 201 } }, - "1f232": { - "averageColor": { - "r": 227, - "g": 86, - "b": 103 + '1f232': { + 'averageColor': { + 'r': 227, + 'g': 86, + 'b': 103 } }, - "1f233": { - "averageColor": { - "r": 163, - "g": 126, - "b": 212 + '1f233': { + 'averageColor': { + 'r': 163, + 'g': 126, + 'b': 212 } }, - "1f234": { - "averageColor": { - "r": 225, - "g": 75, - "b": 94 + '1f234': { + 'averageColor': { + 'r': 225, + 'g': 75, + 'b': 94 } }, - "1f235": { - "averageColor": { - "r": 227, - "g": 88, - "b": 105 + '1f235': { + 'averageColor': { + 'r': 227, + 'g': 88, + 'b': 105 } }, - "1f236": { - "averageColor": { - "r": 245, - "g": 162, - "b": 52 + '1f236': { + 'averageColor': { + 'r': 245, + 'g': 162, + 'b': 52 } }, - "1f237": { - "averageColor": { - "r": 245, - "g": 159, - "b": 46 + '1f237': { + 'averageColor': { + 'r': 245, + 'g': 159, + 'b': 46 } }, - "1f238": { - "averageColor": { - "r": 245, - "g": 160, - "b": 48 + '1f238': { + 'averageColor': { + 'r': 245, + 'g': 160, + 'b': 48 } }, - "1f239": { - "averageColor": { - "r": 227, - "g": 86, - "b": 104 + '1f239': { + 'averageColor': { + 'r': 227, + 'g': 86, + 'b': 104 } }, - "1f250": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '1f250': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "1f251": { - "averageColor": { - "r": 245, - "g": 162, - "b": 53 + '1f251': { + 'averageColor': { + 'r': 245, + 'g': 162, + 'b': 53 } }, - "1f300": { - "averageColor": { - "r": 84, - "g": 172, - "b": 238 + '1f300': { + 'averageColor': { + 'r': 84, + 'g': 172, + 'b': 238 } }, - "1f301": { - "averageColor": { - "r": 152, - "g": 178, - "b": 195 + '1f301': { + 'averageColor': { + 'r': 152, + 'g': 178, + 'b': 195 } }, - "1f302": { - "averageColor": { - "r": 125, - "g": 93, - "b": 176 + '1f302': { + 'averageColor': { + 'r': 125, + 'g': 93, + 'b': 176 } }, - "1f303": { - "averageColor": { - "r": 56, - "g": 81, - "b": 95 + '1f303': { + 'averageColor': { + 'r': 56, + 'g': 81, + 'b': 95 } }, - "1f304": { - "averageColor": { - "r": 189, - "g": 175, - "b": 75 + '1f304': { + 'averageColor': { + 'r': 189, + 'g': 175, + 'b': 75 } }, - "1f305": { - "averageColor": { - "r": 169, - "g": 165, - "b": 120 + '1f305': { + 'averageColor': { + 'r': 169, + 'g': 165, + 'b': 120 } }, - "1f306": { - "averageColor": { - "r": 123, - "g": 94, - "b": 49 + '1f306': { + 'averageColor': { + 'r': 123, + 'g': 94, + 'b': 49 } }, - "1f307": { - "averageColor": { - "r": 170, - "g": 142, - "b": 79 + '1f307': { + 'averageColor': { + 'r': 170, + 'g': 142, + 'b': 79 } }, - "1f308": { - "averageColor": { - "r": 161, - "g": 152, - "b": 148 + '1f308': { + 'averageColor': { + 'r': 161, + 'g': 152, + 'b': 148 } }, - "1f309": { - "averageColor": { - "r": 83, - "g": 81, - "b": 92 + '1f309': { + 'averageColor': { + 'r': 83, + 'g': 81, + 'b': 92 } }, - "1f310": { - "averageColor": { - "r": 59, - "g": 136, - "b": 194 + '1f310': { + 'averageColor': { + 'r': 59, + 'g': 136, + 'b': 194 } }, - "1f311": { - "averageColor": { - "r": 100, - "g": 115, - "b": 125 + '1f311': { + 'averageColor': { + 'r': 100, + 'g': 115, + 'b': 125 } }, - "1f312": { - "averageColor": { - "r": 121, - "g": 135, - "b": 145 + '1f312': { + 'averageColor': { + 'r': 121, + 'g': 135, + 'b': 145 } }, - "1f313": { - "averageColor": { - "r": 150, - "g": 163, - "b": 172 + '1f313': { + 'averageColor': { + 'r': 150, + 'g': 163, + 'b': 172 } }, - "1f314": { - "averageColor": { - "r": 178, - "g": 190, - "b": 197 + '1f314': { + 'averageColor': { + 'r': 178, + 'g': 190, + 'b': 197 } }, - "1f315": { - "averageColor": { - "r": 200, - "g": 211, - "b": 218 + '1f315': { + 'averageColor': { + 'r': 200, + 'g': 211, + 'b': 218 } }, - "1f316": { - "averageColor": { - "r": 178, - "g": 190, - "b": 197 + '1f316': { + 'averageColor': { + 'r': 178, + 'g': 190, + 'b': 197 } }, - "1f317": { - "averageColor": { - "r": 150, - "g": 163, - "b": 172 + '1f317': { + 'averageColor': { + 'r': 150, + 'g': 163, + 'b': 172 } }, - "1f318": { - "averageColor": { - "r": 121, - "g": 135, - "b": 145 + '1f318': { + 'averageColor': { + 'r': 121, + 'g': 135, + 'b': 145 } }, - "1f319": { - "averageColor": { - "r": 201, - "g": 212, - "b": 219 + '1f319': { + 'averageColor': { + 'r': 201, + 'g': 212, + 'b': 219 } }, - "1f320": { - "averageColor": { - "r": 117, - "g": 136, - "b": 129 + '1f320': { + 'averageColor': { + 'r': 117, + 'g': 136, + 'b': 129 } }, - "1f330": { - "averageColor": { - "r": 175, - "g": 89, - "b": 64 + '1f330': { + 'averageColor': { + 'r': 175, + 'g': 89, + 'b': 64 } }, - "1f331": { - "averageColor": { - "r": 118, - "g": 177, - "b": 84 + '1f331': { + 'averageColor': { + 'r': 118, + 'g': 177, + 'b': 84 } }, - "1f332": { - "averageColor": { - "r": 82, - "g": 125, - "b": 45 + '1f332': { + 'averageColor': { + 'r': 82, + 'g': 125, + 'b': 45 } }, - "1f333": { - "averageColor": { - "r": 89, - "g": 133, - "b": 52 + '1f333': { + 'averageColor': { + 'r': 89, + 'g': 133, + 'b': 52 } }, - "1f334": { - "averageColor": { - "r": 125, - "g": 138, - "b": 71 + '1f334': { + 'averageColor': { + 'r': 125, + 'g': 138, + 'b': 71 } }, - "1f335": { - "averageColor": { - "r": 115, - "g": 173, - "b": 81 + '1f335': { + 'averageColor': { + 'r': 115, + 'g': 173, + 'b': 81 } }, - "1f337": { - "averageColor": { - "r": 196, - "g": 161, - "b": 137 + '1f337': { + 'averageColor': { + 'r': 196, + 'g': 161, + 'b': 137 } }, - "1f338": { - "averageColor": { - "r": 243, - "g": 166, - "b": 172 + '1f338': { + 'averageColor': { + 'r': 243, + 'g': 166, + 'b': 172 } }, - "1f339": { - "averageColor": { - "r": 152, - "g": 40, - "b": 39 + '1f339': { + 'averageColor': { + 'r': 152, + 'g': 40, + 'b': 39 } }, - "1f340": { - "averageColor": { - "r": 118, - "g": 177, - "b": 84 + '1f340': { + 'averageColor': { + 'r': 118, + 'g': 177, + 'b': 84 } }, - "1f341": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '1f341': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "1f342": { - "averageColor": { - "r": 207, - "g": 137, - "b": 110 + '1f342': { + 'averageColor': { + 'r': 207, + 'g': 137, + 'b': 110 } }, - "1f343": { - "averageColor": { - "r": 140, - "g": 195, - "b": 129 + '1f343': { + 'averageColor': { + 'r': 140, + 'g': 195, + 'b': 129 } }, - "1f344": { - "averageColor": { - "r": 211, - "g": 116, - "b": 133 + '1f344': { + 'averageColor': { + 'r': 211, + 'g': 116, + 'b': 133 } }, - "1f345": { - "averageColor": { - "r": 212, - "g": 57, - "b": 69 + '1f345': { + 'averageColor': { + 'r': 212, + 'g': 57, + 'b': 69 } }, - "1f346": { - "averageColor": { - "r": 116, - "g": 85, - "b": 163 + '1f346': { + 'averageColor': { + 'r': 116, + 'g': 85, + 'b': 163 } }, - "1f347": { - "averageColor": { - "r": 134, - "g": 98, - "b": 186 + '1f347': { + 'averageColor': { + 'r': 134, + 'g': 98, + 'b': 186 } }, - "1f348": { - "averageColor": { - "r": 150, - "g": 199, - "b": 119 + '1f348': { + 'averageColor': { + 'r': 150, + 'g': 199, + 'b': 119 } }, - "1f349": { - "averageColor": { - "r": 191, - "g": 99, - "b": 84 + '1f349': { + 'averageColor': { + 'r': 191, + 'g': 99, + 'b': 84 } }, - "1f350": { - "averageColor": { - "r": 162, - "g": 202, - "b": 130 + '1f350': { + 'averageColor': { + 'r': 162, + 'g': 202, + 'b': 130 } }, - "1f351": { - "averageColor": { - "r": 230, - "g": 136, - "b": 101 + '1f351': { + 'averageColor': { + 'r': 230, + 'g': 136, + 'b': 101 } }, - "1f352": { - "averageColor": { - "r": 161, - "g": 69, - "b": 56 + '1f352': { + 'averageColor': { + 'r': 161, + 'g': 69, + 'b': 56 } }, - "1f353": { - "averageColor": { - "r": 184, - "g": 57, - "b": 64 + '1f353': { + 'averageColor': { + 'r': 184, + 'g': 57, + 'b': 64 } }, - "1f354": { - "averageColor": { - "r": 203, - "g": 144, - "b": 111 + '1f354': { + 'averageColor': { + 'r': 203, + 'g': 144, + 'b': 111 } }, - "1f355": { - "averageColor": { - "r": 229, - "g": 127, - "b": 55 + '1f355': { + 'averageColor': { + 'r': 229, + 'g': 127, + 'b': 55 } }, - "1f356": { - "averageColor": { - "r": 202, - "g": 126, - "b": 87 + '1f356': { + 'averageColor': { + 'r': 202, + 'g': 126, + 'b': 87 } }, - "1f357": { - "averageColor": { - "r": 202, - "g": 123, - "b": 87 + '1f357': { + 'averageColor': { + 'r': 202, + 'g': 123, + 'b': 87 } }, - "1f358": { - "averageColor": { - "r": 154, - "g": 92, - "b": 74 + '1f358': { + 'averageColor': { + 'r': 154, + 'g': 92, + 'b': 74 } }, - "1f359": { - "averageColor": { - "r": 185, - "g": 187, - "b": 189 + '1f359': { + 'averageColor': { + 'r': 185, + 'g': 187, + 'b': 189 } }, - "1f360": { - "averageColor": { - "r": 221, - "g": 129, - "b": 51 + '1f360': { + 'averageColor': { + 'r': 221, + 'g': 129, + 'b': 51 } }, - "1f361": { - "averageColor": { - "r": 222, - "g": 197, - "b": 160 + '1f361': { + 'averageColor': { + 'r': 222, + 'g': 197, + 'b': 160 } }, - "1f362": { - "averageColor": { - "r": 183, - "g": 167, - "b": 161 + '1f362': { + 'averageColor': { + 'r': 183, + 'g': 167, + 'b': 161 } }, - "1f363": { - "averageColor": { - "r": 179, - "g": 98, - "b": 104 + '1f363': { + 'averageColor': { + 'r': 179, + 'g': 98, + 'b': 104 } }, - "1f364": { - "averageColor": { - "r": 253, - "g": 160, - "b": 67 + '1f364': { + 'averageColor': { + 'r': 253, + 'g': 160, + 'b': 67 } }, - "1f365": { - "averageColor": { - "r": 222, - "g": 210, - "b": 227 + '1f365': { + 'averageColor': { + 'r': 222, + 'g': 210, + 'b': 227 } }, - "1f366": { - "averageColor": { - "r": 254, - "g": 215, - "b": 128 + '1f366': { + 'averageColor': { + 'r': 254, + 'g': 215, + 'b': 128 } }, - "1f367": { - "averageColor": { - "r": 182, - "g": 171, - "b": 205 + '1f367': { + 'averageColor': { + 'r': 182, + 'g': 171, + 'b': 205 } }, - "1f368": { - "averageColor": { - "r": 147, - "g": 162, - "b": 182 + '1f368': { + 'averageColor': { + 'r': 147, + 'g': 162, + 'b': 182 } }, - "1f369": { - "averageColor": { - "r": 176, - "g": 112, - "b": 65 + '1f369': { + 'averageColor': { + 'r': 176, + 'g': 112, + 'b': 65 } }, - "1f370": { - "averageColor": { - "r": 235, - "g": 210, - "b": 184 + '1f370': { + 'averageColor': { + 'r': 235, + 'g': 210, + 'b': 184 } }, - "1f371": { - "averageColor": { - "r": 135, - "g": 88, - "b": 80 + '1f371': { + 'averageColor': { + 'r': 135, + 'g': 88, + 'b': 80 } }, - "1f372": { - "averageColor": { - "r": 129, - "g": 125, - "b": 89 + '1f372': { + 'averageColor': { + 'r': 129, + 'g': 125, + 'b': 89 } }, - "1f373": { - "averageColor": { - "r": 123, - "g": 124, - "b": 121 + '1f373': { + 'averageColor': { + 'r': 123, + 'g': 124, + 'b': 121 } }, - "1f374": { - "averageColor": { - "r": 153, - "g": 170, - "b": 180 + '1f374': { + 'averageColor': { + 'r': 153, + 'g': 170, + 'b': 180 } }, - "1f375": { - "averageColor": { - "r": 152, - "g": 181, - "b": 145 + '1f375': { + 'averageColor': { + 'r': 152, + 'g': 181, + 'b': 145 } }, - "1f376": { - "averageColor": { - "r": 128, - "g": 186, - "b": 230 + '1f376': { + 'averageColor': { + 'r': 128, + 'g': 186, + 'b': 230 } }, - "1f377": { - "averageColor": { - "r": 174, - "g": 139, - "b": 153 + '1f377': { + 'averageColor': { + 'r': 174, + 'g': 139, + 'b': 153 } }, - "1f378": { - "averageColor": { - "r": 171, - "g": 180, - "b": 183 + '1f378': { + 'averageColor': { + 'r': 171, + 'g': 180, + 'b': 183 } }, - "1f379": { - "averageColor": { - "r": 177, - "g": 167, - "b": 113 + '1f379': { + 'averageColor': { + 'r': 177, + 'g': 167, + 'b': 113 } }, - "1f380": { - "averageColor": { - "r": 215, - "g": 45, - "b": 67 + '1f380': { + 'averageColor': { + 'r': 215, + 'g': 45, + 'b': 67 } }, - "1f381": { - "averageColor": { - "r": 240, - "g": 155, - "b": 110 + '1f381': { + 'averageColor': { + 'r': 240, + 'g': 155, + 'b': 110 } }, - "1f382": { - "averageColor": { - "r": 171, - "g": 124, - "b": 107 + '1f382': { + 'averageColor': { + 'r': 171, + 'g': 124, + 'b': 107 } }, - "1f383": { - "averageColor": { - "r": 200, - "g": 119, - "b": 35 + '1f383': { + 'averageColor': { + 'r': 200, + 'g': 119, + 'b': 35 } }, - "1f384": { - "averageColor": { - "r": 114, - "g": 129, - "b": 53 + '1f384': { + 'averageColor': { + 'r': 114, + 'g': 129, + 'b': 53 } }, - "1f385": { - "averageColor": { - "r": 222, - "g": 152, - "b": 151 + '1f385': { + 'averageColor': { + 'r': 222, + 'g': 152, + 'b': 151 } }, - "1f386": { - "averageColor": { - "r": 102, - "g": 141, - "b": 152 + '1f386': { + 'averageColor': { + 'r': 102, + 'g': 141, + 'b': 152 } }, - "1f387": { - "averageColor": { - "r": 99, - "g": 140, - "b": 156 + '1f387': { + 'averageColor': { + 'r': 99, + 'g': 140, + 'b': 156 } }, - "1f388": { - "averageColor": { - "r": 195, - "g": 44, - "b": 53 + '1f388': { + 'averageColor': { + 'r': 195, + 'g': 44, + 'b': 53 } }, - "1f389": { - "averageColor": { - "r": 185, - "g": 91, - "b": 92 + '1f389': { + 'averageColor': { + 'r': 185, + 'g': 91, + 'b': 92 } }, - "1f390": { - "averageColor": { - "r": 145, - "g": 178, - "b": 143 + '1f390': { + 'averageColor': { + 'r': 145, + 'g': 178, + 'b': 143 } }, - "1f391": { - "averageColor": { - "r": 100, - "g": 141, - "b": 146 + '1f391': { + 'averageColor': { + 'r': 100, + 'g': 141, + 'b': 146 } }, - "1f392": { - "averageColor": { - "r": 173, - "g": 42, - "b": 51 + '1f392': { + 'averageColor': { + 'r': 173, + 'g': 42, + 'b': 51 } }, - "1f393": { - "averageColor": { - "r": 75, - "g": 74, - "b": 67 + '1f393': { + 'averageColor': { + 'r': 75, + 'g': 74, + 'b': 67 } }, - "1f400": { - "averageColor": { - "r": 122, - "g": 114, - "b": 125 + '1f400': { + 'averageColor': { + 'r': 122, + 'g': 114, + 'b': 125 } }, - "1f401": { - "averageColor": { - "r": 210, - "g": 193, - "b": 202 + '1f401': { + 'averageColor': { + 'r': 210, + 'g': 193, + 'b': 202 } }, - "1f402": { - "averageColor": { - "r": 192, - "g": 109, - "b": 84 + '1f402': { + 'averageColor': { + 'r': 192, + 'g': 109, + 'b': 84 } }, - "1f403": { - "averageColor": { - "r": 53, - "g": 60, - "b": 65 + '1f403': { + 'averageColor': { + 'r': 53, + 'g': 60, + 'b': 65 } }, - "1f404": { - "averageColor": { - "r": 112, - "g": 120, - "b": 125 + '1f404': { + 'averageColor': { + 'r': 112, + 'g': 120, + 'b': 125 } }, - "1f405": { - "averageColor": { - "r": 225, - "g": 154, - "b": 51 + '1f405': { + 'averageColor': { + 'r': 225, + 'g': 154, + 'b': 51 } }, - "1f406": { - "averageColor": { - "r": 250, - "g": 192, - "b": 66 + '1f406': { + 'averageColor': { + 'r': 250, + 'g': 192, + 'b': 66 } }, - "1f407": { - "averageColor": { - "r": 161, - "g": 170, - "b": 181 + '1f407': { + 'averageColor': { + 'r': 161, + 'g': 170, + 'b': 181 } }, - "1f408": { - "averageColor": { - "r": 187, - "g": 102, - "b": 76 + '1f408': { + 'averageColor': { + 'r': 187, + 'g': 102, + 'b': 76 } }, - "1f409": { - "averageColor": { - "r": 107, - "g": 163, - "b": 73 + '1f409': { + 'averageColor': { + 'r': 107, + 'g': 163, + 'b': 73 } }, - "1f410": { - "averageColor": { - "r": 206, - "g": 212, - "b": 212 + '1f410': { + 'averageColor': { + 'r': 206, + 'g': 212, + 'b': 212 } }, - "1f411": { - "averageColor": { - "r": 228, - "g": 225, - "b": 208 + '1f411': { + 'averageColor': { + 'r': 228, + 'g': 225, + 'b': 208 } }, - "1f412": { - "averageColor": { - "r": 193, - "g": 112, - "b": 89 + '1f412': { + 'averageColor': { + 'r': 193, + 'g': 112, + 'b': 89 } }, - "1f413": { - "averageColor": { - "r": 226, - "g": 206, - "b": 203 + '1f413': { + 'averageColor': { + 'r': 226, + 'g': 206, + 'b': 203 } }, - "1f414": { - "averageColor": { - "r": 223, - "g": 194, - "b": 181 + '1f414': { + 'averageColor': { + 'r': 223, + 'g': 194, + 'b': 181 } }, - "1f415": { - "averageColor": { - "r": 195, - "g": 132, - "b": 107 + '1f415': { + 'averageColor': { + 'r': 195, + 'g': 132, + 'b': 107 } }, - "1f416": { - "averageColor": { - "r": 242, - "g": 170, - "b": 185 + '1f416': { + 'averageColor': { + 'r': 242, + 'g': 170, + 'b': 185 } }, - "1f417": { - "averageColor": { - "r": 202, - "g": 142, - "b": 117 + '1f417': { + 'averageColor': { + 'r': 202, + 'g': 142, + 'b': 117 } }, - "1f418": { - "averageColor": { - "r": 150, - "g": 166, - "b": 177 + '1f418': { + 'averageColor': { + 'r': 150, + 'g': 166, + 'b': 177 } }, - "1f419": { - "averageColor": { - "r": 139, - "g": 97, - "b": 195 + '1f419': { + 'averageColor': { + 'r': 139, + 'g': 97, + 'b': 195 } }, - "1f420": { - "averageColor": { - "r": 251, - "g": 193, - "b": 67 + '1f420': { + 'averageColor': { + 'r': 251, + 'g': 193, + 'b': 67 } }, - "1f421": { - "averageColor": { - "r": 201, - "g": 128, - "b": 101 + '1f421': { + 'averageColor': { + 'r': 201, + 'g': 128, + 'b': 101 } }, - "1f422": { - "averageColor": { - "r": 89, - "g": 144, - "b": 57 + '1f422': { + 'averageColor': { + 'r': 89, + 'g': 144, + 'b': 57 } }, - "1f423": { - "averageColor": { - "r": 239, - "g": 207, - "b": 128 + '1f423': { + 'averageColor': { + 'r': 239, + 'g': 207, + 'b': 128 } }, - "1f424": { - "averageColor": { - "r": 252, - "g": 195, - "b": 71 + '1f424': { + 'averageColor': { + 'r': 252, + 'g': 195, + 'b': 71 } }, - "1f425": { - "averageColor": { - "r": 251, - "g": 196, - "b": 71 + '1f425': { + 'averageColor': { + 'r': 251, + 'g': 196, + 'b': 71 } }, - "1f426": { - "averageColor": { - "r": 216, - "g": 57, - "b": 62 + '1f426': { + 'averageColor': { + 'r': 216, + 'g': 57, + 'b': 62 } }, - "1f427": { - "averageColor": { - "r": 167, - "g": 160, - "b": 147 + '1f427': { + 'averageColor': { + 'r': 167, + 'g': 160, + 'b': 147 } }, - "1f428": { - "averageColor": { - "r": 136, - "g": 152, - "b": 162 + '1f428': { + 'averageColor': { + 'r': 136, + 'g': 152, + 'b': 162 } }, - "1f429": { - "averageColor": { - "r": 151, - "g": 166, - "b": 176 + '1f429': { + 'averageColor': { + 'r': 151, + 'g': 166, + 'b': 176 } }, - "1f430": { - "averageColor": { - "r": 174, - "g": 174, - "b": 185 + '1f430': { + 'averageColor': { + 'r': 174, + 'g': 174, + 'b': 185 } }, - "1f431": { - "averageColor": { - "r": 238, - "g": 181, - "b": 79 + '1f431': { + 'averageColor': { + 'r': 238, + 'g': 181, + 'b': 79 } }, - "1f432": { - "averageColor": { - "r": 108, - "g": 163, - "b": 76 + '1f432': { + 'averageColor': { + 'r': 108, + 'g': 163, + 'b': 76 } }, - "1f433": { - "averageColor": { - "r": 120, - "g": 95, - "b": 181 + '1f433': { + 'averageColor': { + 'r': 120, + 'g': 95, + 'b': 181 } }, - "1f434": { - "averageColor": { - "r": 181, - "g": 124, - "b": 106 + '1f434': { + 'averageColor': { + 'r': 181, + 'g': 124, + 'b': 106 } }, - "1f435": { - "averageColor": { - "r": 190, - "g": 119, - "b": 97 + '1f435': { + 'averageColor': { + 'r': 190, + 'g': 119, + 'b': 97 } }, - "1f436": { - "averageColor": { - "r": 132, - "g": 137, - "b": 143 + '1f436': { + 'averageColor': { + 'r': 132, + 'g': 137, + 'b': 143 } }, - "1f437": { - "averageColor": { - "r": 232, - "g": 144, - "b": 159 + '1f437': { + 'averageColor': { + 'r': 232, + 'g': 144, + 'b': 159 } }, - "1f438": { - "averageColor": { - "r": 149, - "g": 195, - "b": 122 + '1f438': { + 'averageColor': { + 'r': 149, + 'g': 195, + 'b': 122 } }, - "1f439": { - "averageColor": { - "r": 236, - "g": 173, - "b": 106 + '1f439': { + 'averageColor': { + 'r': 236, + 'g': 173, + 'b': 106 } }, - "1f440": { - "averageColor": { - "r": 205, - "g": 212, - "b": 217 + '1f440': { + 'averageColor': { + 'r': 205, + 'g': 212, + 'b': 217 } }, - "1f442": { - "averageColor": { - "r": 212, - "g": 148, - "b": 120 + '1f442': { + 'averageColor': { + 'r': 212, + 'g': 148, + 'b': 120 } }, - "1f443": { - "averageColor": { - "r": 208, - "g": 150, - "b": 124 + '1f443': { + 'averageColor': { + 'r': 208, + 'g': 150, + 'b': 124 } }, - "1f444": { - "averageColor": { - "r": 204, - "g": 94, - "b": 106 + '1f444': { + 'averageColor': { + 'r': 204, + 'g': 94, + 'b': 106 } }, - "1f445": { - "averageColor": { - "r": 202, - "g": 73, - "b": 86 + '1f445': { + 'averageColor': { + 'r': 202, + 'g': 73, + 'b': 86 } }, - "1f446": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '1f446': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "1f447": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '1f447': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "1f448": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '1f448': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "1f449": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '1f449': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "1f450": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '1f450': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "1f451": { - "averageColor": { - "r": 234, - "g": 186, - "b": 65 + '1f451': { + 'averageColor': { + 'r': 234, + 'g': 186, + 'b': 65 } }, - "1f452": { - "averageColor": { - "r": 241, - "g": 205, - "b": 148 + '1f452': { + 'averageColor': { + 'r': 241, + 'g': 205, + 'b': 148 } }, - "1f453": { - "averageColor": { - "r": 55, - "g": 88, - "b": 112 + '1f453': { + 'averageColor': { + 'r': 55, + 'g': 88, + 'b': 112 } }, - "1f454": { - "averageColor": { - "r": 137, - "g": 148, - "b": 190 + '1f454': { + 'averageColor': { + 'r': 137, + 'g': 148, + 'b': 190 } }, - "1f455": { - "averageColor": { - "r": 61, - "g": 139, - "b": 198 + '1f455': { + 'averageColor': { + 'r': 61, + 'g': 139, + 'b': 198 } }, - "1f456": { - "averageColor": { - "r": 56, - "g": 132, - "b": 190 + '1f456': { + 'averageColor': { + 'r': 56, + 'g': 132, + 'b': 190 } }, - "1f457": { - "averageColor": { - "r": 86, - "g": 171, - "b": 235 + '1f457': { + 'averageColor': { + 'r': 86, + 'g': 171, + 'b': 235 } }, - "1f458": { - "averageColor": { - "r": 84, - "g": 151, - "b": 202 + '1f458': { + 'averageColor': { + 'r': 84, + 'g': 151, + 'b': 202 } }, - "1f459": { - "averageColor": { - "r": 108, - "g": 72, - "b": 161 + '1f459': { + 'averageColor': { + 'r': 108, + 'g': 72, + 'b': 161 } }, - "1f460": { - "averageColor": { - "r": 106, - "g": 81, - "b": 146 + '1f460': { + 'averageColor': { + 'r': 106, + 'g': 81, + 'b': 146 } }, - "1f461": { - "averageColor": { - "r": 197, - "g": 93, - "b": 81 + '1f461': { + 'averageColor': { + 'r': 197, + 'g': 93, + 'b': 81 } }, - "1f462": { - "averageColor": { - "r": 178, - "g": 95, - "b": 71 + '1f462': { + 'averageColor': { + 'r': 178, + 'g': 95, + 'b': 71 } }, - "1f463": { - "averageColor": { - "r": 101, - "g": 32, - "b": 18 + '1f463': { + 'averageColor': { + 'r': 101, + 'g': 32, + 'b': 18 } }, - "1f464": { - "averageColor": { - "r": 41, - "g": 47, - "b": 50 + '1f464': { + 'averageColor': { + 'r': 41, + 'g': 47, + 'b': 50 } }, - "1f465": { - "averageColor": { - "r": 68, - "g": 78, - "b": 85 + '1f465': { + 'averageColor': { + 'r': 68, + 'g': 78, + 'b': 85 } }, - "1f466": { - "averageColor": { - "r": 171, - "g": 107, - "b": 85 + '1f466': { + 'averageColor': { + 'r': 171, + 'g': 107, + 'b': 85 } }, - "1f467": { - "averageColor": { - "r": 163, - "g": 97, - "b": 77 + '1f467': { + 'averageColor': { + 'r': 163, + 'g': 97, + 'b': 77 } }, - "1f468": { - "averageColor": { - "r": 150, - "g": 115, - "b": 100 + '1f468': { + 'averageColor': { + 'r': 150, + 'g': 115, + 'b': 100 } }, - "1f469": { - "averageColor": { - "r": 200, - "g": 122, - "b": 96 + '1f469': { + 'averageColor': { + 'r': 200, + 'g': 122, + 'b': 96 } }, - "1f470": { - "averageColor": { - "r": 192, - "g": 156, - "b": 146 + '1f470': { + 'averageColor': { + 'r': 192, + 'g': 156, + 'b': 146 } }, - "1f471": { - "averageColor": { - "r": 226, - "g": 176, - "b": 129 + '1f471': { + 'averageColor': { + 'r': 226, + 'g': 176, + 'b': 129 } }, - "1f472": { - "averageColor": { - "r": 175, - "g": 123, - "b": 98 + '1f472': { + 'averageColor': { + 'r': 175, + 'g': 123, + 'b': 98 } }, - "1f473": { - "averageColor": { - "r": 214, - "g": 177, - "b": 160 + '1f473': { + 'averageColor': { + 'r': 214, + 'g': 177, + 'b': 160 } }, - "1f474": { - "averageColor": { - "r": 212, - "g": 158, - "b": 133 + '1f474': { + 'averageColor': { + 'r': 212, + 'g': 158, + 'b': 133 } }, - "1f475": { - "averageColor": { - "r": 174, - "g": 140, - "b": 127 + '1f475': { + 'averageColor': { + 'r': 174, + 'g': 140, + 'b': 127 } }, - "1f476": { - "averageColor": { - "r": 200, - "g": 140, - "b": 114 + '1f476': { + 'averageColor': { + 'r': 200, + 'g': 140, + 'b': 114 } }, - "1f477": { - "averageColor": { - "r": 232, - "g": 184, - "b": 121 + '1f477': { + 'averageColor': { + 'r': 232, + 'g': 184, + 'b': 121 } }, - "1f478": { - "averageColor": { - "r": 230, - "g": 187, - "b": 134 + '1f478': { + 'averageColor': { + 'r': 230, + 'g': 187, + 'b': 134 } }, - "1f479": { - "averageColor": { - "r": 127, - "g": 37, - "b": 36 + '1f479': { + 'averageColor': { + 'r': 127, + 'g': 37, + 'b': 36 } }, - "1f480": { - "averageColor": { - "r": 163, - "g": 165, - "b": 167 + '1f480': { + 'averageColor': { + 'r': 163, + 'g': 165, + 'b': 167 } }, - "1f481": { - "averageColor": { - "r": 151, - "g": 94, - "b": 112 + '1f481': { + 'averageColor': { + 'r': 151, + 'g': 94, + 'b': 112 } }, - "1f482": { - "averageColor": { - "r": 82, - "g": 66, - "b": 58 + '1f482': { + 'averageColor': { + 'r': 82, + 'g': 66, + 'b': 58 } }, - "1f483": { - "averageColor": { - "r": 198, - "g": 66, - "b": 71 + '1f483': { + 'averageColor': { + 'r': 198, + 'g': 66, + 'b': 71 } }, - "1f484": { - "averageColor": { - "r": 241, - "g": 132, - "b": 98 + '1f484': { + 'averageColor': { + 'r': 241, + 'g': 132, + 'b': 98 } }, - "1f485": { - "averageColor": { - "r": 204, - "g": 108, - "b": 109 + '1f485': { + 'averageColor': { + 'r': 204, + 'g': 108, + 'b': 109 } }, - "1f486": { - "averageColor": { - "r": 163, - "g": 107, - "b": 114 + '1f486': { + 'averageColor': { + 'r': 163, + 'g': 107, + 'b': 114 } }, - "1f487": { - "averageColor": { - "r": 138, - "g": 89, - "b": 96 + '1f487': { + 'averageColor': { + 'r': 138, + 'g': 89, + 'b': 96 } }, - "1f488": { - "averageColor": { - "r": 189, - "g": 183, - "b": 199 + '1f488': { + 'averageColor': { + 'r': 189, + 'g': 183, + 'b': 199 } }, - "1f489": { - "averageColor": { - "r": 197, - "g": 114, - "b": 129 + '1f489': { + 'averageColor': { + 'r': 197, + 'g': 114, + 'b': 129 } }, - "1f490": { - "averageColor": { - "r": 158, - "g": 138, - "b": 66 + '1f490': { + 'averageColor': { + 'r': 158, + 'g': 138, + 'b': 66 } }, - "1f491": { - "averageColor": { - "r": 154, - "g": 102, - "b": 114 + '1f491': { + 'averageColor': { + 'r': 154, + 'g': 102, + 'b': 114 } }, - "1f492": { - "averageColor": { - "r": 214, - "g": 113, - "b": 126 + '1f492': { + 'averageColor': { + 'r': 214, + 'g': 113, + 'b': 126 } }, - "1f493": { - "averageColor": { - "r": 233, - "g": 102, - "b": 109 + '1f493': { + 'averageColor': { + 'r': 233, + 'g': 102, + 'b': 109 } }, - "1f494": { - "averageColor": { - "r": 230, - "g": 90, - "b": 112 + '1f494': { + 'averageColor': { + 'r': 230, + 'g': 90, + 'b': 112 } }, - "1f495": { - "averageColor": { - "r": 230, - "g": 90, - "b": 112 + '1f495': { + 'averageColor': { + 'r': 230, + 'g': 90, + 'b': 112 } }, - "1f496": { - "averageColor": { - "r": 233, - "g": 105, - "b": 108 + '1f496': { + 'averageColor': { + 'r': 233, + 'g': 105, + 'b': 108 } }, - "1f497": { - "averageColor": { - "r": 224, - "g": 110, - "b": 130 + '1f497': { + 'averageColor': { + 'r': 224, + 'g': 110, + 'b': 130 } }, - "1f498": { - "averageColor": { - "r": 186, - "g": 102, - "b": 134 + '1f498': { + 'averageColor': { + 'r': 186, + 'g': 102, + 'b': 134 } }, - "1f499": { - "averageColor": { - "r": 93, - "g": 173, - "b": 236 + '1f499': { + 'averageColor': { + 'r': 93, + 'g': 173, + 'b': 236 } }, - "1f500": { - "averageColor": { - "r": 95, - "g": 158, - "b": 206 + '1f500': { + 'averageColor': { + 'r': 95, + 'g': 158, + 'b': 206 } }, - "1f501": { - "averageColor": { - "r": 101, - "g": 162, - "b": 208 + '1f501': { + 'averageColor': { + 'r': 101, + 'g': 162, + 'b': 208 } }, - "1f502": { - "averageColor": { - "r": 103, - "g": 163, - "b": 208 + '1f502': { + 'averageColor': { + 'r': 103, + 'g': 163, + 'b': 208 } }, - "1f503": { - "averageColor": { - "r": 101, - "g": 162, - "b": 208 + '1f503': { + 'averageColor': { + 'r': 101, + 'g': 162, + 'b': 208 } }, - "1f504": { - "averageColor": { - "r": 109, - "g": 166, - "b": 210 + '1f504': { + 'averageColor': { + 'r': 109, + 'g': 166, + 'b': 210 } }, - "1f505": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f505': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f506": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f506': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f507": { - "averageColor": { - "r": 130, - "g": 74, - "b": 81 + '1f507': { + 'averageColor': { + 'r': 130, + 'g': 74, + 'b': 81 } }, - "1f508": { - "averageColor": { - "r": 185, - "g": 197, - "b": 205 + '1f508': { + 'averageColor': { + 'r': 185, + 'g': 197, + 'b': 205 } }, - "1f509": { - "averageColor": { - "r": 180, - "g": 192, - "b": 201 + '1f509': { + 'averageColor': { + 'r': 180, + 'g': 192, + 'b': 201 } }, - "1f510": { - "averageColor": { - "r": 220, - "g": 145, - "b": 79 + '1f510': { + 'averageColor': { + 'r': 220, + 'g': 145, + 'b': 79 } }, - "1f511": { - "averageColor": { - "r": 192, - "g": 105, - "b": 79 + '1f511': { + 'averageColor': { + 'r': 192, + 'g': 105, + 'b': 79 } }, - "1f512": { - "averageColor": { - "r": 237, - "g": 176, - "b": 87 + '1f512': { + 'averageColor': { + 'r': 237, + 'g': 176, + 'b': 87 } }, - "1f513": { - "averageColor": { - "r": 238, - "g": 176, - "b": 86 + '1f513': { + 'averageColor': { + 'r': 238, + 'g': 176, + 'b': 86 } }, - "1f514": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f514': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f515": { - "averageColor": { - "r": 138, - "g": 82, - "b": 89 + '1f515': { + 'averageColor': { + 'r': 138, + 'g': 82, + 'b': 89 } }, - "1f516": { - "averageColor": { - "r": 85, - "g": 171, - "b": 237 + '1f516': { + 'averageColor': { + 'r': 85, + 'g': 171, + 'b': 237 } }, - "1f517": { - "averageColor": { - "r": 136, - "g": 153, - "b": 165 + '1f517': { + 'averageColor': { + 'r': 136, + 'g': 153, + 'b': 165 } }, - "1f518": { - "averageColor": { - "r": 62, - "g": 122, - "b": 166 + '1f518': { + 'averageColor': { + 'r': 62, + 'g': 122, + 'b': 166 } }, - "1f519": { - "averageColor": { - "r": 102, - "g": 116, - "b": 127 + '1f519': { + 'averageColor': { + 'r': 102, + 'g': 116, + 'b': 127 } }, - "1f520": { - "averageColor": { - "r": 113, - "g": 169, - "b": 211 + '1f520': { + 'averageColor': { + 'r': 113, + 'g': 169, + 'b': 211 } }, - "1f521": { - "averageColor": { - "r": 104, - "g": 163, - "b": 208 + '1f521': { + 'averageColor': { + 'r': 104, + 'g': 163, + 'b': 208 } }, - "1f522": { - "averageColor": { - "r": 101, - "g": 161, - "b": 207 + '1f522': { + 'averageColor': { + 'r': 101, + 'g': 161, + 'b': 207 } }, - "1f523": { - "averageColor": { - "r": 114, - "g": 169, - "b": 211 + '1f523': { + 'averageColor': { + 'r': 114, + 'g': 169, + 'b': 211 } }, - "1f524": { - "averageColor": { - "r": 91, - "g": 155, - "b": 204 + '1f524': { + 'averageColor': { + 'r': 91, + 'g': 155, + 'b': 204 } }, - "1f525": { - "averageColor": { - "r": 247, - "g": 164, - "b": 34 + '1f525': { + 'averageColor': { + 'r': 247, + 'g': 164, + 'b': 34 } }, - "1f526": { - "averageColor": { - "r": 139, - "g": 147, - "b": 144 + '1f526': { + 'averageColor': { + 'r': 139, + 'g': 147, + 'b': 144 } }, - "1f527": { - "averageColor": { - "r": 136, - "g": 153, - "b": 165 + '1f527': { + 'averageColor': { + 'r': 136, + 'g': 153, + 'b': 165 } }, - "1f528": { - "averageColor": { - "r": 179, - "g": 131, - "b": 64 + '1f528': { + 'averageColor': { + 'r': 179, + 'g': 131, + 'b': 64 } }, - "1f529": { - "averageColor": { - "r": 161, - "g": 174, - "b": 183 + '1f529': { + 'averageColor': { + 'r': 161, + 'g': 174, + 'b': 183 } }, - "1f530": { - "averageColor": { - "r": 142, - "g": 197, - "b": 157 + '1f530': { + 'averageColor': { + 'r': 142, + 'g': 197, + 'b': 157 } }, - "1f531": { - "averageColor": { - "r": 255, - "g": 204, - "b": 77 + '1f531': { + 'averageColor': { + 'r': 255, + 'g': 204, + 'b': 77 } }, - "1f532": { - "averageColor": { - "r": 121, - "g": 120, - "b": 121 + '1f532': { + 'averageColor': { + 'r': 121, + 'g': 120, + 'b': 121 } }, - "1f533": { - "averageColor": { - "r": 143, - "g": 141, - "b": 142 + '1f533': { + 'averageColor': { + 'r': 143, + 'g': 141, + 'b': 142 } }, - "1f534": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '1f534': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "1f535": { - "averageColor": { - "r": 84, - "g": 172, - "b": 238 + '1f535': { + 'averageColor': { + 'r': 84, + 'g': 172, + 'b': 238 } }, - "1f536": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f536': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f537": { - "averageColor": { - "r": 84, - "g": 172, - "b": 238 + '1f537': { + 'averageColor': { + 'r': 84, + 'g': 172, + 'b': 238 } }, - "1f538": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '1f538': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "1f539": { - "averageColor": { - "r": 84, - "g": 172, - "b": 238 + '1f539': { + 'averageColor': { + 'r': 84, + 'g': 172, + 'b': 238 } }, - "1f550": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f550': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f551": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f551': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f552": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f552': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f553": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f553': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f554": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f554': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f555": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f555': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f556": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f556': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f557": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f557': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f558": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f558': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f559": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f559': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f560": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f560': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f561": { - "averageColor": { - "r": 192, - "g": 204, - "b": 211 + '1f561': { + 'averageColor': { + 'r': 192, + 'g': 204, + 'b': 211 } }, - "1f562": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f562': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f563": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f563': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f564": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f564': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f565": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f565': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f566": { - "averageColor": { - "r": 190, - "g": 201, - "b": 209 + '1f566': { + 'averageColor': { + 'r': 190, + 'g': 201, + 'b': 209 } }, - "1f567": { - "averageColor": { - "r": 190, - "g": 202, - "b": 209 + '1f567': { + 'averageColor': { + 'r': 190, + 'g': 202, + 'b': 209 } }, - "1f600": { - "averageColor": { - "r": 227, - "g": 181, - "b": 70 + '1f600': { + 'averageColor': { + 'r': 227, + 'g': 181, + 'b': 70 } }, - "1f601": { - "averageColor": { - "r": 225, - "g": 181, - "b": 73 + '1f601': { + 'averageColor': { + 'r': 225, + 'g': 181, + 'b': 73 } }, - "1f602": { - "averageColor": { - "r": 190, - "g": 173, - "b": 104 + '1f602': { + 'averageColor': { + 'r': 190, + 'g': 173, + 'b': 104 } }, - "1f603": { - "averageColor": { - "r": 217, - "g": 172, - "b": 66 + '1f603': { + 'averageColor': { + 'r': 217, + 'g': 172, + 'b': 66 } }, - "1f604": { - "averageColor": { - "r": 224, - "g": 179, - "b": 69 + '1f604': { + 'averageColor': { + 'r': 224, + 'g': 179, + 'b': 69 } }, - "1f605": { - "averageColor": { - "r": 206, - "g": 176, - "b": 87 + '1f605': { + 'averageColor': { + 'r': 206, + 'g': 176, + 'b': 87 } }, - "1f606": { - "averageColor": { - "r": 218, - "g": 173, - "b": 66 + '1f606': { + 'averageColor': { + 'r': 218, + 'g': 173, + 'b': 66 } }, - "1f607": { - "averageColor": { - "r": 214, - "g": 186, - "b": 96 + '1f607': { + 'averageColor': { + 'r': 214, + 'g': 186, + 'b': 96 } }, - "1f608": { - "averageColor": { - "r": 158, - "g": 130, - "b": 203 + '1f608': { + 'averageColor': { + 'r': 158, + 'g': 130, + 'b': 203 } }, - "1f609": { - "averageColor": { - "r": 234, - "g": 185, - "b": 66 + '1f609': { + 'averageColor': { + 'r': 234, + 'g': 185, + 'b': 66 } }, - "1f610": { - "averageColor": { - "r": 240, - "g": 191, - "b": 69 + '1f610': { + 'averageColor': { + 'r': 240, + 'g': 191, + 'b': 69 } }, - "1f611": { - "averageColor": { - "r": 244, - "g": 194, - "b": 71 + '1f611': { + 'averageColor': { + 'r': 244, + 'g': 194, + 'b': 71 } }, - "1f612": { - "averageColor": { - "r": 233, - "g": 185, - "b": 76 + '1f612': { + 'averageColor': { + 'r': 233, + 'g': 185, + 'b': 76 } }, - "1f613": { - "averageColor": { - "r": 225, - "g": 191, - "b": 89 + '1f613': { + 'averageColor': { + 'r': 225, + 'g': 191, + 'b': 89 } }, - "1f614": { - "averageColor": { - "r": 238, - "g": 189, - "b": 68 + '1f614': { + 'averageColor': { + 'r': 238, + 'g': 189, + 'b': 68 } }, - "1f615": { - "averageColor": { - "r": 242, - "g": 193, - "b": 70 + '1f615': { + 'averageColor': { + 'r': 242, + 'g': 193, + 'b': 70 } }, - "1f616": { - "averageColor": { - "r": 224, - "g": 177, - "b": 71 + '1f616': { + 'averageColor': { + 'r': 224, + 'g': 177, + 'b': 71 } }, - "1f617": { - "averageColor": { - "r": 240, - "g": 191, - "b": 69 + '1f617': { + 'averageColor': { + 'r': 240, + 'g': 191, + 'b': 69 } }, - "1f618": { - "averageColor": { - "r": 233, - "g": 176, - "b": 70 + '1f618': { + 'averageColor': { + 'r': 233, + 'g': 176, + 'b': 70 } }, - "1f619": { - "averageColor": { - "r": 243, - "g": 193, - "b": 71 + '1f619': { + 'averageColor': { + 'r': 243, + 'g': 193, + 'b': 71 } }, - "1f620": { - "averageColor": { - "r": 232, - "g": 184, - "b": 76 + '1f620': { + 'averageColor': { + 'r': 232, + 'g': 184, + 'b': 76 } }, - "1f621": { - "averageColor": { - "r": 193, - "g": 47, - "b": 68 + '1f621': { + 'averageColor': { + 'r': 193, + 'g': 47, + 'b': 68 } }, - "1f622": { - "averageColor": { - "r": 200, - "g": 180, - "b": 102 + '1f622': { + 'averageColor': { + 'r': 200, + 'g': 180, + 'b': 102 } }, - "1f623": { - "averageColor": { - "r": 230, - "g": 182, - "b": 64 + '1f623': { + 'averageColor': { + 'r': 230, + 'g': 182, + 'b': 64 } }, - "1f624": { - "averageColor": { - "r": 234, - "g": 198, - "b": 105 + '1f624': { + 'averageColor': { + 'r': 234, + 'g': 198, + 'b': 105 } }, - "1f625": { - "averageColor": { - "r": 216, - "g": 182, - "b": 84 + '1f625': { + 'averageColor': { + 'r': 216, + 'g': 182, + 'b': 84 } }, - "1f626": { - "averageColor": { - "r": 241, - "g": 192, - "b": 70 + '1f626': { + 'averageColor': { + 'r': 241, + 'g': 192, + 'b': 70 } }, - "1f627": { - "averageColor": { - "r": 235, - "g": 186, - "b": 67 + '1f627': { + 'averageColor': { + 'r': 235, + 'g': 186, + 'b': 67 } }, - "1f628": { - "averageColor": { - "r": 214, - "g": 192, - "b": 120 + '1f628': { + 'averageColor': { + 'r': 214, + 'g': 192, + 'b': 120 } }, - "1f629": { - "averageColor": { - "r": 221, - "g": 175, - "b": 66 + '1f629': { + 'averageColor': { + 'r': 221, + 'g': 175, + 'b': 66 } }, - "1f630": { - "averageColor": { - "r": 198, - "g": 189, - "b": 135 + '1f630': { + 'averageColor': { + 'r': 198, + 'g': 189, + 'b': 135 } }, - "1f631": { - "averageColor": { - "r": 216, - "g": 194, - "b": 143 + '1f631': { + 'averageColor': { + 'r': 216, + 'g': 194, + 'b': 143 } }, - "1f632": { - "averageColor": { - "r": 228, - "g": 181, - "b": 67 + '1f632': { + 'averageColor': { + 'r': 228, + 'g': 181, + 'b': 67 } }, - "1f633": { - "averageColor": { - "r": 238, - "g": 186, - "b": 103 + '1f633': { + 'averageColor': { + 'r': 238, + 'g': 186, + 'b': 103 } }, - "1f634": { - "averageColor": { - "r": 223, - "g": 184, - "b": 79 + '1f634': { + 'averageColor': { + 'r': 223, + 'g': 184, + 'b': 79 } }, - "1f635": { - "averageColor": { - "r": 225, - "g": 178, - "b": 62 + '1f635': { + 'averageColor': { + 'r': 225, + 'g': 178, + 'b': 62 } }, - "1f636": { - "averageColor": { - "r": 245, - "g": 195, - "b": 72 + '1f636': { + 'averageColor': { + 'r': 245, + 'g': 195, + 'b': 72 } }, - "1f637": { - "averageColor": { - "r": 246, - "g": 213, - "b": 130 + '1f637': { + 'averageColor': { + 'r': 246, + 'g': 213, + 'b': 130 } }, - "1f638": { - "averageColor": { - "r": 213, - "g": 177, - "b": 83 + '1f638': { + 'averageColor': { + 'r': 213, + 'g': 177, + 'b': 83 } }, - "1f639": { - "averageColor": { - "r": 197, - "g": 176, - "b": 102 + '1f639': { + 'averageColor': { + 'r': 197, + 'g': 176, + 'b': 102 } }, - "1f640": { - "averageColor": { - "r": 229, - "g": 191, - "b": 107 + '1f640': { + 'averageColor': { + 'r': 229, + 'g': 191, + 'b': 107 } }, - "1f645": { - "averageColor": { - "r": 147, - "g": 95, - "b": 128 + '1f645': { + 'averageColor': { + 'r': 147, + 'g': 95, + 'b': 128 } }, - "1f646": { - "averageColor": { - "r": 156, - "g": 103, - "b": 139 + '1f646': { + 'averageColor': { + 'r': 156, + 'g': 103, + 'b': 139 } }, - "1f647": { - "averageColor": { - "r": 106, - "g": 117, - "b": 132 + '1f647': { + 'averageColor': { + 'r': 106, + 'g': 117, + 'b': 132 } }, - "1f648": { - "averageColor": { - "r": 196, - "g": 121, - "b": 97 + '1f648': { + 'averageColor': { + 'r': 196, + 'g': 121, + 'b': 97 } }, - "1f649": { - "averageColor": { - "r": 193, - "g": 123, - "b": 100 + '1f649': { + 'averageColor': { + 'r': 193, + 'g': 123, + 'b': 100 } }, - "1f680": { - "averageColor": { - "r": 130, - "g": 119, - "b": 141 + '1f680': { + 'averageColor': { + 'r': 130, + 'g': 119, + 'b': 141 } }, - "1f681": { - "averageColor": { - "r": 179, - "g": 177, - "b": 131 + '1f681': { + 'averageColor': { + 'r': 179, + 'g': 177, + 'b': 131 } }, - "1f682": { - "averageColor": { - "r": 128, - "g": 80, - "b": 84 + '1f682': { + 'averageColor': { + 'r': 128, + 'g': 80, + 'b': 84 } }, - "1f683": { - "averageColor": { - "r": 138, - "g": 171, - "b": 148 + '1f683': { + 'averageColor': { + 'r': 138, + 'g': 171, + 'b': 148 } }, - "1f684": { - "averageColor": { - "r": 110, - "g": 145, - "b": 172 + '1f684': { + 'averageColor': { + 'r': 110, + 'g': 145, + 'b': 172 } }, - "1f685": { - "averageColor": { - "r": 141, - "g": 173, - "b": 197 + '1f685': { + 'averageColor': { + 'r': 141, + 'g': 173, + 'b': 197 } }, - "1f686": { - "averageColor": { - "r": 172, - "g": 179, - "b": 183 + '1f686': { + 'averageColor': { + 'r': 172, + 'g': 179, + 'b': 183 } }, - "1f687": { - "averageColor": { - "r": 86, - "g": 70, - "b": 78 + '1f687': { + 'averageColor': { + 'r': 86, + 'g': 70, + 'b': 78 } }, - "1f688": { - "averageColor": { - "r": 156, - "g": 150, - "b": 134 + '1f688': { + 'averageColor': { + 'r': 156, + 'g': 150, + 'b': 134 } }, - "1f689": { - "averageColor": { - "r": 130, - "g": 142, - "b": 140 + '1f689': { + 'averageColor': { + 'r': 130, + 'g': 142, + 'b': 140 } }, - "1f690": { - "averageColor": { - "r": 147, - "g": 175, - "b": 196 + '1f690': { + 'averageColor': { + 'r': 147, + 'g': 175, + 'b': 196 } }, - "1f691": { - "averageColor": { - "r": 182, - "g": 166, - "b": 180 + '1f691': { + 'averageColor': { + 'r': 182, + 'g': 166, + 'b': 180 } }, - "1f692": { - "averageColor": { - "r": 187, - "g": 100, - "b": 117 + '1f692': { + 'averageColor': { + 'r': 187, + 'g': 100, + 'b': 117 } }, - "1f693": { - "averageColor": { - "r": 114, - "g": 129, - "b": 142 + '1f693': { + 'averageColor': { + 'r': 114, + 'g': 129, + 'b': 142 } }, - "1f694": { - "averageColor": { - "r": 119, - "g": 141, - "b": 160 + '1f694': { + 'averageColor': { + 'r': 119, + 'g': 141, + 'b': 160 } }, - "1f695": { - "averageColor": { - "r": 198, - "g": 170, - "b": 93 + '1f695': { + 'averageColor': { + 'r': 198, + 'g': 170, + 'b': 93 } }, - "1f696": { - "averageColor": { - "r": 199, - "g": 184, - "b": 121 + '1f696': { + 'averageColor': { + 'r': 199, + 'g': 184, + 'b': 121 } }, - "1f697": { - "averageColor": { - "r": 189, - "g": 77, - "b": 96 + '1f697': { + 'averageColor': { + 'r': 189, + 'g': 77, + 'b': 96 } }, - "1f698": { - "averageColor": { - "r": 98, - "g": 153, - "b": 187 + '1f698': { + 'averageColor': { + 'r': 98, + 'g': 153, + 'b': 187 } }, - "1f699": { - "averageColor": { - "r": 79, - "g": 138, - "b": 184 + '1f699': { + 'averageColor': { + 'r': 79, + 'g': 138, + 'b': 184 } }, - "2b1b": { - "averageColor": { - "r": 34, - "g": 31, - "b": 32 + '2b1b': { + 'averageColor': { + 'r': 34, + 'g': 31, + 'b': 32 } }, - "2b1c": { - "averageColor": { - "r": 230, - "g": 231, - "b": 231 + '2b1c': { + 'averageColor': { + 'r': 230, + 'g': 231, + 'b': 231 } }, - "2b05": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '2b05': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "2b06": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '2b06': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "2b07": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '2b07': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "2b50": { - "averageColor": { - "r": 255, - "g": 172, - "b": 50 + '2b50': { + 'averageColor': { + 'r': 255, + 'g': 172, + 'b': 50 } }, - "2b55": { - "averageColor": { - "r": 221, - "g": 46, - "b": 68 + '2b55': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 68 } }, - "21a9": { - "averageColor": { - "r": 91, - "g": 155, - "b": 204 + '21a9': { + 'averageColor': { + 'r': 91, + 'g': 155, + 'b': 204 } }, - "21aa": { - "averageColor": { - "r": 91, - "g": 155, - "b": 204 + '21aa': { + 'averageColor': { + 'r': 91, + 'g': 155, + 'b': 204 } }, - "23-20e3": { - "averageColor": { - "r": 90, - "g": 155, - "b": 204 + '23-20e3': { + 'averageColor': { + 'r': 90, + 'g': 155, + 'b': 204 } }, - "23e9": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '23e9': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "23ea": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '23ea': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "23eb": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '23eb': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "23ec": { - "averageColor": { - "r": 99, - "g": 160, - "b": 207 + '23ec': { + 'averageColor': { + 'r': 99, + 'g': 160, + 'b': 207 } }, - "23f0": { - "averageColor": { - "r": 225, - "g": 151, - "b": 139 + '23f0': { + 'averageColor': { + 'r': 225, + 'g': 151, + 'b': 139 } }, - "23f3": { - "averageColor": { - "r": 196, - "g": 187, - "b": 151 + '23f3': { + 'averageColor': { + 'r': 196, + 'g': 187, + 'b': 151 } }, - "24c2": { - "averageColor": { - "r": 124, - "g": 175, - "b": 214 + '24c2': { + 'averageColor': { + 'r': 124, + 'g': 175, + 'b': 214 } }, - "25aa": { - "averageColor": { - "r": 35, - "g": 31, - "b": 32 + '25aa': { + 'averageColor': { + 'r': 35, + 'g': 31, + 'b': 32 } }, - "25ab": { - "averageColor": { - "r": 229, - "g": 231, - "b": 231 + '25ab': { + 'averageColor': { + 'r': 229, + 'g': 231, + 'b': 231 } }, - "25b6": { - "averageColor": { - "r": 96, - "g": 158, - "b": 206 + '25b6': { + 'averageColor': { + 'r': 96, + 'g': 158, + 'b': 206 } }, - "25c0": { - "averageColor": { - "r": 96, - "g": 158, - "b": 206 + '25c0': { + 'averageColor': { + 'r': 96, + 'g': 158, + 'b': 206 } }, - "25fb": { - "averageColor": { - "r": 229, - "g": 231, - "b": 232 + '25fb': { + 'averageColor': { + 'r': 229, + 'g': 231, + 'b': 232 } }, - "25fc": { - "averageColor": { - "r": 34, - "g": 31, - "b": 32 + '25fc': { + 'averageColor': { + 'r': 34, + 'g': 31, + 'b': 32 } }, - "25fd": { - "averageColor": { - "r": 230, - "g": 230, - "b": 232 + '25fd': { + 'averageColor': { + 'r': 230, + 'g': 230, + 'b': 232 } }, - "25fe": { - "averageColor": { - "r": 35, - "g": 31, - "b": 32 + '25fe': { + 'averageColor': { + 'r': 35, + 'g': 31, + 'b': 32 } }, - "26a0": { - "averageColor": { - "r": 226, - "g": 181, - "b": 71 + '26a0': { + 'averageColor': { + 'r': 226, + 'g': 181, + 'b': 71 } }, - "26a1": { - "averageColor": { - "r": 243, - "g": 143, - "b": 12 + '26a1': { + 'averageColor': { + 'r': 243, + 'g': 143, + 'b': 12 } }, - "26aa": { - "averageColor": { - "r": 230, - "g": 231, - "b": 231 + '26aa': { + 'averageColor': { + 'r': 230, + 'g': 231, + 'b': 231 } }, - "26ab": { - "averageColor": { - "r": 34, - "g": 31, - "b": 32 + '26ab': { + 'averageColor': { + 'r': 34, + 'g': 31, + 'b': 32 } }, - "26bd": { - "averageColor": { - "r": 146, - "g": 151, - "b": 155 + '26bd': { + 'averageColor': { + 'r': 146, + 'g': 151, + 'b': 155 } }, - "26be": { - "averageColor": { - "r": 221, - "g": 202, - "b": 210 + '26be': { + 'averageColor': { + 'r': 221, + 'g': 202, + 'b': 210 } }, - "26c4": { - "averageColor": { - "r": 209, - "g": 180, - "b": 165 + '26c4': { + 'averageColor': { + 'r': 209, + 'g': 180, + 'b': 165 } }, - "26c5": { - "averageColor": { - "r": 206, - "g": 186, - "b": 150 + '26c5': { + 'averageColor': { + 'r': 206, + 'g': 186, + 'b': 150 } }, - "26ce": { - "averageColor": { - "r": 246, - "g": 166, - "b": 60 + '26ce': { + 'averageColor': { + 'r': 246, + 'g': 166, + 'b': 60 } }, - "26d4": { - "averageColor": { - "r": 203, - "g": 73, - "b": 92 + '26d4': { + 'averageColor': { + 'r': 203, + 'g': 73, + 'b': 92 } }, - "26ea": { - "averageColor": { - "r": 216, - "g": 145, - "b": 99 + '26ea': { + 'averageColor': { + 'r': 216, + 'g': 145, + 'b': 99 } }, - "26f2": { - "averageColor": { - "r": 81, - "g": 137, - "b": 159 + '26f2': { + 'averageColor': { + 'r': 81, + 'g': 137, + 'b': 159 } }, - "26f3": { - "averageColor": { - "r": 139, - "g": 142, - "b": 75 + '26f3': { + 'averageColor': { + 'r': 139, + 'g': 142, + 'b': 75 } }, - "26f5": { - "averageColor": { - "r": 186, - "g": 177, - "b": 149 + '26f5': { + 'averageColor': { + 'r': 186, + 'g': 177, + 'b': 149 } }, - "26fa": { - "averageColor": { - "r": 80, - "g": 118, - "b": 93 + '26fa': { + 'averageColor': { + 'r': 80, + 'g': 118, + 'b': 93 } }, - "26fd": { - "averageColor": { - "r": 182, - "g": 151, - "b": 114 + '26fd': { + 'averageColor': { + 'r': 182, + 'g': 151, + 'b': 114 } }, - "27a1": { - "averageColor": { - "r": 92, - "g": 156, - "b": 205 + '27a1': { + 'averageColor': { + 'r': 92, + 'g': 156, + 'b': 205 } }, - "27b0": { - "averageColor": { - "r": 64, - "g": 64, - "b": 65 + '27b0': { + 'averageColor': { + 'r': 64, + 'g': 64, + 'b': 65 } }, - "27bf": { - "averageColor": { - "r": 121, - "g": 189, - "b": 241 + '27bf': { + 'averageColor': { + 'r': 121, + 'g': 189, + 'b': 241 } }, - "30-20e3": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '30-20e3': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "31-20e3": { - "averageColor": { - "r": 77, - "g": 146, - "b": 200 + '31-20e3': { + 'averageColor': { + 'r': 77, + 'g': 146, + 'b': 200 } }, - "32-20e3": { - "averageColor": { - "r": 89, - "g": 154, - "b": 204 + '32-20e3': { + 'averageColor': { + 'r': 89, + 'g': 154, + 'b': 204 } }, - "33-20e3": { - "averageColor": { - "r": 89, - "g": 154, - "b": 204 + '33-20e3': { + 'averageColor': { + 'r': 89, + 'g': 154, + 'b': 204 } }, - "34-20e3": { - "averageColor": { - "r": 89, - "g": 154, - "b": 204 + '34-20e3': { + 'averageColor': { + 'r': 89, + 'g': 154, + 'b': 204 } }, - "35-20e3": { - "averageColor": { - "r": 89, - "g": 154, - "b": 204 + '35-20e3': { + 'averageColor': { + 'r': 89, + 'g': 154, + 'b': 204 } }, - "36-20e3": { - "averageColor": { - "r": 90, - "g": 154, - "b": 204 + '36-20e3': { + 'averageColor': { + 'r': 90, + 'g': 154, + 'b': 204 } }, - "37-20e3": { - "averageColor": { - "r": 83, - "g": 150, - "b": 202 + '37-20e3': { + 'averageColor': { + 'r': 83, + 'g': 150, + 'b': 202 } }, - "38-20e3": { - "averageColor": { - "r": 95, - "g": 157, - "b": 206 + '38-20e3': { + 'averageColor': { + 'r': 95, + 'g': 157, + 'b': 206 } }, - "39-20e3": { - "averageColor": { - "r": 90, - "g": 154, - "b": 204 + '39-20e3': { + 'averageColor': { + 'r': 90, + 'g': 154, + 'b': 204 } }, - "203c": { - "averageColor": { - "r": 190, - "g": 25, - "b": 48 + '203c': { + 'averageColor': { + 'r': 190, + 'g': 25, + 'b': 48 } }, - "231a": { - "averageColor": { - "r": 172, - "g": 173, - "b": 174 + '231a': { + 'averageColor': { + 'r': 172, + 'g': 173, + 'b': 174 } }, - "231b": { - "averageColor": { - "r": 196, - "g": 187, - "b": 151 + '231b': { + 'averageColor': { + 'r': 196, + 'g': 187, + 'b': 151 } }, - "260e": { - "averageColor": { - "r": 216, - "g": 63, - "b": 83 + '260e': { + 'averageColor': { + 'r': 216, + 'g': 63, + 'b': 83 } }, - "261d": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '261d': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "263a": { - "averageColor": { - "r": 239, - "g": 177, - "b": 79 + '263a': { + 'averageColor': { + 'r': 239, + 'g': 177, + 'b': 79 } }, - "264a": { - "averageColor": { - "r": 124, - "g": 166, - "b": 98 + '264a': { + 'averageColor': { + 'r': 124, + 'g': 166, + 'b': 98 } }, - "264b": { - "averageColor": { - "r": 95, - "g": 158, - "b": 206 + '264b': { + 'averageColor': { + 'r': 95, + 'g': 158, + 'b': 206 } }, - "264c": { - "averageColor": { - "r": 227, - "g": 87, - "b": 105 + '264c': { + 'averageColor': { + 'r': 227, + 'g': 87, + 'b': 105 } }, - "264d": { - "averageColor": { - "r": 246, - "g": 169, - "b": 68 + '264d': { + 'averageColor': { + 'r': 246, + 'g': 169, + 'b': 68 } }, - "264e": { - "averageColor": { - "r": 125, - "g": 167, - "b": 99 + '264e': { + 'averageColor': { + 'r': 125, + 'g': 167, + 'b': 99 } }, - "264f": { - "averageColor": { - "r": 94, - "g": 157, - "b": 205 + '264f': { + 'averageColor': { + 'r': 94, + 'g': 157, + 'b': 205 } }, - "267b": { - "averageColor": { - "r": 105, - "g": 162, - "b": 71 + '267b': { + 'averageColor': { + 'r': 105, + 'g': 162, + 'b': 71 } }, - "267f": { - "averageColor": { - "r": 97, - "g": 159, - "b": 206 + '267f': { + 'averageColor': { + 'r': 97, + 'g': 159, + 'b': 206 } }, - "270a": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '270a': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "270b": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '270b': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "270c": { - "averageColor": { - "r": 217, - "g": 158, - "b": 129 + '270c': { + 'averageColor': { + 'r': 217, + 'g': 158, + 'b': 129 } }, - "270f": { - "averageColor": { - "r": 228, - "g": 179, - "b": 110 + '270f': { + 'averageColor': { + 'r': 228, + 'g': 179, + 'b': 110 } }, - "274c": { - "averageColor": { - "r": 221, - "g": 46, - "b": 67 + '274c': { + 'averageColor': { + 'r': 221, + 'g': 46, + 'b': 67 } }, - "274e": { - "averageColor": { - "r": 151, - "g": 196, - "b": 125 + '274e': { + 'averageColor': { + 'r': 151, + 'g': 196, + 'b': 125 } }, - "303d": { - "averageColor": { - "r": 255, - "g": 204, - "b": 77 + '303d': { + 'averageColor': { + 'r': 255, + 'g': 204, + 'b': 77 } }, - "a9": { - "averageColor": { - "r": 0, - "g": 0, - "b": 0 + 'a9': { + 'averageColor': { + 'r': 0, + 'g': 0, + 'b': 0 } }, - "ae": { - "averageColor": { - "r": 0, - "g": 0, - "b": 0 + 'ae': { + 'averageColor': { + 'r': 0, + 'g': 0, + 'b': 0 } }, - "e50a": { - "averageColor": { - "r": 185, - "g": 173, - "b": 177 + 'e50a': { + 'averageColor': { + 'r': 185, + 'g': 173, + 'b': 177 } } -} +}; diff --git a/01_P/P_4_3_4_02/sketch.js b/01_P/P_4_3_4_02/sketch.js index aca281aa..2df5f961 100644 --- a/01_P/P_4_3_4_02/sketch.js +++ b/01_P/P_4_3_4_02/sketch.js @@ -35,21 +35,20 @@ var icons; // You will have to download the emoji files first // Please see https://github.com/generative-design/Code-Package-p5.js/tree/master/data -var emojisPath = "../../data/twemoji/"; +var emojisPath = '../../data/twemoji/'; var tree; var recording = false; - function preload() { icons = {}; for (var name in emojis) { - icons[name] = loadImage(emojisPath + "16x16/" + name + ".png"); + icons[name] = loadImage(emojisPath + '16x16/' + name + '.png'); } } function setup(){ - createCanvas(80*16, 60*16); + createCanvas(80 * 16, 60 * 16); // setup kdTree to find neareast color in a speedy way var colors = []; @@ -60,8 +59,8 @@ function setup(){ } var distance = function(a, b){ return Math.pow(a.r - b.r, 2) + Math.pow(a.g - b.g, 2) + Math.pow(a.b - b.b, 2); - } - tree = new kdTree(colors, distance, ["r", "g", "b"]); + }; + tree = new kdTree(colors, distance, ['r', 'g', 'b']); // setup camera cam = createCapture(VIDEO); @@ -78,18 +77,18 @@ function draw(){ var titleHeight = height / cam.height; // console.log("tile size: "+titleWidth+" x "+titleHeight); for (var gridX = 0; gridX < cam.width; gridX++){ - for(var gridY = 0; gridY < cam.height; gridY++){ + for (var gridY = 0; gridY < cam.height; gridY++){ // grid position - var posX = titleWidth*gridX; - var posY = titleHeight*gridY; + var posX = titleWidth * gridX; + var posY = titleHeight * gridY; // get current color - var rgba = cam.get(min(gridX,cam.width-1), gridY); + var rgba = cam.get(min(gridX,cam.width - 1), gridY); // find emoji with 'nearest' color var nearest = tree.nearest({r: rgba[0], g: rgba[1], b: rgba[2]}, 1)[0][0]; - //console.log(nearest); + // console.log(nearest); image(icons[nearest.emoji], posX, posY, titleWidth, titleHeight); - //fill(rgba); - //ellipse(posX, posY, titleWidth, titleHeight); + // fill(rgba); + // ellipse(posX, posY, titleWidth, titleHeight); } } diff --git a/02_M/M_1_1_01/sketch.js b/02_M/M_1_1_01/sketch.js index 3c4436b8..1d58c8f2 100644 --- a/02_M/M_1_1_01/sketch.js +++ b/02_M/M_1_1_01/sketch.js @@ -28,7 +28,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var actRandomSeed = 42; @@ -47,7 +47,7 @@ var sketch = function( p ) { p.randomSeed(actRandomSeed); p.beginShape(); - for (var x = 0; x < p.width; x+=10) { + for (var x = 0; x < p.width; x += 10) { var y = p.random(0,p.height); p.vertex(x,y); } @@ -58,7 +58,7 @@ var sketch = function( p ) { p.fill(0); p.randomSeed(actRandomSeed); - for (var x = 0; x < p.width; x+=10) { + for (var x = 0; x < p.width; x += 10) { var y = p.random(0,p.height); p.ellipse(x,y,3,3); } @@ -66,11 +66,11 @@ var sketch = function( p ) { p.mousePressed = function() { actRandomSeed = p.random(100000); - } + }; p.keyReleased = function(){ if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); - } + }; }; diff --git a/02_M/M_1_2_01/sketch.js b/02_M/M_1_2_01/sketch.js index f42f2356..c5b832cb 100644 --- a/02_M/M_1_2_01/sketch.js +++ b/02_M/M_1_2_01/sketch.js @@ -29,7 +29,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var actRandomSeed = 0; var count = 150; @@ -47,13 +47,13 @@ var sketch = function( p ) { var faderX = p.mouseX / p.width; p.randomSeed(actRandomSeed); - var angle = p.radians(360/count); + var angle = p.radians(360 / count); for (var i = 0; i < count; i++) { // positions var randomX = p.random(0,p.width); var randomY = p.random(0,p.height); - var circleX = p.width/2+p.cos(angle*i)*300; - var circleY = p.height/2+p.sin(angle*i)*300; + var circleX = p.width / 2 + p.cos(angle * i) * 300; + var circleY = p.height / 2 + p.sin(angle * i) * 300; var x = p.lerp(randomX,circleX,faderX); var y = p.lerp(randomY,circleY,faderX); @@ -64,11 +64,11 @@ var sketch = function( p ) { p.mousePressed = function() { actRandomSeed = p.random(100000); - } + }; p.keyReleased = function(){ if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); - } + }; }; diff --git a/02_M/M_1_3_01/sketch.js b/02_M/M_1_3_01/sketch.js index d0ab780d..97cf0cb3 100644 --- a/02_M/M_1_3_01/sketch.js +++ b/02_M/M_1_3_01/sketch.js @@ -29,13 +29,13 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { p.setup = function() { p.createCanvas(1024,256); p.strokeWeight(1); p.strokeJoin(p.ROUND); - } + }; p.draw = function() { p.background(255); @@ -64,15 +64,15 @@ var sketch = function( p ) { var y = p.noise(noiseX) * p.height; p.ellipse(x,y,3,3); } - } + }; p.mousePressed = function() { p.noiseSeed(p.random(100000)); - } + }; p.keyReleased = function(){ if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); - } + }; }; diff --git a/02_M/M_1_3_02/sketch.js b/02_M/M_1_3_02/sketch.js index 39484b15..bca21db4 100644 --- a/02_M/M_1_3_02/sketch.js +++ b/02_M/M_1_3_02/sketch.js @@ -28,13 +28,13 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var actRandomSeed = 0; p.setup = function() { p.createCanvas(512,512); - } + }; p.draw = function() { p.background(0); @@ -47,15 +47,15 @@ var sketch = function( p ) { } } p.updatePixels(); - } + }; p.mousePressed = function() { actRandomSeed = p.random(100000); - } + }; p.keyReleased = function() { if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); - } + }; }; diff --git a/02_M/M_1_3_03/sketch.js b/02_M/M_1_3_03/sketch.js index 81aa453b..617889bc 100644 --- a/02_M/M_1_3_03/sketch.js +++ b/02_M/M_1_3_03/sketch.js @@ -33,7 +33,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var octaves = 4; var falloff = 0.5; @@ -43,7 +43,7 @@ var sketch = function( p ) { p.setup = function() { p.createCanvas(512,512); p.cursor(p.CROSS); - } + }; p.draw = function() { p.background(0); @@ -71,18 +71,18 @@ var sketch = function( p ) { } p.updatePixels(); - console.log("octaves: " + octaves + " falloff: " + falloff + " noiseXRange: 0-" + noiseXRange + " noiseYRange: 0-" + noiseYRange); - } + console.log('octaves: ' + octaves + ' falloff: ' + falloff + ' noiseXRange: 0-' + noiseXRange + ' noiseYRange: 0-' + noiseYRange); + }; p.keyReleased = function() { if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); if (p.key == ' ') p.noiseSeed(p.random(100000)); if (p.key == '1') noiseMode = 1; if (p.key == '2') noiseMode = 2; - } + }; p.keyPressed = function() { - if (p.keyCode == p.UP_ARROW) falloff += 0.05; + if (p.keyCode == p.UP_ARROW) falloff += 0.05; if (p.keyCode == p.DOWN_ARROW) falloff -= 0.05; if (falloff > 1) falloff = 1; if (falloff < 0) falloff = 0; @@ -90,7 +90,7 @@ var sketch = function( p ) { if (p.keyCode == p.LEFT_ARROW) octaves--; if (p.keyCode == p.RIGHT_ARROW) octaves++; if (octaves < 0) octaves = 0; - } + }; }; diff --git a/02_M/M_1_4_01/sketch.js b/02_M/M_1_4_01/sketch.js index 980ab6ae..c483d239 100644 --- a/02_M/M_1_4_01/sketch.js +++ b/02_M/M_1_4_01/sketch.js @@ -35,7 +35,6 @@ * s : save png */ - // ------ mesh ------ var tileCount; var zScale; @@ -66,13 +65,12 @@ var targetRotationZ; var clickRotationX; var clickRotationZ; - function setup() { createCanvas(600, 600, WEBGL); colorMode(HSB, 360, 100, 100); cursor(CROSS); - // ------ mesh ------ + // ------ mesh ------ tileCount = 50; zScale = 150; @@ -97,7 +95,7 @@ function setup() { zoom = -300; rotationX = 0; rotationZ = 0; - targetRotationX = PI/3; + targetRotationX = PI / 3; targetRotationZ = 0; } @@ -112,8 +110,8 @@ function draw() { if (mouseIsPressed && mouseButton == RIGHT) { offsetX = mouseX - clickX; offsetY = mouseY - clickY; - targetRotationX = min(max(clickRotationX + offsetY/float(width) * TWO_PI, -HALF_PI), HALF_PI); - targetRotationZ = clickRotationZ + offsetX/float(height) * TWO_PI; + targetRotationX = min(max(clickRotationX + offsetY / float(width) * TWO_PI, -HALF_PI), HALF_PI); + targetRotationZ = clickRotationZ + offsetX / float(height) * TWO_PI; } rotationX += (targetRotationX - rotationX) * 0.25; rotationZ += (targetRotationZ - rotationZ) * 0.25; @@ -122,8 +120,8 @@ function draw() { // ------ mesh noise ------ if (mouseIsPressed && mouseButton == LEFT) { - noiseXRange = mouseX/10; - noiseYRange = mouseY/10; + noiseXRange = mouseX / 10; + noiseYRange = mouseY / 10; } noiseDetail(octaves, falloff); @@ -136,8 +134,8 @@ function draw() { beginShape(TRIANGLE_STRIP); for (var meshX = 0; meshX <= tileCount; meshX++) { - var x = map(meshX, 0, tileCount, -width/2, width/2); - var y = map(meshY, 0, tileCount, -height/2, height/2); + var x = map(meshX, 0, tileCount, -width / 2, width / 2); + var y = map(meshY, 0, tileCount, -height / 2, height / 2); var noiseX = map(meshX, 0, tileCount, 0, noiseXRange); var noiseY = map(meshY, 0, tileCount, 0, noiseYRange); @@ -151,16 +149,15 @@ function draw() { if (z1 <= threshold) { amount = map(z1, 0, threshold, 0.15, 1); interColor = lerpColor(bottomColor, midColor, amount); - } - else { + } else { amount = map(z1, threshold, noiseYMax, 0, 1); interColor = lerpColor(midColor, topColor, amount); } fill(interColor); stroke(strokeColor); strokeWeight(1); - vertex(x, y, z1*zScale); - vertex(x, y+tileSizeY, z2*zScale); + vertex(x, y, z1 * zScale); + vertex(x, y + tileSizeY, z2 * zScale); } endShape(); } diff --git a/02_M/M_1_5_01/sketch.js b/02_M/M_1_5_01/sketch.js index 66666e62..b649813e 100644 --- a/02_M/M_1_5_01/sketch.js +++ b/02_M/M_1_5_01/sketch.js @@ -34,7 +34,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var octaves = 4; var falloff = 0.5; @@ -47,8 +47,8 @@ var sketch = function( p ) { p.preload = function() { // preload svg - arrow = p.loadImage("data/arrow.svg"); - } + arrow = p.loadImage('data/arrow.svg'); + }; p.setup = function() { p.createCanvas(800,800); @@ -56,7 +56,7 @@ var sketch = function( p ) { gridResolutionX = p.round(p.width / tileSize); gridResolutionY = p.round(p.height / tileSize); p.strokeCap(p.SQUARE); - } + }; p.draw = function() { p.background(255); @@ -105,17 +105,17 @@ var sketch = function( p ) { } } - console.log("octaves: " + octaves + " falloff: " + falloff + " noiseXRange: 0-" + noiseXRange + " noiseYRange: 0-" + noiseYRange); - } + console.log('octaves: ' + octaves + ' falloff: ' + falloff + ' noiseXRange: 0-' + noiseXRange + ' noiseYRange: 0-' + noiseYRange); + }; p.keyReleased = function() { if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); if (p.key == 'd' || p.key == 'D') debugMode = !debugMode; if (p.key == ' ') p.noiseSeed(p.random(100000)); - } + }; p.keyPressed = function() { - if (p.keyCode == p.UP_ARROW) falloff += 0.05; + if (p.keyCode == p.UP_ARROW) falloff += 0.05; if (p.keyCode == p.DOWN_ARROW) falloff -= 0.05; if (falloff > 1) falloff = 1; if (falloff < 0) falloff = 0; @@ -123,7 +123,7 @@ var sketch = function( p ) { if (p.keyCode == p.LEFT_ARROW) octaves--; if (p.keyCode == p.RIGHT_ARROW) octaves++; if (octaves < 0) octaves = 0; - } + }; }; diff --git a/02_M/M_1_5_02/Agent.js b/02_M/M_1_5_02/Agent.js index e946e620..1f629e7a 100644 --- a/02_M/M_1_5_02/Agent.js +++ b/02_M/M_1_5_02/Agent.js @@ -4,7 +4,7 @@ var Agent = function() { this.stepSize = myp5.random(1, 5); this.isOutside = false; this.angle; -} +}; Agent.prototype.update = function(strokeWidth) { this.vector.x += myp5.cos(this.angle) * this.stepSize; @@ -18,15 +18,15 @@ Agent.prototype.update = function(strokeWidth) { myp5.line(this.vectorOld.x, this.vectorOld.y, this.vector.x, this.vector.y); this.vectorOld = this.vector.copy(); this.isOutside = false; -} +}; Agent.prototype.update1 = function(noiseScale, noiseStrength, strokeWidth) { this.angle = myp5.noise(this.vector.x / noiseScale, this.vector.y / noiseScale) * noiseStrength; this.update(strokeWidth); -} +}; Agent.prototype.update2 = function(noiseScale, noiseStrength, strokeWidth) { this.angle = myp5.noise(this.vector.x / noiseScale, this.vector.y / noiseScale) * 24; this.angle = (this.angle - myp5.floor(this.angle)) * noiseStrength; this.update(strokeWidth); -} +}; diff --git a/02_M/M_1_5_02/sketch.js b/02_M/M_1_5_02/sketch.js index 5274b753..a9a231e0 100644 --- a/02_M/M_1_5_02/sketch.js +++ b/02_M/M_1_5_02/sketch.js @@ -29,7 +29,7 @@ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var agents = []; var agentCount = 4000; var noiseScale = 300; @@ -42,10 +42,10 @@ var sketch = function( p ) { p.setup = function() { p.createCanvas(p.windowWidth, p.windowHeight); - for(var i = 0; i < agentCount; i++) { + for (var i = 0; i < agentCount; i++) { agents[i] = new Agent(); } - } + }; p.draw = function() { p.fill(255, overlayAlpha); @@ -58,7 +58,7 @@ var sketch = function( p ) { if (drawMode == 1) agents[i].update1(noiseScale, noiseStrength, strokeWidth); else agents[i].update2(noiseScale, noiseStrength, strokeWidth); } - } + }; p.keyReleased = function() { if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); @@ -69,7 +69,7 @@ var sketch = function( p ) { p.noiseSeed(newNoiseSeed); } if (p.keyCode == p.DELETE || p.keyCode == p.BACKSPACE) p.background(255); - } + }; }; var myp5 = new p5(sketch); diff --git a/02_M/M_1_5_03/Agent.js b/02_M/M_1_5_03/Agent.js index f1a98408..b744c624 100644 --- a/02_M/M_1_5_03/Agent.js +++ b/02_M/M_1_5_03/Agent.js @@ -4,7 +4,7 @@ var Agent = function(noiseZRange) { this.stepSize = myp5.random(1, 5); this.angle; this.noiseZ = myp5.random(noiseZRange); -} +}; Agent.prototype.update = function(strokeWidth, noiseZVelocity) { this.vector.x += myp5.cos(this.angle) * this.stepSize; @@ -12,7 +12,7 @@ Agent.prototype.update = function(strokeWidth, noiseZVelocity) { if (this.vector.x < -10) this.vector.x = this.vectorOld.x = myp5.width + 10; if (this.vector.x > myp5.width + 10) this.vector.x = this.vectorOld.x = -10; - if (this.vector.y < - 10) this.vector.y = this.vectorOld.y = myp5.height + 10; + if (this.vector.y < -10) this.vector.y = this.vectorOld.y = myp5.height + 10; if (this.vector.y > myp5.height + 10) this.vector.y = this.vectorOld.y = -10; myp5.strokeWeight(strokeWidth * this.stepSize); @@ -21,17 +21,17 @@ Agent.prototype.update = function(strokeWidth, noiseZVelocity) { this.vectorOld = this.vector.copy(); this.noiseZ += noiseZVelocity; -} +}; Agent.prototype.update1 = function(strokeWidth, noiseScale, noiseStrength, noiseZVelocity) { this.angle = myp5.noise(this.vector.x / noiseScale, this.vector.y / noiseScale, this.noiseZ) * noiseStrength; this.update(strokeWidth, noiseZVelocity); -} +}; Agent.prototype.update2 = function(strokeWidth, noiseScale, noiseStrength, noiseZVelocity) { this.angle = myp5.noise(this.vector.x / noiseScale, this.vector.y / noiseScale, this.noiseZ) * 24; this.angle = (this.angle - myp5.floor(this.angle)) * noiseStrength; this.update(strokeWidth, noiseZVelocity); -} +}; diff --git a/02_M/M_1_5_03/sketch.js b/02_M/M_1_5_03/sketch.js index 23560a43..9fb537c7 100644 --- a/02_M/M_1_5_03/sketch.js +++ b/02_M/M_1_5_03/sketch.js @@ -28,7 +28,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var agents = []; var agentCount = 4000; @@ -44,10 +44,10 @@ var sketch = function( p ) { p.setup = function() { p.createCanvas(p.windowWidth, p.windowHeight); - for(var i = 0; i < agentCount; i++) { + for (var i = 0; i < agentCount; i++) { agents[i] = new Agent(noiseZRange); } - } + }; p.draw = function() { p.fill(255, overlayAlpha); @@ -63,7 +63,7 @@ var sketch = function( p ) { agents[i].update2(strokeWidth, noiseScale, noiseStrength, noiseZVelocity); } } - } + }; p.keyReleased = function() { if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); @@ -75,7 +75,7 @@ var sketch = function( p ) { p.noiseSeed(newNoiseSeed); } if (p.keyCode == p.DELETE || p.keyCode == p.BACKSPACE) p.background(255); - } + }; }; diff --git a/02_M/M_1_5_04/Agent.js b/02_M/M_1_5_04/Agent.js index e64e8eba..33917578 100644 --- a/02_M/M_1_5_04/Agent.js +++ b/02_M/M_1_5_04/Agent.js @@ -12,7 +12,7 @@ var Agent = function(noiseStickingRange, agentAlpha, noiseScale, noiseStrength, this.agentWidthMin = agentWidthMin; this.agentWidthMax = agentWidthMax; this.zNoiseVelocity = zNoiseVelocity; -} +}; Agent.prototype.updateStart = function() { this.angle = myp5.noise(this.vector.x / this.noiseScale, this.vector.y / this.noiseScale, this.noiseZ) * this.noiseStrength; @@ -22,15 +22,15 @@ Agent.prototype.updateStart = function() { if (this.vector.x < -10) this.vector.x = this.vectorOld.x = myp5.width + 10; if (this.vector.x > myp5.width + 10) this.vector.x = this.vectorOld.x = -10; - if (this.vector.y < - 10) this.vector.y = this.vectorOld.y = myp5.height + 10; + if (this.vector.y < -10) this.vector.y = this.vectorOld.y = myp5.height + 10; if (this.vector.y > myp5.height + 10) this.vector.y = this.vectorOld.y = -10; -} +}; Agent.prototype.updateEnd = function() { - this.vectorOld = this.vector.copy(); + this.vectorOld = this.vector.copy(); - this.noiseZ += this.zNoiseVelocity; -} + this.noiseZ += this.zNoiseVelocity; +}; Agent.prototype.update1 = function() { this.updateStart(); @@ -47,7 +47,7 @@ Agent.prototype.update1 = function() { myp5.pop(); this.updateEnd(); -} +}; Agent.prototype.update2 = function() { this.updateStart(); @@ -58,4 +58,4 @@ Agent.prototype.update2 = function() { myp5.ellipse(this.vectorOld.x, this.vectorOld.y, agentWidth, agentWidth); this.updateEnd(); -} +}; diff --git a/02_M/M_1_5_04/sketch.js b/02_M/M_1_5_04/sketch.js index 6ded7649..bcf0b28b 100644 --- a/02_M/M_1_5_04/sketch.js +++ b/02_M/M_1_5_04/sketch.js @@ -28,7 +28,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var agents = []; var agentCount = 2000; @@ -47,10 +47,10 @@ var sketch = function( p ) { p.createCanvas(p.windowWidth, p.windowHeight); p.colorMode(p.HSB, 360, 100, 100, 100); - for(var i = 0; i < agentCount; i++) { + for (var i = 0; i < agentCount; i++) { agents[i] = new Agent(noiseStickingRange, agentAlpha, noiseScale, noiseStrength, strokeWidth, agentWidthMin, agentWidthMax, zNoiseVelocity); } - } + }; p.draw = function() { p.fill(0, 0, 100, overlayAlpha); @@ -66,7 +66,7 @@ var sketch = function( p ) { agents[i].update2(); } } - } + }; p.keyReleased = function() { if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); @@ -78,7 +78,7 @@ var sketch = function( p ) { p.noiseSeed(newNoiseSeed); } if (p.keyCode == p.DELETE || p.keyCode == p.BACKSPACE) p.background(255); - } + }; }; diff --git a/02_M/M_2_1_01/sketch.js b/02_M/M_2_1_01/sketch.js index 4bd51c9c..4cad2067 100644 --- a/02_M/M_2_1_01/sketch.js +++ b/02_M/M_2_1_01/sketch.js @@ -28,7 +28,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var pointCount; var freq = 1; @@ -114,7 +114,7 @@ var sketch = function( p ) { p.ellipse(phiX, phiY, 8, 8); // dot on curve - p.ellipse(t*pointCount, y, 10, 10); + p.ellipse(t * pointCount, y, 10, 10); // dot on circle p.ellipse(x, y, 10, 10); diff --git a/02_M/M_2_2_01/sketch.js b/02_M/M_2_2_01/sketch.js index 15e1ccae..978e2d55 100644 --- a/02_M/M_2_2_01/sketch.js +++ b/02_M/M_2_2_01/sketch.js @@ -29,7 +29,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var pointCount = 600; var freqX = 1; @@ -134,7 +134,7 @@ var sketch = function( p ) { p.ellipse(x, y, 10, 10); - p.pop() + p.pop(); } p.keyPressed = function() { @@ -153,7 +153,7 @@ var sketch = function( p ) { if (p.keyCode == p.LEFT_ARROW) phi -= 15; if (p.keyCode == p.RIGHT_ARROW) phi += 15; - console.log("freqX: " + freqX + ", freqY: " + freqY + ", phi: " + phi); + console.log('freqX: ' + freqX + ', freqY: ' + freqY + ', phi: ' + phi); }; }; diff --git a/02_M/M_2_3_01/sketch.js b/02_M/M_2_3_01/sketch.js index 8f497561..ceb49afa 100644 --- a/02_M/M_2_3_01/sketch.js +++ b/02_M/M_2_3_01/sketch.js @@ -30,7 +30,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var pointCount = 600; var freq = 2; @@ -86,12 +86,12 @@ var sketch = function( p ) { p.strokeWeight(2); p.beginShape(); for (var i = 0; i <= pointCount; i++) { - angle = p.map(i, 0, pointCount, 0, p.TAU); - var info = p.sin(angle * freq + p.radians(phi)); - var carrier = p.cos(angle * modFreq); - y = info * carrier; - y *= p.height / 4; - p.vertex(i,y); + angle = p.map(i, 0, pointCount, 0, p.TAU); + var info = p.sin(angle * freq + p.radians(phi)); + var carrier = p.cos(angle * modFreq); + y = info * carrier; + y *= p.height / 4; + p.vertex(i,y); } p.endShape(); }; @@ -113,7 +113,7 @@ var sketch = function( p ) { if (p.key == '8') modFreq++; modFreq = p.max(modFreq,1); - console.log("freq: " + freq + ", phi: " + phi + ", modFreq: " + modFreq); + console.log('freq: ' + freq + ', phi: ' + phi + ', modFreq: ' + modFreq); }; }; diff --git a/02_M/M_2_3_02/sketch.js b/02_M/M_2_3_02/sketch.js index 88628033..d28fda4f 100644 --- a/02_M/M_2_3_02/sketch.js +++ b/02_M/M_2_3_02/sketch.js @@ -34,7 +34,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var pointCount = 500; var freqX = 1; @@ -133,7 +133,7 @@ var sketch = function( p ) { if (p.key == '0') modFreqY++; modFreqY = p.max(modFreqY,1); - console.log("freqX: " + freqX + ", freqY: " + freqY + ", phi: " + phi + ", modFreqX: " + modFreqX + ", modFreqY: " + modFreqY); + console.log('freqX: ' + freqX + ', freqY: ' + freqY + ', phi: ' + phi + ', modFreqX: ' + modFreqX + ', modFreqY: ' + modFreqY); }; }; diff --git a/02_M/M_2_5_01/sketch.js b/02_M/M_2_5_01/sketch.js index 620b647d..b6d229e9 100644 --- a/02_M/M_2_5_01/sketch.js +++ b/02_M/M_2_5_01/sketch.js @@ -30,7 +30,7 @@ */ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var pointCount = 1000; var lissajousPoints = []; @@ -121,7 +121,7 @@ var sketch = function( p ) { calculateLissajousPoints(); drawLissajous(); - console.log("freqX: " + freqX + ", freqY: " + freqY + ", phi: " + phi + ", modFreqX: " + modFreqX + ", modFreqY: " + modFreqY); + console.log('freqX: ' + freqX + ', freqY: ' + freqY + ', phi: ' + phi + ', modFreqX: ' + modFreqX + ', modFreqY: ' + modFreqY); }; }; diff --git a/02_M/M_2_5_02/sketch.js b/02_M/M_2_5_02/sketch.js index 7e5fa84a..8f462690 100644 --- a/02_M/M_2_5_02/sketch.js +++ b/02_M/M_2_5_02/sketch.js @@ -26,7 +26,7 @@ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { var pointCount = 1500; var pointIndex = 0; var lissajousPoints = []; @@ -68,7 +68,7 @@ var sketch = function( p ) { p.background(backgroundColor); calculateLissajousPoints(); - } + }; p.draw = function() { if (!connectAllPoints) { @@ -89,13 +89,13 @@ var sketch = function( p ) { if (pointIndex >= pointCount - 1) { p.noLoop(); } - } + }; p.keyPressed = function() { if (p.key == 's' || p.key == 'S') { p.saveCanvas(gd.timestamp(), 'png'); } - } + }; var calculateLissajousPoints = function() { p.randomSeed(0); @@ -117,7 +117,7 @@ var sketch = function( p ) { lissajousPoints[i] = p.createVector(x, y); } - } + }; var drawLine = function(vector1, vector2) { var distance = p5.Vector.dist(vector1, vector2); @@ -132,7 +132,7 @@ var sketch = function( p ) { angle * lineAlpha + (pointIndex % 2 * 2)); p.line(vector1.x, vector1.y, vector2.x, vector2.y); } - } + }; }; var myp5 = new p5(sketch); diff --git a/02_M/M_5_1_01/sketch.js b/02_M/M_5_1_01/sketch.js index 1fd26838..793678ed 100644 --- a/02_M/M_5_1_01/sketch.js +++ b/02_M/M_5_1_01/sketch.js @@ -43,7 +43,7 @@ var sketch = function(p) { p.noFill(); p.strokeCap('PROJECT'); - p.translate(width/2, height/2); + p.translate(width / 2, height / 2); drawBranch(0, 0, startRadius, recursionLevel); }; @@ -65,24 +65,24 @@ var sketch = function(p) { // ------ recursive function ------ var drawBranch = function(x, y, radius, level){ - // draw arc - p.strokeWeight(level*2); - p.stroke(0, 130, 164, 100); - p.noFill(); - p.arc(x, y, radius*2, radius*2, -(Math.PI), 0); + // draw arc + p.strokeWeight(level * 2); + p.stroke(0, 130, 164, 100); + p.noFill(); + p.arc(x, y, radius * 2, radius * 2, -(Math.PI), 0); - //draw center dot - p.fill(0); - p.noStroke(); - p.ellipse(x,y, level*1.5,level*1.5); + // draw center dot + p.fill(0); + p.noStroke(); + p.ellipse(x,y, level * 1.5,level * 1.5); - // as long as level is greater than zero, draw sub-branches - if(level > 0){ - // left branch - drawBranch(x-radius, y+radius/2, radius/2, level-1); - // reight branch - drawBranch(x+radius, y+radius/2, radius/2, level-1); - } + // as long as level is greater than zero, draw sub-branches + if (level > 0){ + // left branch + drawBranch(x - radius, y + radius / 2, radius / 2, level - 1); + // reight branch + drawBranch(x + radius, y + radius / 2, radius / 2, level - 1); + } }; }; diff --git a/02_M/M_6_1_01/Node.js b/02_M/M_6_1_01/Node.js index 0fbc219c..97e36f06 100644 --- a/02_M/M_6_1_01/Node.js +++ b/02_M/M_6_1_01/Node.js @@ -11,7 +11,7 @@ var Node = function(x, y, minX, maxX, minY, maxY) { this.velocity = myp5.createVector(); this.pVelocity = myp5.createVector(); this.maxVelocity = 10; -} +}; Node.prototype = Object.create(p5.Vector.prototype); @@ -25,7 +25,7 @@ Node.prototype.attractNodes = function(nodeArray) { this.attract(otherNode); } -} +}; Node.prototype.attract = function(otherNode) { var thisNodeVector = myp5.createVector(this.x, this.y); @@ -41,7 +41,7 @@ Node.prototype.attract = function(otherNode) { otherNode.velocity.x += df.x; otherNode.velocity.y += df.y; } -} +}; Node.prototype.update = function() { this.velocity.limit(this.maxVelocity); @@ -68,6 +68,6 @@ Node.prototype.update = function() { } this.velocity.mult(1 - this.damping); -} +}; -Node.prototype.constructor = Node; \ No newline at end of file +Node.prototype.constructor = Node; diff --git a/02_M/M_6_1_01/sketch.js b/02_M/M_6_1_01/sketch.js index 9c247b41..5cf594f1 100644 --- a/02_M/M_6_1_01/sketch.js +++ b/02_M/M_6_1_01/sketch.js @@ -27,7 +27,7 @@ 'use strict'; -var sketch = function( p ) { +var sketch = function(p) { // An array with nodes var nodes = []; @@ -40,7 +40,7 @@ var sketch = function( p ) { // Create nodes createNodes(); - } + }; p.draw = function() { p.fill(255, 20); @@ -55,15 +55,15 @@ var sketch = function( p ) { // Draw node p.ellipse(nodes[i].x, nodes[i].y, 10, 10); } - } + }; p.keyPressed = function() { if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); - if (p.key =='r' || p.key =='R') { + if (p.key == 'r' || p.key == 'R') { p.background(255); createNodes(); } - } + }; function createNodes() { nodes = []; @@ -79,6 +79,6 @@ var sketch = function( p ) { } } -} +}; var myp5 = new p5(sketch); diff --git a/02_M/M_6_1_02/Node.js b/02_M/M_6_1_02/Node.js index 0fbc219c..97e36f06 100644 --- a/02_M/M_6_1_02/Node.js +++ b/02_M/M_6_1_02/Node.js @@ -11,7 +11,7 @@ var Node = function(x, y, minX, maxX, minY, maxY) { this.velocity = myp5.createVector(); this.pVelocity = myp5.createVector(); this.maxVelocity = 10; -} +}; Node.prototype = Object.create(p5.Vector.prototype); @@ -25,7 +25,7 @@ Node.prototype.attractNodes = function(nodeArray) { this.attract(otherNode); } -} +}; Node.prototype.attract = function(otherNode) { var thisNodeVector = myp5.createVector(this.x, this.y); @@ -41,7 +41,7 @@ Node.prototype.attract = function(otherNode) { otherNode.velocity.x += df.x; otherNode.velocity.y += df.y; } -} +}; Node.prototype.update = function() { this.velocity.limit(this.maxVelocity); @@ -68,6 +68,6 @@ Node.prototype.update = function() { } this.velocity.mult(1 - this.damping); -} +}; -Node.prototype.constructor = Node; \ No newline at end of file +Node.prototype.constructor = Node; diff --git a/02_M/M_6_1_02/Spring.js b/02_M/M_6_1_02/Spring.js index 0bee66ec..dbcfb717 100644 --- a/02_M/M_6_1_02/Spring.js +++ b/02_M/M_6_1_02/Spring.js @@ -5,8 +5,7 @@ var Spring = function(fromNode, toNode, length, stiffness, damping) { this.length = length || 100; this.stiffness = stiffness || 0.6; this.damping = damping || 0.9; -} - +}; // ------ apply forces on spring and attached nodes ------ Spring.prototype.update = function() { @@ -25,4 +24,4 @@ Spring.prototype.update = function() { this.toNode.velocity.add(force); this.fromNode.velocity.add(p5.Vector.mult(force, -1)); -} +}; diff --git a/02_M/M_6_1_02/sketch.js b/02_M/M_6_1_02/sketch.js index 641ebd37..c1b66d7b 100644 --- a/02_M/M_6_1_02/sketch.js +++ b/02_M/M_6_1_02/sketch.js @@ -28,7 +28,6 @@ * s : save png */ - 'use strict'; var sketch = function(p) { @@ -51,7 +50,7 @@ var sketch = function(p) { spring.length = 100; spring.stiffness = 0.6; spring.damping = 0.3; - } + }; p.draw = function() { p.background(255); @@ -78,12 +77,12 @@ var sketch = function(p) { p.fill(0); p.ellipse(nodeA.x, nodeA.y, 20, 20); p.ellipse(nodeB.x, nodeB.y, 20, 20); - } + }; p.keyPressed = function() { if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); - } + }; -} +}; var myp5 = new p5(sketch); diff --git a/02_M/M_6_1_03/Node.js b/02_M/M_6_1_03/Node.js index 0fbc219c..97e36f06 100644 --- a/02_M/M_6_1_03/Node.js +++ b/02_M/M_6_1_03/Node.js @@ -11,7 +11,7 @@ var Node = function(x, y, minX, maxX, minY, maxY) { this.velocity = myp5.createVector(); this.pVelocity = myp5.createVector(); this.maxVelocity = 10; -} +}; Node.prototype = Object.create(p5.Vector.prototype); @@ -25,7 +25,7 @@ Node.prototype.attractNodes = function(nodeArray) { this.attract(otherNode); } -} +}; Node.prototype.attract = function(otherNode) { var thisNodeVector = myp5.createVector(this.x, this.y); @@ -41,7 +41,7 @@ Node.prototype.attract = function(otherNode) { otherNode.velocity.x += df.x; otherNode.velocity.y += df.y; } -} +}; Node.prototype.update = function() { this.velocity.limit(this.maxVelocity); @@ -68,6 +68,6 @@ Node.prototype.update = function() { } this.velocity.mult(1 - this.damping); -} +}; -Node.prototype.constructor = Node; \ No newline at end of file +Node.prototype.constructor = Node; diff --git a/02_M/M_6_1_03/Spring.js b/02_M/M_6_1_03/Spring.js index 0bee66ec..dbcfb717 100644 --- a/02_M/M_6_1_03/Spring.js +++ b/02_M/M_6_1_03/Spring.js @@ -5,8 +5,7 @@ var Spring = function(fromNode, toNode, length, stiffness, damping) { this.length = length || 100; this.stiffness = stiffness || 0.6; this.damping = damping || 0.9; -} - +}; // ------ apply forces on spring and attached nodes ------ Spring.prototype.update = function() { @@ -25,4 +24,4 @@ Spring.prototype.update = function() { this.toNode.velocity.add(force); this.fromNode.velocity.add(p5.Vector.mult(force, -1)); -} +}; diff --git a/02_M/M_6_1_03/sketch.js b/02_M/M_6_1_03/sketch.js index c3586380..32a2ce5e 100644 --- a/02_M/M_6_1_03/sketch.js +++ b/02_M/M_6_1_03/sketch.js @@ -46,7 +46,7 @@ var sketch = function(p) { p.noStroke(); initNodesAndSprings(); - } + }; p.draw = function() { @@ -85,8 +85,7 @@ var sketch = function(p) { p.ellipse(nodes[i].x, nodes[i].y, nodeDiameter - 4, nodeDiameter - 4); } - } - + }; var initNodesAndSprings = function() { // init nodes @@ -118,8 +117,7 @@ var sketch = function(p) { } } - } - + }; p.mousePressed = function() { // Ignore anything greater than this distance @@ -132,14 +130,13 @@ var sketch = function(p) { maxDist = d; } } - } + }; p.mouseReleased = function() { if (selectedNode != null) { selectedNode = null; } - } - + }; p.keyPressed = function() { if (p.key == 's' || p.key == 'S') p.saveCanvas(gd.timestamp(), 'png'); @@ -148,9 +145,8 @@ var sketch = function(p) { p.background(255); initNodesAndSprings(); } - } - + }; -} +}; var myp5 = new p5(sketch); diff --git a/02_M/M_6_2_01/sketch.js b/02_M/M_6_2_01/sketch.js index 8ac0236e..14cb12f4 100644 --- a/02_M/M_6_2_01/sketch.js +++ b/02_M/M_6_2_01/sketch.js @@ -22,21 +22,20 @@ * and prints them to the console */ - 'use strict'; var sketch = function(p) { p.setup = function() { - getLinks("Superegg", function(links) { - console.log("This is what you get:"); + getLinks('Superegg', function(links) { + console.log('This is what you get:'); links.forEach(function(el) { console.log(el); }); }); - } + }; // Helping function that makes the queries to Wikipedia. function getLinks(title, callback, plcontinue, links) { @@ -72,8 +71,6 @@ var sketch = function(p) { }); } - - -} +}; var myp5 = new p5(sketch); diff --git a/02_M/M_6_2_02/sketch.js b/02_M/M_6_2_02/sketch.js index a489e0dd..59f83b2c 100644 --- a/02_M/M_6_2_02/sketch.js +++ b/02_M/M_6_2_02/sketch.js @@ -24,8 +24,6 @@ * left click : starts loading the xml */ - - 'use strict'; var sketch = function(p) { @@ -40,7 +38,7 @@ var sketch = function(p) { p.createCanvas(200, 200); p.strokeWeight(4); - } + }; p.draw = function() { // some animation @@ -52,29 +50,29 @@ var sketch = function(p) { // Has loading already started? if (linksLoading) { - console.log("not loaded yet"); + console.log('not loaded yet'); } // Are the links already loaded? if (linksLoaded) { links.forEach(function(el, i) { - console.log("Link " + i + ": " + el.title); + console.log('Link ' + i + ': ' + el.title); }); linksLoaded = false; } - } + }; p.mouseReleased = function() { - console.log("Starting to load links"); + console.log('Starting to load links'); linksLoading = true; - getLinks("Superegg", function(result) { + getLinks('Superegg', function(result) { linksLoaded = true; linksLoading = false; links = result; }); - } + }; // Helping function that makes the queries to Wikipedia. function getLinks(title, callback, plcontinue, links) { @@ -110,8 +108,6 @@ var sketch = function(p) { }); } - - -} +}; var myp5 = new p5(sketch); diff --git a/03_A/Cover_Barcode/lib/Ribbon.js b/03_A/Cover_Barcode/lib/Ribbon.js index 010bffbf..c6bd3502 100644 --- a/03_A/Cover_Barcode/lib/Ribbon.js +++ b/03_A/Cover_Barcode/lib/Ribbon.js @@ -1,4 +1,3 @@ - function Ribbon(colorPoints, additionalN, options) { this.colorPoints = []; @@ -33,7 +32,7 @@ function Ribbon(colorPoints, additionalN, options) { fill(255); noStroke(); rect(-30, -2, 60, 10); - } + }; } function ColorPoint(num, col, fitT) { @@ -44,7 +43,7 @@ function ColorPoint(num, col, fitT) { this.alphaIndex = 0; ColorPoint.prototype.draw = function(tAll, opt) { - //strokeCap(SQUARE); + // strokeCap(SQUARE); strokeWeight(0.3); stroke(0); noFill(); @@ -81,7 +80,7 @@ function ColorPoint(num, col, fitT) { var y2 = lerp(y2o, y2u, t); var afac = 1 - 2 * abs(t - 0.5); - //var afac = 1 - pow(2 * (t - 0.5), 2); + // var afac = 1 - pow(2 * (t - 0.5), 2); var alph = a * afac; alph = pow(alph / 255, 0.75) * 255; @@ -92,7 +91,7 @@ function ColorPoint(num, col, fitT) { var by2 = lerp(y2o, y2u, t); var bsw = barcodeInfo[i].width * bs / bw * 14 * map(tAll, 0, 1, 1, 0.3); var balph = lerp(a, alph, tAll); - // var bcol = + // var bcol = var fitx1 = lerp(bx1, x1, newFit); var fity1 = lerp(by1, y1, newFit); @@ -113,10 +112,9 @@ function ColorPoint(num, col, fitT) { penW = newW; penFit = newFit; - } + }; } - function angleDifference(theAngle1, theAngle2) { var a1 = (theAngle1 % TWO_PI + TWO_PI) % TWO_PI; var a2 = (theAngle2 % TWO_PI + TWO_PI) % TWO_PI; diff --git a/03_A/Cover_Barcode/lib/barcodeInfo.js b/03_A/Cover_Barcode/lib/barcodeInfo.js index 72993c18..a274de19 100644 --- a/03_A/Cover_Barcode/lib/barcodeInfo.js +++ b/03_A/Cover_Barcode/lib/barcodeInfo.js @@ -1,32 +1,32 @@ barcodeInfo = [ - { x: 12.5, y: 7.4, width: 1.8, height: 71.3 }, - { x: 15.9, y: 7.4, width: 2.6, height: 71.3 }, - { x: 20.2, y: 7.4, width: 5.8, height: 71.3 }, - { x: 28.6, y: 7.4, width: 3.2, height: 71.3 }, - { x: 37.7, y: 7.4, width: 2.6, height: 71.3 }, - { x: 43.7, y: 7.4, width: 2.4, height: 71.3 }, - { x: 47.8, y: 7.4, width: 2.6, height: 71.3 }, - { x: 57.8, y: 7.4, width: 1.8, height: 71.3 }, - { x: 62.1, y: 7.4, width: 3.4, height: 71.3 }, - { x: 67.9, y: 7.4, width: 6, height: 71.3 }, - { x: 78, y: 7.4, width: 1.8, height: 71.3 }, - { x: 85.7, y: 7.4, width: 1.6, height: 71.3 }, - { x: 89.9, y: 7.4, width: 1.6, height: 71.3 }, - { x: 97.4, y: 7.4, width: 4.2, height: 71.3 }, - { x: 103.2, y: 7.4, width: 2.6, height: 71.3 }, - { x: 107.4, y: 7.4, width: 1.8, height: 71.3 }, - { x: 111.7, y: 7.4, width: 1.6, height: 71.3 }, - { x: 120.9, y: 7.4, width: 2.4, height: 71.3 }, - { x: 125.2, y: 7.4, width: 5.8, height: 71.3 }, - { x: 133.4, y: 7.4, width: 1.8, height: 71.3 }, - { x: 139.5, y: 7.4, width: 5.8, height: 71.3 }, - { x: 146.8, y: 7.4, width: 1.8, height: 71.3 }, - { x: 152.8, y: 7.4, width: 5.8, height: 71.3 }, - { x: 162.9, y: 7.4, width: 1.8, height: 71.3 }, - { x: 167.1, y: 7.4, width: 3.4, height: 71.3 }, - { x: 172.9, y: 7.4, width: 4.2, height: 71.3 }, - { x: 180.6, y: 7.4, width: 5.8, height: 71.3 }, - { x: 188.9, y: 7.4, width: 1.8, height: 71.3 }, - { x: 194.9, y: 7.4, width: 1.6, height: 71.3 }, - { x: 198.1, y: 7.4, width: 2.6, height: 71.3 } -] \ No newline at end of file + { x: 12.5, y: 7.4, width: 1.8, height: 71.3 }, + { x: 15.9, y: 7.4, width: 2.6, height: 71.3 }, + { x: 20.2, y: 7.4, width: 5.8, height: 71.3 }, + { x: 28.6, y: 7.4, width: 3.2, height: 71.3 }, + { x: 37.7, y: 7.4, width: 2.6, height: 71.3 }, + { x: 43.7, y: 7.4, width: 2.4, height: 71.3 }, + { x: 47.8, y: 7.4, width: 2.6, height: 71.3 }, + { x: 57.8, y: 7.4, width: 1.8, height: 71.3 }, + { x: 62.1, y: 7.4, width: 3.4, height: 71.3 }, + { x: 67.9, y: 7.4, width: 6, height: 71.3 }, + { x: 78, y: 7.4, width: 1.8, height: 71.3 }, + { x: 85.7, y: 7.4, width: 1.6, height: 71.3 }, + { x: 89.9, y: 7.4, width: 1.6, height: 71.3 }, + { x: 97.4, y: 7.4, width: 4.2, height: 71.3 }, + { x: 103.2, y: 7.4, width: 2.6, height: 71.3 }, + { x: 107.4, y: 7.4, width: 1.8, height: 71.3 }, + { x: 111.7, y: 7.4, width: 1.6, height: 71.3 }, + { x: 120.9, y: 7.4, width: 2.4, height: 71.3 }, + { x: 125.2, y: 7.4, width: 5.8, height: 71.3 }, + { x: 133.4, y: 7.4, width: 1.8, height: 71.3 }, + { x: 139.5, y: 7.4, width: 5.8, height: 71.3 }, + { x: 146.8, y: 7.4, width: 1.8, height: 71.3 }, + { x: 152.8, y: 7.4, width: 5.8, height: 71.3 }, + { x: 162.9, y: 7.4, width: 1.8, height: 71.3 }, + { x: 167.1, y: 7.4, width: 3.4, height: 71.3 }, + { x: 172.9, y: 7.4, width: 4.2, height: 71.3 }, + { x: 180.6, y: 7.4, width: 5.8, height: 71.3 }, + { x: 188.9, y: 7.4, width: 1.8, height: 71.3 }, + { x: 194.9, y: 7.4, width: 1.6, height: 71.3 }, + { x: 198.1, y: 7.4, width: 2.6, height: 71.3 } +]; diff --git a/03_A/Cover_Barcode/lib/imageColors.js b/03_A/Cover_Barcode/lib/imageColors.js index f108ce85..901733cd 100644 --- a/03_A/Cover_Barcode/lib/imageColors.js +++ b/03_A/Cover_Barcode/lib/imageColors.js @@ -1,63 +1,63 @@ imageColors = [{ - "n": 0, - "r": 214, - "g": 0, - "b": 100, - "a": 40 - }, { - "n": 1, - "r": 196, - "g": 39, - "b": 0, - "a": 90 - }, { - "n": 2, - "r": 0, - "g": 85, - "b": 150, - "a": 20 - }, { - "n": 3, - "r": 100, - "g": 207, - "b": 148, - "a": 50 - }, { - "n": 4, - "r": 150, - "g": 10, - "b": 120, - "a": 40 - }, { - "n": 5, - "r": 60, - "g": 140, - "b": 120, - "a": 30 - }, { - "n": 6, - "r": 170, - "g": 70, - "b": 140, - "a": 10 - }, { - "n": 7, - "r": 80, - "g": 185, - "b": 185, - "a": 20 - }, { - "n": 8, - "r": 255, - "g": 176, - "b": 0, - "a": 30 - }, { - "n": 9, - "r": 100, - "g": 120, - "b": 160, - "a": 100 - } + 'n': 0, + 'r': 214, + 'g': 0, + 'b': 100, + 'a': 40 +}, { + 'n': 1, + 'r': 196, + 'g': 39, + 'b': 0, + 'a': 90 +}, { + 'n': 2, + 'r': 0, + 'g': 85, + 'b': 150, + 'a': 20 +}, { + 'n': 3, + 'r': 100, + 'g': 207, + 'b': 148, + 'a': 50 +}, { + 'n': 4, + 'r': 150, + 'g': 10, + 'b': 120, + 'a': 40 +}, { + 'n': 5, + 'r': 60, + 'g': 140, + 'b': 120, + 'a': 30 +}, { + 'n': 6, + 'r': 170, + 'g': 70, + 'b': 140, + 'a': 10 +}, { + 'n': 7, + 'r': 80, + 'g': 185, + 'b': 185, + 'a': 20 +}, { + 'n': 8, + 'r': 255, + 'g': 176, + 'b': 0, + 'a': 30 +}, { + 'n': 9, + 'r': 100, + 'g': 120, + 'b': 160, + 'a': 100 +} -] \ No newline at end of file +]; diff --git a/03_A/Cover_Barcode/sketch.js b/03_A/Cover_Barcode/sketch.js index 356cee7a..ba2439c2 100644 --- a/03_A/Cover_Barcode/sketch.js +++ b/03_A/Cover_Barcode/sketch.js @@ -37,7 +37,6 @@ var coverHeight = 400; var barcodeNumbers = [9, 9, 7, 8, 3, 8, 7, 4, 3, 9, 9, 0, 2, 9]; - function setup() { createCanvas(coverWidth * mmToPx, coverHeight * mmToPx); @@ -56,12 +55,11 @@ function setup() { // Barcode ribbon = new Ribbon(colorPoints, 150, { n: barcodeInfo.length - 1, step: 0.15, damp: 0.02, minW: 10, maxW: 50 }); - } function draw() { - //background(255); - translate(150*mmToPx, 50*mmToPx); + // background(255); + translate(150 * mmToPx, 50 * mmToPx); rotate(radians(180)); scale(mmToPx); @@ -70,8 +68,6 @@ function draw() { noLoop(); } - - function keyReleased() { if (key == 's' || key == 'S') saveCanvas(gd.timestamp(), 'png'); } diff --git a/03_A/Cover_Image_Colors/sketch.js b/03_A/Cover_Image_Colors/sketch.js index aa45970a..6108d8ca 100644 --- a/03_A/Cover_Image_Colors/sketch.js +++ b/03_A/Cover_Image_Colors/sketch.js @@ -55,7 +55,7 @@ function setup() { for (var i = 0; i < imageSamples.length; i++) { var c = imageSamples[i].sampleColor; - imageColors.push({ r: int(red(c)), g: int(green(c)), b: int(blue(c)), a: int(alpha(c)) }) + imageColors.push({ r: int(red(c)), g: int(green(c)), b: int(blue(c)), a: int(alpha(c)) }); } console.log(imageColors); @@ -66,10 +66,9 @@ function draw() { imageColors.forEach(function(imageColor, index) { fill(imageColor.r, imageColor.g, imageColor.b); rect(index * w, 0, w, height); - }) + }); } - function ImageSample(img, index, y, h) { this.index = index; this.img = img.get(0, img.height * y, img.width, img.height * h); @@ -122,7 +121,7 @@ function getMostSaturatedColorNotGreen(arr) { for (var i = 0; i < arr.length; i++) { var cc = arr[i]; if (abs(hue(cc) - hue(primaryGreen)) < 30) { - //console.log("similar"); + // console.log("similar"); continue; } var sat = saturation(cc) + brightness(cc); diff --git a/03_A/Cover_Lines/lib/Ribbon.js b/03_A/Cover_Lines/lib/Ribbon.js index 395ea098..e30bcf19 100644 --- a/03_A/Cover_Lines/lib/Ribbon.js +++ b/03_A/Cover_Lines/lib/Ribbon.js @@ -1,4 +1,3 @@ - function Ribbon(colorPoints, additionalN, options) { this.colorPoints = []; @@ -26,7 +25,7 @@ function Ribbon(colorPoints, additionalN, options) { var t = map(i, 0, this.colorPoints.length - 1, 0, 1); this.colorPoints[i].draw(t, options); } - } + }; } function ColorPoint(col) { @@ -35,7 +34,7 @@ function ColorPoint(col) { this.alphaIndex = 0; ColorPoint.prototype.draw = function(t, opt) { - //strokeCap(SQUARE); + // strokeCap(SQUARE); strokeWeight(0.3); stroke(this.col); noFill(); @@ -68,9 +67,9 @@ function ColorPoint(col) { var y2 = lerp(y2o, y2u, t); var afac = 1 - 2 * abs(t - 0.5); - //var afac = 1 - pow(2 * (t - 0.5), 2); + // var afac = 1 - pow(2 * (t - 0.5), 2); var alph = a * afac; - alph = pow(alph / 255, 0.75) * 255; + alph = pow(alph / 255, 0.75) * 255; stroke(r, g, b, alph); line(x1, y1, x2, y2); @@ -81,11 +80,9 @@ function ColorPoint(col) { penA = newA; penW = newW; - } + }; } - - function angleDifference(theAngle1, theAngle2) { var a1 = (theAngle1 % TWO_PI + TWO_PI) % TWO_PI; var a2 = (theAngle2 % TWO_PI + TWO_PI) % TWO_PI; diff --git a/03_A/Cover_Lines/lib/imageColors.js b/03_A/Cover_Lines/lib/imageColors.js index 56cabfa5..0edbd7aa 100644 --- a/03_A/Cover_Lines/lib/imageColors.js +++ b/03_A/Cover_Lines/lib/imageColors.js @@ -1,1291 +1,1291 @@ imageColors = [{ - "r": 153, - "g": 0, - "b": 158, - "a": 199 -}, { - "r": 0, - "g": 75, - "b": 226, - "a": 26 -}, { - "r": 144, - "g": 0, - "b": 0, - "a": 219 -}, { - "r": 175, - "g": 0, - "b": 195, - "a": 98 -}, { - "r": 144, - "g": 0, - "b": 0, - "a": 219 -}, { - "r": 41, - "g": 186, - "b": 0, - "a": 219 -}, { - "r": 41, - "g": 186, - "b": 0, - "a": 219 -}, { - "r": 38, - "g": 0, - "b": 154, - "a": 211 -}, { - "r": 235, - "g": 198, - "b": 0, - "a": 141 -}, { - "r": 113, - "g": 0, - "b": 166, - "a": 135 -}, { - "r": 0, - "g": 178, - "b": 175, - "a": 251 -}, { - "r": 218, - "g": 200, - "b": 0, - "a": 224 -}, { - "r": 0, - "g": 135, - "b": 200, - "a": 126 -}, { - "r": 0, - "g": 67, - "b": 203, - "a": 15 -}, { - "r": 0, - "g": 156, - "b": 183, - "a": 238 -}, { - "r": 206, - "g": 93, - "b": 0, - "a": 63 -}, { - "r": 0, - "g": 146, - "b": 178, - "a": 251 -}, { - "r": 0, - "g": 226, - "b": 103, - "a": 98 -}, { - "r": 0, - "g": 250, - "b": 205, - "a": 179 -}, { - "r": 250, - "g": 0, - "b": 23, - "a": 171 -}, { - "r": 209, - "g": 0, - "b": 65, - "a": 179 -}, { - "r": 0, - "g": 191, - "b": 218, - "a": 174 -}, { - "r": 245, - "g": 177, - "b": 0, - "a": 135 -}, { - "r": 0, - "g": 113, - "b": 174, - "a": 231 -}, { - "r": 0, - "g": 173, - "b": 192, - "a": 236 -}, { - "r": 248, - "g": 197, - "b": 0, - "a": 191 -}, { - "r": 0, - "g": 75, - "b": 226, - "a": 26 -}, { - "r": 195, - "g": 0, - "b": 204, - "a": 114 -}, { - "r": 128, - "g": 0, - "b": 183, - "a": 111 -}, { - "r": 232, - "g": 215, - "b": 0, - "a": 195 -}, { - "r": 0, - "g": 152, - "b": 228, - "a": 106 -}, { - "r": 250, - "g": 25, - "b": 0, - "a": 172 -}, { - "r": 214, - "g": 107, - "b": 0, - "a": 18 -}, { - "r": 255, - "g": 0, - "b": 0, - "a": 2 -}, { - "r": 255, - "g": 0, - "b": 0, - "a": 2 -}, { - "r": 234, - "g": 89, - "b": 0, - "a": 37 -}, { - "r": 0, - "g": 63, - "b": 207, - "a": 16 -}, { - "r": 196, - "g": 19, - "b": 0, - "a": 13 -}, { - "r": 207, - "g": 79, - "b": 0, - "a": 16 -}, { - "r": 0, - "g": 234, - "b": 109, - "a": 239 -}, { - "r": 47, - "g": 219, - "b": 0, - "a": 195 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 247, - "b": 118, - "a": 98 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 246, - "b": 112, - "a": 86 -}, { - "r": 237, - "g": 47, - "b": 0, - "a": 42 -}, { - "r": 225, - "g": 0, - "b": 0, - "a": 34 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 200, - "g": 80, - "b": 0, - "a": 50 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 207, - "g": 69, - "b": 0, - "a": 58 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 67, - "g": 254, - "b": 0, - "a": 15 -}, { - "r": 0, - "g": 247, - "b": 123, - "a": 98 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 249, - "g": 222, - "b": 0, - "a": 147 -}, { - "r": 0, - "g": 10, - "b": 254, - "a": 203 -}, { - "r": 27, - "g": 255, - "b": 0, - "a": 223 -}, { - "r": 0, - "g": 10, - "b": 254, - "a": 203 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 116, - "g": 251, - "b": 0, - "a": 227 -}, { - "r": 255, - "g": 10, - "b": 0, - "a": 199 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 240, - "g": 0, - "b": 0, - "a": 50 -}, { - "r": 179, - "g": 38, - "b": 0, - "a": 131 -}, { - "r": 0, - "g": 128, - "b": 205, - "a": 159 -}, { - "r": 245, - "g": 24, - "b": 0, - "a": 82 -}, { - "r": 0, - "g": 52, - "b": 211, - "a": 57 -}, { - "r": 0, - "g": 121, - "b": 245, - "a": 205 -}, { - "r": 0, - "g": 190, - "b": 246, - "a": 220 -}, { - "r": 77, - "g": 0, - "b": 169, - "a": 250 -}, { - "r": 241, - "g": 0, - "b": 225, - "a": 237 -}, { - "r": 0, - "g": 188, - "b": 188, - "a": 26 -}, { - "r": 0, - "g": 250, - "b": 192, - "a": 191 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 214, - "g": 0, - "b": 47, - "a": 171 -}, { - "r": 0, - "g": 243, - "b": 108, - "a": 65 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 129, - "b": 178, - "a": 63 -}, { - "r": 198, - "g": 0, - "b": 205, - "a": 159 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 238, - "b": 107, - "a": 78 -}, { - "r": 245, - "g": 22, - "b": 0, - "a": 80 -}, { - "r": 0, - "g": 98, - "b": 217, - "a": 155 -}, { - "r": 0, - "g": 244, - "b": 111, - "a": 73 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 198, - "g": 0, - "b": 205, - "a": 159 -}, { - "r": 211, - "g": 0, - "b": 19, - "a": 195 -}, { - "r": 244, - "g": 0, - "b": 27, - "a": 74 -}, { - "r": 194, - "g": 54, - "b": 0, - "a": 41 -}, { - "r": 0, - "g": 231, - "b": 102, - "a": 55 -}, { - "r": 0, - "g": 243, - "b": 113, - "a": 243 -}, { - "r": 131, - "g": 0, - "b": 187, - "a": 163 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 250, - "b": 118, - "a": 155 -}, { - "r": 0, - "g": 241, - "b": 124, - "a": 114 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 242, - "g": 34, - "b": 0, - "a": 58 -}, { - "r": 248, - "g": 0, - "b": 43, - "a": 187 -}, { - "r": 237, - "g": 0, - "b": 0, - "a": 42 -}, { - "r": 0, - "g": 244, - "b": 111, - "a": 73 -}, { - "r": 249, - "g": 0, - "b": 47, - "a": 188 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 233, - "g": 0, - "b": 0, - "a": 34 -}, { - "r": 0, - "g": 245, - "b": 114, - "a": 78 -}, { - "r": 180, - "g": 140, - "b": 0, - "a": 50 -}, { - "r": 177, - "g": 177, - "b": 0, - "a": 23 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 29, - "g": 0, - "b": 174, - "a": 34 -}, { - "r": 87, - "g": 0, - "b": 174, - "a": 34 -}, { - "r": 0, - "g": 240, - "b": 120, - "a": 50 -}, { - "r": 233, - "g": 0, - "b": 0, - "a": 34 -}, { - "r": 0, - "g": 242, - "b": 138, - "a": 58 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 255, - "g": 0, - "b": 0, - "a": 2 -}, { - "r": 0, - "g": 243, - "b": 91, - "a": 66 -}, { - "r": 0, - "g": 107, - "b": 214, - "a": 18 -}, { - "r": 214, - "g": 0, - "b": 107, - "a": 18 -}, { - "r": 196, - "g": 39, - "b": 0, - "a": 13 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 214, - "g": 0, - "b": 107, - "a": 18 -}, { - "r": 194, - "g": 0, - "b": 121, - "a": 245 -}, { - "r": 203, - "g": 138, - "b": 0, - "a": 155 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 177, - "g": 0, - "b": 177, - "a": 23 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 174, - "g": 0, - "b": 204, - "a": 34 -}, { - "r": 138, - "g": 0, - "b": 188, - "a": 103 -}, { - "r": 188, - "g": 0, - "b": 188, - "a": 26 -}, { - "r": 161, - "g": 214, - "b": 0, - "a": 18 -}, { - "r": 242, - "g": 34, - "b": 0, - "a": 58 -}, { - "r": 180, - "g": 0, - "b": 186, - "a": 175 -}, { - "r": 130, - "g": 97, - "b": 0, - "a": 251 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 233, - "g": 0, - "b": 0, - "a": 34 -}, { - "r": 0, - "g": 0, - "b": 255, - "a": 2 -}, { - "r": 0, - "g": 240, - "b": 122, - "a": 52 -}, { - "r": 0, - "g": 242, - "b": 109, - "a": 63 -}, { - "r": 233, - "g": 0, - "b": 0, - "a": 34 -}, { - "r": 0, - "g": 245, - "b": 114, - "a": 78 -}, { - "r": 23, - "g": 0, - "b": 187, - "a": 87 -}, { - "r": 0, - "g": 240, - "b": 105, - "a": 53 -}, { - "r": 0, - "g": 247, - "b": 123, - "a": 98 -}, { - "r": 0, - "g": 222, - "b": 105, - "a": 87 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 4, - "b": 157, - "a": 207 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 226, - "g": 0, - "b": 75, - "a": 26 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 246, - "g": 212, - "b": 0, - "a": 119 -}, { - "r": 243, - "g": 19, - "b": 0, - "a": 159 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 233, - "g": 0, - "b": 0, - "a": 34 -}, { - "r": 145, - "g": 0, - "b": 254, - "a": 7 -}, { - "r": 255, - "g": 0, - "b": 0, - "a": 2 -}, { - "r": 214, - "g": 0, - "b": 0, - "a": 18 -}, { - "r": 185, - "g": 0, - "b": 23, - "a": 10 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 207, - "g": 34, - "b": 0, - "a": 58 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 242, - "b": 117, - "a": 63 -}, { - "r": 0, - "g": 148, - "b": 191, - "a": 12 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 80, - "b": 214, - "a": 18 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 0, - "b": 255, - "a": 2 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 174, - "g": 0, - "b": 204, - "a": 34 -}, { - "r": 177, - "g": 0, - "b": 177, - "a": 23 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 236, - "b": 113, - "a": 82 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 128, - "g": 0, - "b": 184, - "a": 127 -}, { - "r": 128, - "g": 0, - "b": 184, - "a": 127 -}, { - "r": 0, - "g": 21, - "b": 191, - "a": 12 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 107, - "b": 214, - "a": 18 -}, { - "r": 228, - "g": 8, - "b": 0, - "a": 29 -}, { - "r": 0, - "g": 244, - "b": 108, - "a": 74 -}, { - "r": 0, - "g": 247, - "b": 121, - "a": 98 -}, { - "r": 232, - "g": 15, - "b": 0, - "a": 211 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 226, - "b": 123, - "a": 98 -}, { - "r": 0, - "g": 188, - "b": 48, - "a": 41 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 213, - "g": 122, - "b": 0, - "a": 152 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 242, - "g": 122, - "b": 0, - "a": 197 -}, { - "r": 203, - "g": 146, - "b": 0, - "a": 247 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 132, - "b": 215, - "a": 122 -}, { - "r": 0, - "g": 19, - "b": 247, - "a": 106 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 207, - "g": 75, - "b": 0, - "a": 26 -}, { - "r": 0, - "g": 100, - "b": 168, - "a": 173 -}, { - "r": 0, - "g": 197, - "b": 197, - "a": 207 -}, { - "r": 170, - "g": 0, - "b": 165, - "a": 191 -}, { - "r": 0, - "g": 36, - "b": 211, - "a": 111 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 245, - "b": 110, - "a": 81 -}, { - "r": 161, - "g": 0, - "b": 194, - "a": 63 -}, { - "r": 92, - "g": 0, - "b": 223, - "a": 187 -}, { - "r": 207, - "g": 51, - "b": 0, - "a": 58 -}, { - "r": 0, - "g": 33, - "b": 171, - "a": 243 -}, { - "r": 0, - "g": 52, - "b": 217, - "a": 235 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 21, - "g": 191, - "b": 0, - "a": 12 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 114, - "b": 190, - "a": 106 -}, { - "r": 0, - "g": 82, - "b": 229, - "a": 111 -}, { - "r": 0, - "g": 138, - "b": 222, - "a": 147 -}, { - "r": 183, - "g": 26, - "b": 0, - "a": 39 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 247, - "b": 121, - "a": 98 -}, { - "r": 0, - "g": 245, - "b": 111, - "a": 78 -}, { - "r": 0, - "g": 213, - "b": 101, - "a": 243 -}, { - "r": 0, - "g": 237, - "b": 97, - "a": 73 -}, { - "r": 0, - "g": 245, - "b": 98, - "a": 82 -}, { - "r": 0, - "g": 245, - "b": 98, - "a": 82 -}, { - "r": 4, - "g": 0, - "b": 146, - "a": 223 -}, { - "r": 0, - "g": 240, - "b": 120, - "a": 50 -}, { - "r": 231, - "g": 0, - "b": 121, - "a": 251 -}, { - "r": 203, - "g": 135, - "b": 0, - "a": 15 -}, { - "r": 203, - "g": 135, - "b": 0, - "a": 15 -}, { - "r": 0, - "g": 141, - "b": 92, - "a": 36 -}, { - "r": 183, - "g": 0, - "b": 121, - "a": 174 -}, { - "r": 0, - "g": 156, - "b": 200, - "a": 249 -}, { - "r": 0, - "g": 160, - "b": 214, - "a": 245 -}, { - "r": 195, - "g": 0, - "b": 113, - "a": 251 -}, { - "r": 226, - "g": 0, - "b": 120, - "a": 251 -}, { - "r": 223, - "g": 184, - "b": 0, - "a": 155 -}, { - "r": 191, - "g": 162, - "b": 0, - "a": 206 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 231, - "g": 23, - "b": 0, - "a": 32 -}, { - "r": 0, - "g": 21, - "b": 191, - "a": 12 -}, { - "r": 0, - "g": 0, - "b": 185, - "a": 10 -}, { - "r": 177, - "g": 133, - "b": 0, - "a": 23 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 177, - "g": 133, - "b": 0, - "a": 23 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}, { - "r": 216, - "g": 0, - "b": 116, - "a": 46 -}, { - "r": 203, - "g": 135, - "b": 0, - "a": 15 -}, { - "r": 0, - "g": 185, - "b": 185, - "a": 10 -}] \ No newline at end of file + 'r': 153, + 'g': 0, + 'b': 158, + 'a': 199 +}, { + 'r': 0, + 'g': 75, + 'b': 226, + 'a': 26 +}, { + 'r': 144, + 'g': 0, + 'b': 0, + 'a': 219 +}, { + 'r': 175, + 'g': 0, + 'b': 195, + 'a': 98 +}, { + 'r': 144, + 'g': 0, + 'b': 0, + 'a': 219 +}, { + 'r': 41, + 'g': 186, + 'b': 0, + 'a': 219 +}, { + 'r': 41, + 'g': 186, + 'b': 0, + 'a': 219 +}, { + 'r': 38, + 'g': 0, + 'b': 154, + 'a': 211 +}, { + 'r': 235, + 'g': 198, + 'b': 0, + 'a': 141 +}, { + 'r': 113, + 'g': 0, + 'b': 166, + 'a': 135 +}, { + 'r': 0, + 'g': 178, + 'b': 175, + 'a': 251 +}, { + 'r': 218, + 'g': 200, + 'b': 0, + 'a': 224 +}, { + 'r': 0, + 'g': 135, + 'b': 200, + 'a': 126 +}, { + 'r': 0, + 'g': 67, + 'b': 203, + 'a': 15 +}, { + 'r': 0, + 'g': 156, + 'b': 183, + 'a': 238 +}, { + 'r': 206, + 'g': 93, + 'b': 0, + 'a': 63 +}, { + 'r': 0, + 'g': 146, + 'b': 178, + 'a': 251 +}, { + 'r': 0, + 'g': 226, + 'b': 103, + 'a': 98 +}, { + 'r': 0, + 'g': 250, + 'b': 205, + 'a': 179 +}, { + 'r': 250, + 'g': 0, + 'b': 23, + 'a': 171 +}, { + 'r': 209, + 'g': 0, + 'b': 65, + 'a': 179 +}, { + 'r': 0, + 'g': 191, + 'b': 218, + 'a': 174 +}, { + 'r': 245, + 'g': 177, + 'b': 0, + 'a': 135 +}, { + 'r': 0, + 'g': 113, + 'b': 174, + 'a': 231 +}, { + 'r': 0, + 'g': 173, + 'b': 192, + 'a': 236 +}, { + 'r': 248, + 'g': 197, + 'b': 0, + 'a': 191 +}, { + 'r': 0, + 'g': 75, + 'b': 226, + 'a': 26 +}, { + 'r': 195, + 'g': 0, + 'b': 204, + 'a': 114 +}, { + 'r': 128, + 'g': 0, + 'b': 183, + 'a': 111 +}, { + 'r': 232, + 'g': 215, + 'b': 0, + 'a': 195 +}, { + 'r': 0, + 'g': 152, + 'b': 228, + 'a': 106 +}, { + 'r': 250, + 'g': 25, + 'b': 0, + 'a': 172 +}, { + 'r': 214, + 'g': 107, + 'b': 0, + 'a': 18 +}, { + 'r': 255, + 'g': 0, + 'b': 0, + 'a': 2 +}, { + 'r': 255, + 'g': 0, + 'b': 0, + 'a': 2 +}, { + 'r': 234, + 'g': 89, + 'b': 0, + 'a': 37 +}, { + 'r': 0, + 'g': 63, + 'b': 207, + 'a': 16 +}, { + 'r': 196, + 'g': 19, + 'b': 0, + 'a': 13 +}, { + 'r': 207, + 'g': 79, + 'b': 0, + 'a': 16 +}, { + 'r': 0, + 'g': 234, + 'b': 109, + 'a': 239 +}, { + 'r': 47, + 'g': 219, + 'b': 0, + 'a': 195 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 247, + 'b': 118, + 'a': 98 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 246, + 'b': 112, + 'a': 86 +}, { + 'r': 237, + 'g': 47, + 'b': 0, + 'a': 42 +}, { + 'r': 225, + 'g': 0, + 'b': 0, + 'a': 34 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 200, + 'g': 80, + 'b': 0, + 'a': 50 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 207, + 'g': 69, + 'b': 0, + 'a': 58 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 67, + 'g': 254, + 'b': 0, + 'a': 15 +}, { + 'r': 0, + 'g': 247, + 'b': 123, + 'a': 98 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 249, + 'g': 222, + 'b': 0, + 'a': 147 +}, { + 'r': 0, + 'g': 10, + 'b': 254, + 'a': 203 +}, { + 'r': 27, + 'g': 255, + 'b': 0, + 'a': 223 +}, { + 'r': 0, + 'g': 10, + 'b': 254, + 'a': 203 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 116, + 'g': 251, + 'b': 0, + 'a': 227 +}, { + 'r': 255, + 'g': 10, + 'b': 0, + 'a': 199 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 240, + 'g': 0, + 'b': 0, + 'a': 50 +}, { + 'r': 179, + 'g': 38, + 'b': 0, + 'a': 131 +}, { + 'r': 0, + 'g': 128, + 'b': 205, + 'a': 159 +}, { + 'r': 245, + 'g': 24, + 'b': 0, + 'a': 82 +}, { + 'r': 0, + 'g': 52, + 'b': 211, + 'a': 57 +}, { + 'r': 0, + 'g': 121, + 'b': 245, + 'a': 205 +}, { + 'r': 0, + 'g': 190, + 'b': 246, + 'a': 220 +}, { + 'r': 77, + 'g': 0, + 'b': 169, + 'a': 250 +}, { + 'r': 241, + 'g': 0, + 'b': 225, + 'a': 237 +}, { + 'r': 0, + 'g': 188, + 'b': 188, + 'a': 26 +}, { + 'r': 0, + 'g': 250, + 'b': 192, + 'a': 191 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 214, + 'g': 0, + 'b': 47, + 'a': 171 +}, { + 'r': 0, + 'g': 243, + 'b': 108, + 'a': 65 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 129, + 'b': 178, + 'a': 63 +}, { + 'r': 198, + 'g': 0, + 'b': 205, + 'a': 159 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 238, + 'b': 107, + 'a': 78 +}, { + 'r': 245, + 'g': 22, + 'b': 0, + 'a': 80 +}, { + 'r': 0, + 'g': 98, + 'b': 217, + 'a': 155 +}, { + 'r': 0, + 'g': 244, + 'b': 111, + 'a': 73 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 198, + 'g': 0, + 'b': 205, + 'a': 159 +}, { + 'r': 211, + 'g': 0, + 'b': 19, + 'a': 195 +}, { + 'r': 244, + 'g': 0, + 'b': 27, + 'a': 74 +}, { + 'r': 194, + 'g': 54, + 'b': 0, + 'a': 41 +}, { + 'r': 0, + 'g': 231, + 'b': 102, + 'a': 55 +}, { + 'r': 0, + 'g': 243, + 'b': 113, + 'a': 243 +}, { + 'r': 131, + 'g': 0, + 'b': 187, + 'a': 163 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 250, + 'b': 118, + 'a': 155 +}, { + 'r': 0, + 'g': 241, + 'b': 124, + 'a': 114 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 242, + 'g': 34, + 'b': 0, + 'a': 58 +}, { + 'r': 248, + 'g': 0, + 'b': 43, + 'a': 187 +}, { + 'r': 237, + 'g': 0, + 'b': 0, + 'a': 42 +}, { + 'r': 0, + 'g': 244, + 'b': 111, + 'a': 73 +}, { + 'r': 249, + 'g': 0, + 'b': 47, + 'a': 188 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 233, + 'g': 0, + 'b': 0, + 'a': 34 +}, { + 'r': 0, + 'g': 245, + 'b': 114, + 'a': 78 +}, { + 'r': 180, + 'g': 140, + 'b': 0, + 'a': 50 +}, { + 'r': 177, + 'g': 177, + 'b': 0, + 'a': 23 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 29, + 'g': 0, + 'b': 174, + 'a': 34 +}, { + 'r': 87, + 'g': 0, + 'b': 174, + 'a': 34 +}, { + 'r': 0, + 'g': 240, + 'b': 120, + 'a': 50 +}, { + 'r': 233, + 'g': 0, + 'b': 0, + 'a': 34 +}, { + 'r': 0, + 'g': 242, + 'b': 138, + 'a': 58 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 255, + 'g': 0, + 'b': 0, + 'a': 2 +}, { + 'r': 0, + 'g': 243, + 'b': 91, + 'a': 66 +}, { + 'r': 0, + 'g': 107, + 'b': 214, + 'a': 18 +}, { + 'r': 214, + 'g': 0, + 'b': 107, + 'a': 18 +}, { + 'r': 196, + 'g': 39, + 'b': 0, + 'a': 13 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 214, + 'g': 0, + 'b': 107, + 'a': 18 +}, { + 'r': 194, + 'g': 0, + 'b': 121, + 'a': 245 +}, { + 'r': 203, + 'g': 138, + 'b': 0, + 'a': 155 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 177, + 'g': 0, + 'b': 177, + 'a': 23 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 174, + 'g': 0, + 'b': 204, + 'a': 34 +}, { + 'r': 138, + 'g': 0, + 'b': 188, + 'a': 103 +}, { + 'r': 188, + 'g': 0, + 'b': 188, + 'a': 26 +}, { + 'r': 161, + 'g': 214, + 'b': 0, + 'a': 18 +}, { + 'r': 242, + 'g': 34, + 'b': 0, + 'a': 58 +}, { + 'r': 180, + 'g': 0, + 'b': 186, + 'a': 175 +}, { + 'r': 130, + 'g': 97, + 'b': 0, + 'a': 251 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 233, + 'g': 0, + 'b': 0, + 'a': 34 +}, { + 'r': 0, + 'g': 0, + 'b': 255, + 'a': 2 +}, { + 'r': 0, + 'g': 240, + 'b': 122, + 'a': 52 +}, { + 'r': 0, + 'g': 242, + 'b': 109, + 'a': 63 +}, { + 'r': 233, + 'g': 0, + 'b': 0, + 'a': 34 +}, { + 'r': 0, + 'g': 245, + 'b': 114, + 'a': 78 +}, { + 'r': 23, + 'g': 0, + 'b': 187, + 'a': 87 +}, { + 'r': 0, + 'g': 240, + 'b': 105, + 'a': 53 +}, { + 'r': 0, + 'g': 247, + 'b': 123, + 'a': 98 +}, { + 'r': 0, + 'g': 222, + 'b': 105, + 'a': 87 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 4, + 'b': 157, + 'a': 207 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 226, + 'g': 0, + 'b': 75, + 'a': 26 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 246, + 'g': 212, + 'b': 0, + 'a': 119 +}, { + 'r': 243, + 'g': 19, + 'b': 0, + 'a': 159 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 233, + 'g': 0, + 'b': 0, + 'a': 34 +}, { + 'r': 145, + 'g': 0, + 'b': 254, + 'a': 7 +}, { + 'r': 255, + 'g': 0, + 'b': 0, + 'a': 2 +}, { + 'r': 214, + 'g': 0, + 'b': 0, + 'a': 18 +}, { + 'r': 185, + 'g': 0, + 'b': 23, + 'a': 10 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 207, + 'g': 34, + 'b': 0, + 'a': 58 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 242, + 'b': 117, + 'a': 63 +}, { + 'r': 0, + 'g': 148, + 'b': 191, + 'a': 12 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 80, + 'b': 214, + 'a': 18 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 0, + 'b': 255, + 'a': 2 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 174, + 'g': 0, + 'b': 204, + 'a': 34 +}, { + 'r': 177, + 'g': 0, + 'b': 177, + 'a': 23 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 236, + 'b': 113, + 'a': 82 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 128, + 'g': 0, + 'b': 184, + 'a': 127 +}, { + 'r': 128, + 'g': 0, + 'b': 184, + 'a': 127 +}, { + 'r': 0, + 'g': 21, + 'b': 191, + 'a': 12 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 107, + 'b': 214, + 'a': 18 +}, { + 'r': 228, + 'g': 8, + 'b': 0, + 'a': 29 +}, { + 'r': 0, + 'g': 244, + 'b': 108, + 'a': 74 +}, { + 'r': 0, + 'g': 247, + 'b': 121, + 'a': 98 +}, { + 'r': 232, + 'g': 15, + 'b': 0, + 'a': 211 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 226, + 'b': 123, + 'a': 98 +}, { + 'r': 0, + 'g': 188, + 'b': 48, + 'a': 41 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 213, + 'g': 122, + 'b': 0, + 'a': 152 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 242, + 'g': 122, + 'b': 0, + 'a': 197 +}, { + 'r': 203, + 'g': 146, + 'b': 0, + 'a': 247 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 132, + 'b': 215, + 'a': 122 +}, { + 'r': 0, + 'g': 19, + 'b': 247, + 'a': 106 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 207, + 'g': 75, + 'b': 0, + 'a': 26 +}, { + 'r': 0, + 'g': 100, + 'b': 168, + 'a': 173 +}, { + 'r': 0, + 'g': 197, + 'b': 197, + 'a': 207 +}, { + 'r': 170, + 'g': 0, + 'b': 165, + 'a': 191 +}, { + 'r': 0, + 'g': 36, + 'b': 211, + 'a': 111 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 245, + 'b': 110, + 'a': 81 +}, { + 'r': 161, + 'g': 0, + 'b': 194, + 'a': 63 +}, { + 'r': 92, + 'g': 0, + 'b': 223, + 'a': 187 +}, { + 'r': 207, + 'g': 51, + 'b': 0, + 'a': 58 +}, { + 'r': 0, + 'g': 33, + 'b': 171, + 'a': 243 +}, { + 'r': 0, + 'g': 52, + 'b': 217, + 'a': 235 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 21, + 'g': 191, + 'b': 0, + 'a': 12 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 114, + 'b': 190, + 'a': 106 +}, { + 'r': 0, + 'g': 82, + 'b': 229, + 'a': 111 +}, { + 'r': 0, + 'g': 138, + 'b': 222, + 'a': 147 +}, { + 'r': 183, + 'g': 26, + 'b': 0, + 'a': 39 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 247, + 'b': 121, + 'a': 98 +}, { + 'r': 0, + 'g': 245, + 'b': 111, + 'a': 78 +}, { + 'r': 0, + 'g': 213, + 'b': 101, + 'a': 243 +}, { + 'r': 0, + 'g': 237, + 'b': 97, + 'a': 73 +}, { + 'r': 0, + 'g': 245, + 'b': 98, + 'a': 82 +}, { + 'r': 0, + 'g': 245, + 'b': 98, + 'a': 82 +}, { + 'r': 4, + 'g': 0, + 'b': 146, + 'a': 223 +}, { + 'r': 0, + 'g': 240, + 'b': 120, + 'a': 50 +}, { + 'r': 231, + 'g': 0, + 'b': 121, + 'a': 251 +}, { + 'r': 203, + 'g': 135, + 'b': 0, + 'a': 15 +}, { + 'r': 203, + 'g': 135, + 'b': 0, + 'a': 15 +}, { + 'r': 0, + 'g': 141, + 'b': 92, + 'a': 36 +}, { + 'r': 183, + 'g': 0, + 'b': 121, + 'a': 174 +}, { + 'r': 0, + 'g': 156, + 'b': 200, + 'a': 249 +}, { + 'r': 0, + 'g': 160, + 'b': 214, + 'a': 245 +}, { + 'r': 195, + 'g': 0, + 'b': 113, + 'a': 251 +}, { + 'r': 226, + 'g': 0, + 'b': 120, + 'a': 251 +}, { + 'r': 223, + 'g': 184, + 'b': 0, + 'a': 155 +}, { + 'r': 191, + 'g': 162, + 'b': 0, + 'a': 206 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 231, + 'g': 23, + 'b': 0, + 'a': 32 +}, { + 'r': 0, + 'g': 21, + 'b': 191, + 'a': 12 +}, { + 'r': 0, + 'g': 0, + 'b': 185, + 'a': 10 +}, { + 'r': 177, + 'g': 133, + 'b': 0, + 'a': 23 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 177, + 'g': 133, + 'b': 0, + 'a': 23 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}, { + 'r': 216, + 'g': 0, + 'b': 116, + 'a': 46 +}, { + 'r': 203, + 'g': 135, + 'b': 0, + 'a': 15 +}, { + 'r': 0, + 'g': 185, + 'b': 185, + 'a': 10 +}]; diff --git a/03_A/Cover_Lines/sketch.js b/03_A/Cover_Lines/sketch.js index ad64f77f..51b208c2 100644 --- a/03_A/Cover_Lines/sketch.js +++ b/03_A/Cover_Lines/sketch.js @@ -34,7 +34,6 @@ var mmToPx = 2; var coverWidth = 800; var coverHeight = 600; - function setup() { createCanvas(coverWidth * mmToPx, coverHeight * mmToPx); @@ -78,8 +77,6 @@ function setup() { } - - function keyReleased() { if (key == 's' || key == 'S') saveCanvas(gd.timestamp(), 'png'); } diff --git a/libraries/concatenator-readme.md b/libraries/concatenator-readme.md new file mode 100644 index 00000000..caf3a41f --- /dev/null +++ b/libraries/concatenator-readme.md @@ -0,0 +1,12 @@ + +# Bundling dependencies for the p5.js web editor + +``` +cd Code-Package-p5.js/libraries/ +node concatenator-with-sourcemap.js +``` + +make sure to `copy and paste` the `./gif.js/gif.worker.js.map` into the `/gg-dep-bundle` directory so we don't get a `sourcemap error` later on. + + +NOTE: the `concatenator.js` script probably works also fine + it is much simpler but just for good measure we use the `concatenator-with-sourcemap.js` . diff --git a/libraries/concatenator-with-sourcemap.js b/libraries/concatenator-with-sourcemap.js new file mode 100644 index 00000000..736ae796 --- /dev/null +++ b/libraries/concatenator-with-sourcemap.js @@ -0,0 +1,46 @@ +var fs = require("fs") +var path = require("path") +var concat = require("source-map-concat") + +var resolveSourceMapSync = require("source-map-resolve").resolveSourceMapSync +var createDummySourceMap = require("source-map-dummy") + + +var jsFiles = ["./filesaver/FileSaver.js","./g.js/g.js","./generative-design-library/generative-design-library.js","./gif.js/gif.js","./gif.js/gif.worker.js","./kd-tree/kdTree.js","./quantize/quantize.js","./quicksettings/quicksettings.js","./treemap-squarify/treemap-squarify.js"] + +jsFiles = jsFiles.map(function(file) { + return { + source: file, + code: fs.readFileSync(file).toString() + } +}) +jsFiles.forEach(function(file) { + var previousMap = resolveSourceMapSync(file.code, file.source, fs.readFileSync) + if (previousMap) { + file.map = previousMap.map + file.sourcesRelativeTo = previousMap.sourcesRelativeTo + } else { + file.map = createDummySourceMap(file.code, {source: file.source, type: "js"}) + } +}) + +function wrap(node, file) { + node.prepend("void function(){\n// File: " + file.source + "\n") + node.add("}();") +} + +var output = "./gg-dep-bundle/gg-dep-bundle.js" + +var concatenated = concat(jsFiles, { + delimiter: "\n", + process: wrap, + mapPath: output + ".map" +}) + + +var result = concatenated.toStringWithSourceMap({ + file: path.basename(output) +}) + +fs.writeFileSync(output, result.code) +fs.writeFileSync(output + ".map", result.map.toString()) diff --git a/libraries/gg-dep-bundle/gg-dep-bundle.js b/libraries/gg-dep-bundle/gg-dep-bundle.js index 111c4064..c877d49a 100644 --- a/libraries/gg-dep-bundle/gg-dep-bundle.js +++ b/libraries/gg-dep-bundle/gg-dep-bundle.js @@ -1,3 +1,5 @@ +void function(){ +// File: ./filesaver/FileSaver.js /* FileSaver.js * A saveAs() FileSaver implementation. * 1.3.2 @@ -186,7 +188,9 @@ if (typeof module !== "undefined" && module.exports) { return saveAs; }); } - +}(); +void function(){ +// File: ./g.js/g.js (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.g = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-- >0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else if(listeners){while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;else if(evlistener)return evlistener.length}return 0};EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],2:[function(require,module,exports){var UA,browser,mode,platform,ua;ua=navigator.userAgent.toLowerCase();platform=navigator.platform.toLowerCase();UA=ua.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/)||[null,"unknown",0];mode=UA[1]==="ie"&&document.documentMode;browser={name:UA[1]==="version"?UA[3]:UA[1],version:mode||parseFloat(UA[1]==="opera"&&UA[4]?UA[4]:UA[2]),platform:{name:ua.match(/ip(?:ad|od|hone)/)?"ios":(ua.match(/(?:webos|android)/)||platform.match(/mac|win|linux/)||["other"])[0]}};browser[browser.name]=true;browser[browser.name+parseInt(browser.version,10)]=true;browser.platform[browser.platform.name]=true;module.exports=browser},{}],3:[function(require,module,exports){var EventEmitter,GIF,browser,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;iref;i=0<=ref?++j:--j){results.push(null)}return results}.call(this);numWorkers=this.spawnWorkers();if(this.options.globalPalette===true){this.renderNextFrame()}else{for(i=j=0,ref=numWorkers;0<=ref?jref;i=0<=ref?++j:--j){this.renderNextFrame()}}this.emit("start");return this.emit("progress",0)};GIF.prototype.abort=function(){var worker;while(true){worker=this.activeWorkers.shift();if(worker==null){break}this.log("killing active worker");worker.terminate()}this.running=false;return this.emit("abort")};GIF.prototype.spawnWorkers=function(){var j,numWorkers,ref,results;numWorkers=Math.min(this.options.workers,this.frames.length);(function(){results=[];for(var j=ref=this.freeWorkers.length;ref<=numWorkers?jnumWorkers;ref<=numWorkers?j++:j--){results.push(j)}return results}).apply(this).forEach(function(_this){return function(i){var worker;_this.log("spawning worker "+i);worker=new Worker(_this.options.workerScript);worker.onmessage=function(event){_this.activeWorkers.splice(_this.activeWorkers.indexOf(worker),1);_this.freeWorkers.push(worker);return _this.frameFinished(event.data)};return _this.freeWorkers.push(worker)}}(this));return numWorkers};GIF.prototype.frameFinished=function(frame){var i,j,ref;this.log("frame "+frame.index+" finished - "+this.activeWorkers.length+" active");this.finishedFrames++;this.emit("progress",this.finishedFrames/this.frames.length);this.imageParts[frame.index]=frame;if(this.options.globalPalette===true){this.options.globalPalette=frame.globalPalette;this.log("global palette analyzed");if(this.frames.length>2){for(i=j=1,ref=this.freeWorkers.length;1<=ref?jref;i=1<=ref?++j:--j){this.renderNextFrame()}}}if(indexOf.call(this.imageParts,null)>=0){return this.renderNextFrame()}else{return this.finishRendering()}};GIF.prototype.finishRendering=function(){var data,frame,i,image,j,k,l,len,len1,len2,len3,offset,page,ref,ref1,ref2;len=0;ref=this.imageParts;for(j=0,len1=ref.length;j=this.frames.length){return}frame=this.frames[this.nextFrame++];worker=this.freeWorkers.shift();task=this.getTask(frame);this.log("starting frame "+(task.index+1)+" of "+this.frames.length);this.activeWorkers.push(worker);return worker.postMessage(task)};GIF.prototype.getContextData=function(ctx){return ctx.getImageData(0,0,this.options.width,this.options.height).data};GIF.prototype.getImageData=function(image){var ctx;if(this._canvas==null){this._canvas=document.createElement("canvas");this._canvas.width=this.options.width;this._canvas.height=this.options.height}ctx=this._canvas.getContext("2d");ctx.setFill=this.options.background;ctx.fillRect(0,0,this.options.width,this.options.height);ctx.drawImage(image,0,0);return this.getContextData(ctx)};GIF.prototype.getTask=function(frame){var index,task;index=this.frames.indexOf(frame);task={index:index,last:index===this.frames.length-1,delay:frame.delay,transparent:frame.transparent,width:this.options.width,height:this.options.height,quality:this.options.quality,dither:this.options.dither,globalPalette:this.options.globalPalette,repeat:this.options.repeat,canTransfer:browser.name==="chrome"};if(frame.data!=null){task.data=frame.data}else if(frame.context!=null){task.data=this.getContextData(frame.context)}else if(frame.image!=null){task.data=this.getImageData(frame.image)}else{throw new Error("Invalid frame")}return task};GIF.prototype.log=function(){var args;args=1<=arguments.length?slice.call(arguments,0):[];if(!this.options.debug){return}return console.log.apply(console,args)};return GIF}(EventEmitter);module.exports=GIF},{"./browser.coffee":2,events:1}]},{},[3])(3)}); //# sourceMappingURL=gif.js.map - +}(); +void function(){ +// File: ./gif.js/gif.worker.js // gif.worker.js 0.2.0 - https://github.com/jnordberg/gif.js (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o=ByteArray.pageSize)this.newPage();this.pages[this.page][this.cursor++]=val};ByteArray.prototype.writeUTFBytes=function(string){for(var l=string.length,i=0;i=0)this.dispose=disposalCode};GIFEncoder.prototype.setRepeat=function(repeat){this.repeat=repeat};GIFEncoder.prototype.setTransparent=function(color){this.transparent=color};GIFEncoder.prototype.addFrame=function(imageData){this.image=imageData;this.colorTab=this.globalPalette&&this.globalPalette.slice?this.globalPalette:null;this.getImagePixels();this.analyzePixels();if(this.globalPalette===true)this.globalPalette=this.colorTab;if(this.firstFrame){this.writeLSD();this.writePalette();if(this.repeat>=0){this.writeNetscapeExt()}}this.writeGraphicCtrlExt();this.writeImageDesc();if(!this.firstFrame&&!this.globalPalette)this.writePalette();this.writePixels();this.firstFrame=false};GIFEncoder.prototype.finish=function(){this.out.writeByte(59)};GIFEncoder.prototype.setQuality=function(quality){if(quality<1)quality=1;this.sample=quality};GIFEncoder.prototype.setDither=function(dither){if(dither===true)dither="FloydSteinberg";this.dither=dither};GIFEncoder.prototype.setGlobalPalette=function(palette){this.globalPalette=palette};GIFEncoder.prototype.getGlobalPalette=function(){return this.globalPalette&&this.globalPalette.slice&&this.globalPalette.slice(0)||this.globalPalette};GIFEncoder.prototype.writeHeader=function(){this.out.writeUTFBytes("GIF89a")};GIFEncoder.prototype.analyzePixels=function(){if(!this.colorTab){this.neuQuant=new NeuQuant(this.pixels,this.sample);this.neuQuant.buildColormap();this.colorTab=this.neuQuant.getColormap()}if(this.dither){this.ditherPixels(this.dither.replace("-serpentine",""),this.dither.match(/-serpentine/)!==null)}else{this.indexPixels()}this.pixels=null;this.colorDepth=8;this.palSize=7;if(this.transparent!==null){this.transIndex=this.findClosest(this.transparent,true)}};GIFEncoder.prototype.indexPixels=function(imgq){var nPix=this.pixels.length/3;this.indexedPixels=new Uint8Array(nPix);var k=0;for(var j=0;j=0&&x1+x=0&&y1+y>16,(c&65280)>>8,c&255,used)};GIFEncoder.prototype.findClosestRGB=function(r,g,b,used){if(this.colorTab===null)return-1;if(this.neuQuant&&!used){return this.neuQuant.lookupRGB(r,g,b)}var c=b|g<<8|r<<16;var minpos=0;var dmin=256*256*256;var len=this.colorTab.length;for(var i=0,index=0;i=0){disp=dispose&7}disp<<=2;this.out.writeByte(0|disp|0|transp);this.writeShort(this.delay);this.out.writeByte(this.transIndex);this.out.writeByte(0)};GIFEncoder.prototype.writeImageDesc=function(){this.out.writeByte(44);this.writeShort(0);this.writeShort(0);this.writeShort(this.width);this.writeShort(this.height);if(this.firstFrame||this.globalPalette){this.out.writeByte(0)}else{this.out.writeByte(128|0|0|0|this.palSize)}};GIFEncoder.prototype.writeLSD=function(){this.writeShort(this.width);this.writeShort(this.height);this.out.writeByte(128|112|0|this.palSize);this.out.writeByte(0);this.out.writeByte(0)};GIFEncoder.prototype.writeNetscapeExt=function(){this.out.writeByte(33);this.out.writeByte(255);this.out.writeByte(11);this.out.writeUTFBytes("NETSCAPE2.0");this.out.writeByte(3);this.out.writeByte(1);this.writeShort(this.repeat);this.out.writeByte(0)};GIFEncoder.prototype.writePalette=function(){this.out.writeBytes(this.colorTab);var n=3*256-this.colorTab.length;for(var i=0;i>8&255)};GIFEncoder.prototype.writePixels=function(){var enc=new LZWEncoder(this.width,this.height,this.indexedPixels,this.colorDepth);enc.encode(this.out)};GIFEncoder.prototype.stream=function(){return this.out};module.exports=GIFEncoder},{"./LZWEncoder.js":2,"./TypedNeuQuant.js":3}],2:[function(require,module,exports){var EOF=-1;var BITS=12;var HSIZE=5003;var masks=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];function LZWEncoder(width,height,pixels,colorDepth){var initCodeSize=Math.max(2,colorDepth);var accum=new Uint8Array(256);var htab=new Int32Array(HSIZE);var codetab=new Int32Array(HSIZE);var cur_accum,cur_bits=0;var a_count;var free_ent=0;var maxcode;var clear_flg=false;var g_init_bits,ClearCode,EOFCode;function char_out(c,outs){accum[a_count++]=c;if(a_count>=254)flush_char(outs)}function cl_block(outs){cl_hash(HSIZE);free_ent=ClearCode+2;clear_flg=true;output(ClearCode,outs)}function cl_hash(hsize){for(var i=0;i=0){disp=hsize_reg-i;if(i===0)disp=1;do{if((i-=disp)<0)i+=hsize_reg;if(htab[i]===fcode){ent=codetab[i];continue outer_loop}}while(htab[i]>=0)}output(ent,outs);ent=c;if(free_ent<1<0){outs.writeByte(a_count);outs.writeBytes(accum,0,a_count);a_count=0}}function MAXCODE(n_bits){return(1<0)cur_accum|=code<=8){char_out(cur_accum&255,outs);cur_accum>>=8;cur_bits-=8}if(free_ent>maxcode||clear_flg){if(clear_flg){maxcode=MAXCODE(n_bits=g_init_bits);clear_flg=false}else{++n_bits;if(n_bits==BITS)maxcode=1<0){char_out(cur_accum&255,outs);cur_accum>>=8;cur_bits-=8}flush_char(outs)}}this.encode=encode}module.exports=LZWEncoder},{}],3:[function(require,module,exports){var ncycles=100;var netsize=256;var maxnetpos=netsize-1;var netbiasshift=4;var intbiasshift=16;var intbias=1<>betashift;var betagamma=intbias<>3;var radiusbiasshift=6;var radiusbias=1<>3);var i,v;for(i=0;i>=netbiasshift;network[i][1]>>=netbiasshift;network[i][2]>>=netbiasshift;network[i][3]=i}}function altersingle(alpha,i,b,g,r){network[i][0]-=alpha*(network[i][0]-b)/initalpha;network[i][1]-=alpha*(network[i][1]-g)/initalpha;network[i][2]-=alpha*(network[i][2]-r)/initalpha}function alterneigh(radius,i,b,g,r){var lo=Math.abs(i-radius);var hi=Math.min(i+radius,netsize);var j=i+1;var k=i-1;var m=1;var p,a;while(jlo){a=radpower[m++];if(jlo){p=network[k--];p[0]-=a*(p[0]-b)/alpharadbias;p[1]-=a*(p[1]-g)/alpharadbias;p[2]-=a*(p[2]-r)/alpharadbias}}}function contest(b,g,r){var bestd=~(1<<31);var bestbiasd=bestd;var bestpos=-1;var bestbiaspos=bestpos;var i,n,dist,biasdist,betafreq;for(i=0;i>intbiasshift-netbiasshift);if(biasdist>betashift;freq[i]-=betafreq;bias[i]+=betafreq<>1;for(j=previouscol+1;j>1;for(j=previouscol+1;j<256;j++)netindex[j]=maxnetpos}function inxsearch(b,g,r){var a,p,dist;var bestd=1e3;var best=-1;var i=netindex[g];var j=i-1;while(i=0){if(i=bestd)i=netsize;else{i++;if(dist<0)dist=-dist;a=p[0]-b;if(a<0)a=-a;dist+=a;if(dist=0){p=network[j];dist=g-p[1];if(dist>=bestd)j=-1;else{j--;if(dist<0)dist=-dist;a=p[0]-b;if(a<0)a=-a;dist+=a;if(dist>radiusbiasshift;if(rad<=1)rad=0;for(i=0;i=lengthcount)pix-=lengthcount;i++;if(delta===0)delta=1;if(i%delta===0){alpha-=alpha/alphadec;radius-=radius/radiusdec;rad=radius>>radiusbiasshift;if(rad<=1)rad=0;for(j=0;j 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","### CoffeeScript version of the browser detection from MooTools ###\n\nua = navigator.userAgent.toLowerCase()\nplatform = navigator.platform.toLowerCase()\nUA = ua.match(/(opera|ie|firefox|chrome|version)[\\s\\/:]([\\w\\d\\.]+)?.*?(safari|version[\\s\\/:]([\\w\\d\\.]+)|$)/) or [null, 'unknown', 0]\nmode = UA[1] == 'ie' && document.documentMode\n\nbrowser =\n name: if UA[1] is 'version' then UA[3] else UA[1]\n version: mode or parseFloat(if UA[1] is 'opera' && UA[4] then UA[4] else UA[2])\n\n platform:\n name: if ua.match(/ip(?:ad|od|hone)/) then 'ios' else (ua.match(/(?:webos|android)/) or platform.match(/mac|win|linux/) or ['other'])[0]\n\nbrowser[browser.name] = true\nbrowser[browser.name + parseInt(browser.version, 10)] = true\nbrowser.platform[browser.platform.name] = true\n\nmodule.exports = browser\n","{EventEmitter} = require 'events'\nbrowser = require './browser.coffee'\n\nclass GIF extends EventEmitter\n\n defaults =\n workerScript: 'gif.worker.js'\n workers: 2\n repeat: 0 # repeat forever, -1 = repeat once\n background: '#fff'\n quality: 10 # pixel sample interval, lower is better\n width: null # size derermined from first frame if possible\n height: null\n transparent: null\n debug: false\n dither: false # see GIFEncoder.js for dithering options\n\n frameDefaults =\n delay: 500 # ms\n copy: false\n\n constructor: (options) ->\n @running = false\n\n @options = {}\n @frames = []\n\n @freeWorkers = []\n @activeWorkers = []\n\n @setOptions options\n for key, value of defaults\n @options[key] ?= value\n\n setOption: (key, value) ->\n @options[key] = value\n if @_canvas? and key in ['width', 'height']\n @_canvas[key] = value\n\n setOptions: (options) ->\n @setOption key, value for own key, value of options\n\n addFrame: (image, options={}) ->\n frame = {}\n frame.transparent = @options.transparent\n for key of frameDefaults\n frame[key] = options[key] or frameDefaults[key]\n\n # use the images width and height for options unless already set\n @setOption 'width', image.width unless @options.width?\n @setOption 'height', image.height unless @options.height?\n\n if ImageData? and image instanceof ImageData\n frame.data = image.data\n else if (CanvasRenderingContext2D? and image instanceof CanvasRenderingContext2D) or (WebGLRenderingContext? and image instanceof WebGLRenderingContext)\n if options.copy\n frame.data = @getContextData image\n else\n frame.context = image\n else if image.childNodes?\n if options.copy\n frame.data = @getImageData image\n else\n frame.image = image\n else\n throw new Error 'Invalid image'\n\n @frames.push frame\n\n render: ->\n throw new Error 'Already running' if @running\n\n if not @options.width? or not @options.height?\n throw new Error 'Width and height must be set prior to rendering'\n\n @running = true\n @nextFrame = 0\n @finishedFrames = 0\n\n @imageParts = (null for i in [0...@frames.length])\n numWorkers = @spawnWorkers()\n # we need to wait for the palette\n if @options.globalPalette == true\n @renderNextFrame()\n else\n @renderNextFrame() for i in [0...numWorkers]\n\n @emit 'start'\n @emit 'progress', 0\n\n abort: ->\n loop\n worker = @activeWorkers.shift()\n break unless worker?\n @log 'killing active worker'\n worker.terminate()\n @running = false\n @emit 'abort'\n\n # private\n\n spawnWorkers: ->\n numWorkers = Math.min(@options.workers, @frames.length)\n [@freeWorkers.length...numWorkers].forEach (i) =>\n @log \"spawning worker #{ i }\"\n worker = new Worker @options.workerScript\n worker.onmessage = (event) =>\n @activeWorkers.splice @activeWorkers.indexOf(worker), 1\n @freeWorkers.push worker\n @frameFinished event.data\n @freeWorkers.push worker\n return numWorkers\n\n frameFinished: (frame) ->\n @log \"frame #{ frame.index } finished - #{ @activeWorkers.length } active\"\n @finishedFrames++\n @emit 'progress', @finishedFrames / @frames.length\n @imageParts[frame.index] = frame\n # remember calculated palette, spawn the rest of the workers\n if @options.globalPalette == true\n @options.globalPalette = frame.globalPalette\n @log 'global palette analyzed'\n @renderNextFrame() for i in [1...@freeWorkers.length] if @frames.length > 2\n if null in @imageParts\n @renderNextFrame()\n else\n @finishRendering()\n\n finishRendering: ->\n len = 0\n for frame in @imageParts\n len += (frame.data.length - 1) * frame.pageSize + frame.cursor\n len += frame.pageSize - frame.cursor\n @log \"rendering finished - filesize #{ Math.round(len / 1000) }kb\"\n data = new Uint8Array len\n offset = 0\n for frame in @imageParts\n for page, i in frame.data\n data.set page, offset\n if i is frame.data.length - 1\n offset += frame.cursor\n else\n offset += frame.pageSize\n\n image = new Blob [data],\n type: 'image/gif'\n\n @emit 'finished', image, data\n\n renderNextFrame: ->\n throw new Error 'No free workers' if @freeWorkers.length is 0\n return if @nextFrame >= @frames.length # no new frame to render\n\n frame = @frames[@nextFrame++]\n worker = @freeWorkers.shift()\n task = @getTask frame\n\n @log \"starting frame #{ task.index + 1 } of #{ @frames.length }\"\n @activeWorkers.push worker\n worker.postMessage task#, [task.data.buffer]\n\n getContextData: (ctx) ->\n return ctx.getImageData(0, 0, @options.width, @options.height).data\n\n getImageData: (image) ->\n if not @_canvas?\n @_canvas = document.createElement 'canvas'\n @_canvas.width = @options.width\n @_canvas.height = @options.height\n\n ctx = @_canvas.getContext '2d'\n ctx.setFill = @options.background\n ctx.fillRect 0, 0, @options.width, @options.height\n ctx.drawImage image, 0, 0\n\n return @getContextData ctx\n\n getTask: (frame) ->\n index = @frames.indexOf frame\n task =\n index: index\n last: index is (@frames.length - 1)\n delay: frame.delay\n transparent: frame.transparent\n width: @options.width\n height: @options.height\n quality: @options.quality\n dither: @options.dither\n globalPalette: @options.globalPalette\n repeat: @options.repeat\n canTransfer: (browser.name is 'chrome')\n\n if frame.data?\n task.data = frame.data\n else if frame.context?\n task.data = @getContextData frame.context\n else if frame.image?\n task.data = @getImageData frame.image\n else\n throw new Error 'Invalid frame'\n\n return task\n\n log: (args...) ->\n return unless @options.debug\n console.log args...\n\n\nmodule.exports = GIF\n","/*\n GIFEncoder.js\n\n Authors\n Kevin Weiner (original Java version - kweiner@fmsware.com)\n Thibault Imbert (AS3 version - bytearray.org)\n Johan Nordberg (JS version - code@johan-nordberg.com)\n*/\n\nvar NeuQuant = require('./TypedNeuQuant.js');\nvar LZWEncoder = require('./LZWEncoder.js');\n\nfunction ByteArray() {\n this.page = -1;\n this.pages = [];\n this.newPage();\n}\n\nByteArray.pageSize = 4096;\nByteArray.charMap = {};\n\nfor (var i = 0; i < 256; i++)\n ByteArray.charMap[i] = String.fromCharCode(i);\n\nByteArray.prototype.newPage = function() {\n this.pages[++this.page] = new Uint8Array(ByteArray.pageSize);\n this.cursor = 0;\n};\n\nByteArray.prototype.getData = function() {\n var rv = '';\n for (var p = 0; p < this.pages.length; p++) {\n for (var i = 0; i < ByteArray.pageSize; i++) {\n rv += ByteArray.charMap[this.pages[p][i]];\n }\n }\n return rv;\n};\n\nByteArray.prototype.writeByte = function(val) {\n if (this.cursor >= ByteArray.pageSize) this.newPage();\n this.pages[this.page][this.cursor++] = val;\n};\n\nByteArray.prototype.writeUTFBytes = function(string) {\n for (var l = string.length, i = 0; i < l; i++)\n this.writeByte(string.charCodeAt(i));\n};\n\nByteArray.prototype.writeBytes = function(array, offset, length) {\n for (var l = length || array.length, i = offset || 0; i < l; i++)\n this.writeByte(array[i]);\n};\n\nfunction GIFEncoder(width, height) {\n // image size\n this.width = ~~width;\n this.height = ~~height;\n\n // transparent color if given\n this.transparent = null;\n\n // transparent index in color table\n this.transIndex = 0;\n\n // -1 = no repeat, 0 = forever. anything else is repeat count\n this.repeat = -1;\n\n // frame delay (hundredths)\n this.delay = 0;\n\n this.image = null; // current frame\n this.pixels = null; // BGR byte array from frame\n this.indexedPixels = null; // converted frame indexed to palette\n this.colorDepth = null; // number of bit planes\n this.colorTab = null; // RGB palette\n this.neuQuant = null; // NeuQuant instance that was used to generate this.colorTab.\n this.usedEntry = new Array(); // active palette entries\n this.palSize = 7; // color table size (bits-1)\n this.dispose = -1; // disposal code (-1 = use default)\n this.firstFrame = true;\n this.sample = 10; // default sample interval for quantizer\n this.dither = false; // default dithering\n this.globalPalette = false;\n\n this.out = new ByteArray();\n}\n\n/*\n Sets the delay time between each frame, or changes it for subsequent frames\n (applies to last frame added)\n*/\nGIFEncoder.prototype.setDelay = function(milliseconds) {\n this.delay = Math.round(milliseconds / 10);\n};\n\n/*\n Sets frame rate in frames per second.\n*/\nGIFEncoder.prototype.setFrameRate = function(fps) {\n this.delay = Math.round(100 / fps);\n};\n\n/*\n Sets the GIF frame disposal code for the last added frame and any\n subsequent frames.\n\n Default is 0 if no transparent color has been set, otherwise 2.\n*/\nGIFEncoder.prototype.setDispose = function(disposalCode) {\n if (disposalCode >= 0) this.dispose = disposalCode;\n};\n\n/*\n Sets the number of times the set of GIF frames should be played.\n\n -1 = play once\n 0 = repeat indefinitely\n\n Default is -1\n\n Must be invoked before the first image is added\n*/\n\nGIFEncoder.prototype.setRepeat = function(repeat) {\n this.repeat = repeat;\n};\n\n/*\n Sets the transparent color for the last added frame and any subsequent\n frames. Since all colors are subject to modification in the quantization\n process, the color in the final palette for each frame closest to the given\n color becomes the transparent color for that frame. May be set to null to\n indicate no transparent color.\n*/\nGIFEncoder.prototype.setTransparent = function(color) {\n this.transparent = color;\n};\n\n/*\n Adds next GIF frame. The frame is not written immediately, but is\n actually deferred until the next frame is received so that timing\n data can be inserted. Invoking finish() flushes all frames.\n*/\nGIFEncoder.prototype.addFrame = function(imageData) {\n this.image = imageData;\n\n this.colorTab = this.globalPalette && this.globalPalette.slice ? this.globalPalette : null;\n\n this.getImagePixels(); // convert to correct format if necessary\n this.analyzePixels(); // build color table & map pixels\n\n if (this.globalPalette === true) this.globalPalette = this.colorTab;\n\n if (this.firstFrame) {\n this.writeLSD(); // logical screen descriptior\n this.writePalette(); // global color table\n if (this.repeat >= 0) {\n // use NS app extension to indicate reps\n this.writeNetscapeExt();\n }\n }\n\n this.writeGraphicCtrlExt(); // write graphic control extension\n this.writeImageDesc(); // image descriptor\n if (!this.firstFrame && !this.globalPalette) this.writePalette(); // local color table\n this.writePixels(); // encode and write pixel data\n\n this.firstFrame = false;\n};\n\n/*\n Adds final trailer to the GIF stream, if you don't call the finish method\n the GIF stream will not be valid.\n*/\nGIFEncoder.prototype.finish = function() {\n this.out.writeByte(0x3b); // gif trailer\n};\n\n/*\n Sets quality of color quantization (conversion of images to the maximum 256\n colors allowed by the GIF specification). Lower values (minimum = 1)\n produce better colors, but slow processing significantly. 10 is the\n default, and produces good color mapping at reasonable speeds. Values\n greater than 20 do not yield significant improvements in speed.\n*/\nGIFEncoder.prototype.setQuality = function(quality) {\n if (quality < 1) quality = 1;\n this.sample = quality;\n};\n\n/*\n Sets dithering method. Available are:\n - FALSE no dithering\n - TRUE or FloydSteinberg\n - FalseFloydSteinberg\n - Stucki\n - Atkinson\n You can add '-serpentine' to use serpentine scanning\n*/\nGIFEncoder.prototype.setDither = function(dither) {\n if (dither === true) dither = 'FloydSteinberg';\n this.dither = dither;\n};\n\n/*\n Sets global palette for all frames.\n You can provide TRUE to create global palette from first picture.\n Or an array of r,g,b,r,g,b,...\n*/\nGIFEncoder.prototype.setGlobalPalette = function(palette) {\n this.globalPalette = palette;\n};\n\n/*\n Returns global palette used for all frames.\n If setGlobalPalette(true) was used, then this function will return\n calculated palette after the first frame is added.\n*/\nGIFEncoder.prototype.getGlobalPalette = function() {\n return (this.globalPalette && this.globalPalette.slice && this.globalPalette.slice(0)) || this.globalPalette;\n};\n\n/*\n Writes GIF file header\n*/\nGIFEncoder.prototype.writeHeader = function() {\n this.out.writeUTFBytes(\"GIF89a\");\n};\n\n/*\n Analyzes current frame colors and creates color map.\n*/\nGIFEncoder.prototype.analyzePixels = function() {\n if (!this.colorTab) {\n this.neuQuant = new NeuQuant(this.pixels, this.sample);\n this.neuQuant.buildColormap(); // create reduced palette\n this.colorTab = this.neuQuant.getColormap();\n }\n\n // map image pixels to new palette\n if (this.dither) {\n this.ditherPixels(this.dither.replace('-serpentine', ''), this.dither.match(/-serpentine/) !== null);\n } else {\n this.indexPixels();\n }\n\n this.pixels = null;\n this.colorDepth = 8;\n this.palSize = 7;\n\n // get closest match to transparent color if specified\n if (this.transparent !== null) {\n this.transIndex = this.findClosest(this.transparent, true);\n }\n};\n\n/*\n Index pixels, without dithering\n*/\nGIFEncoder.prototype.indexPixels = function(imgq) {\n var nPix = this.pixels.length / 3;\n this.indexedPixels = new Uint8Array(nPix);\n var k = 0;\n for (var j = 0; j < nPix; j++) {\n var index = this.findClosestRGB(\n this.pixels[k++] & 0xff,\n this.pixels[k++] & 0xff,\n this.pixels[k++] & 0xff\n );\n this.usedEntry[index] = true;\n this.indexedPixels[j] = index;\n }\n};\n\n/*\n Taken from http://jsbin.com/iXofIji/2/edit by PAEz\n*/\nGIFEncoder.prototype.ditherPixels = function(kernel, serpentine) {\n var kernels = {\n FalseFloydSteinberg: [\n [3 / 8, 1, 0],\n [3 / 8, 0, 1],\n [2 / 8, 1, 1]\n ],\n FloydSteinberg: [\n [7 / 16, 1, 0],\n [3 / 16, -1, 1],\n [5 / 16, 0, 1],\n [1 / 16, 1, 1]\n ],\n Stucki: [\n [8 / 42, 1, 0],\n [4 / 42, 2, 0],\n [2 / 42, -2, 1],\n [4 / 42, -1, 1],\n [8 / 42, 0, 1],\n [4 / 42, 1, 1],\n [2 / 42, 2, 1],\n [1 / 42, -2, 2],\n [2 / 42, -1, 2],\n [4 / 42, 0, 2],\n [2 / 42, 1, 2],\n [1 / 42, 2, 2]\n ],\n Atkinson: [\n [1 / 8, 1, 0],\n [1 / 8, 2, 0],\n [1 / 8, -1, 1],\n [1 / 8, 0, 1],\n [1 / 8, 1, 1],\n [1 / 8, 0, 2]\n ]\n };\n\n if (!kernel || !kernels[kernel]) {\n throw 'Unknown dithering kernel: ' + kernel;\n }\n\n var ds = kernels[kernel];\n var index = 0,\n height = this.height,\n width = this.width,\n data = this.pixels;\n var direction = serpentine ? -1 : 1;\n\n this.indexedPixels = new Uint8Array(this.pixels.length / 3);\n\n for (var y = 0; y < height; y++) {\n\n if (serpentine) direction = direction * -1;\n\n for (var x = (direction == 1 ? 0 : width - 1), xend = (direction == 1 ? width : 0); x !== xend; x += direction) {\n\n index = (y * width) + x;\n // Get original colour\n var idx = index * 3;\n var r1 = data[idx];\n var g1 = data[idx + 1];\n var b1 = data[idx + 2];\n\n // Get converted colour\n idx = this.findClosestRGB(r1, g1, b1);\n this.usedEntry[idx] = true;\n this.indexedPixels[index] = idx;\n idx *= 3;\n var r2 = this.colorTab[idx];\n var g2 = this.colorTab[idx + 1];\n var b2 = this.colorTab[idx + 2];\n\n var er = r1 - r2;\n var eg = g1 - g2;\n var eb = b1 - b2;\n\n for (var i = (direction == 1 ? 0: ds.length - 1), end = (direction == 1 ? ds.length : 0); i !== end; i += direction) {\n var x1 = ds[i][1]; // *direction; // Should this by timesd by direction?..to make the kernel go in the opposite direction....got no idea....\n var y1 = ds[i][2];\n if (x1 + x >= 0 && x1 + x < width && y1 + y >= 0 && y1 + y < height) {\n var d = ds[i][0];\n idx = index + x1 + (y1 * width);\n idx *= 3;\n\n data[idx] = Math.max(0, Math.min(255, data[idx] + er * d));\n data[idx + 1] = Math.max(0, Math.min(255, data[idx + 1] + eg * d));\n data[idx + 2] = Math.max(0, Math.min(255, data[idx + 2] + eb * d));\n }\n }\n }\n }\n};\n\n/*\n Returns index of palette color closest to c\n*/\nGIFEncoder.prototype.findClosest = function(c, used) {\n return this.findClosestRGB((c & 0xFF0000) >> 16, (c & 0x00FF00) >> 8, (c & 0x0000FF), used);\n};\n\nGIFEncoder.prototype.findClosestRGB = function(r, g, b, used) {\n if (this.colorTab === null) return -1;\n\n if (this.neuQuant && !used) {\n return this.neuQuant.lookupRGB(r, g, b);\n }\n \n var c = b | (g << 8) | (r << 16);\n\n var minpos = 0;\n var dmin = 256 * 256 * 256;\n var len = this.colorTab.length;\n\n for (var i = 0, index = 0; i < len; index++) {\n var dr = r - (this.colorTab[i++] & 0xff);\n var dg = g - (this.colorTab[i++] & 0xff);\n var db = b - (this.colorTab[i++] & 0xff);\n var d = dr * dr + dg * dg + db * db;\n if ((!used || this.usedEntry[index]) && (d < dmin)) {\n dmin = d;\n minpos = index;\n }\n }\n\n return minpos;\n};\n\n/*\n Extracts image pixels into byte array pixels\n (removes alphachannel from canvas imagedata)\n*/\nGIFEncoder.prototype.getImagePixels = function() {\n var w = this.width;\n var h = this.height;\n this.pixels = new Uint8Array(w * h * 3);\n\n var data = this.image;\n var srcPos = 0;\n var count = 0;\n\n for (var i = 0; i < h; i++) {\n for (var j = 0; j < w; j++) {\n this.pixels[count++] = data[srcPos++];\n this.pixels[count++] = data[srcPos++];\n this.pixels[count++] = data[srcPos++];\n srcPos++;\n }\n }\n};\n\n/*\n Writes Graphic Control Extension\n*/\nGIFEncoder.prototype.writeGraphicCtrlExt = function() {\n this.out.writeByte(0x21); // extension introducer\n this.out.writeByte(0xf9); // GCE label\n this.out.writeByte(4); // data block size\n\n var transp, disp;\n if (this.transparent === null) {\n transp = 0;\n disp = 0; // dispose = no action\n } else {\n transp = 1;\n disp = 2; // force clear if using transparent color\n }\n\n if (this.dispose >= 0) {\n disp = dispose & 7; // user override\n }\n disp <<= 2;\n\n // packed fields\n this.out.writeByte(\n 0 | // 1:3 reserved\n disp | // 4:6 disposal\n 0 | // 7 user input - 0 = none\n transp // 8 transparency flag\n );\n\n this.writeShort(this.delay); // delay x 1/100 sec\n this.out.writeByte(this.transIndex); // transparent color index\n this.out.writeByte(0); // block terminator\n};\n\n/*\n Writes Image Descriptor\n*/\nGIFEncoder.prototype.writeImageDesc = function() {\n this.out.writeByte(0x2c); // image separator\n this.writeShort(0); // image position x,y = 0,0\n this.writeShort(0);\n this.writeShort(this.width); // image size\n this.writeShort(this.height);\n\n // packed fields\n if (this.firstFrame || this.globalPalette) {\n // no LCT - GCT is used for first (or only) frame\n this.out.writeByte(0);\n } else {\n // specify normal LCT\n this.out.writeByte(\n 0x80 | // 1 local color table 1=yes\n 0 | // 2 interlace - 0=no\n 0 | // 3 sorted - 0=no\n 0 | // 4-5 reserved\n this.palSize // 6-8 size of color table\n );\n }\n};\n\n/*\n Writes Logical Screen Descriptor\n*/\nGIFEncoder.prototype.writeLSD = function() {\n // logical screen size\n this.writeShort(this.width);\n this.writeShort(this.height);\n\n // packed fields\n this.out.writeByte(\n 0x80 | // 1 : global color table flag = 1 (gct used)\n 0x70 | // 2-4 : color resolution = 7\n 0x00 | // 5 : gct sort flag = 0\n this.palSize // 6-8 : gct size\n );\n\n this.out.writeByte(0); // background color index\n this.out.writeByte(0); // pixel aspect ratio - assume 1:1\n};\n\n/*\n Writes Netscape application extension to define repeat count.\n*/\nGIFEncoder.prototype.writeNetscapeExt = function() {\n this.out.writeByte(0x21); // extension introducer\n this.out.writeByte(0xff); // app extension label\n this.out.writeByte(11); // block size\n this.out.writeUTFBytes('NETSCAPE2.0'); // app id + auth code\n this.out.writeByte(3); // sub-block size\n this.out.writeByte(1); // loop sub-block id\n this.writeShort(this.repeat); // loop count (extra iterations, 0=repeat forever)\n this.out.writeByte(0); // block terminator\n};\n\n/*\n Writes color table\n*/\nGIFEncoder.prototype.writePalette = function() {\n this.out.writeBytes(this.colorTab);\n var n = (3 * 256) - this.colorTab.length;\n for (var i = 0; i < n; i++)\n this.out.writeByte(0);\n};\n\nGIFEncoder.prototype.writeShort = function(pValue) {\n this.out.writeByte(pValue & 0xFF);\n this.out.writeByte((pValue >> 8) & 0xFF);\n};\n\n/*\n Encodes and writes pixel data\n*/\nGIFEncoder.prototype.writePixels = function() {\n var enc = new LZWEncoder(this.width, this.height, this.indexedPixels, this.colorDepth);\n enc.encode(this.out);\n};\n\n/*\n Retrieves the GIF stream\n*/\nGIFEncoder.prototype.stream = function() {\n return this.out;\n};\n\nmodule.exports = GIFEncoder;\n","/*\n LZWEncoder.js\n\n Authors\n Kevin Weiner (original Java version - kweiner@fmsware.com)\n Thibault Imbert (AS3 version - bytearray.org)\n Johan Nordberg (JS version - code@johan-nordberg.com)\n\n Acknowledgements\n GIFCOMPR.C - GIF Image compression routines\n Lempel-Ziv compression based on 'compress'. GIF modifications by\n David Rowley (mgardi@watdcsu.waterloo.edu)\n GIF Image compression - modified 'compress'\n Based on: compress.c - File compression ala IEEE Computer, June 1984.\n By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas)\n Jim McKie (decvax!mcvax!jim)\n Steve Davies (decvax!vax135!petsd!peora!srd)\n Ken Turkowski (decvax!decwrl!turtlevax!ken)\n James A. Woods (decvax!ihnp4!ames!jaw)\n Joe Orost (decvax!vax135!petsd!joe)\n*/\n\nvar EOF = -1;\nvar BITS = 12;\nvar HSIZE = 5003; // 80% occupancy\nvar masks = [0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F,\n 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF,\n 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF];\n\nfunction LZWEncoder(width, height, pixels, colorDepth) {\n var initCodeSize = Math.max(2, colorDepth);\n\n var accum = new Uint8Array(256);\n var htab = new Int32Array(HSIZE);\n var codetab = new Int32Array(HSIZE);\n\n var cur_accum, cur_bits = 0;\n var a_count;\n var free_ent = 0; // first unused entry\n var maxcode;\n\n // block compression parameters -- after all codes are used up,\n // and compression rate changes, start over.\n var clear_flg = false;\n\n // Algorithm: use open addressing double hashing (no chaining) on the\n // prefix code / next character combination. We do a variant of Knuth's\n // algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime\n // secondary probe. Here, the modular division first probe is gives way\n // to a faster exclusive-or manipulation. Also do block compression with\n // an adaptive reset, whereby the code table is cleared when the compression\n // ratio decreases, but after the table fills. The variable-length output\n // codes are re-sized at this point, and a special CLEAR code is generated\n // for the decompressor. Late addition: construct the table according to\n // file size for noticeable speed improvement on small files. Please direct\n // questions about this implementation to ames!jaw.\n var g_init_bits, ClearCode, EOFCode;\n\n // Add a character to the end of the current packet, and if it is 254\n // characters, flush the packet to disk.\n function char_out(c, outs) {\n accum[a_count++] = c;\n if (a_count >= 254) flush_char(outs);\n }\n\n // Clear out the hash table\n // table clear for block compress\n function cl_block(outs) {\n cl_hash(HSIZE);\n free_ent = ClearCode + 2;\n clear_flg = true;\n output(ClearCode, outs);\n }\n\n // Reset code table\n function cl_hash(hsize) {\n for (var i = 0; i < hsize; ++i) htab[i] = -1;\n }\n\n function compress(init_bits, outs) {\n var fcode, c, i, ent, disp, hsize_reg, hshift;\n\n // Set up the globals: g_init_bits - initial number of bits\n g_init_bits = init_bits;\n\n // Set up the necessary values\n clear_flg = false;\n n_bits = g_init_bits;\n maxcode = MAXCODE(n_bits);\n\n ClearCode = 1 << (init_bits - 1);\n EOFCode = ClearCode + 1;\n free_ent = ClearCode + 2;\n\n a_count = 0; // clear packet\n\n ent = nextPixel();\n\n hshift = 0;\n for (fcode = HSIZE; fcode < 65536; fcode *= 2) ++hshift;\n hshift = 8 - hshift; // set hash code range bound\n hsize_reg = HSIZE;\n cl_hash(hsize_reg); // clear hash table\n\n output(ClearCode, outs);\n\n outer_loop: while ((c = nextPixel()) != EOF) {\n fcode = (c << BITS) + ent;\n i = (c << hshift) ^ ent; // xor hashing\n if (htab[i] === fcode) {\n ent = codetab[i];\n continue;\n } else if (htab[i] >= 0) { // non-empty slot\n disp = hsize_reg - i; // secondary hash (after G. Knott)\n if (i === 0) disp = 1;\n do {\n if ((i -= disp) < 0) i += hsize_reg;\n if (htab[i] === fcode) {\n ent = codetab[i];\n continue outer_loop;\n }\n } while (htab[i] >= 0);\n }\n output(ent, outs);\n ent = c;\n if (free_ent < 1 << BITS) {\n codetab[i] = free_ent++; // code -> hashtable\n htab[i] = fcode;\n } else {\n cl_block(outs);\n }\n }\n\n // Put out the final code.\n output(ent, outs);\n output(EOFCode, outs);\n }\n\n function encode(outs) {\n outs.writeByte(initCodeSize); // write \"initial code size\" byte\n remaining = width * height; // reset navigation variables\n curPixel = 0;\n compress(initCodeSize + 1, outs); // compress and write the pixel data\n outs.writeByte(0); // write block terminator\n }\n\n // Flush the packet to disk, and reset the accumulator\n function flush_char(outs) {\n if (a_count > 0) {\n outs.writeByte(a_count);\n outs.writeBytes(accum, 0, a_count);\n a_count = 0;\n }\n }\n\n function MAXCODE(n_bits) {\n return (1 << n_bits) - 1;\n }\n\n // Return the next pixel from the image\n function nextPixel() {\n if (remaining === 0) return EOF;\n --remaining;\n var pix = pixels[curPixel++];\n return pix & 0xff;\n }\n\n function output(code, outs) {\n cur_accum &= masks[cur_bits];\n\n if (cur_bits > 0) cur_accum |= (code << cur_bits);\n else cur_accum = code;\n\n cur_bits += n_bits;\n\n while (cur_bits >= 8) {\n char_out((cur_accum & 0xff), outs);\n cur_accum >>= 8;\n cur_bits -= 8;\n }\n\n // If the next entry is going to be too big for the code size,\n // then increase it, if possible.\n if (free_ent > maxcode || clear_flg) {\n if (clear_flg) {\n maxcode = MAXCODE(n_bits = g_init_bits);\n clear_flg = false;\n } else {\n ++n_bits;\n if (n_bits == BITS) maxcode = 1 << BITS;\n else maxcode = MAXCODE(n_bits);\n }\n }\n\n if (code == EOFCode) {\n // At EOF, write the rest of the buffer.\n while (cur_bits > 0) {\n char_out((cur_accum & 0xff), outs);\n cur_accum >>= 8;\n cur_bits -= 8;\n }\n flush_char(outs);\n }\n }\n\n this.encode = encode;\n}\n\nmodule.exports = LZWEncoder;\n","/* NeuQuant Neural-Net Quantization Algorithm\n * ------------------------------------------\n *\n * Copyright (c) 1994 Anthony Dekker\n *\n * NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994.\n * See \"Kohonen neural networks for optimal colour quantization\"\n * in \"Network: Computation in Neural Systems\" Vol. 5 (1994) pp 351-367.\n * for a discussion of the algorithm.\n * See also http://members.ozemail.com.au/~dekker/NEUQUANT.HTML\n *\n * Any party obtaining a copy of these files from the author, directly or\n * indirectly, is granted, free of charge, a full and unrestricted irrevocable,\n * world-wide, paid up, royalty-free, nonexclusive right and license to deal\n * in this software and documentation files (the \"Software\"), including without\n * limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons who receive\n * copies from any such party to do so, with the only requirement being\n * that this copyright notice remain intact.\n *\n * (JavaScript port 2012 by Johan Nordberg)\n */\n\nvar ncycles = 100; // number of learning cycles\nvar netsize = 256; // number of colors used\nvar maxnetpos = netsize - 1;\n\n// defs for freq and bias\nvar netbiasshift = 4; // bias for colour values\nvar intbiasshift = 16; // bias for fractions\nvar intbias = (1 << intbiasshift);\nvar gammashift = 10;\nvar gamma = (1 << gammashift);\nvar betashift = 10;\nvar beta = (intbias >> betashift); /* beta = 1/1024 */\nvar betagamma = (intbias << (gammashift - betashift));\n\n// defs for decreasing radius factor\nvar initrad = (netsize >> 3); // for 256 cols, radius starts\nvar radiusbiasshift = 6; // at 32.0 biased by 6 bits\nvar radiusbias = (1 << radiusbiasshift);\nvar initradius = (initrad * radiusbias); //and decreases by a\nvar radiusdec = 30; // factor of 1/30 each cycle\n\n// defs for decreasing alpha factor\nvar alphabiasshift = 10; // alpha starts at 1.0\nvar initalpha = (1 << alphabiasshift);\nvar alphadec; // biased by 10 bits\n\n/* radbias and alpharadbias used for radpower calculation */\nvar radbiasshift = 8;\nvar radbias = (1 << radbiasshift);\nvar alpharadbshift = (alphabiasshift + radbiasshift);\nvar alpharadbias = (1 << alpharadbshift);\n\n// four primes near 500 - assume no image has a length so large that it is\n// divisible by all four primes\nvar prime1 = 499;\nvar prime2 = 491;\nvar prime3 = 487;\nvar prime4 = 503;\nvar minpicturebytes = (3 * prime4);\n\n/*\n Constructor: NeuQuant\n\n Arguments:\n\n pixels - array of pixels in RGB format\n samplefac - sampling factor 1 to 30 where lower is better quality\n\n >\n > pixels = [r, g, b, r, g, b, r, g, b, ..]\n >\n*/\nfunction NeuQuant(pixels, samplefac) {\n var network; // int[netsize][4]\n var netindex; // for network lookup - really 256\n\n // bias and freq arrays for learning\n var bias;\n var freq;\n var radpower;\n\n /*\n Private Method: init\n\n sets up arrays\n */\n function init() {\n network = [];\n netindex = new Int32Array(256);\n bias = new Int32Array(netsize);\n freq = new Int32Array(netsize);\n radpower = new Int32Array(netsize >> 3);\n\n var i, v;\n for (i = 0; i < netsize; i++) {\n v = (i << (netbiasshift + 8)) / netsize;\n network[i] = new Float64Array([v, v, v, 0]);\n //network[i] = [v, v, v, 0]\n freq[i] = intbias / netsize;\n bias[i] = 0;\n }\n }\n\n /*\n Private Method: unbiasnet\n\n unbiases network to give byte values 0..255 and record position i to prepare for sort\n */\n function unbiasnet() {\n for (var i = 0; i < netsize; i++) {\n network[i][0] >>= netbiasshift;\n network[i][1] >>= netbiasshift;\n network[i][2] >>= netbiasshift;\n network[i][3] = i; // record color number\n }\n }\n\n /*\n Private Method: altersingle\n\n moves neuron *i* towards biased (b,g,r) by factor *alpha*\n */\n function altersingle(alpha, i, b, g, r) {\n network[i][0] -= (alpha * (network[i][0] - b)) / initalpha;\n network[i][1] -= (alpha * (network[i][1] - g)) / initalpha;\n network[i][2] -= (alpha * (network[i][2] - r)) / initalpha;\n }\n\n /*\n Private Method: alterneigh\n\n moves neurons in *radius* around index *i* towards biased (b,g,r) by factor *alpha*\n */\n function alterneigh(radius, i, b, g, r) {\n var lo = Math.abs(i - radius);\n var hi = Math.min(i + radius, netsize);\n\n var j = i + 1;\n var k = i - 1;\n var m = 1;\n\n var p, a;\n while ((j < hi) || (k > lo)) {\n a = radpower[m++];\n\n if (j < hi) {\n p = network[j++];\n p[0] -= (a * (p[0] - b)) / alpharadbias;\n p[1] -= (a * (p[1] - g)) / alpharadbias;\n p[2] -= (a * (p[2] - r)) / alpharadbias;\n }\n\n if (k > lo) {\n p = network[k--];\n p[0] -= (a * (p[0] - b)) / alpharadbias;\n p[1] -= (a * (p[1] - g)) / alpharadbias;\n p[2] -= (a * (p[2] - r)) / alpharadbias;\n }\n }\n }\n\n /*\n Private Method: contest\n\n searches for biased BGR values\n */\n function contest(b, g, r) {\n /*\n finds closest neuron (min dist) and updates freq\n finds best neuron (min dist-bias) and returns position\n for frequently chosen neurons, freq[i] is high and bias[i] is negative\n bias[i] = gamma * ((1 / netsize) - freq[i])\n */\n\n var bestd = ~(1 << 31);\n var bestbiasd = bestd;\n var bestpos = -1;\n var bestbiaspos = bestpos;\n\n var i, n, dist, biasdist, betafreq;\n for (i = 0; i < netsize; i++) {\n n = network[i];\n\n dist = Math.abs(n[0] - b) + Math.abs(n[1] - g) + Math.abs(n[2] - r);\n if (dist < bestd) {\n bestd = dist;\n bestpos = i;\n }\n\n biasdist = dist - ((bias[i]) >> (intbiasshift - netbiasshift));\n if (biasdist < bestbiasd) {\n bestbiasd = biasdist;\n bestbiaspos = i;\n }\n\n betafreq = (freq[i] >> betashift);\n freq[i] -= betafreq;\n bias[i] += (betafreq << gammashift);\n }\n\n freq[bestpos] += beta;\n bias[bestpos] -= betagamma;\n\n return bestbiaspos;\n }\n\n /*\n Private Method: inxbuild\n\n sorts network and builds netindex[0..255]\n */\n function inxbuild() {\n var i, j, p, q, smallpos, smallval, previouscol = 0, startpos = 0;\n for (i = 0; i < netsize; i++) {\n p = network[i];\n smallpos = i;\n smallval = p[1]; // index on g\n // find smallest in i..netsize-1\n for (j = i + 1; j < netsize; j++) {\n q = network[j];\n if (q[1] < smallval) { // index on g\n smallpos = j;\n smallval = q[1]; // index on g\n }\n }\n q = network[smallpos];\n // swap p (i) and q (smallpos) entries\n if (i != smallpos) {\n j = q[0]; q[0] = p[0]; p[0] = j;\n j = q[1]; q[1] = p[1]; p[1] = j;\n j = q[2]; q[2] = p[2]; p[2] = j;\n j = q[3]; q[3] = p[3]; p[3] = j;\n }\n // smallval entry is now in position i\n\n if (smallval != previouscol) {\n netindex[previouscol] = (startpos + i) >> 1;\n for (j = previouscol + 1; j < smallval; j++)\n netindex[j] = i;\n previouscol = smallval;\n startpos = i;\n }\n }\n netindex[previouscol] = (startpos + maxnetpos) >> 1;\n for (j = previouscol + 1; j < 256; j++)\n netindex[j] = maxnetpos; // really 256\n }\n\n /*\n Private Method: inxsearch\n\n searches for BGR values 0..255 and returns a color index\n */\n function inxsearch(b, g, r) {\n var a, p, dist;\n\n var bestd = 1000; // biggest possible dist is 256*3\n var best = -1;\n\n var i = netindex[g]; // index on g\n var j = i - 1; // start at netindex[g] and work outwards\n\n while ((i < netsize) || (j >= 0)) {\n if (i < netsize) {\n p = network[i];\n dist = p[1] - g; // inx key\n if (dist >= bestd) i = netsize; // stop iter\n else {\n i++;\n if (dist < 0) dist = -dist;\n a = p[0] - b; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n a = p[2] - r; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n bestd = dist;\n best = p[3];\n }\n }\n }\n }\n if (j >= 0) {\n p = network[j];\n dist = g - p[1]; // inx key - reverse dif\n if (dist >= bestd) j = -1; // stop iter\n else {\n j--;\n if (dist < 0) dist = -dist;\n a = p[0] - b; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n a = p[2] - r; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n bestd = dist;\n best = p[3];\n }\n }\n }\n }\n }\n\n return best;\n }\n\n /*\n Private Method: learn\n\n \"Main Learning Loop\"\n */\n function learn() {\n var i;\n\n var lengthcount = pixels.length;\n var alphadec = 30 + ((samplefac - 1) / 3);\n var samplepixels = lengthcount / (3 * samplefac);\n var delta = ~~(samplepixels / ncycles);\n var alpha = initalpha;\n var radius = initradius;\n\n var rad = radius >> radiusbiasshift;\n\n if (rad <= 1) rad = 0;\n for (i = 0; i < rad; i++)\n radpower[i] = alpha * (((rad * rad - i * i) * radbias) / (rad * rad));\n\n var step;\n if (lengthcount < minpicturebytes) {\n samplefac = 1;\n step = 3;\n } else if ((lengthcount % prime1) !== 0) {\n step = 3 * prime1;\n } else if ((lengthcount % prime2) !== 0) {\n step = 3 * prime2;\n } else if ((lengthcount % prime3) !== 0) {\n step = 3 * prime3;\n } else {\n step = 3 * prime4;\n }\n\n var b, g, r, j;\n var pix = 0; // current pixel\n\n i = 0;\n while (i < samplepixels) {\n b = (pixels[pix] & 0xff) << netbiasshift;\n g = (pixels[pix + 1] & 0xff) << netbiasshift;\n r = (pixels[pix + 2] & 0xff) << netbiasshift;\n\n j = contest(b, g, r);\n\n altersingle(alpha, j, b, g, r);\n if (rad !== 0) alterneigh(rad, j, b, g, r); // alter neighbours\n\n pix += step;\n if (pix >= lengthcount) pix -= lengthcount;\n\n i++;\n\n if (delta === 0) delta = 1;\n if (i % delta === 0) {\n alpha -= alpha / alphadec;\n radius -= radius / radiusdec;\n rad = radius >> radiusbiasshift;\n\n if (rad <= 1) rad = 0;\n for (j = 0; j < rad; j++)\n radpower[j] = alpha * (((rad * rad - j * j) * radbias) / (rad * rad));\n }\n }\n }\n\n /*\n Method: buildColormap\n\n 1. initializes network\n 2. trains it\n 3. removes misconceptions\n 4. builds colorindex\n */\n function buildColormap() {\n init();\n learn();\n unbiasnet();\n inxbuild();\n }\n this.buildColormap = buildColormap;\n\n /*\n Method: getColormap\n\n builds colormap from the index\n\n returns array in the format:\n\n >\n > [r, g, b, r, g, b, r, g, b, ..]\n >\n */\n function getColormap() {\n var map = [];\n var index = [];\n\n for (var i = 0; i < netsize; i++)\n index[network[i][3]] = i;\n\n var k = 0;\n for (var l = 0; l < netsize; l++) {\n var j = index[l];\n map[k++] = (network[j][0]);\n map[k++] = (network[j][1]);\n map[k++] = (network[j][2]);\n }\n return map;\n }\n this.getColormap = getColormap;\n\n /*\n Method: lookupRGB\n\n looks for the closest *r*, *g*, *b* color in the map and\n returns its index\n */\n this.lookupRGB = inxsearch;\n}\n\nmodule.exports = NeuQuant;\n","GIFEncoder = require './GIFEncoder.js'\n\nrenderFrame = (frame) ->\n encoder = new GIFEncoder frame.width, frame.height\n\n if frame.index is 0\n encoder.writeHeader()\n else\n encoder.firstFrame = false\n\n encoder.setTransparent frame.transparent\n encoder.setRepeat frame.repeat\n encoder.setDelay frame.delay\n encoder.setQuality frame.quality\n encoder.setDither frame.dither\n encoder.setGlobalPalette frame.globalPalette\n encoder.addFrame frame.data\n encoder.finish() if frame.last\n if frame.globalPalette == true\n frame.globalPalette = encoder.getGlobalPalette()\n\n stream = encoder.stream()\n frame.data = stream.pages\n frame.cursor = stream.cursor\n frame.pageSize = stream.constructor.pageSize\n\n if frame.canTransfer\n transfer = (page.buffer for page in frame.data)\n self.postMessage frame, transfer\n else\n self.postMessage frame\n\nself.onmessage = (event) -> renderFrame event.data\n",null,null,null,null]} \ No newline at end of file diff --git a/libraries/gg-dep-bundle/gif.worker.js.map b/libraries/gg-dep-bundle/gif.worker.js.map new file mode 100755 index 00000000..211ddbad --- /dev/null +++ b/libraries/gg-dep-bundle/gif.worker.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","src/GIFEncoder.js","src/LZWEncoder.js","src/TypedNeuQuant.js","src/gif.worker.coffee"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","NeuQuant","LZWEncoder","ByteArray","this","page","pages","newPage","pageSize","charMap","String","fromCharCode","prototype","Uint8Array","cursor","getData","rv","p","writeByte","val","writeUTFBytes","string","charCodeAt","writeBytes","array","offset","GIFEncoder","width","height","transparent","transIndex","repeat","delay","image","pixels","indexedPixels","colorDepth","colorTab","neuQuant","usedEntry","Array","palSize","dispose","firstFrame","sample","dither","globalPalette","out","setDelay","milliseconds","Math","round","setFrameRate","fps","setDispose","disposalCode","setRepeat","setTransparent","color","addFrame","imageData","slice","getImagePixels","analyzePixels","writeLSD","writePalette","writeNetscapeExt","writeGraphicCtrlExt","writeImageDesc","writePixels","finish","setQuality","quality","setDither","setGlobalPalette","palette","getGlobalPalette","writeHeader","buildColormap","getColormap","ditherPixels","replace","match","indexPixels","findClosest","imgq","nPix","k","j","index","findClosestRGB","kernel","serpentine","kernels","FalseFloydSteinberg","FloydSteinberg","Stucki","Atkinson","ds","data","direction","y","x","xend","idx","r1","g1","b1","r2","g2","b2","er","eg","eb","end","x1","y1","d","max","min","c","used","g","b","lookupRGB","minpos","dmin","len","dr","dg","db","w","h","srcPos","count","transp","disp","writeShort","pValue","enc","encode","stream","EOF","BITS","HSIZE","masks","initCodeSize","accum","htab","Int32Array","codetab","cur_accum","cur_bits","a_count","free_ent","maxcode","clear_flg","g_init_bits","ClearCode","EOFCode","char_out","outs","flush_char","cl_block","cl_hash","output","hsize","compress","init_bits","fcode","ent","hsize_reg","hshift","n_bits","MAXCODE","nextPixel","outer_loop","remaining","curPixel","pix","ncycles","netsize","maxnetpos","netbiasshift","intbiasshift","intbias","gammashift","gamma","betashift","beta","betagamma","initrad","radiusbiasshift","radiusbias","initradius","radiusdec","alphabiasshift","initalpha","alphadec","radbiasshift","radbias","alpharadbshift","alpharadbias","prime1","prime2","prime3","prime4","minpicturebytes","samplefac","network","netindex","bias","freq","radpower","init","v","Float64Array","unbiasnet","altersingle","alpha","alterneigh","radius","lo","abs","hi","m","contest","bestd","bestbiasd","bestpos","bestbiaspos","dist","biasdist","betafreq","inxbuild","q","smallpos","smallval","previouscol","startpos","inxsearch","best","learn","lengthcount","samplepixels","delta","rad","step","map","renderFrame","frame","encoder","transfer","last","constructor","canTransfer","ref","results","buffer","self","postMessage","onmessage","event"],"mappings":";CAAA,QAAAA,GAAAC,EAAAC,EAAAC,GAAA,QAAAC,GAAAC,EAAAC,GAAA,IAAAJ,EAAAG,GAAA,CAAA,IAAAJ,EAAAI,GAAA,CAAA,GAAAE,SAAAC,UAAA,YAAAA,OAAA,KAAAF,GAAAC,EAAA,MAAAA,GAAAF,GAAA,EAAA,IAAAI,EAAA,MAAAA,GAAAJ,GAAA,EAAA,IAAAK,GAAA,GAAAC,OAAA,uBAAAN,EAAA,IAAA,MAAAK,GAAAE,KAAA,mBAAAF,EAAA,GAAAG,GAAAX,EAAAG,IAAAS,WAAAb,GAAAI,GAAA,GAAAU,KAAAF,EAAAC,QAAA,SAAAd,GAAA,GAAAE,GAAAD,EAAAI,GAAA,GAAAL,EAAA,OAAAI,GAAAF,EAAAA,EAAAF,IAAAa,EAAAA,EAAAC,QAAAd,EAAAC,EAAAC,EAAAC,GAAA,MAAAD,GAAAG,GAAAS,QAAA,GAAAL,SAAAD,UAAA,YAAAA,OAAA,KAAA,GAAAH,GAAA,EAAAA,EAAAF,EAAAa,OAAAX,IAAAD,EAAAD,EAAAE,GAAA,OAAAD,MAAAa,GAAA,SAAAT,QAAAU,OAAAJ,SCSA,GAAAK,UAAAX,QAAA,qBACA,IAAAY,YAAAZ,QAAA,kBAEA,SAAAa,aACAC,KAAAC,MAAA,CACAD,MAAAE,QACAF,MAAAG,UAGAJ,UAAAK,SAAA,IACAL,WAAAM,UAEA,KAAA,GAAAlB,GAAA,EAAAA,EAAA,IAAAA,IACAY,UAAAM,QAAAlB,GAAAmB,OAAAC,aAAApB,EAEAY,WAAAS,UAAAL,QAAA,WACAH,KAAAE,QAAAF,KAAAC,MAAA,GAAAQ,YAAAV,UAAAK,SACAJ,MAAAU,OAAA,EAGAX,WAAAS,UAAAG,QAAA,WACA,GAAAC,IAAA,EACA,KAAA,GAAAC,GAAA,EAAAA,EAAAb,KAAAE,MAAAR,OAAAmB,IAAA,CACA,IAAA,GAAA1B,GAAA,EAAAA,EAAAY,UAAAK,SAAAjB,IAAA,CACAyB,IAAAb,UAAAM,QAAAL,KAAAE,MAAAW,GAAA1B,KAGA,MAAAyB,IAGAb,WAAAS,UAAAM,UAAA,SAAAC,KACA,GAAAf,KAAAU,QAAAX,UAAAK,SAAAJ,KAAAG,SACAH,MAAAE,MAAAF,KAAAC,MAAAD,KAAAU,UAAAK,IAGAhB,WAAAS,UAAAQ,cAAA,SAAAC,QACA,IAAA,GAAA1B,GAAA0B,OAAAvB,OAAAP,EAAA,EAAAA,EAAAI,EAAAJ,IACAa,KAAAc,UAAAG,OAAAC,WAAA/B,IAGAY,WAAAS,UAAAW,WAAA,SAAAC,MAAAC,OAAA3B,QACA,IAAA,GAAAH,GAAAG,QAAA0B,MAAA1B,OAAAP,EAAAkC,QAAA,EAAAlC,EAAAI,EAAAJ,IACAa,KAAAc,UAAAM,MAAAjC,IAGA,SAAAmC,YAAAC,MAAAC,QAEAxB,KAAAuB,QAAAA,KACAvB,MAAAwB,SAAAA,MAGAxB,MAAAyB,YAAA,IAGAzB,MAAA0B,WAAA,CAGA1B,MAAA2B,QAAA,CAGA3B,MAAA4B,MAAA,CAEA5B,MAAA6B,MAAA,IACA7B,MAAA8B,OAAA,IACA9B,MAAA+B,cAAA,IACA/B,MAAAgC,WAAA,IACAhC,MAAAiC,SAAA,IACAjC,MAAAkC,SAAA,IACAlC,MAAAmC,UAAA,GAAAC,MACApC,MAAAqC,QAAA,CACArC,MAAAsC,SAAA,CACAtC,MAAAuC,WAAA,IACAvC,MAAAwC,OAAA,EACAxC,MAAAyC,OAAA,KACAzC,MAAA0C,cAAA,KAEA1C,MAAA2C,IAAA,GAAA5C,WAOAuB,WAAAd,UAAAoC,SAAA,SAAAC,cACA7C,KAAA4B,MAAAkB,KAAAC,MAAAF,aAAA,IAMAvB,YAAAd,UAAAwC,aAAA,SAAAC,KACAjD,KAAA4B,MAAAkB,KAAAC,MAAA,IAAAE,KASA3B,YAAAd,UAAA0C,WAAA,SAAAC,cACA,GAAAA,cAAA,EAAAnD,KAAAsC,QAAAa,aAcA7B,YAAAd,UAAA4C,UAAA,SAAAzB,QACA3B,KAAA2B,OAAAA,OAUAL,YAAAd,UAAA6C,eAAA,SAAAC,OACAtD,KAAAyB,YAAA6B,MAQAhC,YAAAd,UAAA+C,SAAA,SAAAC,WACAxD,KAAA6B,MAAA2B,SAEAxD,MAAAiC,SAAAjC,KAAA0C,eAAA1C,KAAA0C,cAAAe,MAAAzD,KAAA0C,cAAA,IAEA1C,MAAA0D,gBACA1D,MAAA2D,eAEA,IAAA3D,KAAA0C,gBAAA,KAAA1C,KAAA0C,cAAA1C,KAAAiC,QAEA,IAAAjC,KAAAuC,WAAA,CACAvC,KAAA4D,UACA5D,MAAA6D,cACA,IAAA7D,KAAA2B,QAAA,EAAA,CAEA3B,KAAA8D,oBAIA9D,KAAA+D,qBACA/D,MAAAgE,gBACA,KAAAhE,KAAAuC,aAAAvC,KAAA0C,cAAA1C,KAAA6D,cACA7D,MAAAiE,aAEAjE,MAAAuC,WAAA,MAOAjB,YAAAd,UAAA0D,OAAA,WACAlE,KAAA2C,IAAA7B,UAAA,IAUAQ,YAAAd,UAAA2D,WAAA,SAAAC,SACA,GAAAA,QAAA,EAAAA,QAAA,CACApE,MAAAwC,OAAA4B,QAYA9C,YAAAd,UAAA6D,UAAA,SAAA5B,QACA,GAAAA,SAAA,KAAAA,OAAA,gBACAzC,MAAAyC,OAAAA,OAQAnB,YAAAd,UAAA8D,iBAAA,SAAAC,SACAvE,KAAA0C,cAAA6B,QAQAjD,YAAAd,UAAAgE,iBAAA,WACA,MAAAxE,MAAA0C,eAAA1C,KAAA0C,cAAAe,OAAAzD,KAAA0C,cAAAe,MAAA,IAAAzD,KAAA0C,cAMApB,YAAAd,UAAAiE,YAAA,WACAzE,KAAA2C,IAAA3B,cAAA,UAMAM,YAAAd,UAAAmD,cAAA,WACA,IAAA3D,KAAAiC,SAAA,CACAjC,KAAAkC,SAAA,GAAArC,UAAAG,KAAA8B,OAAA9B,KAAAwC,OACAxC,MAAAkC,SAAAwC,eACA1E,MAAAiC,SAAAjC,KAAAkC,SAAAyC,cAIA,GAAA3E,KAAAyC,OAAA,CACAzC,KAAA4E,aAAA5E,KAAAyC,OAAAoC,QAAA,cAAA,IAAA7E,KAAAyC,OAAAqC,MAAA,iBAAA,UACA,CACA9E,KAAA+E,cAGA/E,KAAA8B,OAAA,IACA9B,MAAAgC,WAAA,CACAhC,MAAAqC,QAAA,CAGA,IAAArC,KAAAyB,cAAA,KAAA,CACAzB,KAAA0B,WAAA1B,KAAAgF,YAAAhF,KAAAyB,YAAA,OAOAH,YAAAd,UAAAuE,YAAA,SAAAE,MACA,GAAAC,MAAAlF,KAAA8B,OAAApC,OAAA,CACAM,MAAA+B,cAAA,GAAAtB,YAAAyE,KACA,IAAAC,GAAA,CACA,KAAA,GAAAC,GAAA,EAAAA,EAAAF,KAAAE,IAAA,CACA,GAAAC,OAAArF,KAAAsF,eACAtF,KAAA8B,OAAAqD,KAAA,IACAnF,KAAA8B,OAAAqD,KAAA,IACAnF,KAAA8B,OAAAqD,KAAA,IAEAnF,MAAAmC,UAAAkD,OAAA,IACArF,MAAA+B,cAAAqD,GAAAC,OAOA/D,YAAAd,UAAAoE,aAAA,SAAAW,OAAAC,YACA,GAAAC,UACAC,sBACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IAEAC,iBACA,EAAA,GAAA,EAAA,IACA,EAAA,IAAA,EAAA,IACA,EAAA,GAAA,EAAA,IACA,EAAA,GAAA,EAAA,IAEAC,SACA,EAAA,GAAA,EAAA,IACA,EAAA,GAAA,EAAA,IACA,EAAA,IAAA,EAAA,IACA,EAAA,IAAA,EAAA,IACA,EAAA,GAAA,EAAA,IACA,EAAA,GAAA,EAAA,IACA,EAAA,GAAA,EAAA,IACA,EAAA,IAAA,EAAA,IACA,EAAA,IAAA,EAAA,IACA,EAAA,GAAA,EAAA,IACA,EAAA,GAAA,EAAA,IACA,EAAA,GAAA,EAAA,IAEAC,WACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,IACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IAIA,KAAAN,SAAAE,QAAAF,QAAA,CACA,KAAA,6BAAAA,OAGA,GAAAO,IAAAL,QAAAF,OACA,IAAAF,OAAA,EACA7D,OAAAxB,KAAAwB,OACAD,MAAAvB,KAAAuB,MACAwE,KAAA/F,KAAA8B,MACA,IAAAkE,WAAAR,YAAA,EAAA,CAEAxF,MAAA+B,cAAA,GAAAtB,YAAAT,KAAA8B,OAAApC,OAAA,EAEA,KAAA,GAAAuG,GAAA,EAAAA,EAAAzE,OAAAyE,IAAA,CAEA,GAAAT,WAAAQ,UAAAA,WAAA,CAEA,KAAA,GAAAE,GAAAF,WAAA,EAAA,EAAAzE,MAAA,EAAA4E,KAAAH,WAAA,EAAAzE,MAAA,EAAA2E,IAAAC,KAAAD,GAAAF,UAAA,CAEAX,MAAAY,EAAA1E,MAAA2E,CAEA,IAAAE,KAAAf,MAAA,CACA,IAAAgB,IAAAN,KAAAK,IACA,IAAAE,IAAAP,KAAAK,IAAA,EACA,IAAAG,IAAAR,KAAAK,IAAA,EAGAA,KAAApG,KAAAsF,eAAAe,GAAAC,GAAAC,GACAvG,MAAAmC,UAAAiE,KAAA,IACApG,MAAA+B,cAAAsD,OAAAe,GACAA,MAAA,CACA,IAAAI,IAAAxG,KAAAiC,SAAAmE,IACA,IAAAK,IAAAzG,KAAAiC,SAAAmE,IAAA,EACA,IAAAM,IAAA1G,KAAAiC,SAAAmE,IAAA,EAEA,IAAAO,IAAAN,GAAAG,EACA,IAAAI,IAAAN,GAAAG,EACA,IAAAI,IAAAN,GAAAG,EAEA,KAAA,GAAAvH,GAAA6G,WAAA,EAAA,EAAAF,GAAApG,OAAA,EAAAoH,IAAAd,WAAA,EAAAF,GAAApG,OAAA,EAAAP,IAAA2H,IAAA3H,GAAA6G,UAAA,CACA,GAAAe,IAAAjB,GAAA3G,GAAA,EACA,IAAA6H,IAAAlB,GAAA3G,GAAA,EACA,IAAA4H,GAAAb,GAAA,GAAAa,GAAAb,EAAA3E,OAAAyF,GAAAf,GAAA,GAAAe,GAAAf,EAAAzE,OAAA,CACA,GAAAyF,GAAAnB,GAAA3G,GAAA,EACAiH,KAAAf,MAAA0B,GAAAC,GAAAzF,KACA6E,MAAA,CAEAL,MAAAK,KAAAtD,KAAAoE,IAAA,EAAApE,KAAAqE,IAAA,IAAApB,KAAAK,KAAAO,GAAAM,GACAlB,MAAAK,IAAA,GAAAtD,KAAAoE,IAAA,EAAApE,KAAAqE,IAAA,IAAApB,KAAAK,IAAA,GAAAQ,GAAAK,GACAlB,MAAAK,IAAA,GAAAtD,KAAAoE,IAAA,EAAApE,KAAAqE,IAAA,IAAApB,KAAAK,IAAA,GAAAS,GAAAI,QAUA3F,YAAAd,UAAAwE,YAAA,SAAAoC,EAAAC,MACA,MAAArH,MAAAsF,gBAAA8B,EAAA,WAAA,IAAAA,EAAA,QAAA,EAAAA,EAAA,IAAAC,MAGA/F,YAAAd,UAAA8E,eAAA,SAAAzG,EAAAyI,EAAAC,EAAAF,MACA,GAAArH,KAAAiC,WAAA,KAAA,OAAA,CAEA,IAAAjC,KAAAkC,WAAAmF,KAAA,CACA,MAAArH,MAAAkC,SAAAsF,UAAA3I,EAAAyI,EAAAC,GAGA,GAAAH,GAAAG,EAAAD,GAAA,EAAAzI,GAAA,EAEA,IAAA4I,QAAA,CACA,IAAAC,MAAA,IAAA,IAAA,GACA,IAAAC,KAAA3H,KAAAiC,SAAAvC,MAEA,KAAA,GAAAP,GAAA,EAAAkG,MAAA,EAAAlG,EAAAwI,IAAAtC,QAAA,CACA,GAAAuC,IAAA/I,GAAAmB,KAAAiC,SAAA9C,KAAA,IACA,IAAA0I,IAAAP,GAAAtH,KAAAiC,SAAA9C,KAAA,IACA,IAAA2I,IAAAP,GAAAvH,KAAAiC,SAAA9C,KAAA,IACA,IAAA8H,GAAAW,GAAAA,GAAAC,GAAAA,GAAAC,GAAAA,EACA,MAAAT,MAAArH,KAAAmC,UAAAkD,SAAA4B,EAAAS,KAAA,CACAA,KAAAT,CACAQ,QAAApC,OAIA,MAAAoC,QAOAnG,YAAAd,UAAAkD,eAAA,WACA,GAAAqE,GAAA/H,KAAAuB,KACA,IAAAyG,GAAAhI,KAAAwB,MACAxB,MAAA8B,OAAA,GAAArB,YAAAsH,EAAAC,EAAA,EAEA,IAAAjC,MAAA/F,KAAA6B,KACA,IAAAoG,QAAA,CACA,IAAAC,OAAA,CAEA,KAAA,GAAA/I,GAAA,EAAAA,EAAA6I,EAAA7I,IAAA,CACA,IAAA,GAAAiG,GAAA,EAAAA,EAAA2C,EAAA3C,IAAA,CACApF,KAAA8B,OAAAoG,SAAAnC,KAAAkC,SACAjI,MAAA8B,OAAAoG,SAAAnC,KAAAkC,SACAjI,MAAA8B,OAAAoG,SAAAnC,KAAAkC,SACAA,YAQA3G,YAAAd,UAAAuD,oBAAA,WACA/D,KAAA2C,IAAA7B,UAAA,GACAd,MAAA2C,IAAA7B,UAAA,IACAd,MAAA2C,IAAA7B,UAAA,EAEA,IAAAqH,QAAAC,IACA,IAAApI,KAAAyB,cAAA,KAAA,CACA0G,OAAA,CACAC,MAAA,MACA,CACAD,OAAA,CACAC,MAAA,EAGA,GAAApI,KAAAsC,SAAA,EAAA,CACA8F,KAAA9F,QAAA,EAEA8F,OAAA,CAGApI,MAAA2C,IAAA7B,UACA,EACAsH,KACA,EACAD,OAGAnI,MAAAqI,WAAArI,KAAA4B,MACA5B,MAAA2C,IAAA7B,UAAAd,KAAA0B,WACA1B,MAAA2C,IAAA7B,UAAA,GAMAQ,YAAAd,UAAAwD,eAAA,WACAhE,KAAA2C,IAAA7B,UAAA,GACAd,MAAAqI,WAAA,EACArI,MAAAqI,WAAA,EACArI,MAAAqI,WAAArI,KAAAuB,MACAvB,MAAAqI,WAAArI,KAAAwB,OAGA,IAAAxB,KAAAuC,YAAAvC,KAAA0C,cAAA,CAEA1C,KAAA2C,IAAA7B,UAAA,OACA,CAEAd,KAAA2C,IAAA7B,UACA,IACA,EACA,EACA,EACAd,KAAAqC,UAQAf,YAAAd,UAAAoD,SAAA,WAEA5D,KAAAqI,WAAArI,KAAAuB,MACAvB,MAAAqI,WAAArI,KAAAwB,OAGAxB,MAAA2C,IAAA7B,UACA,IACA,IACA,EACAd,KAAAqC,QAGArC,MAAA2C,IAAA7B,UAAA,EACAd,MAAA2C,IAAA7B,UAAA,GAMAQ,YAAAd,UAAAsD,iBAAA,WACA9D,KAAA2C,IAAA7B,UAAA,GACAd,MAAA2C,IAAA7B,UAAA,IACAd,MAAA2C,IAAA7B,UAAA,GACAd,MAAA2C,IAAA3B,cAAA,cACAhB,MAAA2C,IAAA7B,UAAA,EACAd,MAAA2C,IAAA7B,UAAA,EACAd,MAAAqI,WAAArI,KAAA2B,OACA3B,MAAA2C,IAAA7B,UAAA,GAMAQ,YAAAd,UAAAqD,aAAA,WACA7D,KAAA2C,IAAAxB,WAAAnB,KAAAiC,SACA,IAAArD,GAAA,EAAA,IAAAoB,KAAAiC,SAAAvC,MACA,KAAA,GAAAP,GAAA,EAAAA,EAAAP,EAAAO,IACAa,KAAA2C,IAAA7B,UAAA,GAGAQ,YAAAd,UAAA6H,WAAA,SAAAC,QACAtI,KAAA2C,IAAA7B,UAAAwH,OAAA,IACAtI,MAAA2C,IAAA7B,UAAAwH,QAAA,EAAA,KAMAhH,YAAAd,UAAAyD,YAAA,WACA,GAAAsE,KAAA,GAAAzI,YAAAE,KAAAuB,MAAAvB,KAAAwB,OAAAxB,KAAA+B,cAAA/B,KAAAgC,WACAuG,KAAAC,OAAAxI,KAAA2C,KAMArB,YAAAd,UAAAiI,OAAA,WACA,MAAAzI,MAAA2C,IAGA/C,QAAAJ,QAAA8B,8FCnhBA,GAAAoH,MAAA,CACA,IAAAC,MAAA,EACA,IAAAC,OAAA,IACA,IAAAC,QAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GACA,GAAA,IAAA,IAAA,IAAA,KAAA,KACA,KAAA,KAAA,MAAA,MAAA,MAEA,SAAA/I,YAAAyB,MAAAC,OAAAM,OAAAE,YACA,GAAA8G,cAAAhG,KAAAoE,IAAA,EAAAlF,WAEA,IAAA+G,OAAA,GAAAtI,YAAA,IACA,IAAAuI,MAAA,GAAAC,YAAAL,MACA,IAAAM,SAAA,GAAAD,YAAAL,MAEA,IAAAO,WAAAC,SAAA,CACA,IAAAC,QACA,IAAAC,UAAA,CACA,IAAAC,QAIA,IAAAC,WAAA,KAaA,IAAAC,aAAAC,UAAAC,OAIA,SAAAC,UAAAxC,EAAAyC,MACAd,MAAAM,WAAAjC,CACA,IAAAiC,SAAA,IAAAS,WAAAD,MAKA,QAAAE,UAAAF,MACAG,QAAApB,MACAU,UAAAI,UAAA,CACAF,WAAA,IACAS,QAAAP,UAAAG,MAIA,QAAAG,SAAAE,OACA,IAAA,GAAA/K,GAAA,EAAAA,EAAA+K,QAAA/K,EAAA6J,KAAA7J,IAAA,EAGA,QAAAgL,UAAAC,UAAAP,MACA,GAAAQ,OAAAjD,EAAAjI,EAAAmL,IAAAlC,KAAAmC,UAAAC,MAGAf,aAAAW,SAGAZ,WAAA,KACAiB,QAAAhB,WACAF,SAAAmB,QAAAD,OAEAf,WAAA,GAAAU,UAAA,CACAT,SAAAD,UAAA,CACAJ,UAAAI,UAAA,CAEAL,SAAA,CAEAiB,KAAAK,WAEAH,QAAA,CACA,KAAAH,MAAAzB,MAAAyB,MAAA,MAAAA,OAAA,IAAAG,MACAA,QAAA,EAAAA,MACAD,WAAA3B,KACAoB,SAAAO,UAEAN,QAAAP,UAAAG,KAEAe,YAAA,OAAAxD,EAAAuD,cAAAjC,IAAA,CACA2B,OAAAjD,GAAAuB,MAAA2B,GACAnL,GAAAiI,GAAAoD,OAAAF,GACA,IAAAtB,KAAA7J,KAAAkL,MAAA,CACAC,IAAApB,QAAA/J,EACA,cACA,IAAA6J,KAAA7J,IAAA,EAAA,CACAiJ,KAAAmC,UAAApL,CACA,IAAAA,IAAA,EAAAiJ,KAAA,CACA,GAAA,CACA,IAAAjJ,GAAAiJ,MAAA,EAAAjJ,GAAAoL,SACA,IAAAvB,KAAA7J,KAAAkL,MAAA,CACAC,IAAApB,QAAA/J,EACA,SAAAyL,mBAEA5B,KAAA7J,IAAA,GAEA8K,OAAAK,IAAAT,KACAS,KAAAlD,CACA,IAAAkC,SAAA,GAAAX,KAAA,CACAO,QAAA/J,GAAAmK,UACAN,MAAA7J,GAAAkL,UACA,CACAN,SAAAF,OAKAI,OAAAK,IAAAT,KACAI,QAAAN,QAAAE,MAGA,QAAArB,QAAAqB,MACAA,KAAA/I,UAAAgI,aACA+B,WAAAtJ,MAAAC,MACAsJ,UAAA,CACAX,UAAArB,aAAA,EAAAe,KACAA,MAAA/I,UAAA,GAIA,QAAAgJ,YAAAD,MACA,GAAAR,QAAA,EAAA,CACAQ,KAAA/I,UAAAuI,QACAQ,MAAA1I,WAAA4H,MAAA,EAAAM,QACAA,SAAA,GAIA,QAAAqB,SAAAD,QACA,OAAA,GAAAA,QAAA,EAIA,QAAAE,aACA,GAAAE,YAAA,EAAA,MAAAnC,OACAmC,SACA,IAAAE,KAAAjJ,OAAAgJ,WACA,OAAAC,KAAA,IAGA,QAAAd,QAAA3K,KAAAuK,MACAV,WAAAN,MAAAO,SAEA,IAAAA,SAAA,EAAAD,WAAA7J,MAAA8J,aACAD,WAAA7J,IAEA8J,WAAAqB,MAEA,OAAArB,UAAA,EAAA,CACAQ,SAAAT,UAAA,IAAAU,KACAV,aAAA,CACAC,WAAA,EAKA,GAAAE,SAAAC,SAAAC,UAAA,CACA,GAAAA,UAAA,CACAD,QAAAmB,QAAAD,OAAAhB,YACAD,WAAA,UACA,GACAiB,MACA,IAAAA,QAAA9B,KAAAY,QAAA,GAAAZ,SACAY,SAAAmB,QAAAD,SAIA,GAAAnL,MAAAqK,QAAA,CAEA,MAAAP,SAAA,EAAA,CACAQ,SAAAT,UAAA,IAAAU,KACAV,aAAA,CACAC,WAAA,EAEAU,WAAAD,OAIA7J,KAAAwI,OAAAA,OAGA5I,OAAAJ,QAAAM,oDCzLA,GAAAkL,SAAA,GACA,IAAAC,SAAA,GACA,IAAAC,WAAAD,QAAA,CAGA,IAAAE,cAAA,CACA,IAAAC,cAAA,EACA,IAAAC,SAAA,GAAAD,YACA,IAAAE,YAAA,EACA,IAAAC,OAAA,GAAAD,UACA,IAAAE,WAAA,EACA,IAAAC,MAAAJ,SAAAG,SACA,IAAAE,WAAAL,SAAAC,WAAAE,SAGA,IAAAG,SAAAV,SAAA,CACA,IAAAW,iBAAA,CACA,IAAAC,YAAA,GAAAD,eACA,IAAAE,YAAAH,QAAAE,UACA,IAAAE,WAAA,EAGA,IAAAC,gBAAA,EACA,IAAAC,WAAA,GAAAD,cACA,IAAAE,SAGA,IAAAC,cAAA,CACA,IAAAC,SAAA,GAAAD,YACA,IAAAE,gBAAAL,eAAAG,YACA,IAAAG,cAAA,GAAAD,cAIA,IAAAE,QAAA,GACA,IAAAC,QAAA,GACA,IAAAC,QAAA,GACA,IAAAC,QAAA,GACA,IAAAC,iBAAA,EAAAD,MAcA,SAAA7M,UAAAiC,OAAA8K,WACA,GAAAC,QACA,IAAAC,SAGA,IAAAC,KACA,IAAAC,KACA,IAAAC,SAOA,SAAAC,QACAL,UACAC,UAAA,GAAA7D,YAAA,IACA8D,MAAA,GAAA9D,YAAAgC,QACA+B,MAAA,GAAA/D,YAAAgC,QACAgC,UAAA,GAAAhE,YAAAgC,SAAA,EAEA,IAAA9L,GAAAgO,CACA,KAAAhO,EAAA,EAAAA,EAAA8L,QAAA9L,IAAA,CACAgO,GAAAhO,GAAAgM,aAAA,GAAAF,OACA4B,SAAA1N,GAAA,GAAAiO,eAAAD,EAAAA,EAAAA,EAAA,GAEAH,MAAA7N,GAAAkM,QAAAJ,OACA8B,MAAA5N,GAAA,GASA,QAAAkO,aACA,IAAA,GAAAlO,GAAA,EAAAA,EAAA8L,QAAA9L,IAAA,CACA0N,QAAA1N,GAAA,KAAAgM,YACA0B,SAAA1N,GAAA,KAAAgM,YACA0B,SAAA1N,GAAA,KAAAgM,YACA0B,SAAA1N,GAAA,GAAAA,GASA,QAAAmO,aAAAC,MAAApO,EAAAoI,EAAAD,EAAAzI,GACAgO,QAAA1N,GAAA,IAAAoO,OAAAV,QAAA1N,GAAA,GAAAoI,GAAA0E,SACAY,SAAA1N,GAAA,IAAAoO,OAAAV,QAAA1N,GAAA,GAAAmI,GAAA2E,SACAY,SAAA1N,GAAA,IAAAoO,OAAAV,QAAA1N,GAAA,GAAAN,GAAAoN,UAQA,QAAAuB,YAAAC,OAAAtO,EAAAoI,EAAAD,EAAAzI,GACA,GAAA6O,IAAA5K,KAAA6K,IAAAxO,EAAAsO,OACA,IAAAG,IAAA9K,KAAAqE,IAAAhI,EAAAsO,OAAAxC,QAEA,IAAA7F,GAAAjG,EAAA,CACA,IAAAgG,GAAAhG,EAAA,CACA,IAAA0O,GAAA,CAEA,IAAAhN,GAAA5B,CACA,OAAAmG,EAAAwI,IAAAzI,EAAAuI,GAAA,CACAzO,EAAAgO,SAAAY,IAEA,IAAAzI,EAAAwI,GAAA,CACA/M,EAAAgM,QAAAzH,IACAvE,GAAA,IAAA5B,GAAA4B,EAAA,GAAA0G,GAAA+E,YACAzL,GAAA,IAAA5B,GAAA4B,EAAA,GAAAyG,GAAAgF,YACAzL,GAAA,IAAA5B,GAAA4B,EAAA,GAAAhC,GAAAyN,aAGA,GAAAnH,EAAAuI,GAAA,CACA7M,EAAAgM,QAAA1H,IACAtE,GAAA,IAAA5B,GAAA4B,EAAA,GAAA0G,GAAA+E,YACAzL,GAAA,IAAA5B,GAAA4B,EAAA,GAAAyG,GAAAgF,YACAzL,GAAA,IAAA5B,GAAA4B,EAAA,GAAAhC,GAAAyN,eAUA,QAAAwB,SAAAvG,EAAAD,EAAAzI,GAQA,GAAAkP,SAAA,GAAA,GACA,IAAAC,WAAAD,KACA,IAAAE,UAAA,CACA,IAAAC,aAAAD,OAEA,IAAA9O,GAAAP,EAAAuP,KAAAC,SAAAC,QACA,KAAAlP,EAAA,EAAAA,EAAA8L,QAAA9L,IAAA,CACAP,EAAAiO,QAAA1N,EAEAgP,MAAArL,KAAA6K,IAAA/O,EAAA,GAAA2I,GAAAzE,KAAA6K,IAAA/O,EAAA,GAAA0I,GAAAxE,KAAA6K,IAAA/O,EAAA,GAAAC,EACA,IAAAsP,KAAAJ,MAAA,CACAA,MAAAI,IACAF,SAAA9O,EAGAiP,SAAAD,MAAApB,KAAA5N,IAAAiM,aAAAD,aACA,IAAAiD,SAAAJ,UAAA,CACAA,UAAAI,QACAF,aAAA/O,EAGAkP,SAAArB,KAAA7N,IAAAqM,SACAwB,MAAA7N,IAAAkP,QACAtB,MAAA5N,IAAAkP,UAAA/C,WAGA0B,KAAAiB,UAAAxC,IACAsB,MAAAkB,UAAAvC,SAEA,OAAAwC,aAQA,QAAAI,YACA,GAAAnP,GAAAiG,EAAAvE,EAAA0N,EAAAC,SAAAC,SAAAC,YAAA,EAAAC,SAAA,CACA,KAAAxP,EAAA,EAAAA,EAAA8L,QAAA9L,IAAA,CACA0B,EAAAgM,QAAA1N,EACAqP,UAAArP,CACAsP,UAAA5N,EAAA,EAEA,KAAAuE,EAAAjG,EAAA,EAAAiG,EAAA6F,QAAA7F,IAAA,CACAmJ,EAAA1B,QAAAzH,EACA,IAAAmJ,EAAA,GAAAE,SAAA,CACAD,SAAApJ,CACAqJ,UAAAF,EAAA,IAGAA,EAAA1B,QAAA2B,SAEA,IAAArP,GAAAqP,SAAA,CACApJ,EAAAmJ,EAAA,EAAAA,GAAA,GAAA1N,EAAA,EAAAA,GAAA,GAAAuE,CACAA,GAAAmJ,EAAA,EAAAA,GAAA,GAAA1N,EAAA,EAAAA,GAAA,GAAAuE,CACAA,GAAAmJ,EAAA,EAAAA,GAAA,GAAA1N,EAAA,EAAAA,GAAA,GAAAuE,CACAA,GAAAmJ,EAAA,EAAAA,GAAA,GAAA1N,EAAA,EAAAA,GAAA,GAAAuE,EAIA,GAAAqJ,UAAAC,YAAA,CACA5B,SAAA4B,aAAAC,SAAAxP,GAAA,CACA,KAAAiG,EAAAsJ,YAAA,EAAAtJ,EAAAqJ,SAAArJ,IACA0H,SAAA1H,GAAAjG,CACAuP,aAAAD,QACAE,UAAAxP,GAGA2N,SAAA4B,aAAAC,SAAAzD,WAAA,CACA,KAAA9F,EAAAsJ,YAAA,EAAAtJ,EAAA,IAAAA,IACA0H,SAAA1H,GAAA8F,UAQA,QAAA0D,WAAArH,EAAAD,EAAAzI,GACA,GAAAI,GAAA4B,EAAAsN,IAEA,IAAAJ,OAAA,GACA,IAAAc,OAAA,CAEA,IAAA1P,GAAA2N,SAAAxF,EACA,IAAAlC,GAAAjG,EAAA,CAEA,OAAAA,EAAA8L,SAAA7F,GAAA,EAAA,CACA,GAAAjG,EAAA8L,QAAA,CACApK,EAAAgM,QAAA1N,EACAgP,MAAAtN,EAAA,GAAAyG,CACA,IAAA6G,MAAAJ,MAAA5O,EAAA8L,YACA,CACA9L,GACA,IAAAgP,KAAA,EAAAA,MAAAA,IACAlP,GAAA4B,EAAA,GAAA0G,CAAA,IAAAtI,EAAA,EAAAA,GAAAA,CACAkP,OAAAlP,CACA,IAAAkP,KAAAJ,MAAA,CACA9O,EAAA4B,EAAA,GAAAhC,CAAA,IAAAI,EAAA,EAAAA,GAAAA,CACAkP,OAAAlP,CACA,IAAAkP,KAAAJ,MAAA,CACAA,MAAAI,IACAU,MAAAhO,EAAA,MAKA,GAAAuE,GAAA,EAAA,CACAvE,EAAAgM,QAAAzH,EACA+I,MAAA7G,EAAAzG,EAAA,EACA,IAAAsN,MAAAJ,MAAA3I,GAAA,MACA,CACAA,GACA,IAAA+I,KAAA,EAAAA,MAAAA,IACAlP,GAAA4B,EAAA,GAAA0G,CAAA,IAAAtI,EAAA,EAAAA,GAAAA,CACAkP,OAAAlP,CACA,IAAAkP,KAAAJ,MAAA,CACA9O,EAAA4B,EAAA,GAAAhC,CAAA,IAAAI,EAAA,EAAAA,GAAAA,CACAkP,OAAAlP,CACA,IAAAkP,KAAAJ,MAAA,CACAA,MAAAI,IACAU,MAAAhO,EAAA,OAOA,MAAAgO,MAQA,QAAAC,SACA,GAAA3P,EAEA,IAAA4P,aAAAjN,OAAApC,MACA,IAAAwM,UAAA,IAAAU,UAAA,GAAA,CACA,IAAAoC,cAAAD,aAAA,EAAAnC,UACA,IAAAqC,UAAAD,aAAAhE,QACA,IAAAuC,OAAAtB,SACA,IAAAwB,QAAA3B,UAEA,IAAAoD,KAAAzB,QAAA7B,eAEA,IAAAsD,KAAA,EAAAA,IAAA,CACA,KAAA/P,EAAA,EAAAA,EAAA+P,IAAA/P,IACA8N,SAAA9N,GAAAoO,QAAA2B,IAAAA,IAAA/P,EAAAA,GAAAiN,SAAA8C,IAAAA,KAEA,IAAAC,KACA,IAAAJ,YAAApC,gBAAA,CACAC,UAAA,CACAuC,MAAA,MACA,IAAAJ,YAAAxC,SAAA,EAAA,CACA4C,KAAA,EAAA5C,WACA,IAAAwC,YAAAvC,SAAA,EAAA,CACA2C,KAAA,EAAA3C,WACA,IAAAuC,YAAAtC,SAAA,EAAA,CACA0C,KAAA,EAAA1C,WACA,CACA0C,KAAA,EAAAzC,OAGA,GAAAnF,GAAAD,EAAAzI,EAAAuG,CACA,IAAA2F,KAAA,CAEA5L,GAAA,CACA,OAAAA,EAAA6P,aAAA,CACAzH,GAAAzF,OAAAiJ,KAAA,MAAAI,YACA7D,IAAAxF,OAAAiJ,IAAA,GAAA,MAAAI,YACAtM,IAAAiD,OAAAiJ,IAAA,GAAA,MAAAI,YAEA/F,GAAA0I,QAAAvG,EAAAD,EAAAzI,EAEAyO,aAAAC,MAAAnI,EAAAmC,EAAAD,EAAAzI,EACA,IAAAqQ,MAAA,EAAA1B,WAAA0B,IAAA9J,EAAAmC,EAAAD,EAAAzI,EAEAkM,MAAAoE,IACA,IAAApE,KAAAgE,YAAAhE,KAAAgE,WAEA5P,IAEA,IAAA8P,QAAA,EAAAA,MAAA,CACA,IAAA9P,EAAA8P,QAAA,EAAA,CACA1B,OAAAA,MAAArB,QACAuB,SAAAA,OAAA1B,SACAmD,KAAAzB,QAAA7B,eAEA,IAAAsD,KAAA,EAAAA,IAAA,CACA,KAAA9J,EAAA,EAAAA,EAAA8J,IAAA9J,IACA6H,SAAA7H,GAAAmI,QAAA2B,IAAAA,IAAA9J,EAAAA,GAAAgH,SAAA8C,IAAAA,QAaA,QAAAxK,iBACAwI,MACA4B,QACAzB,YACAiB,YAEAtO,KAAA0E,cAAAA,aAaA,SAAAC,eACA,GAAAyK,OACA,IAAA/J,SAEA,KAAA,GAAAlG,GAAA,EAAAA,EAAA8L,QAAA9L,IACAkG,MAAAwH,QAAA1N,GAAA,IAAAA,CAEA,IAAAgG,GAAA,CACA,KAAA,GAAA5F,GAAA,EAAAA,EAAA0L,QAAA1L,IAAA,CACA,GAAA6F,GAAAC,MAAA9F,EACA6P,KAAAjK,KAAA0H,QAAAzH,GAAA,EACAgK,KAAAjK,KAAA0H,QAAAzH,GAAA,EACAgK,KAAAjK,KAAA0H,QAAAzH,GAAA,GAEA,MAAAgK,KAEApP,KAAA2E,YAAAA,WAQA3E,MAAAwH,UAAAoH,UAGAhP,OAAAJ,QAAAK,kDC9aA,GAAAyB,YAAA+N,WAAA/N,YAAapC,QAAQ,kBAErBmQ,aAAc,SAACC,OACb,GAAAC,SAAAtP,KAAAwI,OAAA+G,QAAAD,SAAc,GAAAjO,YAAWgO,MAAM/N,MAAO+N,MAAM9N,OAE5C,IAAG8N,MAAMjK,QAAS,EAAlB,CACEkK,QAAQ9K,kBADV,CAGE8K,QAAQhN,WAAa,MAEvBgN,QAAQlM,eAAeiM,MAAM7N,YAC7B8N,SAAQnM,UAAUkM,MAAM3N,OACxB4N,SAAQ3M,SAAS0M,MAAM1N,MACvB2N,SAAQpL,WAAWmL,MAAMlL,QACzBmL,SAAQlL,UAAUiL,MAAM7M,OACxB8M,SAAQjL,iBAAiBgL,MAAM5M,cAC/B6M,SAAQhM,SAAS+L,MAAMvJ,KACvB,IAAoBuJ,MAAMG,KAA1B,CAAAF,QAAQrL,SACR,GAAGoL,MAAM5M,gBAAiB,KAA1B,CACE4M,MAAM5M,cAAgB6M,QAAQ/K,mBAEhCiE,OAAS8G,QAAQ9G,QACjB6G,OAAMvJ,KAAO0C,OAAOvI,KACpBoP,OAAM5O,OAAS+H,OAAO/H,MACtB4O,OAAMlP,SAAWqI,OAAOiH,YAAYtP,QAEpC,IAAGkP,MAAMK,YAAT,CACEH,SAAA,gCAAYI,KAAAN,MAAAvJ,IAAA8J,gBAAA1Q,EAAA,EAAAwI,IAAAiI,IAAAlQ,OAAAP,EAAAwI,IAAAxI,IAAA,0BAAAc,KAAK6P,gCACjBC,MAAKC,YAAYV,MAAOE,cAF1B,OAIEO,MAAKC,YAAYV,QAErBS,MAAKE,UAAY,SAACC,aAAUb,aAAYa,MAAMnK","sourceRoot":"","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o= ByteArray.pageSize) this.newPage();\n this.pages[this.page][this.cursor++] = val;\n};\n\nByteArray.prototype.writeUTFBytes = function(string) {\n for (var l = string.length, i = 0; i < l; i++)\n this.writeByte(string.charCodeAt(i));\n};\n\nByteArray.prototype.writeBytes = function(array, offset, length) {\n for (var l = length || array.length, i = offset || 0; i < l; i++)\n this.writeByte(array[i]);\n};\n\nfunction GIFEncoder(width, height) {\n // image size\n this.width = ~~width;\n this.height = ~~height;\n\n // transparent color if given\n this.transparent = null;\n\n // transparent index in color table\n this.transIndex = 0;\n\n // -1 = no repeat, 0 = forever. anything else is repeat count\n this.repeat = -1;\n\n // frame delay (hundredths)\n this.delay = 0;\n\n this.image = null; // current frame\n this.pixels = null; // BGR byte array from frame\n this.indexedPixels = null; // converted frame indexed to palette\n this.colorDepth = null; // number of bit planes\n this.colorTab = null; // RGB palette\n this.neuQuant = null; // NeuQuant instance that was used to generate this.colorTab.\n this.usedEntry = new Array(); // active palette entries\n this.palSize = 7; // color table size (bits-1)\n this.dispose = -1; // disposal code (-1 = use default)\n this.firstFrame = true;\n this.sample = 10; // default sample interval for quantizer\n this.dither = false; // default dithering\n this.globalPalette = false;\n\n this.out = new ByteArray();\n}\n\n/*\n Sets the delay time between each frame, or changes it for subsequent frames\n (applies to last frame added)\n*/\nGIFEncoder.prototype.setDelay = function(milliseconds) {\n this.delay = Math.round(milliseconds / 10);\n};\n\n/*\n Sets frame rate in frames per second.\n*/\nGIFEncoder.prototype.setFrameRate = function(fps) {\n this.delay = Math.round(100 / fps);\n};\n\n/*\n Sets the GIF frame disposal code for the last added frame and any\n subsequent frames.\n\n Default is 0 if no transparent color has been set, otherwise 2.\n*/\nGIFEncoder.prototype.setDispose = function(disposalCode) {\n if (disposalCode >= 0) this.dispose = disposalCode;\n};\n\n/*\n Sets the number of times the set of GIF frames should be played.\n\n -1 = play once\n 0 = repeat indefinitely\n\n Default is -1\n\n Must be invoked before the first image is added\n*/\n\nGIFEncoder.prototype.setRepeat = function(repeat) {\n this.repeat = repeat;\n};\n\n/*\n Sets the transparent color for the last added frame and any subsequent\n frames. Since all colors are subject to modification in the quantization\n process, the color in the final palette for each frame closest to the given\n color becomes the transparent color for that frame. May be set to null to\n indicate no transparent color.\n*/\nGIFEncoder.prototype.setTransparent = function(color) {\n this.transparent = color;\n};\n\n/*\n Adds next GIF frame. The frame is not written immediately, but is\n actually deferred until the next frame is received so that timing\n data can be inserted. Invoking finish() flushes all frames.\n*/\nGIFEncoder.prototype.addFrame = function(imageData) {\n this.image = imageData;\n\n this.colorTab = this.globalPalette && this.globalPalette.slice ? this.globalPalette : null;\n\n this.getImagePixels(); // convert to correct format if necessary\n this.analyzePixels(); // build color table & map pixels\n\n if (this.globalPalette === true) this.globalPalette = this.colorTab;\n\n if (this.firstFrame) {\n this.writeLSD(); // logical screen descriptior\n this.writePalette(); // global color table\n if (this.repeat >= 0) {\n // use NS app extension to indicate reps\n this.writeNetscapeExt();\n }\n }\n\n this.writeGraphicCtrlExt(); // write graphic control extension\n this.writeImageDesc(); // image descriptor\n if (!this.firstFrame && !this.globalPalette) this.writePalette(); // local color table\n this.writePixels(); // encode and write pixel data\n\n this.firstFrame = false;\n};\n\n/*\n Adds final trailer to the GIF stream, if you don't call the finish method\n the GIF stream will not be valid.\n*/\nGIFEncoder.prototype.finish = function() {\n this.out.writeByte(0x3b); // gif trailer\n};\n\n/*\n Sets quality of color quantization (conversion of images to the maximum 256\n colors allowed by the GIF specification). Lower values (minimum = 1)\n produce better colors, but slow processing significantly. 10 is the\n default, and produces good color mapping at reasonable speeds. Values\n greater than 20 do not yield significant improvements in speed.\n*/\nGIFEncoder.prototype.setQuality = function(quality) {\n if (quality < 1) quality = 1;\n this.sample = quality;\n};\n\n/*\n Sets dithering method. Available are:\n - FALSE no dithering\n - TRUE or FloydSteinberg\n - FalseFloydSteinberg\n - Stucki\n - Atkinson\n You can add '-serpentine' to use serpentine scanning\n*/\nGIFEncoder.prototype.setDither = function(dither) {\n if (dither === true) dither = 'FloydSteinberg';\n this.dither = dither;\n};\n\n/*\n Sets global palette for all frames.\n You can provide TRUE to create global palette from first picture.\n Or an array of r,g,b,r,g,b,...\n*/\nGIFEncoder.prototype.setGlobalPalette = function(palette) {\n this.globalPalette = palette;\n};\n\n/*\n Returns global palette used for all frames.\n If setGlobalPalette(true) was used, then this function will return\n calculated palette after the first frame is added.\n*/\nGIFEncoder.prototype.getGlobalPalette = function() {\n return (this.globalPalette && this.globalPalette.slice && this.globalPalette.slice(0)) || this.globalPalette;\n};\n\n/*\n Writes GIF file header\n*/\nGIFEncoder.prototype.writeHeader = function() {\n this.out.writeUTFBytes(\"GIF89a\");\n};\n\n/*\n Analyzes current frame colors and creates color map.\n*/\nGIFEncoder.prototype.analyzePixels = function() {\n if (!this.colorTab) {\n this.neuQuant = new NeuQuant(this.pixels, this.sample);\n this.neuQuant.buildColormap(); // create reduced palette\n this.colorTab = this.neuQuant.getColormap();\n }\n\n // map image pixels to new palette\n if (this.dither) {\n this.ditherPixels(this.dither.replace('-serpentine', ''), this.dither.match(/-serpentine/) !== null);\n } else {\n this.indexPixels();\n }\n\n this.pixels = null;\n this.colorDepth = 8;\n this.palSize = 7;\n\n // get closest match to transparent color if specified\n if (this.transparent !== null) {\n this.transIndex = this.findClosest(this.transparent, true);\n }\n};\n\n/*\n Index pixels, without dithering\n*/\nGIFEncoder.prototype.indexPixels = function(imgq) {\n var nPix = this.pixels.length / 3;\n this.indexedPixels = new Uint8Array(nPix);\n var k = 0;\n for (var j = 0; j < nPix; j++) {\n var index = this.findClosestRGB(\n this.pixels[k++] & 0xff,\n this.pixels[k++] & 0xff,\n this.pixels[k++] & 0xff\n );\n this.usedEntry[index] = true;\n this.indexedPixels[j] = index;\n }\n};\n\n/*\n Taken from http://jsbin.com/iXofIji/2/edit by PAEz\n*/\nGIFEncoder.prototype.ditherPixels = function(kernel, serpentine) {\n var kernels = {\n FalseFloydSteinberg: [\n [3 / 8, 1, 0],\n [3 / 8, 0, 1],\n [2 / 8, 1, 1]\n ],\n FloydSteinberg: [\n [7 / 16, 1, 0],\n [3 / 16, -1, 1],\n [5 / 16, 0, 1],\n [1 / 16, 1, 1]\n ],\n Stucki: [\n [8 / 42, 1, 0],\n [4 / 42, 2, 0],\n [2 / 42, -2, 1],\n [4 / 42, -1, 1],\n [8 / 42, 0, 1],\n [4 / 42, 1, 1],\n [2 / 42, 2, 1],\n [1 / 42, -2, 2],\n [2 / 42, -1, 2],\n [4 / 42, 0, 2],\n [2 / 42, 1, 2],\n [1 / 42, 2, 2]\n ],\n Atkinson: [\n [1 / 8, 1, 0],\n [1 / 8, 2, 0],\n [1 / 8, -1, 1],\n [1 / 8, 0, 1],\n [1 / 8, 1, 1],\n [1 / 8, 0, 2]\n ]\n };\n\n if (!kernel || !kernels[kernel]) {\n throw 'Unknown dithering kernel: ' + kernel;\n }\n\n var ds = kernels[kernel];\n var index = 0,\n height = this.height,\n width = this.width,\n data = this.pixels;\n var direction = serpentine ? -1 : 1;\n\n this.indexedPixels = new Uint8Array(this.pixels.length / 3);\n\n for (var y = 0; y < height; y++) {\n\n if (serpentine) direction = direction * -1;\n\n for (var x = (direction == 1 ? 0 : width - 1), xend = (direction == 1 ? width : 0); x !== xend; x += direction) {\n\n index = (y * width) + x;\n // Get original colour\n var idx = index * 3;\n var r1 = data[idx];\n var g1 = data[idx + 1];\n var b1 = data[idx + 2];\n\n // Get converted colour\n idx = this.findClosestRGB(r1, g1, b1);\n this.usedEntry[idx] = true;\n this.indexedPixels[index] = idx;\n idx *= 3;\n var r2 = this.colorTab[idx];\n var g2 = this.colorTab[idx + 1];\n var b2 = this.colorTab[idx + 2];\n\n var er = r1 - r2;\n var eg = g1 - g2;\n var eb = b1 - b2;\n\n for (var i = (direction == 1 ? 0: ds.length - 1), end = (direction == 1 ? ds.length : 0); i !== end; i += direction) {\n var x1 = ds[i][1]; // *direction; // Should this by timesd by direction?..to make the kernel go in the opposite direction....got no idea....\n var y1 = ds[i][2];\n if (x1 + x >= 0 && x1 + x < width && y1 + y >= 0 && y1 + y < height) {\n var d = ds[i][0];\n idx = index + x1 + (y1 * width);\n idx *= 3;\n\n data[idx] = Math.max(0, Math.min(255, data[idx] + er * d));\n data[idx + 1] = Math.max(0, Math.min(255, data[idx + 1] + eg * d));\n data[idx + 2] = Math.max(0, Math.min(255, data[idx + 2] + eb * d));\n }\n }\n }\n }\n};\n\n/*\n Returns index of palette color closest to c\n*/\nGIFEncoder.prototype.findClosest = function(c, used) {\n return this.findClosestRGB((c & 0xFF0000) >> 16, (c & 0x00FF00) >> 8, (c & 0x0000FF), used);\n};\n\nGIFEncoder.prototype.findClosestRGB = function(r, g, b, used) {\n if (this.colorTab === null) return -1;\n\n if (this.neuQuant && !used) {\n return this.neuQuant.lookupRGB(r, g, b);\n }\n \n var c = b | (g << 8) | (r << 16);\n\n var minpos = 0;\n var dmin = 256 * 256 * 256;\n var len = this.colorTab.length;\n\n for (var i = 0, index = 0; i < len; index++) {\n var dr = r - (this.colorTab[i++] & 0xff);\n var dg = g - (this.colorTab[i++] & 0xff);\n var db = b - (this.colorTab[i++] & 0xff);\n var d = dr * dr + dg * dg + db * db;\n if ((!used || this.usedEntry[index]) && (d < dmin)) {\n dmin = d;\n minpos = index;\n }\n }\n\n return minpos;\n};\n\n/*\n Extracts image pixels into byte array pixels\n (removes alphachannel from canvas imagedata)\n*/\nGIFEncoder.prototype.getImagePixels = function() {\n var w = this.width;\n var h = this.height;\n this.pixels = new Uint8Array(w * h * 3);\n\n var data = this.image;\n var srcPos = 0;\n var count = 0;\n\n for (var i = 0; i < h; i++) {\n for (var j = 0; j < w; j++) {\n this.pixels[count++] = data[srcPos++];\n this.pixels[count++] = data[srcPos++];\n this.pixels[count++] = data[srcPos++];\n srcPos++;\n }\n }\n};\n\n/*\n Writes Graphic Control Extension\n*/\nGIFEncoder.prototype.writeGraphicCtrlExt = function() {\n this.out.writeByte(0x21); // extension introducer\n this.out.writeByte(0xf9); // GCE label\n this.out.writeByte(4); // data block size\n\n var transp, disp;\n if (this.transparent === null) {\n transp = 0;\n disp = 0; // dispose = no action\n } else {\n transp = 1;\n disp = 2; // force clear if using transparent color\n }\n\n if (this.dispose >= 0) {\n disp = dispose & 7; // user override\n }\n disp <<= 2;\n\n // packed fields\n this.out.writeByte(\n 0 | // 1:3 reserved\n disp | // 4:6 disposal\n 0 | // 7 user input - 0 = none\n transp // 8 transparency flag\n );\n\n this.writeShort(this.delay); // delay x 1/100 sec\n this.out.writeByte(this.transIndex); // transparent color index\n this.out.writeByte(0); // block terminator\n};\n\n/*\n Writes Image Descriptor\n*/\nGIFEncoder.prototype.writeImageDesc = function() {\n this.out.writeByte(0x2c); // image separator\n this.writeShort(0); // image position x,y = 0,0\n this.writeShort(0);\n this.writeShort(this.width); // image size\n this.writeShort(this.height);\n\n // packed fields\n if (this.firstFrame || this.globalPalette) {\n // no LCT - GCT is used for first (or only) frame\n this.out.writeByte(0);\n } else {\n // specify normal LCT\n this.out.writeByte(\n 0x80 | // 1 local color table 1=yes\n 0 | // 2 interlace - 0=no\n 0 | // 3 sorted - 0=no\n 0 | // 4-5 reserved\n this.palSize // 6-8 size of color table\n );\n }\n};\n\n/*\n Writes Logical Screen Descriptor\n*/\nGIFEncoder.prototype.writeLSD = function() {\n // logical screen size\n this.writeShort(this.width);\n this.writeShort(this.height);\n\n // packed fields\n this.out.writeByte(\n 0x80 | // 1 : global color table flag = 1 (gct used)\n 0x70 | // 2-4 : color resolution = 7\n 0x00 | // 5 : gct sort flag = 0\n this.palSize // 6-8 : gct size\n );\n\n this.out.writeByte(0); // background color index\n this.out.writeByte(0); // pixel aspect ratio - assume 1:1\n};\n\n/*\n Writes Netscape application extension to define repeat count.\n*/\nGIFEncoder.prototype.writeNetscapeExt = function() {\n this.out.writeByte(0x21); // extension introducer\n this.out.writeByte(0xff); // app extension label\n this.out.writeByte(11); // block size\n this.out.writeUTFBytes('NETSCAPE2.0'); // app id + auth code\n this.out.writeByte(3); // sub-block size\n this.out.writeByte(1); // loop sub-block id\n this.writeShort(this.repeat); // loop count (extra iterations, 0=repeat forever)\n this.out.writeByte(0); // block terminator\n};\n\n/*\n Writes color table\n*/\nGIFEncoder.prototype.writePalette = function() {\n this.out.writeBytes(this.colorTab);\n var n = (3 * 256) - this.colorTab.length;\n for (var i = 0; i < n; i++)\n this.out.writeByte(0);\n};\n\nGIFEncoder.prototype.writeShort = function(pValue) {\n this.out.writeByte(pValue & 0xFF);\n this.out.writeByte((pValue >> 8) & 0xFF);\n};\n\n/*\n Encodes and writes pixel data\n*/\nGIFEncoder.prototype.writePixels = function() {\n var enc = new LZWEncoder(this.width, this.height, this.indexedPixels, this.colorDepth);\n enc.encode(this.out);\n};\n\n/*\n Retrieves the GIF stream\n*/\nGIFEncoder.prototype.stream = function() {\n return this.out;\n};\n\nmodule.exports = GIFEncoder;\n","/*\n LZWEncoder.js\n\n Authors\n Kevin Weiner (original Java version - kweiner@fmsware.com)\n Thibault Imbert (AS3 version - bytearray.org)\n Johan Nordberg (JS version - code@johan-nordberg.com)\n\n Acknowledgements\n GIFCOMPR.C - GIF Image compression routines\n Lempel-Ziv compression based on 'compress'. GIF modifications by\n David Rowley (mgardi@watdcsu.waterloo.edu)\n GIF Image compression - modified 'compress'\n Based on: compress.c - File compression ala IEEE Computer, June 1984.\n By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas)\n Jim McKie (decvax!mcvax!jim)\n Steve Davies (decvax!vax135!petsd!peora!srd)\n Ken Turkowski (decvax!decwrl!turtlevax!ken)\n James A. Woods (decvax!ihnp4!ames!jaw)\n Joe Orost (decvax!vax135!petsd!joe)\n*/\n\nvar EOF = -1;\nvar BITS = 12;\nvar HSIZE = 5003; // 80% occupancy\nvar masks = [0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F,\n 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF,\n 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF];\n\nfunction LZWEncoder(width, height, pixels, colorDepth) {\n var initCodeSize = Math.max(2, colorDepth);\n\n var accum = new Uint8Array(256);\n var htab = new Int32Array(HSIZE);\n var codetab = new Int32Array(HSIZE);\n\n var cur_accum, cur_bits = 0;\n var a_count;\n var free_ent = 0; // first unused entry\n var maxcode;\n\n // block compression parameters -- after all codes are used up,\n // and compression rate changes, start over.\n var clear_flg = false;\n\n // Algorithm: use open addressing double hashing (no chaining) on the\n // prefix code / next character combination. We do a variant of Knuth's\n // algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime\n // secondary probe. Here, the modular division first probe is gives way\n // to a faster exclusive-or manipulation. Also do block compression with\n // an adaptive reset, whereby the code table is cleared when the compression\n // ratio decreases, but after the table fills. The variable-length output\n // codes are re-sized at this point, and a special CLEAR code is generated\n // for the decompressor. Late addition: construct the table according to\n // file size for noticeable speed improvement on small files. Please direct\n // questions about this implementation to ames!jaw.\n var g_init_bits, ClearCode, EOFCode;\n\n // Add a character to the end of the current packet, and if it is 254\n // characters, flush the packet to disk.\n function char_out(c, outs) {\n accum[a_count++] = c;\n if (a_count >= 254) flush_char(outs);\n }\n\n // Clear out the hash table\n // table clear for block compress\n function cl_block(outs) {\n cl_hash(HSIZE);\n free_ent = ClearCode + 2;\n clear_flg = true;\n output(ClearCode, outs);\n }\n\n // Reset code table\n function cl_hash(hsize) {\n for (var i = 0; i < hsize; ++i) htab[i] = -1;\n }\n\n function compress(init_bits, outs) {\n var fcode, c, i, ent, disp, hsize_reg, hshift;\n\n // Set up the globals: g_init_bits - initial number of bits\n g_init_bits = init_bits;\n\n // Set up the necessary values\n clear_flg = false;\n n_bits = g_init_bits;\n maxcode = MAXCODE(n_bits);\n\n ClearCode = 1 << (init_bits - 1);\n EOFCode = ClearCode + 1;\n free_ent = ClearCode + 2;\n\n a_count = 0; // clear packet\n\n ent = nextPixel();\n\n hshift = 0;\n for (fcode = HSIZE; fcode < 65536; fcode *= 2) ++hshift;\n hshift = 8 - hshift; // set hash code range bound\n hsize_reg = HSIZE;\n cl_hash(hsize_reg); // clear hash table\n\n output(ClearCode, outs);\n\n outer_loop: while ((c = nextPixel()) != EOF) {\n fcode = (c << BITS) + ent;\n i = (c << hshift) ^ ent; // xor hashing\n if (htab[i] === fcode) {\n ent = codetab[i];\n continue;\n } else if (htab[i] >= 0) { // non-empty slot\n disp = hsize_reg - i; // secondary hash (after G. Knott)\n if (i === 0) disp = 1;\n do {\n if ((i -= disp) < 0) i += hsize_reg;\n if (htab[i] === fcode) {\n ent = codetab[i];\n continue outer_loop;\n }\n } while (htab[i] >= 0);\n }\n output(ent, outs);\n ent = c;\n if (free_ent < 1 << BITS) {\n codetab[i] = free_ent++; // code -> hashtable\n htab[i] = fcode;\n } else {\n cl_block(outs);\n }\n }\n\n // Put out the final code.\n output(ent, outs);\n output(EOFCode, outs);\n }\n\n function encode(outs) {\n outs.writeByte(initCodeSize); // write \"initial code size\" byte\n remaining = width * height; // reset navigation variables\n curPixel = 0;\n compress(initCodeSize + 1, outs); // compress and write the pixel data\n outs.writeByte(0); // write block terminator\n }\n\n // Flush the packet to disk, and reset the accumulator\n function flush_char(outs) {\n if (a_count > 0) {\n outs.writeByte(a_count);\n outs.writeBytes(accum, 0, a_count);\n a_count = 0;\n }\n }\n\n function MAXCODE(n_bits) {\n return (1 << n_bits) - 1;\n }\n\n // Return the next pixel from the image\n function nextPixel() {\n if (remaining === 0) return EOF;\n --remaining;\n var pix = pixels[curPixel++];\n return pix & 0xff;\n }\n\n function output(code, outs) {\n cur_accum &= masks[cur_bits];\n\n if (cur_bits > 0) cur_accum |= (code << cur_bits);\n else cur_accum = code;\n\n cur_bits += n_bits;\n\n while (cur_bits >= 8) {\n char_out((cur_accum & 0xff), outs);\n cur_accum >>= 8;\n cur_bits -= 8;\n }\n\n // If the next entry is going to be too big for the code size,\n // then increase it, if possible.\n if (free_ent > maxcode || clear_flg) {\n if (clear_flg) {\n maxcode = MAXCODE(n_bits = g_init_bits);\n clear_flg = false;\n } else {\n ++n_bits;\n if (n_bits == BITS) maxcode = 1 << BITS;\n else maxcode = MAXCODE(n_bits);\n }\n }\n\n if (code == EOFCode) {\n // At EOF, write the rest of the buffer.\n while (cur_bits > 0) {\n char_out((cur_accum & 0xff), outs);\n cur_accum >>= 8;\n cur_bits -= 8;\n }\n flush_char(outs);\n }\n }\n\n this.encode = encode;\n}\n\nmodule.exports = LZWEncoder;\n","/* NeuQuant Neural-Net Quantization Algorithm\n * ------------------------------------------\n *\n * Copyright (c) 1994 Anthony Dekker\n *\n * NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994.\n * See \"Kohonen neural networks for optimal colour quantization\"\n * in \"Network: Computation in Neural Systems\" Vol. 5 (1994) pp 351-367.\n * for a discussion of the algorithm.\n * See also http://members.ozemail.com.au/~dekker/NEUQUANT.HTML\n *\n * Any party obtaining a copy of these files from the author, directly or\n * indirectly, is granted, free of charge, a full and unrestricted irrevocable,\n * world-wide, paid up, royalty-free, nonexclusive right and license to deal\n * in this software and documentation files (the \"Software\"), including without\n * limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons who receive\n * copies from any such party to do so, with the only requirement being\n * that this copyright notice remain intact.\n *\n * (JavaScript port 2012 by Johan Nordberg)\n */\n\nvar ncycles = 100; // number of learning cycles\nvar netsize = 256; // number of colors used\nvar maxnetpos = netsize - 1;\n\n// defs for freq and bias\nvar netbiasshift = 4; // bias for colour values\nvar intbiasshift = 16; // bias for fractions\nvar intbias = (1 << intbiasshift);\nvar gammashift = 10;\nvar gamma = (1 << gammashift);\nvar betashift = 10;\nvar beta = (intbias >> betashift); /* beta = 1/1024 */\nvar betagamma = (intbias << (gammashift - betashift));\n\n// defs for decreasing radius factor\nvar initrad = (netsize >> 3); // for 256 cols, radius starts\nvar radiusbiasshift = 6; // at 32.0 biased by 6 bits\nvar radiusbias = (1 << radiusbiasshift);\nvar initradius = (initrad * radiusbias); //and decreases by a\nvar radiusdec = 30; // factor of 1/30 each cycle\n\n// defs for decreasing alpha factor\nvar alphabiasshift = 10; // alpha starts at 1.0\nvar initalpha = (1 << alphabiasshift);\nvar alphadec; // biased by 10 bits\n\n/* radbias and alpharadbias used for radpower calculation */\nvar radbiasshift = 8;\nvar radbias = (1 << radbiasshift);\nvar alpharadbshift = (alphabiasshift + radbiasshift);\nvar alpharadbias = (1 << alpharadbshift);\n\n// four primes near 500 - assume no image has a length so large that it is\n// divisible by all four primes\nvar prime1 = 499;\nvar prime2 = 491;\nvar prime3 = 487;\nvar prime4 = 503;\nvar minpicturebytes = (3 * prime4);\n\n/*\n Constructor: NeuQuant\n\n Arguments:\n\n pixels - array of pixels in RGB format\n samplefac - sampling factor 1 to 30 where lower is better quality\n\n >\n > pixels = [r, g, b, r, g, b, r, g, b, ..]\n >\n*/\nfunction NeuQuant(pixels, samplefac) {\n var network; // int[netsize][4]\n var netindex; // for network lookup - really 256\n\n // bias and freq arrays for learning\n var bias;\n var freq;\n var radpower;\n\n /*\n Private Method: init\n\n sets up arrays\n */\n function init() {\n network = [];\n netindex = new Int32Array(256);\n bias = new Int32Array(netsize);\n freq = new Int32Array(netsize);\n radpower = new Int32Array(netsize >> 3);\n\n var i, v;\n for (i = 0; i < netsize; i++) {\n v = (i << (netbiasshift + 8)) / netsize;\n network[i] = new Float64Array([v, v, v, 0]);\n //network[i] = [v, v, v, 0]\n freq[i] = intbias / netsize;\n bias[i] = 0;\n }\n }\n\n /*\n Private Method: unbiasnet\n\n unbiases network to give byte values 0..255 and record position i to prepare for sort\n */\n function unbiasnet() {\n for (var i = 0; i < netsize; i++) {\n network[i][0] >>= netbiasshift;\n network[i][1] >>= netbiasshift;\n network[i][2] >>= netbiasshift;\n network[i][3] = i; // record color number\n }\n }\n\n /*\n Private Method: altersingle\n\n moves neuron *i* towards biased (b,g,r) by factor *alpha*\n */\n function altersingle(alpha, i, b, g, r) {\n network[i][0] -= (alpha * (network[i][0] - b)) / initalpha;\n network[i][1] -= (alpha * (network[i][1] - g)) / initalpha;\n network[i][2] -= (alpha * (network[i][2] - r)) / initalpha;\n }\n\n /*\n Private Method: alterneigh\n\n moves neurons in *radius* around index *i* towards biased (b,g,r) by factor *alpha*\n */\n function alterneigh(radius, i, b, g, r) {\n var lo = Math.abs(i - radius);\n var hi = Math.min(i + radius, netsize);\n\n var j = i + 1;\n var k = i - 1;\n var m = 1;\n\n var p, a;\n while ((j < hi) || (k > lo)) {\n a = radpower[m++];\n\n if (j < hi) {\n p = network[j++];\n p[0] -= (a * (p[0] - b)) / alpharadbias;\n p[1] -= (a * (p[1] - g)) / alpharadbias;\n p[2] -= (a * (p[2] - r)) / alpharadbias;\n }\n\n if (k > lo) {\n p = network[k--];\n p[0] -= (a * (p[0] - b)) / alpharadbias;\n p[1] -= (a * (p[1] - g)) / alpharadbias;\n p[2] -= (a * (p[2] - r)) / alpharadbias;\n }\n }\n }\n\n /*\n Private Method: contest\n\n searches for biased BGR values\n */\n function contest(b, g, r) {\n /*\n finds closest neuron (min dist) and updates freq\n finds best neuron (min dist-bias) and returns position\n for frequently chosen neurons, freq[i] is high and bias[i] is negative\n bias[i] = gamma * ((1 / netsize) - freq[i])\n */\n\n var bestd = ~(1 << 31);\n var bestbiasd = bestd;\n var bestpos = -1;\n var bestbiaspos = bestpos;\n\n var i, n, dist, biasdist, betafreq;\n for (i = 0; i < netsize; i++) {\n n = network[i];\n\n dist = Math.abs(n[0] - b) + Math.abs(n[1] - g) + Math.abs(n[2] - r);\n if (dist < bestd) {\n bestd = dist;\n bestpos = i;\n }\n\n biasdist = dist - ((bias[i]) >> (intbiasshift - netbiasshift));\n if (biasdist < bestbiasd) {\n bestbiasd = biasdist;\n bestbiaspos = i;\n }\n\n betafreq = (freq[i] >> betashift);\n freq[i] -= betafreq;\n bias[i] += (betafreq << gammashift);\n }\n\n freq[bestpos] += beta;\n bias[bestpos] -= betagamma;\n\n return bestbiaspos;\n }\n\n /*\n Private Method: inxbuild\n\n sorts network and builds netindex[0..255]\n */\n function inxbuild() {\n var i, j, p, q, smallpos, smallval, previouscol = 0, startpos = 0;\n for (i = 0; i < netsize; i++) {\n p = network[i];\n smallpos = i;\n smallval = p[1]; // index on g\n // find smallest in i..netsize-1\n for (j = i + 1; j < netsize; j++) {\n q = network[j];\n if (q[1] < smallval) { // index on g\n smallpos = j;\n smallval = q[1]; // index on g\n }\n }\n q = network[smallpos];\n // swap p (i) and q (smallpos) entries\n if (i != smallpos) {\n j = q[0]; q[0] = p[0]; p[0] = j;\n j = q[1]; q[1] = p[1]; p[1] = j;\n j = q[2]; q[2] = p[2]; p[2] = j;\n j = q[3]; q[3] = p[3]; p[3] = j;\n }\n // smallval entry is now in position i\n\n if (smallval != previouscol) {\n netindex[previouscol] = (startpos + i) >> 1;\n for (j = previouscol + 1; j < smallval; j++)\n netindex[j] = i;\n previouscol = smallval;\n startpos = i;\n }\n }\n netindex[previouscol] = (startpos + maxnetpos) >> 1;\n for (j = previouscol + 1; j < 256; j++)\n netindex[j] = maxnetpos; // really 256\n }\n\n /*\n Private Method: inxsearch\n\n searches for BGR values 0..255 and returns a color index\n */\n function inxsearch(b, g, r) {\n var a, p, dist;\n\n var bestd = 1000; // biggest possible dist is 256*3\n var best = -1;\n\n var i = netindex[g]; // index on g\n var j = i - 1; // start at netindex[g] and work outwards\n\n while ((i < netsize) || (j >= 0)) {\n if (i < netsize) {\n p = network[i];\n dist = p[1] - g; // inx key\n if (dist >= bestd) i = netsize; // stop iter\n else {\n i++;\n if (dist < 0) dist = -dist;\n a = p[0] - b; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n a = p[2] - r; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n bestd = dist;\n best = p[3];\n }\n }\n }\n }\n if (j >= 0) {\n p = network[j];\n dist = g - p[1]; // inx key - reverse dif\n if (dist >= bestd) j = -1; // stop iter\n else {\n j--;\n if (dist < 0) dist = -dist;\n a = p[0] - b; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n a = p[2] - r; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n bestd = dist;\n best = p[3];\n }\n }\n }\n }\n }\n\n return best;\n }\n\n /*\n Private Method: learn\n\n \"Main Learning Loop\"\n */\n function learn() {\n var i;\n\n var lengthcount = pixels.length;\n var alphadec = 30 + ((samplefac - 1) / 3);\n var samplepixels = lengthcount / (3 * samplefac);\n var delta = ~~(samplepixels / ncycles);\n var alpha = initalpha;\n var radius = initradius;\n\n var rad = radius >> radiusbiasshift;\n\n if (rad <= 1) rad = 0;\n for (i = 0; i < rad; i++)\n radpower[i] = alpha * (((rad * rad - i * i) * radbias) / (rad * rad));\n\n var step;\n if (lengthcount < minpicturebytes) {\n samplefac = 1;\n step = 3;\n } else if ((lengthcount % prime1) !== 0) {\n step = 3 * prime1;\n } else if ((lengthcount % prime2) !== 0) {\n step = 3 * prime2;\n } else if ((lengthcount % prime3) !== 0) {\n step = 3 * prime3;\n } else {\n step = 3 * prime4;\n }\n\n var b, g, r, j;\n var pix = 0; // current pixel\n\n i = 0;\n while (i < samplepixels) {\n b = (pixels[pix] & 0xff) << netbiasshift;\n g = (pixels[pix + 1] & 0xff) << netbiasshift;\n r = (pixels[pix + 2] & 0xff) << netbiasshift;\n\n j = contest(b, g, r);\n\n altersingle(alpha, j, b, g, r);\n if (rad !== 0) alterneigh(rad, j, b, g, r); // alter neighbours\n\n pix += step;\n if (pix >= lengthcount) pix -= lengthcount;\n\n i++;\n\n if (delta === 0) delta = 1;\n if (i % delta === 0) {\n alpha -= alpha / alphadec;\n radius -= radius / radiusdec;\n rad = radius >> radiusbiasshift;\n\n if (rad <= 1) rad = 0;\n for (j = 0; j < rad; j++)\n radpower[j] = alpha * (((rad * rad - j * j) * radbias) / (rad * rad));\n }\n }\n }\n\n /*\n Method: buildColormap\n\n 1. initializes network\n 2. trains it\n 3. removes misconceptions\n 4. builds colorindex\n */\n function buildColormap() {\n init();\n learn();\n unbiasnet();\n inxbuild();\n }\n this.buildColormap = buildColormap;\n\n /*\n Method: getColormap\n\n builds colormap from the index\n\n returns array in the format:\n\n >\n > [r, g, b, r, g, b, r, g, b, ..]\n >\n */\n function getColormap() {\n var map = [];\n var index = [];\n\n for (var i = 0; i < netsize; i++)\n index[network[i][3]] = i;\n\n var k = 0;\n for (var l = 0; l < netsize; l++) {\n var j = index[l];\n map[k++] = (network[j][0]);\n map[k++] = (network[j][1]);\n map[k++] = (network[j][2]);\n }\n return map;\n }\n this.getColormap = getColormap;\n\n /*\n Method: lookupRGB\n\n looks for the closest *r*, *g*, *b* color in the map and\n returns its index\n */\n this.lookupRGB = inxsearch;\n}\n\nmodule.exports = NeuQuant;\n","GIFEncoder = require './GIFEncoder.js'\n\nrenderFrame = (frame) ->\n encoder = new GIFEncoder frame.width, frame.height\n\n if frame.index is 0\n encoder.writeHeader()\n else\n encoder.firstFrame = false\n\n encoder.setTransparent frame.transparent\n encoder.setRepeat frame.repeat\n encoder.setDelay frame.delay\n encoder.setQuality frame.quality\n encoder.setDither frame.dither\n encoder.setGlobalPalette frame.globalPalette\n encoder.addFrame frame.data\n encoder.finish() if frame.last\n if frame.globalPalette == true\n frame.globalPalette = encoder.getGlobalPalette()\n\n stream = encoder.stream()\n frame.data = stream.pages\n frame.cursor = stream.cursor\n frame.pageSize = stream.constructor.pageSize\n\n if frame.canTransfer\n transfer = (page.buffer for page in frame.data)\n self.postMessage frame, transfer\n else\n self.postMessage frame\n\nself.onmessage = (event) -> renderFrame event.data\n"]} \ No newline at end of file diff --git a/libraries/p5/p5.dom.js b/libraries/p5/p5.dom.js index 176487cc..18ef604a 100644 --- a/libraries/p5/p5.dom.js +++ b/libraries/p5/p5.dom.js @@ -1,77 +1,84 @@ -/*! p5.dom.js v0.3.4 Aug 11, 2017 */ +/*! p5.dom.js v0.4.0 August 9, 2018 */ /** *

The web is much more than just canvas and p5.dom makes it easy to interact * with other HTML5 objects, including text, hyperlink, image, input, video, * audio, and webcam.

*

There is a set of creation methods, DOM manipulation methods, and - * an extended p5.Element that supports a range of HTML elements. See the - * + * an extended p5.Element that supports a range of HTML elements. See the + * * beyond the canvas tutorial for a full overview of how this addon works. * *

Methods and properties shown in black are part of the p5.js core, items in * blue are part of the p5.dom library. You will need to include an extra file * in order to access the blue functions. See the - * using a library + * using a library * section for information on how to include this library. p5.dom comes with - * p5 complete or you can download the single file - * + * p5 complete or you can download the single file + * * here.

- *

See tutorial: beyond the canvas + *

See tutorial: beyond the canvas * for more info on how to use this libary. * * @module p5.dom * @submodule p5.dom - * @for p5.dom + * @for p5 * @main */ -(function (root, factory) { +(function(root, factory) { if (typeof define === 'function' && define.amd) - define('p5.dom', ['p5'], function (p5) { (factory(p5));}); - else if (typeof exports === 'object') - factory(require('../p5')); - else - factory(root['p5']); -}(this, function (p5) { - -// ============================================================================= -// p5 additions -// ============================================================================= + define('p5.dom', ['p5'], function(p5) { + factory(p5); + }); + else if (typeof exports === 'object') factory(require('../p5')); + else factory(root['p5']); +})(this, function(p5) { + // ============================================================================= + // p5 additions + // ============================================================================= /** * Searches the page for an element with the given ID, class, or tag name (using the '#' or '.' * prefixes to specify an ID or class respectively, and none for a tag) and returns it as - * a p5.Element. If a class or tag name is given with more than 1 element, + * a p5.Element. If a class or tag name is given with more than 1 element, * only the first element will be returned. * The DOM node itself can be accessed with .elt. * Returns null if none found. You can also specify a container to search within. * * @method select * @param {String} name id, class, or tag name of element to search for - * @param {String} [container] id, p5.Element, or HTML element to search within - * @return {Object|p5.Element|Null} p5.Element containing node found + * @param {String|p5.Element|HTMLElement} [container] id, p5.Element, or + * HTML element to search within + * @return {p5.Element|null} p5.Element containing node found * @example *

* function setup() { - * createCanvas(100,100); + * createCanvas(100, 100); * //translates canvas 50px down * select('canvas').position(100, 100); * } *
- *
+ *
* // these are all valid calls to select() * var a = select('#moo'); * var b = select('#blah', '#myContainer'); - * var c = select('#foo', b); + * var c, e; + * if (b) { + * c = select('#foo', b); + * } * var d = document.getElementById('beep'); - * var e = select('p', d); + * if (d) { + * e = select('p', d); + * } + * [a, b, c, d, e]; // unused *
* */ - p5.prototype.select = function (e, p) { + p5.prototype.select = function(e, p) { + p5._validateParameters('select', arguments); var res = null; var container = getContainer(p); - if (e[0] === '.'){ + if (e[0] === '.') { e = e.slice(1); res = container.getElementsByClassName(e); if (res.length) { @@ -79,10 +86,10 @@ } else { res = null; } - }else if (e[0] === '#'){ + } else if (e[0] === '#') { e = e.slice(1); res = container.getElementById(e); - }else { + } else { res = container.getElementsByTagName(e); if (res.length) { res = res[0]; @@ -91,7 +98,7 @@ } } if (res) { - return wrapElement(res); + return this._wrapElement(res); } else { return null; } @@ -99,7 +106,7 @@ /** * Searches the page for elements with the given class or tag name (using the '.' prefix - * to specify a class and no prefix for a tag) and returns them as p5.Elements + * to specify a class and no prefix for a tag) and returns them as p5.Elements * in an array. * The DOM node itself can be accessed with .elt. * Returns an empty array if none found. @@ -107,8 +114,8 @@ * * @method selectAll * @param {String} name class or tag name of elements to search for - * @param {String} [container] id, p5.Element, or HTML element to search within - * @return {Array} Array of p5.Elements containing nodes found + * @param {String} [container] id, p5.Element, or HTML element to search within + * @return {p5.Element[]} Array of p5.Elements containing nodes found * @example *
* function setup() { @@ -117,28 +124,33 @@ * createButton('3rd btn'); * var buttons = selectAll('button'); * - * for (var i = 0; i < buttons.length; i++){ - * buttons[i].size(100,100); + * for (var i = 0; i < buttons.length; i++) { + * buttons[i].size(100, 100); * } * } *
*
* // these are all valid calls to selectAll() * var a = selectAll('.moo'); - * var b = selectAll('div'); - * var c = selectAll('button', '#myContainer'); + * a = selectAll('div'); + * a = selectAll('button', '#myContainer'); + * * var d = select('#container'); - * var e = selectAll('p', d); + * a = selectAll('p', d); + * * var f = document.getElementById('beep'); - * var g = select('.blah', f); + * a = select('.blah', f); + * + * a; // unused *
* */ - p5.prototype.selectAll = function (e, p) { + p5.prototype.selectAll = function(e, p) { + p5._validateParameters('selectAll', arguments); var arr = []; var res; var container = getContainer(p); - if (e[0] === '.'){ + if (e[0] === '.') { e = e.slice(1); res = container.getElementsByClassName(e); } else { @@ -146,7 +158,7 @@ } if (res) { for (var j = 0; j < res.length; j++) { - var obj = wrapElement(res[j]); + var obj = this._wrapElement(res[j]); arr.push(obj); } } @@ -158,12 +170,12 @@ */ function getContainer(p) { var container = document; - if (typeof p === 'string' && p[0] === '#'){ + if (typeof p === 'string' && p[0] === '#') { p = p.slice(1); container = document.getElementById(p) || document; - } else if (p instanceof p5.Element){ + } else if (p instanceof p5.Element) { container = p.elt; - } else if (p instanceof HTMLElement){ + } else if (p instanceof HTMLElement) { container = p; } return container; @@ -172,33 +184,40 @@ /** * Helper function for getElement and getElements. */ - function wrapElement(elt) { - if(elt.tagName === "INPUT" && elt.type === "checkbox") { - var converted = new p5.Element(elt); - converted.checked = function(){ - if (arguments.length === 0){ - return this.elt.checked; - } else if(arguments[0]) { - this.elt.checked = true; - } else { - this.elt.checked = false; - } - return this; + p5.prototype._wrapElement = function(elt) { + var children = Array.prototype.slice.call(elt.children); + if (elt.tagName === 'INPUT' && elt.type === 'checkbox') { + var converted = new p5.Element(elt, this); + converted.checked = function() { + if (arguments.length === 0) { + return this.elt.checked; + } else if (arguments[0]) { + this.elt.checked = true; + } else { + this.elt.checked = false; + } + return this; }; return converted; - } else if (elt.tagName === "VIDEO" || elt.tagName === "AUDIO") { - return new p5.MediaElement(elt); - } else if ( elt.tagName === "SELECT" ){ - return createSelect( new p5.Element(elt) ); - } - else { - return new p5.Element(elt); + } else if (elt.tagName === 'VIDEO' || elt.tagName === 'AUDIO') { + return new p5.MediaElement(elt, this); + } else if (elt.tagName === 'SELECT') { + return this.createSelect(new p5.Element(elt, this)); + } else if ( + children.length > 0 && + children.every(function(c) { + return c.tagName === 'INPUT' || c.tagName === 'LABEL'; + }) + ) { + return this.createRadio(new p5.Element(elt, this)); + } else { + return new p5.Element(elt, this); } - } + }; /** * Removes all elements created by p5, except any canvas / graphics - * elements created by createCanvas or createGraphics. + * elements created by createCanvas or createGraphics. * Event handlers are removed, and element is removed from the DOM. * @method removeElements * @example @@ -214,8 +233,9 @@ *
* */ - p5.prototype.removeElements = function (e) { - for (var i=0; ip5.Element holding created node * @example *
- * var myDiv; - * function setup() { - * myDiv = createDiv('this is some text'); - * } + * createDiv('this is some text'); *
*/ @@ -258,13 +277,10 @@ * * @method createP * @param {String} [html] inner HTML for element created - * @return {Object|p5.Element} pointer to p5.Element holding created node + * @return {p5.Element} pointer to p5.Element holding created node * @example *
- * var myP; - * function setup() { - * myP = createP('this is some text'); - * } + * createP('this is some text'); *
*/ @@ -275,13 +291,10 @@ * * @method createSpan * @param {String} [html] inner HTML for element created - * @return {Object|p5.Element} pointer to p5.Element holding created node + * @return {p5.Element} pointer to p5.Element holding created node * @example *
- * var mySpan; - * function setup() { - * mySpan = createSpan('this is some text'); - * } + * createSpan('this is some text'); *
*/ var tags = ['div', 'p', 'span']; @@ -289,9 +302,9 @@ var method = 'create' + tag.charAt(0).toUpperCase() + tag.slice(1); p5.prototype[method] = function(html) { var elt = document.createElement(tag); - elt.innerHTML = typeof html === undefined ? "" : html; + elt.innerHTML = typeof html === 'undefined' ? '' : html; return addElement(elt, this); - } + }; }); /** @@ -304,37 +317,41 @@ * @param {String} src src path or url for image * @param {String} [alt] alternate text to be used if image does not load * @param {Function} [successCallback] callback to be called once image data is loaded - * @return {Object|p5.Element} pointer to p5.Element holding created node + * @return {p5.Element} pointer to p5.Element holding created node * @example *
- * var img; - * function setup() { - * img = createImg('http://p5js.org/img/asterisk-01.png'); - * } + * createImg('http://p5js.org/img/asterisk-01.png'); *
*/ + /** + * @method createImg + * @param {String} src + * @param {Function} successCallback + * @return {Object|p5.Element} + */ p5.prototype.createImg = function() { + p5._validateParameters('createImg', arguments); var elt = document.createElement('img'); var args = arguments; var self; - var setAttrs = function(){ + var setAttrs = function() { self.width = elt.offsetWidth || elt.width; self.height = elt.offsetHeight || elt.height; - if (args.length > 1 && typeof args[1] === 'function'){ + if (args.length > 1 && typeof args[1] === 'function') { self.fn = args[1]; self.fn(); - }else if (args.length > 1 && typeof args[2] === 'function'){ + } else if (args.length > 1 && typeof args[2] === 'function') { self.fn = args[2]; self.fn(); } }; elt.src = args[0]; - if (args.length > 1 && typeof args[1] === 'string'){ + if (args.length > 1 && typeof args[1] === 'string') { elt.alt = args[1]; } - elt.onload = function(){ + elt.onload = function() { setAttrs(); - } + }; self = addElement(elt, this); return self; }; @@ -349,16 +366,14 @@ * @param {String} html inner html of link element to display * @param {String} [target] target where new link should open, * could be _blank, _self, _parent, _top. - * @return {Object|p5.Element} pointer to p5.Element holding created node + * @return {p5.Element} pointer to p5.Element holding created node * @example *
- * var myLink; - * function setup() { - * myLink = createA('http://p5js.org/', 'this is a link'); - * } + * createA('http://p5js.org/', 'this is a link'); *
*/ p5.prototype.createA = function(href, html, target) { + p5._validateParameters('createA', arguments); var elt = document.createElement('a'); elt.href = href; elt.innerHTML = html; @@ -368,7 +383,6 @@ /** INPUT **/ - /** * Creates a slider <input></input> element in the DOM. * Use .size() to set the display length of the slider. @@ -380,7 +394,7 @@ * @param {Number} max maximum value of the slider * @param {Number} [value] default value of the slider * @param {Number} [step] step size for each tick of the slider (if step is set to 0, the slider will move continuously from the minimum to the maximum value) - * @return {Object|p5.Element} pointer to p5.Element holding created node + * @return {p5.Element} pointer to p5.Element holding created node * @example *
* var slider; @@ -412,16 +426,17 @@ *
*/ p5.prototype.createSlider = function(min, max, value, step) { + p5._validateParameters('createSlider', arguments); var elt = document.createElement('input'); elt.type = 'range'; elt.min = min; elt.max = max; if (step === 0) { - elt.step = .000000000000000001; // smallest valid step + elt.step = 0.000000000000000001; // smallest valid step } else if (step) { elt.step = step; } - if (typeof(value) === "number") elt.value = value; + if (typeof value === 'number') elt.value = value; return addElement(elt, this); }; @@ -435,7 +450,7 @@ * @method createButton * @param {String} label label displayed on the button * @param {String} [value] value of the button - * @return {Object|p5.Element} pointer to p5.Element holding created node + * @return {p5.Element} pointer to p5.Element holding created node * @example *
* var button; @@ -454,6 +469,7 @@ *
*/ p5.prototype.createButton = function(label, value) { + p5._validateParameters('createButton', arguments); var elt = document.createElement('button'); elt.innerHTML = label; if (value) elt.value = value; @@ -466,8 +482,8 @@ * * @method createCheckbox * @param {String} [label] label displayed after checkbox - * @param {boolean} [value] value of the checkbox; checked is true, unchecked is false.Unchecked if no value given - * @return {Object|p5.Element} pointer to p5.Element holding created node + * @param {boolean} [value] value of the checkbox; checked is true, unchecked is false + * @return {p5.Element} pointer to p5.Element holding created node * @example *
* var checkbox; @@ -479,39 +495,42 @@ * * function myCheckedEvent() { * if (this.checked()) { - * console.log("Checking!"); + * console.log('Checking!'); * } else { - * console.log("Unchecking!"); + * console.log('Unchecking!'); * } * } *
*/ p5.prototype.createCheckbox = function() { + p5._validateParameters('createCheckbox', arguments); var elt = document.createElement('div'); var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; elt.appendChild(checkbox); //checkbox must be wrapped in p5.Element before label so that label appears after var self = addElement(elt, this); - self.checked = function(){ + self.checked = function() { var cb = self.elt.getElementsByTagName('input')[0]; if (cb) { - if (arguments.length === 0){ + if (arguments.length === 0) { return cb.checked; - }else if(arguments[0]){ + } else if (arguments[0]) { cb.checked = true; - }else{ + } else { cb.checked = false; } } return self; }; - this.value = function(val){ + this.value = function(val) { self.value = val; return this; }; - if (arguments[0]){ - var ran = Math.random().toString(36).slice(2); + if (arguments[0]) { + var ran = Math.random() + .toString(36) + .slice(2); var label = document.createElement('label'); checkbox.setAttribute('id', ran); label.htmlFor = ran; @@ -519,7 +538,7 @@ label.appendChild(document.createTextNode(arguments[0])); elt.appendChild(label); } - if (arguments[1]){ + if (arguments[1]) { checkbox.checked = true; } return self; @@ -527,7 +546,7 @@ /** * Creates a dropdown menu <select></select> element in the DOM. - * It also helps to assign select-box methods to p5.Element when selecting existing select box + * It also helps to assign select-box methods to p5.Element when selecting existing select box * @method createSelect * @param {boolean} [multiple] true if dropdown should support multiple selections * @return {p5.Element} @@ -549,7 +568,7 @@ * function mySelectEvent() { * var item = sel.value(); * background(200); - * text("it's a "+item+"!", 50, 50); + * text('it is a' + item + '!', 50, 50); * } * */ @@ -560,14 +579,15 @@ */ p5.prototype.createSelect = function() { + p5._validateParameters('createSelect', arguments); var elt, self; var arg = arguments[0]; - if( typeof arg === 'object' && arg.elt.nodeName === 'SELECT' ) { + if (typeof arg === 'object' && arg.elt.nodeName === 'SELECT') { self = arg; elt = this.elt = arg.elt; } else { elt = document.createElement('select'); - if( arg && typeof arg === 'boolean' ) { + if (arg && typeof arg === 'boolean') { elt.setAttribute('multiple', 'true'); } self = addElement(elt, this); @@ -576,49 +596,47 @@ var index; //see if there is already an option with this name for (var i = 0; i < this.elt.length; i++) { - if(this.elt[i].innerHTML == name) { + if (this.elt[i].innerHTML === name) { index = i; break; } } //if there is an option with this name we will modify it - if(index !== undefined) { + if (index !== undefined) { //if the user passed in false then delete that option - if(value === false) { + if (value === false) { this.elt.remove(index); } else { //otherwise if the name and value are the same then change both - if(this.elt[index].innerHTML == this.elt[index].value) { + if (this.elt[index].innerHTML === this.elt[index].value) { this.elt[index].innerHTML = this.elt[index].value = value; - //otherwise just change the value + //otherwise just change the value } else { this.elt[index].value = value; } } - } - //if it doesn't exist make it - else { + } else { + //if it doesn't exist make it var opt = document.createElement('option'); opt.innerHTML = name; - if (arguments.length > 1) - opt.value = value; - else - opt.value = name; + if (arguments.length > 1) opt.value = value; + else opt.value = name; elt.appendChild(opt); } }; self.selected = function(value) { - var arr = []; + var arr = [], + i; if (arguments.length > 0) { - for (var i = 0; i < this.elt.length; i++) { + for (i = 0; i < this.elt.length; i++) { if (value.toString() === this.elt[i].value) { this.elt.selectedIndex = i; } } return this; } else { - if (arg) { - for (var i = 0; i < this.elt.selectedOptions.length; i++) { + if (this.elt.getAttribute('multiple')) { + for (i = 0; i < this.elt.selectedOptions.length; i++) { arr.push(this.elt.selectedOptions[i].value); } return arr; @@ -637,16 +655,16 @@ * * @method createRadio * @param {String} [divId] the id and name of the created div and input field respectively - * @return {Object|p5.Element} pointer to p5.Element holding created node + * @return {p5.Element} pointer to p5.Element holding created node * @example *
* var radio; * * function setup() { * radio = createRadio(); - * radio.option("black"); - * radio.option("white"); - * radio.option("gray"); + * radio.option('black'); + * radio.option('white'); + * radio.option('gray'); * radio.style('width', '60px'); * textAlign(CENTER); * fill(255, 0, 0); @@ -655,7 +673,7 @@ * function draw() { * var val = radio.value(); * background(val); - * text(val, width/2, height/2); + * text(val, width / 2, height / 2); * } *
*
@@ -674,112 +692,198 @@ * background(200); * var val = radio.value(); * if (val) { - * text('item cost is $'+val, width/2, height/2); + * text('item cost is $' + val, width / 2, height / 2); * } * } *
*/ - p5.prototype.createRadio = function() { - var radios = document.querySelectorAll("input[type=radio]"); + p5.prototype.createRadio = function(existing_radios) { + p5._validateParameters('createRadio', arguments); + // do some prep by counting number of radios on page + var radios = document.querySelectorAll('input[type=radio]'); var count = 0; - if(radios.length > 1){ + if (radios.length > 1) { var length = radios.length; - var prev=radios[0].name; + var prev = radios[0].name; var current = radios[1].name; count = 1; - for(var i = 1; i < length; i++) { + for (var i = 1; i < length; i++) { current = radios[i].name; - if(prev != current){ + if (prev !== current) { count++; } prev = current; } - } - else if (radios.length == 1){ + } else if (radios.length === 1) { count = 1; } - var elt = document.createElement('div'); - var self = addElement(elt, this); + // see if we got an existing set of radios from callee + var elt, self; + if (typeof existing_radios === 'object') { + // use existing elements + self = existing_radios; + elt = this.elt = existing_radios.elt; + } else { + // create a set of radio buttons + elt = document.createElement('div'); + self = addElement(elt, this); + } + // setup member functions + self._getInputChildrenArray = function() { + return Array.prototype.slice.call(this.elt.children).filter(function(c) { + return c.tagName === 'INPUT'; + }); + }; + var times = -1; - self.option = function(name, value){ + self.option = function(name, value) { var opt = document.createElement('input'); opt.type = 'radio'; opt.innerHTML = name; - if (arguments.length > 1) - opt.value = value; - else - opt.value = name; - opt.setAttribute('name',"defaultradio"+count); + if (value) opt.value = value; + else opt.value = name; + opt.setAttribute('name', 'defaultradio' + count); elt.appendChild(opt); - if (name){ + if (name) { times++; - var ran = Math.random().toString(36).slice(2); var label = document.createElement('label'); - opt.setAttribute('id', "defaultradio"+count+"-"+times); - label.htmlFor = "defaultradio"+count+"-"+times; + opt.setAttribute('id', 'defaultradio' + count + '-' + times); + label.htmlFor = 'defaultradio' + count + '-' + times; label.appendChild(document.createTextNode(name)); elt.appendChild(label); } return opt; }; - self.selected = function(){ - var length = this.elt.childNodes.length; - if(arguments.length == 1) { - for (var i = 0; i < length; i+=2){ - if(this.elt.childNodes[i].value == arguments[0]) - this.elt.childNodes[i].checked = true; + self.selected = function(value) { + var i; + var inputChildren = self._getInputChildrenArray(); + if (value) { + for (i = 0; i < inputChildren.length; i++) { + if (inputChildren[i].value === value) inputChildren[i].checked = true; } return this; } else { - for (var i = 0; i < length; i+=2){ - if(this.elt.childNodes[i].checked == true) - return this.elt.childNodes[i].value; + for (i = 0; i < inputChildren.length; i++) { + if (inputChildren[i].checked === true) return inputChildren[i].value; } } }; - self.value = function(){ - var length = this.elt.childNodes.length; - if(arguments.length == 1) { - for (var i = 0; i < length; i+=2){ - if(this.elt.childNodes[i].value == arguments[0]) - this.elt.childNodes[i].checked = true; + self.value = function(value) { + var i; + var inputChildren = self._getInputChildrenArray(); + if (value) { + for (i = 0; i < inputChildren.length; i++) { + if (inputChildren[i].value === value) inputChildren[i].checked = true; } return this; } else { - for (var i = 0; i < length; i+=2){ - if(this.elt.childNodes[i].checked == true) - return this.elt.childNodes[i].value; + for (i = 0; i < inputChildren.length; i++) { + if (inputChildren[i].checked === true) return inputChildren[i].value; } - return ""; + return ''; + } + }; + return self; + }; + + /** + * Creates a colorPicker element in the DOM for color input. + * The .value() method will return a hex string (#rrggbb) of the color. + * The .color() method will return a p5.Color object with the current chosen color. + * + * @method createColorPicker + * @param {String|p5.Color} [value] default color of element + * @return {p5.Element} pointer to p5.Element holding created node + * @example + *
+ * + * var inp1, inp2; + * function setup() { + * createCanvas(100, 100); + * background('grey'); + * inp1 = createColorPicker('#ff0000'); + * inp2 = createColorPicker(color('yellow')); + * inp1.input(setShade1); + * inp2.input(setShade2); + * setMidShade(); + * } + * + * function setMidShade() { + * // Finding a shade between the two + * var commonShade = lerpColor(inp1.color(), inp2.color(), 0.5); + * fill(commonShade); + * rect(20, 20, 60, 60); + * } + * + * function setShade1() { + * setMidShade(); + * console.log('You are choosing shade 1 to be : ', this.value()); + * } + * function setShade2() { + * setMidShade(); + * console.log('You are choosing shade 2 to be : ', this.value()); + * } + * + *
+ */ + p5.prototype.createColorPicker = function(value) { + p5._validateParameters('createColorPicker', arguments); + var elt = document.createElement('input'); + var self; + elt.type = 'color'; + if (value) { + if (value instanceof p5.Color) { + elt.value = value.toString('#rrggbb'); + } else { + p5.prototype._colorMode = 'rgb'; + p5.prototype._colorMaxes = { + rgb: [255, 255, 255, 255], + hsb: [360, 100, 100, 1], + hsl: [360, 100, 100, 1] + }; + elt.value = p5.prototype.color(value).toString('#rrggbb'); } + } else { + elt.value = '#000000'; + } + self = addElement(elt, this); + // Method to return a p5.Color object for the given color. + self.color = function() { + if (value.mode) { + p5.prototype._colorMode = value.mode; + } + if (value.maxes) { + p5.prototype._colorMaxes = value.maxes; + } + return p5.prototype.color(this.elt.value); }; - return self + return self; }; /** * Creates an <input></input> element in the DOM for text input. - * Use .size() to set the display length of the box. + * Use .size() to set the display length of the box. * Appends to the container node if one is specified, otherwise * appends to body. * * @method createInput - * @param {Number} [value] default value of the input box + * @param {String} [value] default value of the input box * @param {String} [type] type of text, ie text, password etc. Defaults to text - * @return {Object|p5.Element} pointer to p5.Element holding created node + * @return {p5.Element} pointer to p5.Element holding created node * @example *
- * function setup(){ + * function setup() { * var inp = createInput(''); * inp.input(myInputEvent); * } * - * function myInputEvent(){ + * function myInputEvent() { * console.log('you are typing: ', this.value()); * } - * *
*/ p5.prototype.createInput = function(value, type) { + p5._validateParameters('createInput', arguments); var elt = document.createElement('input'); elt.type = type ? type : 'text'; if (value) elt.value = value; @@ -793,8 +897,9 @@ * @method createFileInput * @param {Function} [callback] callback function for when a file loaded * @param {String} [multiple] optional to allow multiple files selected - * @return {Object|p5.Element} pointer to p5.Element holding created DOM element + * @return {p5.Element} pointer to p5.Element holding created DOM element * @example + *
* var input; * var img; * @@ -816,9 +921,40 @@ * img.hide(); * } * } + *
*/ p5.prototype.createFileInput = function(callback, multiple) { - + p5._validateParameters('createFileInput', arguments); + // Function to handle when a file is selected + // We're simplifying life and assuming that we always + // want to load every selected file + function handleFileSelect(evt) { + function makeLoader(theFile) { + // Making a p5.File object + var p5file = new p5.File(theFile); + return function(e) { + p5file.data = e.target.result; + callback(p5file); + }; + } + // These are the files + var files = evt.target.files; + // Load each one and trigger a callback + for (var i = 0; i < files.length; i++) { + var f = files[i]; + var reader = new FileReader(); + + reader.onload = makeLoader(f); + + // Text or data? + // This should likely be improved + if (f.type.indexOf('text') > -1) { + reader.readAsText(f); + } else { + reader.readAsDataURL(f); + } + } + } // Is the file stuff supported? if (window.File && window.FileReader && window.FileList && window.Blob) { // Yup, we're ok and make an input file selector @@ -832,56 +968,27 @@ elt.multiple = 'multiple'; } - // Function to handle when a file is selected - // We're simplifying life and assuming that we always - // want to load every selected file - function handleFileSelect(evt) { - // These are the files - var files = evt.target.files; - // Load each one and trigger a callback - for (var i = 0; i < files.length; i++) { - var f = files[i]; - var reader = new FileReader(); - function makeLoader(theFile) { - // Making a p5.File object - var p5file = new p5.File(theFile); - return function(e) { - p5file.data = e.target.result; - callback(p5file); - }; - }; - reader.onload = makeLoader(f); - - // Text or data? - // This should likely be improved - if (f.type.indexOf('text') > -1) { - reader.readAsText(f); - } else { - reader.readAsDataURL(f); - } - } - } - // Now let's handle when a file was selected elt.addEventListener('change', handleFileSelect, false); return addElement(elt, this); } else { - console.log('The File APIs are not fully supported in this browser. Cannot create element.'); + console.log( + 'The File APIs are not fully supported in this browser. Cannot create element.' + ); } }; - /** VIDEO STUFF **/ function createMedia(pInst, type, src, callback) { var elt = document.createElement(type); // allow src to be empty - var src = src || ''; + src = src || ''; if (typeof src === 'string') { src = [src]; } - for (var i=0; i