Skip to content

Instantly share code, notes, and snippets.

@rm-hull
Created May 5, 2013 23:05
Show Gist options
  • Save rm-hull/5522517 to your computer and use it in GitHub Desktop.
Save rm-hull/5522517 to your computer and use it in GitHub Desktop.
s = 640, t = 480, u = Math, v = [
[0, 0, 0],
[255, 0, 0],
[255, 255, 255]
], q = document, k = 'center', x = q.createElement('input');
c.width = s;
c.height = t;
b.style.textAlign = x.style.textAlign = k;
var k, l, w = function (b) {
a.fillStyle = '#000';
a.fillRect(0, 0, s, t);
a.fillStyle = '#333';
a.font = 'bold 228px Arial';
a.textAlign = k;
a.fillText(b, s / 2, 300);
c = a.getImageData(0, 0, s, t), d = c.data.length, e = [];
for (l = 0; l < d; l++) {
e[l] = 255
}
f = [], g = [];
for (l = 0; l < t; l++) {
for (k = 0; k < s; k++) {
f[k] = g[k] = k
}
for (k = 0; k < s; k++) {
h = 972 - c.data[(k + l * s) * 4] * 2, i = u.floor(203 * h / (h + 1134)), j = u.round(k - i / 2), m = j + i;
if (j >= 0 && m < s) {
n = 1;
if (f[m] != m) {
if (f[m] < j) {
g[f[m]] = f[m];
f[m] = m
} else n = 0
}
if (g[j] != j) {
if (g[j] > m) {
f[g[j]] = g[j];
g[j] = j
} else n = 0
}
if (n) {
f[m] = j;
g[j] = m
}
}
}
for (k = 0; k < s; k++) {
o = (k + l * s) * 4, p = (f[k] + l * s) * 4, q = v[u.floor(u.random() * 3)], r = f[k] == k;
e[o] = r ? q[0] : e[p];
e[o + 1] = r ? q[1] : e[p + 1];
e[o + 2] = r ? q[2] : e[p + 2]
}
}
for (l = 0; l < d; l++) {
c.data[l] = e[l]
}
a.putImageData(c, 0, 0)
};
b.appendChild(q.createElement('br'));
x.onkeydown = function (e) {
e.keyCode == 13 ? w(this.value) : 0
};
b.appendChild(x);
w(x.value = 'JS1k')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment