openfl
Version:
A fast, productive library for 2D cross-platform development.
940 lines (922 loc) • 23.4 kB
JavaScript
// Class: format.png.Tools
var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this
$global.Object.defineProperty(exports, "__esModule", {value: true});
var __map_reserved = {};
// Imports
var $hxClasses = require("./../../hxClasses_stub").default;
var $hxEnums = require("./../../hxEnums_stub").default;
var $import = require("./../../import_stub").default;
function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");}
function haxe_io_Bytes() {return require("./../../haxe/io/Bytes");}
function haxe_io_BytesBuffer() {return require("./../../haxe/io/BytesBuffer");}
function format_tools_Inflate() {return require("./../../format/tools/Inflate");}
function haxe_ds_List() {return require("./../../haxe/ds/List");}
function format_png_Chunk() {return require("./../../format/png/Chunk");}
function format_png_Color() {return require("./../../format/png/Color");}
function format_tools_Deflate() {return require("./../../format/tools/Deflate");}
// Constructor
var Tools = function(){}
// Meta
Tools.__name__ = "format.png.Tools";
Tools.__isInterface__ = false;
Tools.prototype = {
};
Tools.prototype.__class__ = Tools.prototype.constructor = $hxClasses["format.png.Tools"] = Tools;
// Init
// Statics
Tools.getHeader = function(d) {
var c = d.iterator();
while(c.hasNext()) {
var c1 = c.next();
if(c1._hx_index == 1) {
var h = c1.h;
return h;
}
}
throw new (js__$Boot_HaxeError().default)("Header not found");
}
Tools.getPalette = function(d) {
var c = d.iterator();
while(c.hasNext()) {
var c1 = c.next();
if(c1._hx_index == 3) {
var b = c1.b;
return b;
}
}
return null;
}
Tools.filter = function(data,x,y,stride,prev,p,numChannels) {
if(numChannels == null) {
numChannels = 4;
}
var b = y == 0 ? 0 : data.get(p - stride);
var c = x == 0 || y == 0 ? 0 : data.get(p - stride - numChannels);
var k = prev + b - c;
var pa = k - prev;
if(pa < 0) {
pa = -pa;
}
var pb = k - b;
if(pb < 0) {
pb = -pb;
}
var pc = k - c;
if(pc < 0) {
pc = -pc;
}
if(pa <= pb && pa <= pc) {
return prev;
} else if(pb <= pc) {
return b;
} else {
return c;
}
}
Tools.reverseBytes = function(b) {
var p = 0;
var _g = 0;
var _g1 = b.length >> 2;
while(_g < _g1) {
var i = _g++;
var b1 = b.get(p);
var g = b.get(p + 1);
var r = b.get(p + 2);
var a = b.get(p + 3);
b.set(p++,a);
b.set(p++,r);
b.set(p++,g);
b.set(p++,b1);
}
}
Tools.extractGrey = function(d) {
var h = Tools.getHeader(d);
var grey = (haxe_io_Bytes().default).alloc(h.width * h.height);
var data = null;
var fullData = null;
var c = d.iterator();
while(c.hasNext()) {
var c1 = c.next();
if(c1._hx_index == 2) {
var b = c1.b;
if(fullData != null) {
fullData.add(b);
} else if(data == null) {
data = b;
} else {
fullData = new (haxe_io_BytesBuffer().default)();
fullData.add(data);
fullData.add(b);
data = null;
}
}
}
if(fullData != null) {
data = fullData.getBytes();
}
if(data == null) {
throw new (js__$Boot_HaxeError().default)("Data not found");
}
data = (format_tools_Inflate().default).run(data);
var r = 0;
var w = 0;
var _g = h.color;
if(_g._hx_index == 0) {
var alpha = _g.alpha;
if(h.colbits != 8) {
throw new (js__$Boot_HaxeError().default)("Unsupported color mode");
}
var width = h.width;
var stride = (alpha ? 2 : 1) * width + 1;
if(data.length < h.height * stride) {
throw new (js__$Boot_HaxeError().default)("Not enough data");
}
var rinc = alpha ? 2 : 1;
var _g1 = 0;
var _g11 = h.height;
while(_g1 < _g11) {
var y = _g1++;
var f = data.get(r++);
switch(f) {
case 0:
var _g2 = 0;
var _g12 = width;
while(_g2 < _g12) {
var x = _g2++;
var v = data.get(r);
r += rinc;
grey.set(w++,v);
}
break;
case 1:
var cv = 0;
var _g3 = 0;
var _g13 = width;
while(_g3 < _g13) {
var x1 = _g3++;
cv += data.get(r);
r += rinc;
grey.set(w++,cv);
}
break;
case 2:
var stride1 = y == 0 ? 0 : width;
var _g4 = 0;
var _g14 = width;
while(_g4 < _g14) {
var x2 = _g4++;
var v1 = data.get(r) + grey.get(w - stride1);
r += rinc;
grey.set(w++,v1);
}
break;
case 3:
var cv1 = 0;
var stride2 = y == 0 ? 0 : width;
var _g5 = 0;
var _g15 = width;
while(_g5 < _g15) {
var x3 = _g5++;
cv1 = data.get(r) + (cv1 + grey.get(w - stride2) >> 1) & 255;
r += rinc;
grey.set(w++,cv1);
}
break;
case 4:
var stride3 = width;
var cv2 = 0;
var _g6 = 0;
var _g16 = width;
while(_g6 < _g16) {
var x4 = _g6++;
cv2 = Tools.filter(grey,x4,y,stride3,cv2,w,1) + data.get(r) & 255;
r += rinc;
grey.set(w++,cv2);
}
break;
default:
throw new (js__$Boot_HaxeError().default)("Invalid filter " + f);
}
}
} else {
throw new (js__$Boot_HaxeError().default)("Unsupported color mode");
}
return grey;
}
Tools.extract32 = function(d,bytes,flipY) {
var h = Tools.getHeader(d);
var bgra = bytes == null ? (haxe_io_Bytes().default).alloc(h.width * h.height * 4) : bytes;
var data = null;
var fullData = null;
var c = d.iterator();
while(c.hasNext()) {
var c1 = c.next();
if(c1._hx_index == 2) {
var b = c1.b;
if(fullData != null) {
fullData.add(b);
} else if(data == null) {
data = b;
} else {
fullData = new (haxe_io_BytesBuffer().default)();
fullData.add(data);
fullData.add(b);
data = null;
}
}
}
if(fullData != null) {
data = fullData.getBytes();
}
if(data == null) {
throw new (js__$Boot_HaxeError().default)("Data not found");
}
data = (format_tools_Inflate().default).run(data);
var r = 0;
var w = 0;
var lineDelta = 0;
if(flipY) {
lineDelta = -h.width * 8;
w = (h.height - 1) * (h.width * 4);
}
var flipY1 = flipY ? -1 : 1;
var _g = h.color;
switch(_g._hx_index) {
case 0:
var alpha = _g.alpha;
if(h.colbits != 8) {
throw new (js__$Boot_HaxeError().default)("Unsupported color mode");
}
var width = h.width;
var stride = (alpha ? 2 : 1) * width + 1;
if(data.length < h.height * stride) {
throw new (js__$Boot_HaxeError().default)("Not enough data");
}
var alphvaIdx = -1;
if(!alpha) {
var t = d.iterator();
while(t.hasNext()) {
var t1 = t.next();
if(t1._hx_index == 4) {
if(t1.id == "tRNS") {
var data1 = t1.data;
if(data1.length >= 2) {
alphvaIdx = data1.get(1);
}
break;
}
}
}
}
var _g1 = 0;
var _g11 = h.height;
while(_g1 < _g11) {
var y = _g1++;
var f = data.get(r++);
switch(f) {
case 0:
if(alpha) {
var _g2 = 0;
var _g12 = width;
while(_g2 < _g12) {
var x = _g2++;
var v = data.get(r++);
bgra.set(w++,v);
bgra.set(w++,v);
bgra.set(w++,v);
bgra.set(w++,data.get(r++));
}
} else {
var _g3 = 0;
var _g13 = width;
while(_g3 < _g13) {
var x1 = _g3++;
var v1 = data.get(r++);
bgra.set(w++,v1);
bgra.set(w++,v1);
bgra.set(w++,v1);
bgra.set(w++,v1 == alphvaIdx ? 0 : 255);
}
}
break;
case 1:
var cv = 0;
var ca = 0;
if(alpha) {
var _g4 = 0;
var _g14 = width;
while(_g4 < _g14) {
var x2 = _g4++;
cv += data.get(r++);
bgra.set(w++,cv);
bgra.set(w++,cv);
bgra.set(w++,cv);
ca += data.get(r++);
bgra.set(w++,ca);
}
} else {
var _g5 = 0;
var _g15 = width;
while(_g5 < _g15) {
var x3 = _g5++;
cv += data.get(r++);
bgra.set(w++,cv);
bgra.set(w++,cv);
bgra.set(w++,cv);
bgra.set(w++,cv == alphvaIdx ? 0 : 255);
}
}
break;
case 2:
var stride1 = y == 0 ? 0 : width * 4 * flipY1;
if(alpha) {
var _g6 = 0;
var _g16 = width;
while(_g6 < _g16) {
var x4 = _g6++;
var v2 = data.get(r++) + bgra.get(w - stride1);
bgra.set(w++,v2);
bgra.set(w++,v2);
bgra.set(w++,v2);
bgra.set(w++,data.get(r++) + bgra.get(w - stride1));
}
} else {
var _g7 = 0;
var _g17 = width;
while(_g7 < _g17) {
var x5 = _g7++;
var v3 = data.get(r++) + bgra.get(w - stride1);
bgra.set(w++,v3);
bgra.set(w++,v3);
bgra.set(w++,v3);
bgra.set(w++,v3 == alphvaIdx ? 0 : 255);
}
}
break;
case 3:
var cv1 = 0;
var ca1 = 0;
var stride2 = y == 0 ? 0 : width * 4 * flipY1;
if(alpha) {
var _g8 = 0;
var _g18 = width;
while(_g8 < _g18) {
var x6 = _g8++;
cv1 = data.get(r++) + (cv1 + bgra.get(w - stride2) >> 1) & 255;
bgra.set(w++,cv1);
bgra.set(w++,cv1);
bgra.set(w++,cv1);
ca1 = data.get(r++) + (ca1 + bgra.get(w - stride2) >> 1) & 255;
bgra.set(w++,ca1);
}
} else {
var _g9 = 0;
var _g19 = width;
while(_g9 < _g19) {
var x7 = _g9++;
cv1 = data.get(r++) + (cv1 + bgra.get(w - stride2) >> 1) & 255;
bgra.set(w++,cv1);
bgra.set(w++,cv1);
bgra.set(w++,cv1);
bgra.set(w++,cv1 == alphvaIdx ? 0 : 255);
}
}
break;
case 4:
var stride3 = width * 4 * flipY1;
var cv2 = 0;
var ca2 = 0;
if(alpha) {
var _g10 = 0;
var _g110 = width;
while(_g10 < _g110) {
var x8 = _g10++;
cv2 = Tools.filter(bgra,x8,y,stride3,cv2,w) + data.get(r++) & 255;
bgra.set(w++,cv2);
bgra.set(w++,cv2);
bgra.set(w++,cv2);
ca2 = Tools.filter(bgra,x8,y,stride3,ca2,w) + data.get(r++) & 255;
bgra.set(w++,ca2);
}
} else {
var _g20 = 0;
var _g111 = width;
while(_g20 < _g111) {
var x9 = _g20++;
cv2 = Tools.filter(bgra,x9,y,stride3,cv2,w) + data.get(r++) & 255;
bgra.set(w++,cv2);
bgra.set(w++,cv2);
bgra.set(w++,cv2);
bgra.set(w++,cv2 == alphvaIdx ? 0 : 255);
}
}
break;
default:
throw new (js__$Boot_HaxeError().default)("Invalid filter " + f);
}
w += lineDelta;
}
break;
case 1:
var alpha1 = _g.alpha;
if(h.colbits != 8) {
throw new (js__$Boot_HaxeError().default)("Unsupported color mode");
}
var width1 = h.width;
var stride4 = (alpha1 ? 4 : 3) * width1 + 1;
if(data.length < h.height * stride4) {
throw new (js__$Boot_HaxeError().default)("Not enough data");
}
var alphaRed = -1;
var alphaGreen = -1;
var alphaBlue = -1;
if(!alpha1) {
var t2 = d.iterator();
while(t2.hasNext()) {
var t3 = t2.next();
if(t3._hx_index == 4) {
if(t3.id == "tRNS") {
var data2 = t3.data;
if(data2.length >= 6) {
alphaRed = data2.get(1);
alphaGreen = data2.get(3);
alphaBlue = data2.get(5);
}
break;
}
}
}
}
var cr = 0;
var cg = 0;
var cb = 0;
var ca3 = 0;
var _g21 = 0;
var _g112 = h.height;
while(_g21 < _g112) {
var y1 = _g21++;
var f1 = data.get(r++);
switch(f1) {
case 0:
if(alpha1) {
var _g22 = 0;
var _g113 = width1;
while(_g22 < _g113) {
var x10 = _g22++;
bgra.set(w++,data.get(r + 2));
bgra.set(w++,data.get(r + 1));
bgra.set(w++,data.get(r));
bgra.set(w++,data.get(r + 3));
r += 4;
}
} else {
var _g23 = 0;
var _g114 = width1;
while(_g23 < _g114) {
var x11 = _g23++;
cb = data.get(r + 2);
bgra.set(w++,cb);
cg = data.get(r + 1);
bgra.set(w++,cg);
cr = data.get(r);
bgra.set(w++,cr);
bgra.set(w++,cr == alphaRed && cg == alphaGreen && cb == alphaBlue ? 0 : 255);
r += 3;
}
}
break;
case 1:
ca3 = 0;
cb = ca3;
cg = cb;
cr = cg;
if(alpha1) {
var _g24 = 0;
var _g115 = width1;
while(_g24 < _g115) {
var x12 = _g24++;
cb += data.get(r + 2);
bgra.set(w++,cb);
cg += data.get(r + 1);
bgra.set(w++,cg);
cr += data.get(r);
bgra.set(w++,cr);
ca3 += data.get(r + 3);
bgra.set(w++,ca3);
r += 4;
}
} else {
var _g25 = 0;
var _g116 = width1;
while(_g25 < _g116) {
var x13 = _g25++;
cb += data.get(r + 2);
bgra.set(w++,cb);
cg += data.get(r + 1);
bgra.set(w++,cg);
cr += data.get(r);
bgra.set(w++,cr);
bgra.set(w++,cr == alphaRed && cg == alphaGreen && cb == alphaBlue ? 0 : 255);
r += 3;
}
}
break;
case 2:
var stride5 = y1 == 0 ? 0 : width1 * 4 * flipY1;
if(alpha1) {
var _g26 = 0;
var _g117 = width1;
while(_g26 < _g117) {
var x14 = _g26++;
bgra.set(w,data.get(r + 2) + bgra.get(w - stride5));
++w;
bgra.set(w,data.get(r + 1) + bgra.get(w - stride5));
++w;
bgra.set(w,data.get(r) + bgra.get(w - stride5));
++w;
bgra.set(w,data.get(r + 3) + bgra.get(w - stride5));
++w;
r += 4;
}
} else {
var _g27 = 0;
var _g118 = width1;
while(_g27 < _g118) {
var x15 = _g27++;
cb = data.get(r + 2) + bgra.get(w - stride5);
bgra.set(w,cb);
++w;
cg = data.get(r + 1) + bgra.get(w - stride5);
bgra.set(w,cg);
++w;
cr = data.get(r) + bgra.get(w - stride5);
bgra.set(w,cr);
++w;
bgra.set(w++,cr == alphaRed && cg == alphaGreen && cb == alphaBlue ? 0 : 255);
r += 3;
}
}
break;
case 3:
ca3 = 0;
cb = ca3;
cg = cb;
cr = cg;
var stride6 = y1 == 0 ? 0 : width1 * 4 * flipY1;
if(alpha1) {
var _g28 = 0;
var _g119 = width1;
while(_g28 < _g119) {
var x16 = _g28++;
cb = data.get(r + 2) + (cb + bgra.get(w - stride6) >> 1) & 255;
bgra.set(w++,cb);
cg = data.get(r + 1) + (cg + bgra.get(w - stride6) >> 1) & 255;
bgra.set(w++,cg);
cr = data.get(r) + (cr + bgra.get(w - stride6) >> 1) & 255;
bgra.set(w++,cr);
ca3 = data.get(r + 3) + (ca3 + bgra.get(w - stride6) >> 1) & 255;
bgra.set(w++,ca3);
r += 4;
}
} else {
var _g29 = 0;
var _g120 = width1;
while(_g29 < _g120) {
var x17 = _g29++;
cb = data.get(r + 2) + (cb + bgra.get(w - stride6) >> 1) & 255;
bgra.set(w++,cb);
cg = data.get(r + 1) + (cg + bgra.get(w - stride6) >> 1) & 255;
bgra.set(w++,cg);
cr = data.get(r) + (cr + bgra.get(w - stride6) >> 1) & 255;
bgra.set(w++,cr);
bgra.set(w++,cr == alphaRed && cg == alphaGreen && cb == alphaBlue ? 0 : 255);
r += 3;
}
}
break;
case 4:
var stride7 = width1 * 4 * flipY1;
ca3 = 0;
cb = ca3;
cg = cb;
cr = cg;
if(alpha1) {
var _g30 = 0;
var _g121 = width1;
while(_g30 < _g121) {
var x18 = _g30++;
cb = Tools.filter(bgra,x18,y1,stride7,cb,w) + data.get(r + 2) & 255;
bgra.set(w++,cb);
cg = Tools.filter(bgra,x18,y1,stride7,cg,w) + data.get(r + 1) & 255;
bgra.set(w++,cg);
cr = Tools.filter(bgra,x18,y1,stride7,cr,w) + data.get(r) & 255;
bgra.set(w++,cr);
ca3 = Tools.filter(bgra,x18,y1,stride7,ca3,w) + data.get(r + 3) & 255;
bgra.set(w++,ca3);
r += 4;
}
} else {
var _g31 = 0;
var _g122 = width1;
while(_g31 < _g122) {
var x19 = _g31++;
cb = Tools.filter(bgra,x19,y1,stride7,cb,w) + data.get(r + 2) & 255;
bgra.set(w++,cb);
cg = Tools.filter(bgra,x19,y1,stride7,cg,w) + data.get(r + 1) & 255;
bgra.set(w++,cg);
cr = Tools.filter(bgra,x19,y1,stride7,cr,w) + data.get(r) & 255;
bgra.set(w++,cr);
bgra.set(w++,cr == alphaRed && cg == alphaGreen && cb == alphaBlue ? 0 : 255);
r += 3;
}
}
break;
default:
throw new (js__$Boot_HaxeError().default)("Invalid filter " + f1);
}
w += lineDelta;
}
break;
case 2:
var pal = Tools.getPalette(d);
if(pal == null) {
throw new (js__$Boot_HaxeError().default)("PNG Palette is missing");
}
var alpha2 = null;
var t4 = d.iterator();
while(t4.hasNext()) {
var t5 = t4.next();
if(t5._hx_index == 4) {
if(t5.id == "tRNS") {
var data3 = t5.data;
alpha2 = data3;
break;
}
}
}
if(alpha2 != null && alpha2.length < 1 << h.colbits) {
var alpha21 = (haxe_io_Bytes().default).alloc(1 << h.colbits);
alpha21.blit(0,alpha2,0,alpha2.length);
alpha21.fill(alpha2.length,alpha21.length - alpha2.length,255);
alpha2 = alpha21;
}
var width2 = h.width;
var stride8 = Math.ceil(width2 * h.colbits / 8) + 1;
if(data.length < h.height * stride8) {
throw new (js__$Boot_HaxeError().default)("Not enough data");
}
var tmp = h.width * h.colbits;
var rline = tmp >> 3;
var _g32 = 0;
var _g123 = h.height;
while(_g32 < _g123) {
var y2 = _g32++;
var f2 = data.get(r++);
if(f2 == 0) {
r += rline;
continue;
}
switch(f2) {
case 1:
var c2 = 0;
var _g33 = 0;
var _g124 = width2;
while(_g33 < _g124) {
var x20 = _g33++;
var v4 = data.get(r);
c2 += v4;
data.set(r++,c2 & 255);
}
break;
case 2:
var stride9 = y2 == 0 ? 0 : rline + 1;
var _g34 = 0;
var _g125 = width2;
while(_g34 < _g125) {
var x21 = _g34++;
var v5 = data.get(r);
data.set(r,v5 + data.get(r - stride9));
++r;
}
break;
case 3:
var c3 = 0;
var stride10 = y2 == 0 ? 0 : rline + 1;
var _g35 = 0;
var _g126 = width2;
while(_g35 < _g126) {
var x22 = _g35++;
var v6 = data.get(r);
c3 = v6 + (c3 + data.get(r - stride10) >> 1) & 255;
data.set(r++,c3);
}
break;
case 4:
var stride11 = rline + 1;
var c4 = 0;
var _g36 = 0;
var _g127 = width2;
while(_g36 < _g127) {
var x23 = _g36++;
var v7 = data.get(r);
c4 = Tools.filter(data,x23,y2,stride11,c4,r,1) + v7 & 255;
data.set(r++,c4);
}
break;
default:
throw new (js__$Boot_HaxeError().default)("Invalid filter " + f2);
}
}
var r1 = 0;
if(h.colbits == 8) {
var _g210 = 0;
var _g37 = h.height;
while(_g210 < _g37) {
var y3 = _g210++;
++r1;
var _g211 = 0;
var _g38 = h.width;
while(_g211 < _g38) {
var x24 = _g211++;
var c5 = data.get(r1++);
bgra.set(w++,pal.get(c5 * 3 + 2));
bgra.set(w++,pal.get(c5 * 3 + 1));
bgra.set(w++,pal.get(c5 * 3));
bgra.set(w++,alpha2 != null ? alpha2.get(c5) : 255);
}
w += lineDelta;
}
} else if(h.colbits < 8) {
var req = h.colbits;
var mask = (1 << req) - 1;
var _g212 = 0;
var _g39 = h.height;
while(_g212 < _g39) {
var y4 = _g212++;
++r1;
var bits = 0;
var nbits = 0;
var v8;
var _g213 = 0;
var _g310 = h.width;
while(_g213 < _g310) {
var x25 = _g213++;
if(nbits < req) {
bits = bits << 8 | data.get(r1++);
nbits += 8;
}
var c6 = bits >>> nbits - req & mask;
nbits -= req;
bgra.set(w++,pal.get(c6 * 3 + 2));
bgra.set(w++,pal.get(c6 * 3 + 1));
bgra.set(w++,pal.get(c6 * 3));
bgra.set(w++,alpha2 != null ? alpha2.get(c6) : 255);
}
w += lineDelta;
}
} else {
throw new (js__$Boot_HaxeError().default)(h.colbits + " indexed bits per pixel not supported");
}
break;
}
return bgra;
}
Tools.buildGrey = function(width,height,data,level) {
if(level == null) {
level = 9;
}
var rgb = (haxe_io_Bytes().default).alloc(width * height + height);
var w = 0;
var r = 0;
var _g = 0;
var _g1 = height;
while(_g < _g1) {
var y = _g++;
rgb.set(w++,0);
var _g2 = 0;
var _g11 = width;
while(_g2 < _g11) {
var x = _g2++;
rgb.set(w++,data.get(r++));
}
}
var l = new (haxe_ds_List().default)();
l.add((format_png_Chunk().default).CHeader({ width : width, height : height, colbits : 8, color : (format_png_Color().default).ColGrey(false), interlaced : false}));
l.add((format_png_Chunk().default).CData((format_tools_Deflate().default).run(rgb,level)));
l.add((format_png_Chunk().default).CEnd);
return l;
}
Tools.buildIndexed = function(width,height,data,palette,level) {
if(level == null) {
level = 9;
}
var rgb = (haxe_io_Bytes().default).alloc(width * height + height);
var w = 0;
var r = 0;
var _g = 0;
var _g1 = height;
while(_g < _g1) {
var y = _g++;
rgb.set(w++,0);
var _g2 = 0;
var _g11 = width;
while(_g2 < _g11) {
var x = _g2++;
rgb.set(w++,data.get(r++));
}
}
var l = new (haxe_ds_List().default)();
l.add((format_png_Chunk().default).CHeader({ width : width, height : height, colbits : 8, color : (format_png_Color().default).ColIndexed, interlaced : false}));
l.add((format_png_Chunk().default).CPalette(palette));
l.add((format_png_Chunk().default).CData((format_tools_Deflate().default).run(rgb,level)));
l.add((format_png_Chunk().default).CEnd);
return l;
}
Tools.buildRGB = function(width,height,data,level) {
if(level == null) {
level = 9;
}
var rgb = (haxe_io_Bytes().default).alloc(width * height * 3 + height);
var w = 0;
var r = 0;
var _g = 0;
var _g1 = height;
while(_g < _g1) {
var y = _g++;
rgb.set(w++,0);
var _g2 = 0;
var _g11 = width;
while(_g2 < _g11) {
var x = _g2++;
rgb.set(w++,data.get(r + 2));
rgb.set(w++,data.get(r + 1));
rgb.set(w++,data.get(r));
r += 3;
}
}
var l = new (haxe_ds_List().default)();
l.add((format_png_Chunk().default).CHeader({ width : width, height : height, colbits : 8, color : (format_png_Color().default).ColTrue(false), interlaced : false}));
l.add((format_png_Chunk().default).CData((format_tools_Deflate().default).run(rgb,level)));
l.add((format_png_Chunk().default).CEnd);
return l;
}
Tools.build32ARGB = function(width,height,data,level) {
if(level == null) {
level = 9;
}
var rgba = (haxe_io_Bytes().default).alloc(width * height * 4 + height);
var w = 0;
var r = 0;
var _g = 0;
var _g1 = height;
while(_g < _g1) {
var y = _g++;
rgba.set(w++,0);
var _g2 = 0;
var _g11 = width;
while(_g2 < _g11) {
var x = _g2++;
rgba.set(w++,data.get(r + 1));
rgba.set(w++,data.get(r + 2));
rgba.set(w++,data.get(r + 3));
rgba.set(w++,data.get(r));
r += 4;
}
}
var l = new (haxe_ds_List().default)();
l.add((format_png_Chunk().default).CHeader({ width : width, height : height, colbits : 8, color : (format_png_Color().default).ColTrue(true), interlaced : false}));
l.add((format_png_Chunk().default).CData((format_tools_Deflate().default).run(rgba,level)));
l.add((format_png_Chunk().default).CEnd);
return l;
}
Tools.build32BGRA = function(width,height,data,level) {
if(level == null) {
level = 9;
}
var rgba = (haxe_io_Bytes().default).alloc(width * height * 4 + height);
var w = 0;
var r = 0;
var _g = 0;
var _g1 = height;
while(_g < _g1) {
var y = _g++;
rgba.set(w++,0);
var _g2 = 0;
var _g11 = width;
while(_g2 < _g11) {
var x = _g2++;
rgba.set(w++,data.get(r + 2));
rgba.set(w++,data.get(r + 1));
rgba.set(w++,data.get(r));
rgba.set(w++,data.get(r + 3));
r += 4;
}
}
var l = new (haxe_ds_List().default)();
l.add((format_png_Chunk().default).CHeader({ width : width, height : height, colbits : 8, color : (format_png_Color().default).ColTrue(true), interlaced : false}));
l.add((format_png_Chunk().default).CData((format_tools_Deflate().default).run(rgba,level)));
l.add((format_png_Chunk().default).CEnd);
return l;
}
// Export
exports.default = Tools;