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 7
- var 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);
- };
- };
|