From bf492438eb0b0fbbf29e3812ca8c4a3d792b8581 Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Tue, 7 Jul 2015 20:24:05 +0300 Subject: Fucking hex conversions --- client/button.js | 41 +++++++++++++++++++++++++++++++++++++++-- client/effects.js | 8 ++++++-- server/methods.js | 4 ++-- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/client/button.js b/client/button.js index bc1f870..d5cd8e1 100644 --- a/client/button.js +++ b/client/button.js @@ -63,6 +63,9 @@ function animate() { $('ol#dominant2 li.g').text('G-' + palette[1][1].toString(16).toUpperCase()); $('ol#dominant2 li.b').text('B-' + palette[1][2].toString(16).toUpperCase()); + Session.set('dominant1hex', palette[0][0].toString(16).toUpperCase() + palette[0][1].toString(16).toUpperCase() + palette[0][2].toString(16).toUpperCase()); + Session.set('dominant2hex', palette[1][0].toString(16).toUpperCase() + palette[1][1].toString(16).toUpperCase() + palette[1][2].toString(16).toUpperCase()); + $('div.dominants').show(); }, delay + 2000); } @@ -99,7 +102,8 @@ function animate2() { delay += 2000; _.delay(function() { - Effects.drawFinalIcon(); + var matrix = Effects.drawFinalIcon(); + Session.set('final_matrix', matrix); }, delay + 2000); delay += 400 * photos.length; @@ -221,7 +225,40 @@ Template.photos.events({ }, 'click button.share-print': function (event) { var date = Session.get('date'); - Meteor.call('printFinalImage', date.month, date.year, [[1,2,3], [4,5,6]]); + var printStr = date.month < 10 ? '0' + date.month : date.month; + printStr += date.year; + + var dominant1 = Session.get('dominant1hex'); + var dominant2 = Session.get('dominant2hex'); + + printStr += dominant1; + printStr += dominant2; + + var bin2hex = function(b) { + _.map( + _.groupBy(b, function(e, i){ + return Math.floor(i/4); + }), function (g) { + return parseInt(g.join(''), 2).toString(16); + } + ).join(''); + } + + var matrix = Session.get('final_matrix'); + var code = "111" + _.map(matrix, function (col) { // add three high bits for padding + var hex = _.map(col, function (c) { + return Math.round(c*256).toString(16).toUpperCase(); + }).join(''); + if (hex == dominant1) { return '0'; } + if (hex == dominant2) { return '1'; } + else { + console.log('error', hex, dominant1, dominant2); + } + }); + + printStr += code; + + Meteor.call('printFinalImage', date.month, date.year, bin2hex(code)); } }) diff --git a/client/effects.js b/client/effects.js index f5898fe..836ea1e 100644 --- a/client/effects.js +++ b/client/effects.js @@ -285,14 +285,16 @@ Effects = (function() { // transpose to get pixel color groups cols = _.zip.apply(_, cols); + final_cols = _.map(cols, function(col) { + return _.chain(col).countBy().pairs().max(_.last).head().value().split(','); + }) for (var y = 0; y < gridDim; y++) { for (var x = 0; x < gridDim; x++) { _.delay(function(x, y) { // get most recurring item/color - var col = cols[(y * gridDim) + x]; - var c = _.chain(col).countBy().pairs().max(_.last).head().value().split(','); + var c = final_cols[(y * gridDim) + x]; var nc = new paper.Color(+c[0], +c[1], +c[2]); var rec = new paper.Path.Rectangle({ @@ -306,6 +308,8 @@ Effects = (function() { }, ((y * gridDim) + x) * 35, x, y); } } + + return final_cols; } return { diff --git a/server/methods.js b/server/methods.js index d99728a..81f4d92 100644 --- a/server/methods.js +++ b/server/methods.js @@ -12,10 +12,10 @@ Meteor.methods({ getInstagramProfilePhoto: function () { return Meteor.user().services.instagram.profile_picture; }, - printFinalImage: function(month, year, matrix) { + printFinalImage: function(code) { if (Meteor.userId()) { var username = Meteor.user().services.instagram.username; - console.log('Printing', username, month, year, matrix); + console.log('Printing', username + code); } } }); -- cgit v1.3.1