-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathcompress.inc.js
41 lines (41 loc) · 1.25 KB
/
compress.inc.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
$global['$github.com/oov/psd$'] = {
decodePackBitsLines: function(buf, lines, large) {
var r = new Uint32Array(lines);
var lens = new DataView(buf.buffer);
if (large) {
for (var i = 0; i < lines; ++i) {
r[i] = lens.getUint32(i << 2, false);
}
} else {
for (var i = 0; i < lines; ++i) {
r[i] = lens.getUint16(i << 1, false);
}
}
return r;
},
decodePackBits: function(dest, buf, lens) {
var ofs = 0,
d = 0;
for (var i = 0; i < lens.length; ++i) {
for (var j = 0, ln = lens[i]; j < ln;) {
if (buf[ofs] <= 0x7f) {
var l = buf[ofs++] + 1;
for (var k = 0; k < l; ++k) {
dest[d++] = buf[ofs++];
}
j += l + 1;
continue;
}
if (buf[ofs] == 0x80) {
ofs++;
continue;
}
for (var k = 0, l = 256 - buf[ofs++] + 1, c = buf[ofs++]; k < l; ++k) {
dest[d++] = c;
}
j += 2;
}
}
return true;
}
}