| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 'use strict';// Adam 7//   0 1 2 3 4 5 6 7// 0 x 6 4 6 x 6 4 6// 1 7 7 7 7 7 7 7 7// 2 5 6 5 6 5 6 5 6// 3 7 7 7 7 7 7 7 7// 4 3 6 4 6 3 6 4 6// 5 7 7 7 7 7 7 7 7// 6 5 6 5 6 5 6 5 6// 7 7 7 7 7 7 7 7 7var imagePasses = [  { // pass 1 - 1px    x: [0],    y: [0]  },  { // pass 2 - 1px    x: [4],    y: [0]  },  { // pass 3 - 2px    x: [0, 4],    y: [4]  },  { // pass 4 - 4px    x: [2, 6],    y: [0, 4]  },  { // pass 5 - 8px    x: [0, 2, 4, 6],    y: [2, 6]  },  { // pass 6 - 16px    x: [1, 3, 5, 7],    y: [0, 2, 4, 6]  },  { // pass 7 - 32px    x: [0, 1, 2, 3, 4, 5, 6, 7],    y: [1, 3, 5, 7]  }];exports.getImagePasses = function(width, height) {  var images = [];  var xLeftOver = width % 8;  var yLeftOver = height % 8;  var xRepeats = (width - xLeftOver) / 8;  var yRepeats = (height - yLeftOver) / 8;  for (var i = 0; i < imagePasses.length; i++) {    var pass = imagePasses[i];    var passWidth = xRepeats * pass.x.length;    var passHeight = yRepeats * pass.y.length;    for (var j = 0; j < pass.x.length; j++) {      if (pass.x[j] < xLeftOver) {        passWidth++;      }      else {        break;      }    }    for (j = 0; j < pass.y.length; j++) {      if (pass.y[j] < yLeftOver) {        passHeight++;      }      else {        break;      }    }    if (passWidth > 0 && passHeight > 0) {      images.push({ width: passWidth, height: passHeight, index: i });    }  }  return images;};exports.getInterlaceIterator = function(width) {  return function(x, y, pass) {    var outerXLeftOver = x % imagePasses[pass].x.length;    var outerX = (((x - outerXLeftOver) / imagePasses[pass].x.length) * 8) + imagePasses[pass].x[outerXLeftOver];    var outerYLeftOver = y % imagePasses[pass].y.length;    var outerY = (((y - outerYLeftOver) / imagePasses[pass].y.length) * 8) + imagePasses[pass].y[outerYLeftOver];    return (outerX * 4) + (outerY * width * 4);  };};
 |