// Generated by Haxe 3.4.2
(function ($hx_exports, $global) { "use strict";
$hx_exports["kha"] = $hx_exports["kha"] || {};
$hx_exports["kha"]["input"] = $hx_exports["kha"]["input"] || {};
;$hx_exports["kha"]["_Color"] = $hx_exports["kha"]["_Color"] || {};
var $hxClasses = {},$estr = function() { return js_Boot.__string_rec(this,''); };
function $extend(from, fields) {
function Inherit() {} Inherit.prototype = from; var proto = new Inherit();
for (var name in fields) proto[name] = fields[name];
if( fields.toString !== Object.prototype.toString ) proto.toString = fields.toString;
return proto;
}
var EReg = function(r,opt) {
this.r = new RegExp(r,opt.split("u").join(""));
};
$hxClasses["EReg"] = EReg;
EReg.__name__ = true;
EReg.prototype = {
r: null
,match: function(s) {
if(this.r.global) {
this.r.lastIndex = 0;
}
this.r.m = this.r.exec(s);
this.r.s = s;
return this.r.m != null;
}
,matched: function(n) {
if(this.r.m != null && n >= 0 && n < this.r.m.length) {
return this.r.m[n];
} else {
throw new js__$Boot_HaxeError("EReg::matched");
}
}
,__class__: EReg
};
var Elements = function(canvas) {
this.drag = false;
this.handleradio = zui_Handle.global.nest(4,null);
this.handlewin = zui_Handle.global.nest(0,null);
this.selectedElem = -1;
this.bg = null;
this.initialized = false;
this.canvas = canvas;
var _onDrop = $bind(this,this.onDrop);
document.ondragover = document.ondrop = (ev) => {
ev.preventDefault()
}
document.body.ondrop = (ev) => {
_onDrop(ev.dataTransfer.files[0].path);
ev.preventDefault()
}
;
kha_Assets.loadEverything($bind(this,this.loadingFinished));
};
$hxClasses["Elements"] = Elements;
Elements.__name__ = true;
Elements.prototype = {
ui: null
,cui: null
,initialized: null
,bg: null
,canvas: null
,onDrop: function(file) {
var _gthis = this;
kha_LoaderImpl.loadImageFromDescription({ files : [file]},function(image) {
var s = file.split("/");
var name = s[s.length - 1];
var asset = { name : name, file : file, image : image};
_gthis.canvas.assets.push(asset);
});
}
,loadingFinished: function() {
this.initialized = true;
var t = Reflect.copy(zui_Themes.dark);
t.FILL_WINDOW_BG = true;
this.ui = new zui_Zui({ font : kha_Assets.fonts.DroidSans, theme : t});
this.cui = new zui_Zui({ font : kha_Assets.fonts.DroidSans, autoNotifyInput : false});
}
,makeElem: function(type) {
var name = "";
var height = 100;
if(type == 0) {
name = "Text";
height = 48;
} else if(type == 2) {
name = "Button";
} else if(type == 1) {
name = "Image";
}
var elem = { id : 0, type : type, name : name, event : "", x : 0, y : 0, width : 150, height : height, text : name, asset : "", color : 16777215, anchor : 0, children : []};
return elem;
}
,selectedElem: null
,handlewin: null
,handleradio: null
,render: function(framebuffer) {
if(!this.initialized) {
return;
}
if(this.bg == null) {
var w = kha_System.windowWidth();
var h = kha_System.windowHeight();
this.bg = kha_Image.createRenderTarget(w,h);
this.bg.get_g2().begin(true,-15461356);
var _g1 = 0;
var _g = (h / 40 | 0) + 1;
while(_g1 < _g) {
var i = _g1++;
this.bg.get_g2().set_color(-13619152);
this.bg.get_g2().drawLine(0,i * 40,w,i * 40);
this.bg.get_g2().set_color(-14671840);
this.bg.get_g2().drawLine(0,i * 40 + 20,w,i * 40 + 20);
}
var _g11 = 0;
var _g2 = (w / 40 | 0) + 1;
while(_g11 < _g2) {
var i1 = _g11++;
this.bg.get_g2().set_color(-13619152);
this.bg.get_g2().drawLine(i1 * 40,0,i1 * 40,h);
this.bg.get_g2().set_color(-14671840);
this.bg.get_g2().drawLine(i1 * 40 + 20,0,i1 * 40 + 20,h);
}
this.bg.get_g2().set_color(-1);
var tmp = kha_System.windowWidth() - this.canvas.width;
this.canvas.x = tmp - 20;
this.canvas.y = 40;
this.bg.get_g2().drawRect(this.canvas.x,this.canvas.y,this.canvas.width,this.canvas.height,1.0);
this.bg.get_g2().end();
}
var g = framebuffer.get_g2();
g.begin();
g.drawImage(this.bg,0,0);
g.set_font(kha_Assets.fonts.DroidSans);
g.set_fontSize(40);
var title = this.canvas.name + ", " + this.canvas.width + "x" + this.canvas.height;
var titlew = g.get_font().width(40,title);
var titleh = g.get_font().height(40);
g.set_color(-1);
g.drawString(title,kha_System.windowWidth() - titlew - 30,kha_System.windowHeight() - titleh - 10);
zui_Canvas.draw(this.cui,this.canvas,g);
if(this.selectedElem >= 0 && this.selectedElem < this.canvas.elements.length) {
var elem = this.canvas.elements[this.selectedElem];
g.set_color(-1);
g.drawRect(this.canvas.x + elem.x,this.canvas.y + elem.y,elem.width,elem.height,1);
}
g.end();
this.ui.begin(g);
if(this.ui.window(this.handlewin,0,0,240,640,false)) {
if(this.ui.panel(zui_Handle.global.nest(1,{ selected : true}),"CANVAS")) {
if(this.ui.button("Save")) {
var fs = require('fs');
fs.writeFileSync(Main.prefs.path, JSON.stringify(this.canvas));
}
var tmp1 = this.ui;
var tmp2 = zui_Handle.global.nest(2,{ text : this.canvas.name});
this.canvas.name = tmp1.textInput(tmp2,"Name",2);
}
this.ui.separator();
if(this.ui.panel(zui_Handle.global.nest(3,{ selected : true}),"TREE")) {
this.ui.row([0.333333333333333315,0.333333333333333315,0.333333333333333315]);
if(this.ui.button("Text")) {
var elem1 = this.makeElem(0);
this.canvas.elements.push(elem1);
this.handleradio.position = this.canvas.elements.length - 1;
}
if(this.ui.button("Image")) {
var elem2 = this.makeElem(1);
this.canvas.elements.push(elem2);
this.handleradio.position = this.canvas.elements.length - 1;
}
if(this.ui.button("Button")) {
var elem3 = this.makeElem(2);
this.canvas.elements.push(elem3);
this.handleradio.position = this.canvas.elements.length - 1;
}
var i2 = 0;
var _g3 = 0;
var _g12 = this.canvas.elements;
while(_g3 < _g12.length) {
var elem4 = _g12[_g3];
++_g3;
if(this.ui.radio(this.handleradio,i2++,elem4.name)) {
this.selectedElem = i2 - 1;
}
}
if(this.canvas.elements.length > 0) {
if(this.ui.button("Remove")) {
this.canvas.elements.splice(this.selectedElem,1);
if(this.selectedElem <= this.canvas.elements.length) {
this.selectedElem--;
this.handleradio.position = this.selectedElem;
}
}
}
}
this.ui.separator();
if(this.ui.panel(zui_Handle.global.nest(5,{ selected : true}),"PROPERTIES")) {
var i3 = this.selectedElem;
if(i3 >= 0) {
var elem5 = this.canvas.elements[i3];
this.ui.row([0.5,0.5]);
elem5.name = this.ui.textInput(zui_Handle.global.nest(6,null).nest(i3,{ text : elem5.name}),"Name",2);
elem5.text = this.ui.textInput(zui_Handle.global.nest(7,null).nest(i3,{ text : elem5.text}),"Text",2);
this.ui.row([0.5,0.5]);
elem5.event = this.ui.textInput(zui_Handle.global.nest(8,null).nest(i3,{ text : elem5.event}),"Event",2);
elem5.asset = this.ui.textInput(zui_Handle.global.nest(9,null).nest(i3,{ text : elem5.asset}),"Asset",2);
this.ui.row([0.5,0.5]);
var handlex = elem5.x + "";
var handlex1 = zui_Handle.global.nest(10,null).nest(i3,{ text : handlex});
var handley = elem5.y + "";
var handley1 = zui_Handle.global.nest(11,null).nest(i3,{ text : handley});
handlex1.text = elem5.x + "";
handley1.text = elem5.y + "";
var strx = this.ui.textInput(handlex1,"X",2);
var stry = this.ui.textInput(handley1,"Y",2);
elem5.x = parseFloat(strx);
elem5.y = parseFloat(stry);
this.ui.row([0.5,0.5]);
var strw = elem5.width + "";
var strw1 = this.ui.textInput(zui_Handle.global.nest(12,null).nest(i3,{ text : strw}),"Width",2);
var strh = elem5.height + "";
var strh1 = this.ui.textInput(zui_Handle.global.nest(13,null).nest(i3,{ text : strh}),"Height",2);
elem5.width = parseFloat(strw1) | 0;
elem5.height = parseFloat(strh1) | 0;
this.ui.row([0.5,0.5]);
var strcol = this.ui.textInput(zui_Handle.global.nest(14,null).nest(i3,{ text : "#ffffff"}),"Color",2);
var stranch = elem5.anchor + "";
var stranch1 = this.ui.textInput(zui_Handle.global.nest(15,null).nest(i3,{ text : stranch}),"Anchor",2);
elem5.color = kha__$Color_Color_$Impl_$.fromString(strcol);
elem5.anchor = parseFloat(stranch1) | 0;
}
}
this.ui.separator();
if(this.ui.panel(zui_Handle.global.nest(16,{ selected : true}),"ASSETS")) {
if(this.canvas.assets.length > 0) {
var _g13 = 0;
var _g4 = this.canvas.assets.length;
while(_g13 < _g4) {
var i4 = _g13++;
var asset = this.canvas.assets[i4];
this.ui.image(asset.image);
asset.name = this.ui.textInput(zui_Handle.global.nest(17,null).nest(i4,{ text : asset.name}),"Name",2);
}
} else {
this.ui.text("Drag & drop assets here");
}
}
}
this.ui.end();
}
,drag: null
,update: function() {
if(!this.initialized) {
return;
}
if(this.selectedElem >= 0 && this.selectedElem < this.canvas.elements.length) {
var elem = this.canvas.elements[this.selectedElem];
if(this.ui.inputStarted && this.ui.inputX > this.canvas.x + elem.x && this.ui.inputX < this.canvas.x + elem.x + elem.width && this.ui.inputY > this.canvas.y + elem.y && this.ui.inputY < this.canvas.y + elem.y + elem.height) {
this.drag = true;
}
if(this.ui.inputReleased && this.drag) {
this.drag = false;
}
if(this.drag) {
this.handlewin.redraws = 2;
elem.x += this.ui.inputDX;
elem.y += this.ui.inputDY;
}
}
}
,__class__: Elements
};
var HxOverrides = function() { };
$hxClasses["HxOverrides"] = HxOverrides;
HxOverrides.__name__ = true;
HxOverrides.strDate = function(s) {
var _g = s.length;
switch(_g) {
case 8:
var k = s.split(":");
var d = new Date();
d["setTime"](0);
d["setUTCHours"](k[0]);
d["setUTCMinutes"](k[1]);
d["setUTCSeconds"](k[2]);
return d;
case 10:
var k1 = s.split("-");
return new Date(k1[0],k1[1] - 1,k1[2],0,0,0);
case 19:
var k2 = s.split(" ");
var y = k2[0].split("-");
var t = k2[1].split(":");
return new Date(y[0],y[1] - 1,y[2],t[0],t[1],t[2]);
default:
throw new js__$Boot_HaxeError("Invalid date format : " + s);
}
};
HxOverrides.cca = function(s,index) {
var x = s.charCodeAt(index);
if(x != x) {
return undefined;
}
return x;
};
HxOverrides.substr = function(s,pos,len) {
if(len == null) {
len = s.length;
} else if(len < 0) {
if(pos == 0) {
len = s.length + len;
} else {
return "";
}
}
return s.substr(pos,len);
};
HxOverrides.remove = function(a,obj) {
var i = a.indexOf(obj);
if(i == -1) {
return false;
}
a.splice(i,1);
return true;
};
HxOverrides.iter = function(a) {
return { cur : 0, arr : a, hasNext : function() {
return this.cur < this.arr.length;
}, next : function() {
return this.arr[this.cur++];
}};
};
var Lambda = function() { };
$hxClasses["Lambda"] = Lambda;
Lambda.__name__ = true;
Lambda.array = function(it) {
var a = [];
var i = $iterator(it)();
while(i.hasNext()) {
var i1 = i.next();
a.push(i1);
}
return a;
};
var List = function() {
this.length = 0;
};
$hxClasses["List"] = List;
List.__name__ = true;
List.prototype = {
h: null
,q: null
,length: null
,add: function(item) {
var x = new _$List_ListNode(item,null);
if(this.h == null) {
this.h = x;
} else {
this.q.next = x;
}
this.q = x;
this.length++;
}
,remove: function(v) {
var prev = null;
var l = this.h;
while(l != null) {
if(l.item == v) {
if(prev == null) {
this.h = l.next;
} else {
prev.next = l.next;
}
if(this.q == l) {
this.q = prev;
}
this.length--;
return true;
}
prev = l;
l = l.next;
}
return false;
}
,iterator: function() {
return new _$List_ListIterator(this.h);
}
,__class__: List
};
var _$List_ListNode = function(item,next) {
this.item = item;
this.next = next;
};
$hxClasses["_List.ListNode"] = _$List_ListNode;
_$List_ListNode.__name__ = true;
_$List_ListNode.prototype = {
item: null
,next: null
,__class__: _$List_ListNode
};
var _$List_ListIterator = function(head) {
this.head = head;
};
$hxClasses["_List.ListIterator"] = _$List_ListIterator;
_$List_ListIterator.__name__ = true;
_$List_ListIterator.prototype = {
head: null
,hasNext: function() {
return this.head != null;
}
,next: function() {
var val = this.head.item;
this.head = this.head.next;
return val;
}
,__class__: _$List_ListIterator
};
var Main = function() { };
$hxClasses["Main"] = Main;
Main.__name__ = true;
Main.main = function() {
kha_System.init({ title : "ArmorUI", width : 1240, height : 640},Main.initialized);
};
Main.initialized = function() {
kha_LoaderImpl.loadBlobFromDescription({ files : ["prefs.json"]},function(blob) {
Main.prefs = JSON.parse(blob.toString());
kha_LoaderImpl.loadBlobFromDescription({ files : [Main.prefs.path]},function(cblob) {
var raw = JSON.parse(cblob.toString());
var inst = new Elements(raw);
kha_System.notifyOnRender($bind(inst,inst.render));
kha_Scheduler.addTimeTask($bind(inst,inst.update),0,0.0166666666666666664);
});
});
};
Math.__name__ = true;
var Reflect = function() { };
$hxClasses["Reflect"] = Reflect;
Reflect.__name__ = true;
Reflect.field = function(o,field) {
try {
return o[field];
} catch( e ) {
return null;
}
};
Reflect.fields = function(o) {
var a = [];
if(o != null) {
var hasOwnProperty = Object.prototype.hasOwnProperty;
for( var f in o ) {
if(f != "__id__" && f != "hx__closures__" && hasOwnProperty.call(o,f)) {
a.push(f);
}
}
}
return a;
};
Reflect.isFunction = function(f) {
if(typeof(f) == "function") {
return !(f.__name__ || f.__ename__);
} else {
return false;
}
};
Reflect.copy = function(o) {
var o2 = { };
var _g = 0;
var _g1 = Reflect.fields(o);
while(_g < _g1.length) {
var f = _g1[_g];
++_g;
o2[f] = Reflect.field(o,f);
}
return o2;
};
var Std = function() { };
$hxClasses["Std"] = Std;
Std.__name__ = true;
Std.string = function(s) {
return js_Boot.__string_rec(s,"");
};
Std.parseInt = function(x) {
var v = parseInt(x,10);
if(v == 0 && (HxOverrides.cca(x,1) == 120 || HxOverrides.cca(x,1) == 88)) {
v = parseInt(x);
}
if(isNaN(v)) {
return null;
}
return v;
};
var StringTools = function() { };
$hxClasses["StringTools"] = StringTools;
StringTools.__name__ = true;
StringTools.endsWith = function(s,end) {
var elen = end.length;
var slen = s.length;
if(slen >= elen) {
return HxOverrides.substr(s,slen - elen,elen) == end;
} else {
return false;
}
};
var Type = function() { };
$hxClasses["Type"] = Type;
Type.__name__ = true;
Type.resolveClass = function(name) {
var cl = $hxClasses[name];
if(cl == null || !cl.__name__) {
return null;
}
return cl;
};
Type.resolveEnum = function(name) {
var e = $hxClasses[name];
if(e == null || !e.__ename__) {
return null;
}
return e;
};
Type.createEmptyInstance = function(cl) {
function empty() {}; empty.prototype = cl.prototype;
return new empty();
};
Type.createEnum = function(e,constr,params) {
var f = Reflect.field(e,constr);
if(f == null) {
throw new js__$Boot_HaxeError("No such constructor " + constr);
}
if(Reflect.isFunction(f)) {
if(params == null) {
throw new js__$Boot_HaxeError("Constructor " + constr + " need parameters");
}
return f.apply(e,params);
}
if(params != null && params.length != 0) {
throw new js__$Boot_HaxeError("Constructor " + constr + " does not need parameters");
}
return f;
};
Type.createEnumIndex = function(e,index,params) {
var c = e.__constructs__[index];
if(c == null) {
throw new js__$Boot_HaxeError(index + " is not a valid enum constructor index");
}
return Type.createEnum(e,c,params);
};
Type.getInstanceFields = function(c) {
var a = [];
for(var i in c.prototype) a.push(i);
HxOverrides.remove(a,"__class__");
HxOverrides.remove(a,"__properties__");
return a;
};
var _$UInt_UInt_$Impl_$ = {};
$hxClasses["_UInt.UInt_Impl_"] = _$UInt_UInt_$Impl_$;
_$UInt_UInt_$Impl_$.__name__ = true;
_$UInt_UInt_$Impl_$.gt = function(a,b) {
var aNeg = a < 0;
var bNeg = b < 0;
if(aNeg != bNeg) {
return aNeg;
} else {
return a > b;
}
};
_$UInt_UInt_$Impl_$.gte = function(a,b) {
var aNeg = a < 0;
var bNeg = b < 0;
if(aNeg != bNeg) {
return aNeg;
} else {
return a >= b;
}
};
_$UInt_UInt_$Impl_$.toFloat = function(this1) {
var $int = this1;
if($int < 0) {
return 4294967296.0 + $int;
} else {
return $int + 0.0;
}
};
var haxe_IMap = function() { };
$hxClasses["haxe.IMap"] = haxe_IMap;
haxe_IMap.__name__ = true;
haxe_IMap.prototype = {
iterator: null
,__class__: haxe_IMap
};
var haxe__$Int64__$_$_$Int64 = function(high,low) {
this.high = high;
this.low = low;
};
$hxClasses["haxe._Int64.___Int64"] = haxe__$Int64__$_$_$Int64;
haxe__$Int64__$_$_$Int64.__name__ = true;
haxe__$Int64__$_$_$Int64.prototype = {
high: null
,low: null
,__class__: haxe__$Int64__$_$_$Int64
};
var haxe_Log = function() { };
$hxClasses["haxe.Log"] = haxe_Log;
haxe_Log.__name__ = true;
haxe_Log.trace = function(v,infos) {
js_Boot.__trace(v,infos);
};
var haxe__$Unserializer_DefaultResolver = function() {
};
$hxClasses["haxe._Unserializer.DefaultResolver"] = haxe__$Unserializer_DefaultResolver;
haxe__$Unserializer_DefaultResolver.__name__ = true;
haxe__$Unserializer_DefaultResolver.prototype = {
resolveClass: function(name) {
return Type.resolveClass(name);
}
,resolveEnum: function(name) {
return Type.resolveEnum(name);
}
,__class__: haxe__$Unserializer_DefaultResolver
};
var haxe_Unserializer = function(buf) {
this.buf = buf;
this.length = buf.length;
this.pos = 0;
this.scache = [];
this.cache = [];
var r = haxe_Unserializer.DEFAULT_RESOLVER;
if(r == null) {
r = new haxe__$Unserializer_DefaultResolver();
haxe_Unserializer.DEFAULT_RESOLVER = r;
}
this.resolver = r;
};
$hxClasses["haxe.Unserializer"] = haxe_Unserializer;
haxe_Unserializer.__name__ = true;
haxe_Unserializer.initCodes = function() {
var codes = [];
var _g1 = 0;
var _g = haxe_Unserializer.BASE64.length;
while(_g1 < _g) {
var i = _g1++;
codes[haxe_Unserializer.BASE64.charCodeAt(i)] = i;
}
return codes;
};
haxe_Unserializer.run = function(v) {
return new haxe_Unserializer(v).unserialize();
};
haxe_Unserializer.prototype = {
buf: null
,pos: null
,length: null
,cache: null
,scache: null
,resolver: null
,readDigits: function() {
var k = 0;
var s = false;
var fpos = this.pos;
while(true) {
var c = this.buf.charCodeAt(this.pos);
if(c != c) {
break;
}
if(c == 45) {
if(this.pos != fpos) {
break;
}
s = true;
this.pos++;
continue;
}
if(c < 48 || c > 57) {
break;
}
k = k * 10 + (c - 48);
this.pos++;
}
if(s) {
k *= -1;
}
return k;
}
,readFloat: function() {
var p1 = this.pos;
while(true) {
var c = this.buf.charCodeAt(this.pos);
if(c != c) {
break;
}
if(c >= 43 && c < 58 || c == 101 || c == 69) {
this.pos++;
} else {
break;
}
}
return parseFloat(HxOverrides.substr(this.buf,p1,this.pos - p1));
}
,unserializeObject: function(o) {
while(true) {
if(this.pos >= this.length) {
throw new js__$Boot_HaxeError("Invalid object");
}
if(this.buf.charCodeAt(this.pos) == 103) {
break;
}
var k = this.unserialize();
if(typeof(k) != "string") {
throw new js__$Boot_HaxeError("Invalid object key");
}
var v = this.unserialize();
o[k] = v;
}
this.pos++;
}
,unserializeEnum: function(edecl,tag) {
if(this.buf.charCodeAt(this.pos++) != 58) {
throw new js__$Boot_HaxeError("Invalid enum format");
}
var nargs = this.readDigits();
if(nargs == 0) {
return Type.createEnum(edecl,tag);
}
var args = [];
while(nargs-- > 0) args.push(this.unserialize());
return Type.createEnum(edecl,tag,args);
}
,unserialize: function() {
var _g = this.buf.charCodeAt(this.pos++);
switch(_g) {
case 65:
var name = this.unserialize();
var cl = this.resolver.resolveClass(name);
if(cl == null) {
throw new js__$Boot_HaxeError("Class not found " + name);
}
return cl;
case 66:
var name1 = this.unserialize();
var e = this.resolver.resolveEnum(name1);
if(e == null) {
throw new js__$Boot_HaxeError("Enum not found " + name1);
}
return e;
case 67:
var name2 = this.unserialize();
var cl1 = this.resolver.resolveClass(name2);
if(cl1 == null) {
throw new js__$Boot_HaxeError("Class not found " + name2);
}
var o = Type.createEmptyInstance(cl1);
this.cache.push(o);
o.hxUnserialize(this);
if(this.buf.charCodeAt(this.pos++) != 103) {
throw new js__$Boot_HaxeError("Invalid custom data");
}
return o;
case 77:
var h = new haxe_ds_ObjectMap();
this.cache.push(h);
var buf = this.buf;
while(this.buf.charCodeAt(this.pos) != 104) {
var s = this.unserialize();
h.set(s,this.unserialize());
}
this.pos++;
return h;
case 82:
var n = this.readDigits();
if(n < 0 || n >= this.scache.length) {
throw new js__$Boot_HaxeError("Invalid string reference");
}
return this.scache[n];
case 97:
var buf1 = this.buf;
var a = [];
this.cache.push(a);
while(true) {
var c = this.buf.charCodeAt(this.pos);
if(c == 104) {
this.pos++;
break;
}
if(c == 117) {
this.pos++;
var n1 = this.readDigits();
a[a.length + n1 - 1] = null;
} else {
a.push(this.unserialize());
}
}
return a;
case 98:
var h1 = new haxe_ds_StringMap();
this.cache.push(h1);
var buf2 = this.buf;
while(this.buf.charCodeAt(this.pos) != 104) {
var s1 = this.unserialize();
var value = this.unserialize();
if(__map_reserved[s1] != null) {
h1.setReserved(s1,value);
} else {
h1.h[s1] = value;
}
}
this.pos++;
return h1;
case 99:
var name3 = this.unserialize();
var cl2 = this.resolver.resolveClass(name3);
if(cl2 == null) {
throw new js__$Boot_HaxeError("Class not found " + name3);
}
var o1 = Type.createEmptyInstance(cl2);
this.cache.push(o1);
this.unserializeObject(o1);
return o1;
case 100:
return this.readFloat();
case 102:
return false;
case 105:
return this.readDigits();
case 106:
var name4 = this.unserialize();
var edecl = this.resolver.resolveEnum(name4);
if(edecl == null) {
throw new js__$Boot_HaxeError("Enum not found " + name4);
}
this.pos++;
var index = this.readDigits();
var tag = edecl.__constructs__.slice()[index];
if(tag == null) {
throw new js__$Boot_HaxeError("Unknown enum index " + name4 + "@" + index);
}
var e1 = this.unserializeEnum(edecl,tag);
this.cache.push(e1);
return e1;
case 107:
return NaN;
case 108:
var l = new List();
this.cache.push(l);
var buf3 = this.buf;
while(this.buf.charCodeAt(this.pos) != 104) l.add(this.unserialize());
this.pos++;
return l;
case 109:
return -Infinity;
case 110:
return null;
case 111:
var o2 = { };
this.cache.push(o2);
this.unserializeObject(o2);
return o2;
case 112:
return Infinity;
case 113:
var h2 = new haxe_ds_IntMap();
this.cache.push(h2);
var buf4 = this.buf;
var c1 = this.buf.charCodeAt(this.pos++);
while(c1 == 58) {
var i = this.readDigits();
var value1 = this.unserialize();
h2.h[i] = value1;
c1 = this.buf.charCodeAt(this.pos++);
}
if(c1 != 104) {
throw new js__$Boot_HaxeError("Invalid IntMap format");
}
return h2;
case 114:
var n2 = this.readDigits();
if(n2 < 0 || n2 >= this.cache.length) {
throw new js__$Boot_HaxeError("Invalid reference");
}
return this.cache[n2];
case 115:
var len = this.readDigits();
var buf5 = this.buf;
if(this.buf.charCodeAt(this.pos++) != 58 || this.length - this.pos < len) {
throw new js__$Boot_HaxeError("Invalid bytes length");
}
var codes = haxe_Unserializer.CODES;
if(codes == null) {
codes = haxe_Unserializer.initCodes();
haxe_Unserializer.CODES = codes;
}
var i1 = this.pos;
var rest = len & 3;
var size = (len >> 2) * 3 + (rest >= 2 ? rest - 1 : 0);
var max = i1 + (len - rest);
var bytes = new haxe_io_Bytes(new ArrayBuffer(size));
var bpos = 0;
while(i1 < max) {
var c11 = codes[buf5.charCodeAt(i1++)];
var c2 = codes[buf5.charCodeAt(i1++)];
bytes.b[bpos++] = (c11 << 2 | c2 >> 4) & 255;
var c3 = codes[buf5.charCodeAt(i1++)];
bytes.b[bpos++] = (c2 << 4 | c3 >> 2) & 255;
var c4 = codes[buf5.charCodeAt(i1++)];
bytes.b[bpos++] = (c3 << 6 | c4) & 255;
}
if(rest >= 2) {
var c12 = codes[buf5.charCodeAt(i1++)];
var c21 = codes[buf5.charCodeAt(i1++)];
bytes.b[bpos++] = (c12 << 2 | c21 >> 4) & 255;
if(rest == 3) {
var c31 = codes[buf5.charCodeAt(i1++)];
bytes.b[bpos++] = (c21 << 4 | c31 >> 2) & 255;
}
}
this.pos += len;
this.cache.push(bytes);
return bytes;
case 116:
return true;
case 118:
var d;
if(this.buf.charCodeAt(this.pos) >= 48 && this.buf.charCodeAt(this.pos) <= 57 && this.buf.charCodeAt(this.pos + 1) >= 48 && this.buf.charCodeAt(this.pos + 1) <= 57 && this.buf.charCodeAt(this.pos + 2) >= 48 && this.buf.charCodeAt(this.pos + 2) <= 57 && this.buf.charCodeAt(this.pos + 3) >= 48 && this.buf.charCodeAt(this.pos + 3) <= 57 && this.buf.charCodeAt(this.pos + 4) == 45) {
d = HxOverrides.strDate(HxOverrides.substr(this.buf,this.pos,19));
this.pos += 19;
} else {
var t = this.readFloat();
d = new Date(t);
}
this.cache.push(d);
return d;
case 119:
var name5 = this.unserialize();
var edecl1 = this.resolver.resolveEnum(name5);
if(edecl1 == null) {
throw new js__$Boot_HaxeError("Enum not found " + name5);
}
var e2 = this.unserializeEnum(edecl1,this.unserialize());
this.cache.push(e2);
return e2;
case 120:
throw js__$Boot_HaxeError.wrap(this.unserialize());
break;
case 121:
var len1 = this.readDigits();
if(this.buf.charCodeAt(this.pos++) != 58 || this.length - this.pos < len1) {
throw new js__$Boot_HaxeError("Invalid string length");
}
var s2 = HxOverrides.substr(this.buf,this.pos,len1);
this.pos += len1;
s2 = decodeURIComponent(s2.split("+").join(" "));
this.scache.push(s2);
return s2;
case 122:
return 0;
default:
}
this.pos--;
throw new js__$Boot_HaxeError("Invalid char " + this.buf.charAt(this.pos) + " at position " + this.pos);
}
,__class__: haxe_Unserializer
};
var haxe_io_Bytes = function(data) {
this.length = data.byteLength;
this.b = new Uint8Array(data);
this.b.bufferValue = data;
data.hxBytes = this;
data.bytes = this.b;
};
$hxClasses["haxe.io.Bytes"] = haxe_io_Bytes;
haxe_io_Bytes.__name__ = true;
haxe_io_Bytes.ofString = function(s) {
var a = [];
var i = 0;
while(i < s.length) {
var c = s.charCodeAt(i++);
if(55296 <= c && c <= 56319) {
c = c - 55232 << 10 | s.charCodeAt(i++) & 1023;
}
if(c <= 127) {
a.push(c);
} else if(c <= 2047) {
a.push(192 | c >> 6);
a.push(128 | c & 63);
} else if(c <= 65535) {
a.push(224 | c >> 12);
a.push(128 | c >> 6 & 63);
a.push(128 | c & 63);
} else {
a.push(240 | c >> 18);
a.push(128 | c >> 12 & 63);
a.push(128 | c >> 6 & 63);
a.push(128 | c & 63);
}
}
return new haxe_io_Bytes(new Uint8Array(a).buffer);
};
haxe_io_Bytes.ofData = function(b) {
var hb = b.hxBytes;
if(hb != null) {
return hb;
}
return new haxe_io_Bytes(b);
};
haxe_io_Bytes.prototype = {
length: null
,b: null
,data: null
,blit: function(pos,src,srcpos,len) {
if(pos < 0 || srcpos < 0 || len < 0 || pos + len > this.length || srcpos + len > src.length) {
throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
}
if(srcpos == 0 && len == src.b.byteLength) {
this.b.set(src.b,pos);
} else {
this.b.set(src.b.subarray(srcpos,srcpos + len),pos);
}
}
,sub: function(pos,len) {
if(pos < 0 || len < 0 || pos + len > this.length) {
throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
}
return new haxe_io_Bytes(this.b.buffer.slice(pos + this.b.byteOffset,pos + this.b.byteOffset + len));
}
,getDouble: function(pos) {
if(this.data == null) {
this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
}
return this.data.getFloat64(pos,true);
}
,getFloat: function(pos) {
if(this.data == null) {
this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
}
return this.data.getFloat32(pos,true);
}
,setDouble: function(pos,v) {
if(this.data == null) {
this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
}
this.data.setFloat64(pos,v,true);
}
,setFloat: function(pos,v) {
if(this.data == null) {
this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
}
this.data.setFloat32(pos,v,true);
}
,getUInt16: function(pos) {
if(this.data == null) {
this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
}
return this.data.getUint16(pos,true);
}
,getInt32: function(pos) {
if(this.data == null) {
this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
}
return this.data.getInt32(pos,true);
}
,setInt32: function(pos,v) {
if(this.data == null) {
this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
}
this.data.setInt32(pos,v,true);
}
,getString: function(pos,len) {
if(pos < 0 || len < 0 || pos + len > this.length) {
throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
}
var s = "";
var b = this.b;
var fcc = String.fromCharCode;
var i = pos;
var max = pos + len;
while(i < max) {
var c = b[i++];
if(c < 128) {
if(c == 0) {
break;
}
s += fcc(c);
} else if(c < 224) {
s += fcc((c & 63) << 6 | b[i++] & 127);
} else if(c < 240) {
var c2 = b[i++];
s += fcc((c & 31) << 12 | (c2 & 127) << 6 | b[i++] & 127);
} else {
var c21 = b[i++];
var c3 = b[i++];
var u = (c & 15) << 18 | (c21 & 127) << 12 | (c3 & 127) << 6 | b[i++] & 127;
s += fcc((u >> 10) + 55232);
s += fcc(u & 1023 | 56320);
}
}
return s;
}
,toString: function() {
return this.getString(0,this.length);
}
,__class__: haxe_io_Bytes
};
var haxe_crypto_Base64 = function() { };
$hxClasses["haxe.crypto.Base64"] = haxe_crypto_Base64;
haxe_crypto_Base64.__name__ = true;
haxe_crypto_Base64.encode = function(bytes,complement) {
if(complement == null) {
complement = true;
}
var str = new haxe_crypto_BaseCode(haxe_crypto_Base64.BYTES).encodeBytes(bytes).toString();
if(complement) {
var _g = bytes.length % 3;
switch(_g) {
case 1:
str += "==";
break;
case 2:
str += "=";
break;
default:
}
}
return str;
};
var haxe_crypto_BaseCode = function(base) {
var len = base.length;
var nbits = 1;
while(len > 1 << nbits) ++nbits;
if(nbits > 8 || len != 1 << nbits) {
throw new js__$Boot_HaxeError("BaseCode : base length must be a power of two.");
}
this.base = base;
this.nbits = nbits;
};
$hxClasses["haxe.crypto.BaseCode"] = haxe_crypto_BaseCode;
haxe_crypto_BaseCode.__name__ = true;
haxe_crypto_BaseCode.prototype = {
base: null
,nbits: null
,encodeBytes: function(b) {
var nbits = this.nbits;
var base = this.base;
var size = b.length * 8 / nbits | 0;
var out = new haxe_io_Bytes(new ArrayBuffer(size + (b.length * 8 % nbits == 0 ? 0 : 1)));
var buf = 0;
var curbits = 0;
var mask = (1 << nbits) - 1;
var pin = 0;
var pout = 0;
while(pout < size) {
while(curbits < nbits) {
curbits += 8;
buf <<= 8;
buf |= b.b[pin++];
}
curbits -= nbits;
out.b[pout++] = base.b[buf >> curbits & mask] & 255;
}
if(curbits > 0) {
out.b[pout++] = base.b[buf << nbits - curbits & mask] & 255;
}
return out;
}
,__class__: haxe_crypto_BaseCode
};
var haxe_ds_IntMap = function() {
this.h = { };
};
$hxClasses["haxe.ds.IntMap"] = haxe_ds_IntMap;
haxe_ds_IntMap.__name__ = true;
haxe_ds_IntMap.__interfaces__ = [haxe_IMap];
haxe_ds_IntMap.prototype = {
h: null
,keys: function() {
var a = [];
for( var key in this.h ) if(this.h.hasOwnProperty(key)) {
a.push(key | 0);
}
return HxOverrides.iter(a);
}
,iterator: function() {
return { ref : this.h, it : this.keys(), hasNext : function() {
return this.it.hasNext();
}, next : function() {
var i = this.it.next();
return this.ref[i];
}};
}
,__class__: haxe_ds_IntMap
};
var haxe_ds_ObjectMap = function() {
this.h = { __keys__ : { }};
};
$hxClasses["haxe.ds.ObjectMap"] = haxe_ds_ObjectMap;
haxe_ds_ObjectMap.__name__ = true;
haxe_ds_ObjectMap.__interfaces__ = [haxe_IMap];
haxe_ds_ObjectMap.prototype = {
h: null
,set: function(key,value) {
var id = key.__id__ || (key.__id__ = ++haxe_ds_ObjectMap.count);
this.h[id] = value;
this.h.__keys__[id] = key;
}
,keys: function() {
var a = [];
for( var key in this.h.__keys__ ) {
if(this.h.hasOwnProperty(key)) {
a.push(this.h.__keys__[key]);
}
}
return HxOverrides.iter(a);
}
,iterator: function() {
return { ref : this.h, it : this.keys(), hasNext : function() {
return this.it.hasNext();
}, next : function() {
var i = this.it.next();
return this.ref[i.__id__];
}};
}
,__class__: haxe_ds_ObjectMap
};
var haxe_ds__$StringMap_StringMapIterator = function(map,keys) {
this.map = map;
this.keys = keys;
this.index = 0;
this.count = keys.length;
};
$hxClasses["haxe.ds._StringMap.StringMapIterator"] = haxe_ds__$StringMap_StringMapIterator;
haxe_ds__$StringMap_StringMapIterator.__name__ = true;
haxe_ds__$StringMap_StringMapIterator.prototype = {
map: null
,keys: null
,index: null
,count: null
,hasNext: function() {
return this.index < this.count;
}
,next: function() {
var _this = this.map;
var key = this.keys[this.index++];
if(__map_reserved[key] != null) {
return _this.getReserved(key);
} else {
return _this.h[key];
}
}
,__class__: haxe_ds__$StringMap_StringMapIterator
};
var haxe_ds_StringMap = function() {
this.h = { };
};
$hxClasses["haxe.ds.StringMap"] = haxe_ds_StringMap;
haxe_ds_StringMap.__name__ = true;
haxe_ds_StringMap.__interfaces__ = [haxe_IMap];
haxe_ds_StringMap.prototype = {
h: null
,rh: null
,setReserved: function(key,value) {
if(this.rh == null) {
this.rh = { };
}
this.rh["$" + key] = value;
}
,getReserved: function(key) {
if(this.rh == null) {
return null;
} else {
return this.rh["$" + key];
}
}
,existsReserved: function(key) {
if(this.rh == null) {
return false;
}
return this.rh.hasOwnProperty("$" + key);
}
,arrayKeys: function() {
var out = [];
for( var key in this.h ) {
if(this.h.hasOwnProperty(key)) {
out.push(key);
}
}
if(this.rh != null) {
for( var key in this.rh ) {
if(key.charCodeAt(0) == 36) {
out.push(key.substr(1));
}
}
}
return out;
}
,iterator: function() {
return new haxe_ds__$StringMap_StringMapIterator(this,this.arrayKeys());
}
,__class__: haxe_ds_StringMap
};
var haxe_io_BytesBuffer = function() {
this.b = [];
};
$hxClasses["haxe.io.BytesBuffer"] = haxe_io_BytesBuffer;
haxe_io_BytesBuffer.__name__ = true;
haxe_io_BytesBuffer.prototype = {
b: null
,getBytes: function() {
var bytes = new haxe_io_Bytes(new Uint8Array(this.b).buffer);
this.b = null;
return bytes;
}
,__class__: haxe_io_BytesBuffer
};
var haxe_io_Input = function() { };
$hxClasses["haxe.io.Input"] = haxe_io_Input;
haxe_io_Input.__name__ = true;
haxe_io_Input.prototype = {
bigEndian: null
,readByte: function() {
throw new js__$Boot_HaxeError("Not implemented");
}
,readBytes: function(s,pos,len) {
var k = len;
var b = s.b;
if(pos < 0 || len < 0 || pos + len > s.length) {
throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
}
try {
while(k > 0) {
b[pos] = this.readByte();
++pos;
--k;
}
} catch( eof ) {
if (eof instanceof js__$Boot_HaxeError) eof = eof.val;
if( js_Boot.__instanceof(eof,haxe_io_Eof) ) {
} else throw(eof);
}
return len - k;
}
,readFullBytes: function(s,pos,len) {
while(len > 0) {
var k = this.readBytes(s,pos,len);
if(k == 0) {
throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);
}
pos += k;
len -= k;
}
}
,read: function(nbytes) {
var s = new haxe_io_Bytes(new ArrayBuffer(nbytes));
var p = 0;
while(nbytes > 0) {
var k = this.readBytes(s,p,nbytes);
if(k == 0) {
throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);
}
p += k;
nbytes -= k;
}
return s;
}
,readInt32: function() {
var ch1 = this.readByte();
var ch2 = this.readByte();
var ch3 = this.readByte();
var ch4 = this.readByte();
if(this.bigEndian) {
return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24;
} else {
return ch1 | ch2 << 8 | ch3 << 16 | ch4 << 24;
}
}
,readString: function(len) {
var b = new haxe_io_Bytes(new ArrayBuffer(len));
this.readFullBytes(b,0,len);
return b.toString();
}
,__class__: haxe_io_Input
};
var haxe_io_BytesInput = function(b,pos,len) {
if(pos == null) {
pos = 0;
}
if(len == null) {
len = b.length - pos;
}
if(pos < 0 || len < 0 || pos + len > b.length) {
throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
}
this.b = b.b;
this.pos = pos;
this.len = len;
this.totlen = len;
};
$hxClasses["haxe.io.BytesInput"] = haxe_io_BytesInput;
haxe_io_BytesInput.__name__ = true;
haxe_io_BytesInput.__super__ = haxe_io_Input;
haxe_io_BytesInput.prototype = $extend(haxe_io_Input.prototype,{
b: null
,pos: null
,len: null
,totlen: null
,set_position: function(p) {
if(p < 0) {
p = 0;
} else if(p > this.totlen) {
p = this.totlen;
}
this.len = this.totlen - p;
return this.pos = p;
}
,readByte: function() {
if(this.len == 0) {
throw new js__$Boot_HaxeError(new haxe_io_Eof());
}
this.len--;
return this.b[this.pos++];
}
,readBytes: function(buf,pos,len) {
if(pos < 0 || len < 0 || pos + len > buf.length) {
throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
}
if(this.len == 0 && len > 0) {
throw new js__$Boot_HaxeError(new haxe_io_Eof());
}
if(this.len < len) {
len = this.len;
}
var b1 = this.b;
var b2 = buf.b;
var _g1 = 0;
var _g = len;
while(_g1 < _g) {
var i = _g1++;
b2[pos + i] = b1[this.pos + i];
}
this.pos += len;
this.len -= len;
return len;
}
,__class__: haxe_io_BytesInput
});
var haxe_io_Output = function() { };
$hxClasses["haxe.io.Output"] = haxe_io_Output;
haxe_io_Output.__name__ = true;
haxe_io_Output.prototype = {
bigEndian: null
,writeByte: function(c) {
throw new js__$Boot_HaxeError("Not implemented");
}
,writeBytes: function(s,pos,len) {
if(pos < 0 || len < 0 || pos + len > s.length) {
throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
}
var b = s.b;
var k = len;
while(k > 0) {
this.writeByte(b[pos]);
++pos;
--k;
}
return len;
}
,write: function(s) {
var l = s.length;
var p = 0;
while(l > 0) {
var k = this.writeBytes(s,p,l);
if(k == 0) {
throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);
}
p += k;
l -= k;
}
}
,writeFloat: function(x) {
this.writeInt32(haxe_io_FPHelper.floatToI32(x));
}
,writeInt32: function(x) {
if(this.bigEndian) {
this.writeByte(x >>> 24);
this.writeByte(x >> 16 & 255);
this.writeByte(x >> 8 & 255);
this.writeByte(x & 255);
} else {
this.writeByte(x & 255);
this.writeByte(x >> 8 & 255);
this.writeByte(x >> 16 & 255);
this.writeByte(x >>> 24);
}
}
,__class__: haxe_io_Output
};
var haxe_io_BytesOutput = function() {
this.b = new haxe_io_BytesBuffer();
};
$hxClasses["haxe.io.BytesOutput"] = haxe_io_BytesOutput;
haxe_io_BytesOutput.__name__ = true;
haxe_io_BytesOutput.__super__ = haxe_io_Output;
haxe_io_BytesOutput.prototype = $extend(haxe_io_Output.prototype,{
b: null
,writeByte: function(c) {
this.b.b.push(c);
}
,writeBytes: function(buf,pos,len) {
var _this = this.b;
if(pos < 0 || len < 0 || pos + len > buf.length) {
throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
}
var b1 = _this.b;
var b2 = buf.b;
var _g1 = pos;
var _g = pos + len;
while(_g1 < _g) {
var i = _g1++;
_this.b.push(b2[i]);
}
return len;
}
,getBytes: function() {
return this.b.getBytes();
}
,__class__: haxe_io_BytesOutput
});
var haxe_io_Eof = function() {
};
$hxClasses["haxe.io.Eof"] = haxe_io_Eof;
haxe_io_Eof.__name__ = true;
haxe_io_Eof.prototype = {
toString: function() {
return "Eof";
}
,__class__: haxe_io_Eof
};
var haxe_io_Error = $hxClasses["haxe.io.Error"] = { __ename__ : true, __constructs__ : ["Blocked","Overflow","OutsideBounds","Custom"] };
haxe_io_Error.Blocked = ["Blocked",0];
haxe_io_Error.Blocked.toString = $estr;
haxe_io_Error.Blocked.__enum__ = haxe_io_Error;
haxe_io_Error.Overflow = ["Overflow",1];
haxe_io_Error.Overflow.toString = $estr;
haxe_io_Error.Overflow.__enum__ = haxe_io_Error;
haxe_io_Error.OutsideBounds = ["OutsideBounds",2];
haxe_io_Error.OutsideBounds.toString = $estr;
haxe_io_Error.OutsideBounds.__enum__ = haxe_io_Error;
haxe_io_Error.Custom = function(e) { var $x = ["Custom",3,e]; $x.__enum__ = haxe_io_Error; $x.toString = $estr; return $x; };
var haxe_io_FPHelper = function() { };
$hxClasses["haxe.io.FPHelper"] = haxe_io_FPHelper;
haxe_io_FPHelper.__name__ = true;
haxe_io_FPHelper.i32ToFloat = function(i) {
var sign = 1 - (i >>> 31 << 1);
var exp = i >>> 23 & 255;
var sig = i & 8388607;
if(sig == 0 && exp == 0) {
return 0.0;
}
return sign * (1 + Math.pow(2,-23) * sig) * Math.pow(2,exp - 127);
};
haxe_io_FPHelper.floatToI32 = function(f) {
if(f == 0) {
return 0;
}
var af = f < 0 ? -f : f;
var exp = Math.floor(Math.log(af) / 0.6931471805599453);
if(exp < -127) {
exp = -127;
} else if(exp > 128) {
exp = 128;
}
var sig = Math.round((af / Math.pow(2,exp) - 1) * 8388608);
if(sig == 8388608 && exp < 128) {
sig = 0;
++exp;
}
return (f < 0 ? -2147483648 : 0) | exp + 127 << 23 | sig;
};
haxe_io_FPHelper.i64ToDouble = function(low,high) {
var sign = 1 - (high >>> 31 << 1);
var exp = (high >> 20 & 2047) - 1023;
var sig = (high & 1048575) * 4294967296. + (low >>> 31) * 2147483648. + (low & 2147483647);
if(sig == 0 && exp == -1023) {
return 0.0;
}
return sign * (1.0 + Math.pow(2,-52) * sig) * Math.pow(2,exp);
};
haxe_io_FPHelper.doubleToI64 = function(v) {
var i64 = haxe_io_FPHelper.i64tmp;
if(v == 0) {
i64.low = 0;
i64.high = 0;
} else if(!isFinite(v)) {
if(v > 0) {
i64.low = 0;
i64.high = 2146435072;
} else {
i64.low = 0;
i64.high = -1048576;
}
} else {
var av = v < 0 ? -v : v;
var exp = Math.floor(Math.log(av) / 0.6931471805599453);
var sig = Math.round((av / Math.pow(2,exp) - 1) * 4503599627370496.);
var sig_l = sig | 0;
var sig_h = sig / 4294967296.0 | 0;
i64.low = sig_l;
i64.high = (v < 0 ? -2147483648 : 0) | exp + 1023 << 20 | sig_h;
}
return i64;
};
var haxe_io__$UInt8Array_UInt8Array_$Impl_$ = {};
$hxClasses["haxe.io._UInt8Array.UInt8Array_Impl_"] = haxe_io__$UInt8Array_UInt8Array_$Impl_$;
haxe_io__$UInt8Array_UInt8Array_$Impl_$.__name__ = true;
haxe_io__$UInt8Array_UInt8Array_$Impl_$.fromBytes = function(bytes,bytePos,length) {
if(bytePos == null) {
bytePos = 0;
}
if(length == null) {
length = bytes.length - bytePos;
}
return new Uint8Array(bytes.b.bufferValue,bytePos,length);
};
var js__$Boot_HaxeError = function(val) {
Error.call(this);
this.val = val;
this.message = String(val);
if(Error.captureStackTrace) {
Error.captureStackTrace(this,js__$Boot_HaxeError);
}
};
$hxClasses["js._Boot.HaxeError"] = js__$Boot_HaxeError;
js__$Boot_HaxeError.__name__ = true;
js__$Boot_HaxeError.wrap = function(val) {
if((val instanceof Error)) {
return val;
} else {
return new js__$Boot_HaxeError(val);
}
};
js__$Boot_HaxeError.__super__ = Error;
js__$Boot_HaxeError.prototype = $extend(Error.prototype,{
val: null
,__class__: js__$Boot_HaxeError
});
var js_Boot = function() { };
$hxClasses["js.Boot"] = js_Boot;
js_Boot.__name__ = true;
js_Boot.__unhtml = function(s) {
return s.split("&").join("&").split("<").join("<").split(">").join(">");
};
js_Boot.__trace = function(v,i) {
var msg = i != null ? i.fileName + ":" + i.lineNumber + ": " : "";
msg += js_Boot.__string_rec(v,"");
if(i != null && i.customParams != null) {
var _g = 0;
var _g1 = i.customParams;
while(_g < _g1.length) {
var v1 = _g1[_g];
++_g;
msg += "," + js_Boot.__string_rec(v1,"");
}
}
var d;
var tmp;
if(typeof(document) != "undefined") {
d = document.getElementById("haxe:trace");
tmp = d != null;
} else {
tmp = false;
}
if(tmp) {
d.innerHTML += js_Boot.__unhtml(msg) + "
";
} else if(typeof console != "undefined" && console.log != null) {
console.log(msg);
}
};
js_Boot.getClass = function(o) {
if((o instanceof Array) && o.__enum__ == null) {
return Array;
} else {
var cl = o.__class__;
if(cl != null) {
return cl;
}
var name = js_Boot.__nativeClassName(o);
if(name != null) {
return js_Boot.__resolveNativeClass(name);
}
return null;
}
};
js_Boot.__string_rec = function(o,s) {
if(o == null) {
return "null";
}
if(s.length >= 5) {
return "<...>";
}
var t = typeof(o);
if(t == "function" && (o.__name__ || o.__ename__)) {
t = "object";
}
switch(t) {
case "function":
return "";
case "object":
if(o instanceof Array) {
if(o.__enum__) {
if(o.length == 2) {
return o[0];
}
var str = o[0] + "(";
s += "\t";
var _g1 = 2;
var _g = o.length;
while(_g1 < _g) {
var i = _g1++;
if(i != 2) {
str += "," + js_Boot.__string_rec(o[i],s);
} else {
str += js_Boot.__string_rec(o[i],s);
}
}
return str + ")";
}
var l = o.length;
var i1;
var str1 = "[";
s += "\t";
var _g11 = 0;
var _g2 = l;
while(_g11 < _g2) {
var i2 = _g11++;
str1 += (i2 > 0 ? "," : "") + js_Boot.__string_rec(o[i2],s);
}
str1 += "]";
return str1;
}
var tostr;
try {
tostr = o.toString;
} catch( e ) {
return "???";
}
if(tostr != null && tostr != Object.toString && typeof(tostr) == "function") {
var s2 = o.toString();
if(s2 != "[object Object]") {
return s2;
}
}
var k = null;
var str2 = "{\n";
s += "\t";
var hasp = o.hasOwnProperty != null;
for( var k in o ) {
if(hasp && !o.hasOwnProperty(k)) {
continue;
}
if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__" || k == "__properties__") {
continue;
}
if(str2.length != 2) {
str2 += ", \n";
}
str2 += s + k + " : " + js_Boot.__string_rec(o[k],s);
}
s = s.substring(1);
str2 += "\n" + s + "}";
return str2;
case "string":
return o;
default:
return String(o);
}
};
js_Boot.__interfLoop = function(cc,cl) {
if(cc == null) {
return false;
}
if(cc == cl) {
return true;
}
var intf = cc.__interfaces__;
if(intf != null) {
var _g1 = 0;
var _g = intf.length;
while(_g1 < _g) {
var i = _g1++;
var i1 = intf[i];
if(i1 == cl || js_Boot.__interfLoop(i1,cl)) {
return true;
}
}
}
return js_Boot.__interfLoop(cc.__super__,cl);
};
js_Boot.__instanceof = function(o,cl) {
if(cl == null) {
return false;
}
switch(cl) {
case Array:
if((o instanceof Array)) {
return o.__enum__ == null;
} else {
return false;
}
break;
case Bool:
return typeof(o) == "boolean";
case Dynamic:
return true;
case Float:
return typeof(o) == "number";
case Int:
if(typeof(o) == "number") {
return (o|0) === o;
} else {
return false;
}
break;
case String:
return typeof(o) == "string";
default:
if(o != null) {
if(typeof(cl) == "function") {
if(o instanceof cl) {
return true;
}
if(js_Boot.__interfLoop(js_Boot.getClass(o),cl)) {
return true;
}
} else if(typeof(cl) == "object" && js_Boot.__isNativeObj(cl)) {
if(o instanceof cl) {
return true;
}
}
} else {
return false;
}
if(cl == Class ? o.__name__ != null : false) {
return true;
}
if(cl == Enum ? o.__ename__ != null : false) {
return true;
}
return o.__enum__ == cl;
}
};
js_Boot.__cast = function(o,t) {
if(js_Boot.__instanceof(o,t)) {
return o;
} else {
throw new js__$Boot_HaxeError("Cannot cast " + Std.string(o) + " to " + Std.string(t));
}
};
js_Boot.__nativeClassName = function(o) {
var name = js_Boot.__toStr.call(o).slice(8,-1);
if(name == "Object" || name == "Function" || name == "Math" || name == "JSON") {
return null;
}
return name;
};
js_Boot.__isNativeObj = function(o) {
return js_Boot.__nativeClassName(o) != null;
};
js_Boot.__resolveNativeClass = function(name) {
return $global[name];
};
var js_html_compat_ArrayBuffer = function(a) {
if((a instanceof Array) && a.__enum__ == null) {
this.a = a;
this.byteLength = a.length;
} else {
var len = a;
this.a = [];
var _g1 = 0;
var _g = len;
while(_g1 < _g) {
var i = _g1++;
this.a[i] = 0;
}
this.byteLength = len;
}
};
$hxClasses["js.html.compat.ArrayBuffer"] = js_html_compat_ArrayBuffer;
js_html_compat_ArrayBuffer.__name__ = true;
js_html_compat_ArrayBuffer.sliceImpl = function(begin,end) {
var u = new Uint8Array(this,begin,end == null ? null : end - begin);
var result = new ArrayBuffer(u.byteLength);
var resultArray = new Uint8Array(result);
resultArray.set(u);
return result;
};
js_html_compat_ArrayBuffer.prototype = {
byteLength: null
,a: null
,slice: function(begin,end) {
return new js_html_compat_ArrayBuffer(this.a.slice(begin,end));
}
,__class__: js_html_compat_ArrayBuffer
};
var js_html_compat_DataView = function(buffer,byteOffset,byteLength) {
this.buf = buffer;
this.offset = byteOffset == null ? 0 : byteOffset;
this.length = byteLength == null ? buffer.byteLength - this.offset : byteLength;
if(this.offset < 0 || this.length < 0 || this.offset + this.length > buffer.byteLength) {
throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
}
this.byteLength = this.length;
this.byteOffset = this.offset;
this.buffer = this.buf;
};
$hxClasses["js.html.compat.DataView"] = js_html_compat_DataView;
js_html_compat_DataView.__name__ = true;
js_html_compat_DataView.prototype = {
buf: null
,offset: null
,length: null
,byteLength: null
,byteOffset: null
,buffer: null
,getInt8: function(byteOffset) {
var v = this.buf.a[this.offset + byteOffset];
if(v >= 128) {
return v - 256;
} else {
return v;
}
}
,getUint8: function(byteOffset) {
return this.buf.a[this.offset + byteOffset];
}
,getInt16: function(byteOffset,littleEndian) {
var v = this.getUint16(byteOffset,littleEndian);
if(v >= 32768) {
return v - 65536;
} else {
return v;
}
}
,getUint16: function(byteOffset,littleEndian) {
if(littleEndian) {
return this.buf.a[this.offset + byteOffset] | this.buf.a[this.offset + byteOffset + 1] << 8;
} else {
return this.buf.a[this.offset + byteOffset] << 8 | this.buf.a[this.offset + byteOffset + 1];
}
}
,getInt32: function(byteOffset,littleEndian) {
var p = this.offset + byteOffset;
var a = this.buf.a[p++];
var b = this.buf.a[p++];
var c = this.buf.a[p++];
var d = this.buf.a[p++];
if(littleEndian) {
return a | b << 8 | c << 16 | d << 24;
} else {
return d | c << 8 | b << 16 | a << 24;
}
}
,getUint32: function(byteOffset,littleEndian) {
var v = this.getInt32(byteOffset,littleEndian);
if(v < 0) {
return v + 4294967296.;
} else {
return v;
}
}
,getFloat32: function(byteOffset,littleEndian) {
return haxe_io_FPHelper.i32ToFloat(this.getInt32(byteOffset,littleEndian));
}
,getFloat64: function(byteOffset,littleEndian) {
var a = this.getInt32(byteOffset,littleEndian);
var b = this.getInt32(byteOffset + 4,littleEndian);
return haxe_io_FPHelper.i64ToDouble(littleEndian ? a : b,littleEndian ? b : a);
}
,setInt8: function(byteOffset,value) {
this.buf.a[byteOffset + this.offset] = value < 0 ? value + 128 & 255 : value & 255;
}
,setUint8: function(byteOffset,value) {
this.buf.a[byteOffset + this.offset] = value & 255;
}
,setInt16: function(byteOffset,value,littleEndian) {
this.setUint16(byteOffset,value < 0 ? value + 65536 : value,littleEndian);
}
,setUint16: function(byteOffset,value,littleEndian) {
var p = byteOffset + this.offset;
if(littleEndian) {
this.buf.a[p] = value & 255;
this.buf.a[p++] = value >> 8 & 255;
} else {
this.buf.a[p++] = value >> 8 & 255;
this.buf.a[p] = value & 255;
}
}
,setInt32: function(byteOffset,value,littleEndian) {
this.setUint32(byteOffset,value,littleEndian);
}
,setUint32: function(byteOffset,value,littleEndian) {
var p = byteOffset + this.offset;
if(littleEndian) {
this.buf.a[p++] = value & 255;
this.buf.a[p++] = value >> 8 & 255;
this.buf.a[p++] = value >> 16 & 255;
this.buf.a[p++] = value >>> 24;
} else {
this.buf.a[p++] = value >>> 24;
this.buf.a[p++] = value >> 16 & 255;
this.buf.a[p++] = value >> 8 & 255;
this.buf.a[p++] = value & 255;
}
}
,setFloat32: function(byteOffset,value,littleEndian) {
this.setUint32(byteOffset,haxe_io_FPHelper.floatToI32(value),littleEndian);
}
,setFloat64: function(byteOffset,value,littleEndian) {
var i64 = haxe_io_FPHelper.doubleToI64(value);
if(littleEndian) {
this.setUint32(byteOffset,i64.low);
this.setUint32(byteOffset,i64.high);
} else {
this.setUint32(byteOffset,i64.high);
this.setUint32(byteOffset,i64.low);
}
}
,__class__: js_html_compat_DataView
};
var js_html_compat_Float32Array = function() { };
$hxClasses["js.html.compat.Float32Array"] = js_html_compat_Float32Array;
js_html_compat_Float32Array.__name__ = true;
js_html_compat_Float32Array._new = function(arg1,offset,length) {
var arr;
if(typeof(arg1) == "number") {
arr = [];
var _g1 = 0;
var _g = arg1;
while(_g1 < _g) {
var i = _g1++;
arr[i] = 0;
}
arr.byteLength = arr.length << 2;
arr.byteOffset = 0;
var _g2 = [];
var _g21 = 0;
var _g11 = arr.length << 2;
while(_g21 < _g11) {
var i1 = _g21++;
_g2.push(0);
}
arr.buffer = new js_html_compat_ArrayBuffer(_g2);
} else if(js_Boot.__instanceof(arg1,js_html_compat_ArrayBuffer)) {
var buffer = arg1;
if(offset == null) {
offset = 0;
}
if(length == null) {
length = buffer.byteLength - offset >> 2;
}
arr = [];
var _g12 = 0;
var _g3 = length;
while(_g12 < _g3) {
var i2 = _g12++;
var val = buffer.a[offset++] | buffer.a[offset++] << 8 | buffer.a[offset++] << 16 | buffer.a[offset++] << 24;
arr.push(haxe_io_FPHelper.i32ToFloat(val));
}
arr.byteLength = arr.length << 2;
arr.byteOffset = offset;
arr.buffer = buffer;
} else if((arg1 instanceof Array) && arg1.__enum__ == null) {
arr = arg1.slice();
var buffer1 = [];
var _g4 = 0;
while(_g4 < arr.length) {
var f = arr[_g4];
++_g4;
var i3 = haxe_io_FPHelper.floatToI32(f);
buffer1.push(i3 & 255);
buffer1.push(i3 >> 8 & 255);
buffer1.push(i3 >> 16 & 255);
buffer1.push(i3 >>> 24);
}
arr.byteLength = arr.length << 2;
arr.byteOffset = 0;
arr.buffer = new js_html_compat_ArrayBuffer(buffer1);
} else {
throw new js__$Boot_HaxeError("TODO " + Std.string(arg1));
}
arr.subarray = js_html_compat_Float32Array._subarray;
arr.set = js_html_compat_Float32Array._set;
return arr;
};
js_html_compat_Float32Array._set = function(arg,offset) {
if(js_Boot.__instanceof(arg.buffer,js_html_compat_ArrayBuffer)) {
var a = arg;
if(arg.byteLength + offset > this.byteLength) {
throw new js__$Boot_HaxeError("set() outside of range");
}
var _g1 = 0;
var _g = arg.byteLength;
while(_g1 < _g) {
var i = _g1++;
this[i + offset] = a[i];
}
} else if((arg instanceof Array) && arg.__enum__ == null) {
var a1 = arg;
if(a1.length + offset > this.byteLength) {
throw new js__$Boot_HaxeError("set() outside of range");
}
var _g11 = 0;
var _g2 = a1.length;
while(_g11 < _g2) {
var i1 = _g11++;
this[i1 + offset] = a1[i1];
}
} else {
throw new js__$Boot_HaxeError("TODO");
}
};
js_html_compat_Float32Array._subarray = function(start,end) {
var a = js_html_compat_Float32Array._new(this.slice(start,end));
a.byteOffset = start * 4;
return a;
};
var js_html_compat_Uint8Array = function() { };
$hxClasses["js.html.compat.Uint8Array"] = js_html_compat_Uint8Array;
js_html_compat_Uint8Array.__name__ = true;
js_html_compat_Uint8Array._new = function(arg1,offset,length) {
var arr;
if(typeof(arg1) == "number") {
arr = [];
var _g1 = 0;
var _g = arg1;
while(_g1 < _g) {
var i = _g1++;
arr[i] = 0;
}
arr.byteLength = arr.length;
arr.byteOffset = 0;
arr.buffer = new js_html_compat_ArrayBuffer(arr);
} else if(js_Boot.__instanceof(arg1,js_html_compat_ArrayBuffer)) {
var buffer = arg1;
if(offset == null) {
offset = 0;
}
if(length == null) {
length = buffer.byteLength - offset;
}
if(offset == 0) {
arr = buffer.a;
} else {
arr = buffer.a.slice(offset,offset + length);
}
arr.byteLength = arr.length;
arr.byteOffset = offset;
arr.buffer = buffer;
} else if((arg1 instanceof Array) && arg1.__enum__ == null) {
arr = arg1.slice();
arr.byteLength = arr.length;
arr.byteOffset = 0;
arr.buffer = new js_html_compat_ArrayBuffer(arr);
} else {
throw new js__$Boot_HaxeError("TODO " + Std.string(arg1));
}
arr.subarray = js_html_compat_Uint8Array._subarray;
arr.set = js_html_compat_Uint8Array._set;
return arr;
};
js_html_compat_Uint8Array._set = function(arg,offset) {
if(js_Boot.__instanceof(arg.buffer,js_html_compat_ArrayBuffer)) {
var a = arg;
if(arg.byteLength + offset > this.byteLength) {
throw new js__$Boot_HaxeError("set() outside of range");
}
var _g1 = 0;
var _g = arg.byteLength;
while(_g1 < _g) {
var i = _g1++;
this[i + offset] = a[i];
}
} else if((arg instanceof Array) && arg.__enum__ == null) {
var a1 = arg;
if(a1.length + offset > this.byteLength) {
throw new js__$Boot_HaxeError("set() outside of range");
}
var _g11 = 0;
var _g2 = a1.length;
while(_g11 < _g2) {
var i1 = _g11++;
this[i1 + offset] = a1[i1];
}
} else {
throw new js__$Boot_HaxeError("TODO");
}
};
js_html_compat_Uint8Array._subarray = function(start,end) {
var a = js_html_compat_Uint8Array._new(this.slice(start,end));
a.byteOffset = start;
return a;
};
var kha__$Assets_ImageList = function() {
this.names = [];
};
$hxClasses["kha._Assets.ImageList"] = kha__$Assets_ImageList;
kha__$Assets_ImageList.__name__ = true;
kha__$Assets_ImageList.prototype = {
names: null
,__class__: kha__$Assets_ImageList
};
var kha__$Assets_SoundList = function() {
this.names = [];
};
$hxClasses["kha._Assets.SoundList"] = kha__$Assets_SoundList;
kha__$Assets_SoundList.__name__ = true;
kha__$Assets_SoundList.prototype = {
names: null
,__class__: kha__$Assets_SoundList
};
var kha__$Assets_BlobList = function() {
this.names = [];
};
$hxClasses["kha._Assets.BlobList"] = kha__$Assets_BlobList;
kha__$Assets_BlobList.__name__ = true;
kha__$Assets_BlobList.prototype = {
names: null
,__class__: kha__$Assets_BlobList
};
var kha__$Assets_FontList = function() {
this.names = ["DroidSans"];
this.DroidSansDescription = { files : ["DroidSans.ttf"], type : "font", name : "DroidSans"};
this.DroidSansName = "DroidSans";
this.DroidSans = null;
};
$hxClasses["kha._Assets.FontList"] = kha__$Assets_FontList;
kha__$Assets_FontList.__name__ = true;
kha__$Assets_FontList.prototype = {
DroidSans: null
,DroidSansName: null
,DroidSansDescription: null
,DroidSansLoad: function(done) {
kha_Assets.loadFont("DroidSans",function(font) {
done();
});
}
,DroidSansUnload: function() {
this.DroidSans.unload();
this.DroidSans = null;
}
,names: null
,__class__: kha__$Assets_FontList
};
var kha__$Assets_VideoList = function() {
this.names = [];
};
$hxClasses["kha._Assets.VideoList"] = kha__$Assets_VideoList;
kha__$Assets_VideoList.__name__ = true;
kha__$Assets_VideoList.prototype = {
names: null
,__class__: kha__$Assets_VideoList
};
var kha_Assets = function() { };
$hxClasses["kha.Assets"] = kha_Assets;
kha_Assets.__name__ = true;
kha_Assets.loadEverything = function(callback) {
var fileCount = 0;
var _g = 0;
var _g1 = Type.getInstanceFields(kha__$Assets_BlobList);
while(_g < _g1.length) {
var blob = _g1[_g];
++_g;
if(StringTools.endsWith(blob,"Load")) {
fileCount += 1;
}
}
var _g2 = 0;
var _g11 = Type.getInstanceFields(kha__$Assets_ImageList);
while(_g2 < _g11.length) {
var image = _g11[_g2];
++_g2;
if(StringTools.endsWith(image,"Load")) {
fileCount += 1;
}
}
var _g3 = 0;
var _g12 = Type.getInstanceFields(kha__$Assets_SoundList);
while(_g3 < _g12.length) {
var sound = _g12[_g3];
++_g3;
if(StringTools.endsWith(sound,"Load")) {
fileCount += 1;
}
}
var _g4 = 0;
var _g13 = Type.getInstanceFields(kha__$Assets_FontList);
while(_g4 < _g13.length) {
var font = _g13[_g4];
++_g4;
if(StringTools.endsWith(font,"Load")) {
fileCount += 1;
}
}
var _g5 = 0;
var _g14 = Type.getInstanceFields(kha__$Assets_VideoList);
while(_g5 < _g14.length) {
var video = _g14[_g5];
++_g5;
if(StringTools.endsWith(video,"Load")) {
fileCount += 1;
}
}
if(fileCount == 0) {
callback();
return;
}
var filesLeft = fileCount;
var _g6 = 0;
var _g15 = Type.getInstanceFields(kha__$Assets_BlobList);
while(_g6 < _g15.length) {
var blob1 = _g15[_g6];
++_g6;
if(StringTools.endsWith(blob1,"Load")) {
(Reflect.field(kha_Assets.blobs,blob1))(function() {
filesLeft -= 1;
kha_Assets.progress = 1 - filesLeft / fileCount;
if(filesLeft == 0) {
callback();
}
});
}
}
var _g7 = 0;
var _g16 = Type.getInstanceFields(kha__$Assets_ImageList);
while(_g7 < _g16.length) {
var image1 = _g16[_g7];
++_g7;
if(StringTools.endsWith(image1,"Load")) {
(Reflect.field(kha_Assets.images,image1))(function() {
filesLeft -= 1;
kha_Assets.progress = 1 - filesLeft / fileCount;
if(filesLeft == 0) {
callback();
}
});
}
}
var _g8 = 0;
var _g17 = Type.getInstanceFields(kha__$Assets_SoundList);
while(_g8 < _g17.length) {
var sound1 = [_g17[_g8]];
++_g8;
if(StringTools.endsWith(sound1[0],"Load")) {
(Reflect.field(kha_Assets.sounds,sound1[0]))((function(sound2) {
return function() {
var sound3 = Reflect.field(kha_Assets.sounds,sound2[0].substring(0,sound2[0].length - 4));
sound3.uncompress((function() {
return function() {
filesLeft -= 1;
kha_Assets.progress = 1 - filesLeft / fileCount;
if(filesLeft == 0) {
callback();
}
};
})());
};
})(sound1));
}
}
var _g9 = 0;
var _g18 = Type.getInstanceFields(kha__$Assets_FontList);
while(_g9 < _g18.length) {
var font1 = _g18[_g9];
++_g9;
if(StringTools.endsWith(font1,"Load")) {
(Reflect.field(kha_Assets.fonts,font1))(function() {
filesLeft -= 1;
kha_Assets.progress = 1 - filesLeft / fileCount;
if(filesLeft == 0) {
callback();
}
});
}
}
var _g10 = 0;
var _g19 = Type.getInstanceFields(kha__$Assets_VideoList);
while(_g10 < _g19.length) {
var video1 = _g19[_g10];
++_g10;
if(StringTools.endsWith(video1,"Load")) {
(Reflect.field(kha_Assets.videos,video1))(function() {
filesLeft -= 1;
kha_Assets.progress = 1 - filesLeft / fileCount;
if(filesLeft == 0) {
callback();
}
});
}
}
};
kha_Assets.loadImage = function(name,done) {
var description = Reflect.field(kha_Assets.images,name + "Description");
kha_LoaderImpl.loadImageFromDescription(description,function(image) {
kha_Assets.images[name] = image;
done(image);
});
};
kha_Assets.loadImageFromPath = function(path,readable,done) {
var description = { files : [path], readable : readable};
kha_LoaderImpl.loadImageFromDescription(description,done);
};
kha_Assets.get_imageFormats = function() {
return kha_LoaderImpl.getImageFormats();
};
kha_Assets.loadBlob = function(name,done) {
var description = Reflect.field(kha_Assets.blobs,name + "Description");
kha_LoaderImpl.loadBlobFromDescription(description,function(blob) {
kha_Assets.blobs[name] = blob;
done(blob);
});
};
kha_Assets.loadBlobFromPath = function(path,done) {
var description = { files : [path]};
kha_LoaderImpl.loadBlobFromDescription(description,done);
};
kha_Assets.loadSound = function(name,done) {
var description = Reflect.field(kha_Assets.sounds,name + "Description");
kha_LoaderImpl.loadSoundFromDescription(description,function(sound) {
kha_Assets.sounds[name] = sound;
done(sound);
});
return;
};
kha_Assets.loadSoundFromPath = function(path,done) {
var description = { files : [path]};
kha_LoaderImpl.loadSoundFromDescription(description,done);
return;
};
kha_Assets.get_soundFormats = function() {
return kha_LoaderImpl.getSoundFormats();
};
kha_Assets.loadFont = function(name,done) {
var description = Reflect.field(kha_Assets.fonts,name + "Description");
kha_LoaderImpl.loadFontFromDescription(description,function(font) {
kha_Assets.fonts[name] = font;
done(font);
});
return;
};
kha_Assets.loadFontFromPath = function(path,done) {
var description = { files : [path]};
kha_LoaderImpl.loadFontFromDescription(description,done);
return;
};
kha_Assets.get_fontFormats = function() {
return ["ttf"];
};
kha_Assets.loadVideo = function(name,done) {
var description = Reflect.field(kha_Assets.videos,name + "Description");
kha_LoaderImpl.loadVideoFromDescription(description,function(video) {
kha_Assets.videos[name] = video;
done(video);
});
return;
};
kha_Assets.loadVideoFromPath = function(path,done) {
var description = { files : [path]};
kha_LoaderImpl.loadVideoFromDescription(description,done);
return;
};
kha_Assets.get_videoFormats = function() {
return kha_LoaderImpl.getVideoFormats();
};
var kha_Canvas = function() { };
$hxClasses["kha.Canvas"] = kha_Canvas;
kha_Canvas.__name__ = true;
kha_Canvas.prototype = {
get_width: null
,get_height: null
,get_g1: null
,get_g2: null
,get_g4: null
,width: null
,height: null
,g1: null
,g2: null
,g4: null
,__class__: kha_Canvas
};
var kha_Resource = function() { };
$hxClasses["kha.Resource"] = kha_Resource;
kha_Resource.__name__ = true;
kha_Resource.prototype = {
unload: null
,__class__: kha_Resource
};
var kha_Image = function() { };
$hxClasses["kha.Image"] = kha_Image;
kha_Image.__name__ = true;
kha_Image.__interfaces__ = [kha_Resource,kha_Canvas];
kha_Image.create = function(width,height,format,usage) {
if(format == null) {
format = kha_graphics4_TextureFormat.RGBA32;
}
if(usage == null) {
usage = kha_graphics4_Usage.StaticUsage;
}
if(kha_SystemImpl.gl == null) {
return new kha_CanvasImage(width,height,format,false);
} else {
return new kha_WebGLImage(width,height,format,false,0);
}
};
kha_Image.create3D = function(width,height,depth,format,usage) {
return null;
};
kha_Image.createRenderTarget = function(width,height,format,depthStencil,antiAliasingSamples,contextId) {
if(contextId == null) {
contextId = 0;
}
if(antiAliasingSamples == null) {
antiAliasingSamples = 1;
}
if(depthStencil == null) {
depthStencil = 0;
}
if(format == null) {
format = kha_graphics4_TextureFormat.RGBA32;
}
if(kha_SystemImpl.gl == null) {
return new kha_CanvasImage(width,height,format,true);
} else {
return new kha_WebGLImage(width,height,format,true,depthStencil);
}
};
kha_Image.fromImage = function(image,readable) {
if(kha_SystemImpl.gl == null) {
var img = new kha_CanvasImage(image.width,image.height,kha_graphics4_TextureFormat.RGBA32,false);
img.image = image;
img.createTexture();
return img;
} else {
var img1 = new kha_WebGLImage(image.width,image.height,kha_graphics4_TextureFormat.RGBA32,false,0);
img1.image = image;
img1.createTexture();
return img1;
}
};
kha_Image.fromBytes = function(bytes,width,height,format,usage) {
if(format == null) {
format = kha_graphics4_TextureFormat.RGBA32;
}
if(usage == null) {
usage = kha_graphics4_Usage.StaticUsage;
}
if(kha_SystemImpl.gl != null) {
var img = new kha_WebGLImage(width,height,format,false,0);
img.image = img.bytesToArray(bytes);
img.createTexture();
return img;
}
return null;
};
kha_Image.fromEncodedBytes = function(bytes,fileExtention,doneCallback,errorCallback,readable) {
if(readable == null) {
readable = false;
}
var dataUrl = "data:image;base64," + haxe_crypto_Base64.encode(bytes);
var imageElement = js_Boot.__cast(window.document.createElement("img") , HTMLImageElement);
imageElement.onload = function() {
var tmp = kha_Image.fromImage(imageElement,readable);
doneCallback(tmp);
};
imageElement.onerror = function() {
errorCallback("Image was not created");
};
imageElement.src = dataUrl;
};
kha_Image.fromVideo = function(video) {
if(kha_SystemImpl.gl == null) {
var img = new kha_CanvasImage(video.element.videoWidth,video.element.videoHeight,kha_graphics4_TextureFormat.RGBA32,false);
img.video = video.element;
img.createTexture();
return img;
} else {
var img1 = new kha_WebGLImage(video.element.videoWidth,video.element.videoHeight,kha_graphics4_TextureFormat.RGBA32,false,0);
img1.video = video.element;
img1.createTexture();
return img1;
}
};
kha_Image.get_maxSize = function() {
if(kha_SystemImpl.gl == null) {
return 8192;
} else {
return kha_SystemImpl.gl.getParameter(3379);
}
};
kha_Image.get_nonPow2Supported = function() {
return kha_SystemImpl.gl != null;
};
kha_Image.prototype = {
isOpaque: function(x,y) {
return false;
}
,at: function(x,y) {
return -16777216;
}
,unload: function() {
}
,lock: function(level) {
if(level == null) {
level = 0;
}
return null;
}
,unlock: function() {
}
,getPixels: function() {
return null;
}
,generateMipmaps: function(levels) {
}
,setMipmaps: function(mipmaps) {
}
,setDepthStencilFrom: function(image) {
}
,clear: function(x,y,z,width,height,depth,color) {
}
,width: null
,get_width: function() {
return 0;
}
,height: null
,get_height: function() {
return 0;
}
,depth: null
,get_depth: function() {
return 1;
}
,realWidth: null
,get_realWidth: function() {
return 0;
}
,realHeight: null
,get_realHeight: function() {
return 0;
}
,g1: null
,get_g1: function() {
return null;
}
,g2: null
,get_g2: function() {
return null;
}
,g4: null
,get_g4: function() {
return null;
}
,__class__: kha_Image
};
var kha_CanvasImage = function(width,height,format,renderTarget) {
this.g2canvas = null;
this.myWidth = width;
this.myHeight = height;
this.format = format;
this.renderTarget = renderTarget;
this.image = null;
this.video = null;
if(renderTarget) {
this.createTexture();
}
};
$hxClasses["kha.CanvasImage"] = kha_CanvasImage;
kha_CanvasImage.__name__ = true;
kha_CanvasImage.init = function() {
var canvas = window.document.createElement("canvas");
if(canvas != null) {
kha_CanvasImage.context = canvas.getContext("2d");
canvas.width = 2048;
canvas.height = 2048;
kha_CanvasImage.context.globalCompositeOperation = "copy";
}
};
kha_CanvasImage.upperPowerOfTwo = function(v) {
--v;
v |= v >>> 1;
v |= v >>> 2;
v |= v >>> 4;
v |= v >>> 8;
v |= v >>> 16;
return ++v;
};
kha_CanvasImage.__super__ = kha_Image;
kha_CanvasImage.prototype = $extend(kha_Image.prototype,{
image: null
,video: null
,data: null
,myWidth: null
,myHeight: null
,format: null
,renderTarget: null
,frameBuffer: null
,graphics1: null
,g2canvas: null
,get_g1: function() {
if(this.graphics1 == null) {
this.graphics1 = new kha_graphics2_Graphics1(this);
}
return this.graphics1;
}
,get_g2: function() {
if(this.g2canvas == null) {
var canvas = window.document.createElement("canvas");
this.image = canvas;
var context = canvas.getContext("2d");
canvas.width = this.get_width();
canvas.height = this.get_height();
this.g2canvas = new kha_js_CanvasGraphics(context);
}
return this.g2canvas;
}
,get_g4: function() {
return null;
}
,get_width: function() {
return this.myWidth;
}
,get_height: function() {
return this.myHeight;
}
,get_realWidth: function() {
return this.myWidth;
}
,get_realHeight: function() {
return this.myHeight;
}
,isOpaque: function(x,y) {
if(this.data == null) {
if(kha_CanvasImage.context == null) {
return true;
} else {
this.createImageData();
}
}
return this.data.data[y * (this.image.width | 0) * 4 + x * 4 + 3] != 0;
}
,at: function(x,y) {
if(this.data == null) {
if(kha_CanvasImage.context == null) {
return -16777216;
} else {
this.createImageData();
}
}
return kha__$Color_Color_$Impl_$._new(this.data.data[y * (this.image.width | 0) * 4 + x * 4]);
}
,createImageData: function() {
kha_CanvasImage.context.strokeStyle = "rgba(0,0,0,0)";
kha_CanvasImage.context.fillStyle = "rgba(0,0,0,0)";
kha_CanvasImage.context.fillRect(0,0,this.image.width,this.image.height);
kha_CanvasImage.context.drawImage(this.image,0,0,this.image.width,this.image.height,0,0,this.image.width,this.image.height);
this.data = kha_CanvasImage.context.getImageData(0,0,this.image.width,this.image.height);
}
,texture: null
,createTexture: function() {
if(kha_SystemImpl.gl == null) {
return;
}
this.texture = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(3553,this.texture);
kha_SystemImpl.gl.texParameteri(3553,10240,9729);
kha_SystemImpl.gl.texParameteri(3553,10241,9729);
kha_SystemImpl.gl.texParameteri(3553,10242,33071);
kha_SystemImpl.gl.texParameteri(3553,10243,33071);
if(this.renderTarget) {
this.frameBuffer = kha_SystemImpl.gl.createFramebuffer();
kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer);
kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_realWidth(),this.get_realHeight(),0,6408,5121,null);
kha_SystemImpl.gl.framebufferTexture2D(36160,36064,3553,this.texture,0);
kha_SystemImpl.gl.bindFramebuffer(36160,null);
} else if(this.video != null) {
kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.video);
} else {
kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.image);
}
kha_SystemImpl.gl.bindTexture(3553,null);
}
,set: function(stage) {
kha_SystemImpl.gl.activeTexture(33984 + stage);
kha_SystemImpl.gl.bindTexture(3553,this.texture);
if(this.video != null) {
kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.video);
}
}
,bytes: null
,lock: function(level) {
if(level == null) {
level = 0;
}
this.bytes = new haxe_io_Bytes(new ArrayBuffer(this.format == kha_graphics4_TextureFormat.RGBA32 ? 4 * this.get_width() * this.get_height() : this.get_width() * this.get_height()));
return this.bytes;
}
,unlock: function() {
if(kha_SystemImpl.gl != null) {
this.texture = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(3553,this.texture);
kha_SystemImpl.gl.texParameteri(3553,10240,9729);
kha_SystemImpl.gl.texParameteri(3553,10241,9729);
kha_SystemImpl.gl.texParameteri(3553,10242,33071);
kha_SystemImpl.gl.texParameteri(3553,10243,33071);
kha_SystemImpl.gl.texImage2D(3553,0,6409,this.get_width(),this.get_height(),0,6409,5121,new Uint8Array(this.bytes.b.bufferValue));
if(kha_SystemImpl.gl.getError() == 1282) {
var rgbaBytes = new haxe_io_Bytes(new ArrayBuffer(this.get_width() * this.get_height() * 4));
var _g1 = 0;
var _g = this.get_height();
while(_g1 < _g) {
var y = _g1++;
var _g3 = 0;
var _g2 = this.get_width();
while(_g3 < _g2) {
var x = _g3++;
var _this = this.bytes;
var pos = y * this.get_width() + x;
var value = _this.b[pos];
var pos1 = y * this.get_width() * 4 + x * 4;
rgbaBytes.b[pos1] = value & 255;
var pos2 = y * this.get_width() * 4 + x * 4 + 1;
rgbaBytes.b[pos2] = value & 255;
var pos3 = y * this.get_width() * 4 + x * 4 + 2;
rgbaBytes.b[pos3] = value & 255;
var pos4 = y * this.get_width() * 4 + x * 4 + 3;
rgbaBytes.b[pos4] = 255;
}
}
kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_width(),this.get_height(),0,6408,5121,new Uint8Array(rgbaBytes.b.bufferValue));
}
kha_SystemImpl.gl.bindTexture(3553,null);
this.bytes = null;
}
}
,unload: function() {
this.image = null;
this.video = null;
this.data = null;
}
,__class__: kha_CanvasImage
});
var kha__$Color_Color_$Impl_$ = $hx_exports["kha"]["_Color"]["Color_Impl_"] = {};
$hxClasses["kha._Color.Color_Impl_"] = kha__$Color_Color_$Impl_$;
kha__$Color_Color_$Impl_$.__name__ = true;
kha__$Color_Color_$Impl_$.fromValue = function(value) {
return kha__$Color_Color_$Impl_$._new(value);
};
kha__$Color_Color_$Impl_$.fromBytes = function(r,g,b,a) {
if(a == null) {
a = 255;
}
return kha__$Color_Color_$Impl_$._new(a << 24 | r << 16 | g << 8 | b);
};
kha__$Color_Color_$Impl_$.fromFloats = function(r,g,b,a) {
if(a == null) {
a = 1;
}
return kha__$Color_Color_$Impl_$._new((a * 255 | 0) << 24 | (r * 255 | 0) << 16 | (g * 255 | 0) << 8 | (b * 255 | 0));
};
kha__$Color_Color_$Impl_$.fromString = function(value) {
if((value.length == 7 || value.length == 9) && value.charCodeAt(0) == 35) {
var colorValue = Std.parseInt("0x" + HxOverrides.substr(value,1,null));
if(value.length == 7) {
colorValue += -16777216;
}
return kha__$Color_Color_$Impl_$._new(colorValue);
} else {
throw new js__$Boot_HaxeError("Invalid Color string: '" + value + "'");
}
};
kha__$Color_Color_$Impl_$._new = function(value) {
var this1 = value;
return this1;
};
kha__$Color_Color_$Impl_$.get_value = function(this1) {
return this1;
};
kha__$Color_Color_$Impl_$.set_value = function(this1,value) {
this1 = value;
return this1;
};
kha__$Color_Color_$Impl_$.get_Rb = function(this1) {
return (this1 & 16711680) >>> 16;
};
kha__$Color_Color_$Impl_$.get_Gb = function(this1) {
return (this1 & 65280) >>> 8;
};
kha__$Color_Color_$Impl_$.get_Bb = function(this1) {
return this1 & 255;
};
kha__$Color_Color_$Impl_$.get_Ab = function(this1) {
return this1 >>> 24;
};
kha__$Color_Color_$Impl_$.set_Rb = function(this1,i) {
this1 = this1 >>> 24 << 24 | i << 16 | (this1 & 65280) >>> 8 << 8 | this1 & 255;
return i;
};
kha__$Color_Color_$Impl_$.set_Gb = function(this1,i) {
this1 = this1 >>> 24 << 24 | (this1 & 16711680) >>> 16 << 16 | i << 8 | this1 & 255;
return i;
};
kha__$Color_Color_$Impl_$.set_Bb = function(this1,i) {
this1 = this1 >>> 24 << 24 | (this1 & 16711680) >>> 16 << 16 | (this1 & 65280) >>> 8 << 8 | i;
return i;
};
kha__$Color_Color_$Impl_$.set_Ab = function(this1,i) {
this1 = i << 24 | (this1 & 16711680) >>> 16 << 16 | (this1 & 65280) >>> 8 << 8 | this1 & 255;
return i;
};
kha__$Color_Color_$Impl_$.get_R = function(this1) {
return ((this1 & 16711680) >>> 16) * 0.00392156862745098;
};
kha__$Color_Color_$Impl_$.get_G = function(this1) {
return ((this1 & 65280) >>> 8) * 0.00392156862745098;
};
kha__$Color_Color_$Impl_$.get_B = function(this1) {
return (this1 & 255) * 0.00392156862745098;
};
kha__$Color_Color_$Impl_$.get_A = function(this1) {
return (this1 >>> 24) * 0.00392156862745098;
};
kha__$Color_Color_$Impl_$.set_R = function(this1,f) {
this1 = ((this1 >>> 24) * 0.00392156862745098 * 255 | 0) << 24 | (f * 255 | 0) << 16 | (((this1 & 65280) >>> 8) * 0.00392156862745098 * 255 | 0) << 8 | ((this1 & 255) * 0.00392156862745098 * 255 | 0);
return f;
};
kha__$Color_Color_$Impl_$.set_G = function(this1,f) {
this1 = ((this1 >>> 24) * 0.00392156862745098 * 255 | 0) << 24 | (((this1 & 16711680) >>> 16) * 0.00392156862745098 * 255 | 0) << 16 | (f * 255 | 0) << 8 | ((this1 & 255) * 0.00392156862745098 * 255 | 0);
return f;
};
kha__$Color_Color_$Impl_$.set_B = function(this1,f) {
this1 = ((this1 >>> 24) * 0.00392156862745098 * 255 | 0) << 24 | (((this1 & 16711680) >>> 16) * 0.00392156862745098 * 255 | 0) << 16 | (((this1 & 65280) >>> 8) * 0.00392156862745098 * 255 | 0) << 8 | (f * 255 | 0);
return f;
};
kha__$Color_Color_$Impl_$.set_A = function(this1,f) {
this1 = (f * 255 | 0) << 24 | (((this1 & 16711680) >>> 16) * 0.00392156862745098 * 255 | 0) << 16 | (((this1 & 65280) >>> 8) * 0.00392156862745098 * 255 | 0) << 8 | ((this1 & 255) * 0.00392156862745098 * 255 | 0);
return f;
};
var kha_CompilerDefines = function() { };
$hxClasses["kha.CompilerDefines"] = kha_CompilerDefines;
kha_CompilerDefines.__name__ = true;
var kha_EnvironmentVariables = function() {
};
$hxClasses["kha.EnvironmentVariables"] = kha_EnvironmentVariables;
kha_EnvironmentVariables.__name__ = true;
kha_EnvironmentVariables.prototype = {
getVariable: function(name) {
return "";
}
,__class__: kha_EnvironmentVariables
};
var kha_Font = function() { };
$hxClasses["kha.Font"] = kha_Font;
kha_Font.__name__ = true;
kha_Font.__interfaces__ = [kha_Resource];
kha_Font.prototype = {
height: null
,width: null
,baseline: null
,__class__: kha_Font
};
var kha_FontStyle = function(bold,italic,underlined) {
this.bold = bold;
this.italic = italic;
this.underlined = underlined;
};
$hxClasses["kha.FontStyle"] = kha_FontStyle;
kha_FontStyle.__name__ = true;
kha_FontStyle.prototype = {
bold: null
,italic: null
,underlined: null
,getBold: function() {
return this.bold;
}
,getItalic: function() {
return this.italic;
}
,getUnderlined: function() {
return this.underlined;
}
,__class__: kha_FontStyle
};
var kha_Framebuffer = function(windowId,g1,g2,g4) {
this.windowId = windowId;
this.graphics1 = g1;
this.graphics2 = g2;
this.graphics4 = g4;
};
$hxClasses["kha.Framebuffer"] = kha_Framebuffer;
kha_Framebuffer.__name__ = true;
kha_Framebuffer.__interfaces__ = [kha_Canvas];
kha_Framebuffer.prototype = {
windowId: null
,graphics1: null
,graphics2: null
,graphics4: null
,init: function(g1,g2,g4) {
this.graphics1 = g1;
this.graphics2 = g2;
this.graphics4 = g4;
}
,g1: null
,get_g1: function() {
return this.graphics1;
}
,g2: null
,get_g2: function() {
return this.graphics2;
}
,g4: null
,get_g4: function() {
return this.graphics4;
}
,width: null
,get_width: function() {
return kha_System.windowWidth(this.windowId);
}
,height: null
,get_height: function() {
return kha_System.windowHeight(this.windowId);
}
,__class__: kha_Framebuffer
};
var kha_Key = $hxClasses["kha.Key"] = { __ename__ : true, __constructs__ : ["BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","CHAR","ESC","DEL","UP","DOWN","LEFT","RIGHT","BACK"] };
kha_Key.BACKSPACE = ["BACKSPACE",0];
kha_Key.BACKSPACE.toString = $estr;
kha_Key.BACKSPACE.__enum__ = kha_Key;
kha_Key.TAB = ["TAB",1];
kha_Key.TAB.toString = $estr;
kha_Key.TAB.__enum__ = kha_Key;
kha_Key.ENTER = ["ENTER",2];
kha_Key.ENTER.toString = $estr;
kha_Key.ENTER.__enum__ = kha_Key;
kha_Key.SHIFT = ["SHIFT",3];
kha_Key.SHIFT.toString = $estr;
kha_Key.SHIFT.__enum__ = kha_Key;
kha_Key.CTRL = ["CTRL",4];
kha_Key.CTRL.toString = $estr;
kha_Key.CTRL.__enum__ = kha_Key;
kha_Key.ALT = ["ALT",5];
kha_Key.ALT.toString = $estr;
kha_Key.ALT.__enum__ = kha_Key;
kha_Key.CHAR = ["CHAR",6];
kha_Key.CHAR.toString = $estr;
kha_Key.CHAR.__enum__ = kha_Key;
kha_Key.ESC = ["ESC",7];
kha_Key.ESC.toString = $estr;
kha_Key.ESC.__enum__ = kha_Key;
kha_Key.DEL = ["DEL",8];
kha_Key.DEL.toString = $estr;
kha_Key.DEL.__enum__ = kha_Key;
kha_Key.UP = ["UP",9];
kha_Key.UP.toString = $estr;
kha_Key.UP.__enum__ = kha_Key;
kha_Key.DOWN = ["DOWN",10];
kha_Key.DOWN.toString = $estr;
kha_Key.DOWN.__enum__ = kha_Key;
kha_Key.LEFT = ["LEFT",11];
kha_Key.LEFT.toString = $estr;
kha_Key.LEFT.__enum__ = kha_Key;
kha_Key.RIGHT = ["RIGHT",12];
kha_Key.RIGHT.toString = $estr;
kha_Key.RIGHT.__enum__ = kha_Key;
kha_Key.BACK = ["BACK",13];
kha_Key.BACK.toString = $estr;
kha_Key.BACK.__enum__ = kha_Key;
var kha_AlignedQuad = function() {
};
$hxClasses["kha.AlignedQuad"] = kha_AlignedQuad;
kha_AlignedQuad.__name__ = true;
kha_AlignedQuad.prototype = {
x0: null
,y0: null
,s0: null
,t0: null
,x1: null
,y1: null
,s1: null
,t1: null
,xadvance: null
,__class__: kha_AlignedQuad
};
var kha_KravurImage = function(size,ascent,descent,lineGap,width,height,chars,pixels) {
this.mySize = size;
this.width = width;
this.height = height;
this.chars = chars;
this.baseline = ascent;
var _g = 0;
while(_g < chars.length) {
var $char = chars[_g];
++_g;
$char.yoff += this.baseline;
}
this.texture = kha_Image.create(width,height,kha_graphics4_TextureFormat.L8);
var bytes = this.texture.lock();
var pos = 0;
var _g1 = 0;
var _g2 = height;
while(_g1 < _g2) {
var y = _g1++;
var _g3 = 0;
var _g21 = width;
while(_g3 < _g21) {
var x = _g3++;
var v = pixels.readU8(pos);
bytes.b[pos] = v & 255;
++pos;
}
}
this.texture.unlock();
};
$hxClasses["kha.KravurImage"] = kha_KravurImage;
kha_KravurImage.__name__ = true;
kha_KravurImage.prototype = {
mySize: null
,chars: null
,texture: null
,width: null
,height: null
,baseline: null
,getTexture: function() {
return this.texture;
}
,getBakedQuad: function(char_index,xpos,ypos) {
if(char_index >= this.chars.length) {
return null;
}
var ipw = 1.0 / this.width;
var iph = 1.0 / this.height;
var b = this.chars[char_index];
if(b == null) {
return null;
}
var round_x = Math.round(xpos + b.xoff);
var round_y = Math.round(ypos + b.yoff);
var q = new kha_AlignedQuad();
q.x0 = round_x;
q.y0 = round_y;
q.x1 = round_x + b.x1 - b.x0;
q.y1 = round_y + b.y1 - b.y0;
q.s0 = b.x0 * ipw;
q.t0 = b.y0 * iph;
q.s1 = b.x1 * ipw;
q.t1 = b.y1 * iph;
q.xadvance = b.xadvance;
return q;
}
,getCharWidth: function(charIndex) {
if(charIndex < 32) {
return 0;
}
if(charIndex - 32 >= this.chars.length) {
return 0;
}
return this.chars[charIndex - 32].xadvance;
}
,getHeight: function() {
return this.mySize;
}
,stringWidth: function(string) {
var str = new String(string);
var width = 0;
var _g1 = 0;
var _g = str.length;
while(_g1 < _g) {
var c = _g1++;
width += this.getCharWidth(HxOverrides.cca(str,c));
}
return width;
}
,getBaselinePosition: function() {
return this.baseline;
}
,__class__: kha_KravurImage
};
var kha_Kravur = function(blob) {
this.images = new haxe_ds_IntMap();
this.blob = blob;
};
$hxClasses["kha.Kravur"] = kha_Kravur;
kha_Kravur.__name__ = true;
kha_Kravur.__interfaces__ = [kha_Font];
kha_Kravur.prototype = {
blob: null
,images: null
,_get: function(fontSize,glyphs) {
if(!this.images.h.hasOwnProperty(fontSize)) {
if(glyphs == null) {
glyphs = [];
var _g = 32;
while(_g < 256) {
var i = _g++;
glyphs.push(i);
}
}
var width = 64;
var height = 32;
var length = glyphs.length;
var this1 = new Array(length);
var baked = this1;
var _g1 = 0;
var _g2 = baked.length;
while(_g1 < _g2) {
var i1 = _g1++;
baked[i1] = new kha_graphics2_truetype_Stbtt_$bakedchar();
}
var pixels = null;
var status = -1;
while(status < 0) {
if(height < width) {
height *= 2;
} else {
width *= 2;
}
pixels = kha_internal_BytesBlob.alloc(width * height);
status = kha_graphics2_truetype_StbTruetype.stbtt_BakeFontBitmap(this.blob,0,fontSize,pixels,width,height,glyphs,baked);
}
var info = new kha_graphics2_truetype_Stbtt_$fontinfo();
kha_graphics2_truetype_StbTruetype.stbtt_InitFont(info,this.blob,0);
var metrics = kha_graphics2_truetype_StbTruetype.stbtt_GetFontVMetrics(info);
var scale = kha_graphics2_truetype_StbTruetype.stbtt_ScaleForPixelHeight(info,fontSize);
var ascent = Math.round(metrics.ascent * scale);
var descent = Math.round(metrics.descent * scale);
var lineGap = Math.round(metrics.lineGap * scale);
var image = new kha_KravurImage(fontSize | 0,ascent,descent,lineGap,width,height,baked,pixels);
this.images.h[fontSize] = image;
return image;
}
return this.images.h[fontSize];
}
,height: function(fontSize) {
return this._get(fontSize).getHeight();
}
,width: function(fontSize,str) {
return this._get(fontSize).stringWidth(str);
}
,baseline: function(fontSize) {
return this._get(fontSize).getBaselinePosition();
}
,unload: function() {
this.blob = null;
this.images = null;
}
,__class__: kha_Kravur
};
var kha_LoaderImpl = function() { };
$hxClasses["kha.LoaderImpl"] = kha_LoaderImpl;
kha_LoaderImpl.__name__ = true;
kha_LoaderImpl.getImageFormats = function() {
return ["png","jpg","hdr"];
};
kha_LoaderImpl.loadImageFromDescription = function(desc,done) {
var readable = Object.prototype.hasOwnProperty.call(desc,"readable") && desc.readable;
if(StringTools.endsWith(desc.files[0],".hdr")) {
kha_LoaderImpl.loadBlobFromDescription(desc,function(blob) {
var hdrImage = kha_internal_HdrFormat.parse(blob.toBytes());
var tmp = kha_Image.fromBytes(haxe_io_Bytes.ofData(hdrImage.data.buffer),hdrImage.width,hdrImage.height,kha_graphics4_TextureFormat.RGBA128,readable ? kha_graphics4_Usage.DynamicUsage : kha_graphics4_Usage.StaticUsage);
done(tmp);
});
} else {
var img = window.document.createElement("img");
img.onload = function(event) {
var tmp1 = kha_Image.fromImage(img,readable);
done(tmp1);
};
img.src = desc.files[0];
img.crossOrigin = "";
}
};
kha_LoaderImpl.getSoundFormats = function() {
var element = window.document.createElement("audio");
var formats = [];
if(element.canPlayType("audio/mp4") != "") {
formats.push("mp4");
}
if(kha_SystemImpl._hasWebAudio || element.canPlayType("audio/ogg") != "") {
formats.push("ogg");
}
return formats;
};
kha_LoaderImpl.loadSoundFromDescription = function(desc,done) {
if(kha_SystemImpl._hasWebAudio) {
var element = window.document.createElement("audio");
if(element.canPlayType("audio/mp4") != "") {
var _g1 = 0;
var _g = desc.files.length;
while(_g1 < _g) {
var i = _g1++;
var file = desc.files[i];
if(StringTools.endsWith(file,".mp4")) {
new kha_js_WebAudioSound(file,done);
return;
}
}
}
var _g11 = 0;
var _g2 = desc.files.length;
while(_g11 < _g2) {
var i1 = _g11++;
var file1 = desc.files[i1];
if(StringTools.endsWith(file1,".ogg")) {
new kha_js_WebAudioSound(file1,done);
return;
}
}
} else if(kha_SystemImpl.mobile) {
var element1 = window.document.createElement("audio");
if(element1.canPlayType("audio/mp4") != "") {
var _g12 = 0;
var _g3 = desc.files.length;
while(_g12 < _g3) {
var i2 = _g12++;
var file2 = desc.files[i2];
if(StringTools.endsWith(file2,".mp4")) {
new kha_js_MobileWebAudioSound(file2,done);
return;
}
}
}
var _g13 = 0;
var _g4 = desc.files.length;
while(_g13 < _g4) {
var i3 = _g13++;
var file3 = desc.files[i3];
if(StringTools.endsWith(file3,".ogg")) {
new kha_js_MobileWebAudioSound(file3,done);
return;
}
}
} else {
new kha_js_Sound(desc.files,done);
}
};
kha_LoaderImpl.getVideoFormats = function() {
return ["mp4","webm"];
};
kha_LoaderImpl.loadVideoFromDescription = function(desc,done) {
var video = new kha_js_Video(desc.files,done);
};
kha_LoaderImpl.loadBlobFromDescription = function(desc,done) {
var request = new XMLHttpRequest();
request.open("GET",desc.files[0],true);
request.responseType = "arraybuffer";
request.onreadystatechange = function() {
if(request.readyState != 4) {
return;
}
if(request.status >= 200 && request.status < 400 || request.status == 0 && request.statusText == "") {
var bytes = null;
var arrayBuffer = request.response;
if(arrayBuffer != null) {
var byteArray = new Uint8Array(arrayBuffer);
bytes = haxe_io_Bytes.ofData(byteArray);
} else if(request.responseBody != null) {
var data = VBArray(request.responseBody).toArray();
bytes = new haxe_io_Bytes(new ArrayBuffer(data.length));
var _g1 = 0;
var _g = data.length;
while(_g1 < _g) {
var i = _g1++;
bytes.b[i] = data[i] & 255;
}
} else {
haxe_Log.trace("Error loading " + desc.files[0],{ fileName : "LoaderImpl.hx", lineNumber : 144, className : "kha.LoaderImpl", methodName : "loadBlobFromDescription"});
window.console.log("loadBlob failed");
}
done(new kha_internal_BytesBlob(bytes));
} else {
haxe_Log.trace("Error loading " + desc.files[0],{ fileName : "LoaderImpl.hx", lineNumber : 150, className : "kha.LoaderImpl", methodName : "loadBlobFromDescription"});
window.console.log("loadBlob failed");
}
};
request.send(null);
};
kha_LoaderImpl.loadFontFromDescription = function(desc,done) {
kha_LoaderImpl.loadBlobFromDescription(desc,function(blob) {
if(kha_SystemImpl.gl == null) {
done(new kha_js_Font(new kha_Kravur(blob)));
} else {
done(new kha_Kravur(blob));
}
});
};
var kha_Rotation = function(center,angle) {
this.center = center;
this.angle = angle;
};
$hxClasses["kha.Rotation"] = kha_Rotation;
kha_Rotation.__name__ = true;
kha_Rotation.prototype = {
center: null
,angle: null
,__class__: kha_Rotation
};
var kha_TimeTask = function() {
};
$hxClasses["kha.TimeTask"] = kha_TimeTask;
kha_TimeTask.__name__ = true;
kha_TimeTask.prototype = {
task: null
,start: null
,period: null
,duration: null
,next: null
,id: null
,groupId: null
,active: null
,paused: null
,__class__: kha_TimeTask
};
var kha_FrameTask = function(task,priority,id) {
this.task = task;
this.priority = priority;
this.id = id;
this.active = true;
this.paused = false;
};
$hxClasses["kha.FrameTask"] = kha_FrameTask;
kha_FrameTask.__name__ = true;
kha_FrameTask.prototype = {
task: null
,priority: null
,id: null
,active: null
,paused: null
,__class__: kha_FrameTask
};
var kha_Scheduler = function() { };
$hxClasses["kha.Scheduler"] = kha_Scheduler;
kha_Scheduler.__name__ = true;
kha_Scheduler.init = function() {
kha_Scheduler.deltas = [];
var _g1 = 0;
var _g = kha_Scheduler.DIF_COUNT;
while(_g1 < _g) {
var i = _g1++;
kha_Scheduler.deltas[i] = 0;
}
kha_Scheduler.stopped = true;
kha_Scheduler.frame_tasks_sorted = true;
kha_Scheduler.current = kha_Scheduler.realTime();
kha_Scheduler.lastTime = kha_Scheduler.realTime();
kha_Scheduler.currentFrameTaskId = 0;
kha_Scheduler.currentTimeTaskId = 0;
kha_Scheduler.currentGroupId = 0;
kha_Scheduler.timeTasks = [];
kha_Scheduler.pausedTimeTasks = [];
kha_Scheduler.outdatedTimeTasks = [];
kha_Scheduler.timeTasksScratchpad = [];
kha_Scheduler.frameTasks = [];
kha_Scheduler.toDeleteFrame = [];
};
kha_Scheduler.start = function(restartTimers) {
if(restartTimers == null) {
restartTimers = false;
}
kha_Scheduler.vsync = kha_System.get_vsync();
var hz = kha_System.get_refreshRate();
if(hz >= 57 && hz <= 63) {
hz = 60;
}
kha_Scheduler.onedifhz = 1.0 / hz;
kha_Scheduler.stopped = false;
kha_Scheduler.resetTime();
kha_Scheduler.lastTime = kha_Scheduler.realTime() - kha_Scheduler.startTime;
var _g1 = 0;
var _g = kha_Scheduler.DIF_COUNT;
while(_g1 < _g) {
var i = _g1++;
kha_Scheduler.deltas[i] = 0;
}
if(restartTimers) {
var _g2 = 0;
var _g11 = kha_Scheduler.timeTasks;
while(_g2 < _g11.length) {
var timeTask = _g11[_g2];
++_g2;
timeTask.paused = false;
}
var _g3 = 0;
var _g12 = kha_Scheduler.frameTasks;
while(_g3 < _g12.length) {
var frameTask = _g12[_g3];
++_g3;
frameTask.paused = false;
}
}
};
kha_Scheduler.stop = function() {
kha_Scheduler.stopped = true;
};
kha_Scheduler.isStopped = function() {
return kha_Scheduler.stopped;
};
kha_Scheduler.warpTimeTasks = function(time,tasks) {
var _g = 0;
while(_g < tasks.length) {
var timeTask = tasks[_g];
++_g;
if(timeTask.start >= time) {
timeTask.next = timeTask.start;
} else if(timeTask.period > 0) {
var sinceStart = time - timeTask.start;
var times = Math.ceil(sinceStart / timeTask.period);
timeTask.next = timeTask.start + times * timeTask.period;
}
}
};
kha_Scheduler.back = function(time) {
if(time >= kha_Scheduler.lastTime) {
return;
}
kha_Scheduler.current = time;
kha_Scheduler.lastTime = time;
kha_Scheduler.warpTimeTasks(time,kha_Scheduler.outdatedTimeTasks);
kha_Scheduler.warpTimeTasks(time,kha_Scheduler.timeTasks);
var _g = 0;
var _g1 = kha_Scheduler.outdatedTimeTasks;
while(_g < _g1.length) {
var task = _g1[_g];
++_g;
if(task.next >= time) {
kha_Scheduler.timeTasksScratchpad.push(task);
}
}
var _g2 = 0;
var _g11 = kha_Scheduler.timeTasksScratchpad;
while(_g2 < _g11.length) {
var task1 = _g11[_g2];
++_g2;
HxOverrides.remove(kha_Scheduler.outdatedTimeTasks,task1);
}
var _g3 = 0;
var _g12 = kha_Scheduler.timeTasksScratchpad;
while(_g3 < _g12.length) {
var task2 = _g12[_g3];
++_g3;
kha_Scheduler.insertSorted(kha_Scheduler.timeTasks,task2);
}
while(kha_Scheduler.timeTasksScratchpad.length > 0) HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0]);
var _g4 = 0;
var _g13 = kha_Scheduler.outdatedTimeTasks;
while(_g4 < _g13.length) {
var task3 = _g13[_g4];
++_g4;
if(task3.next < time - 1.0) {
kha_Scheduler.timeTasksScratchpad.push(task3);
}
}
var _g5 = 0;
var _g14 = kha_Scheduler.timeTasksScratchpad;
while(_g5 < _g14.length) {
var task4 = _g14[_g5];
++_g5;
HxOverrides.remove(kha_Scheduler.outdatedTimeTasks,task4);
}
while(kha_Scheduler.timeTasksScratchpad.length > 0) HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0]);
};
kha_Scheduler.executeFrame = function() {
var now = kha_Scheduler.realTime() - kha_Scheduler.startTime;
var delta = now - kha_Scheduler.lastTime;
var frameEnd = kha_Scheduler.current;
if(delta < 0) {
return;
}
if(delta > kha_Scheduler.maxframetime) {
kha_Scheduler.startTime += delta - kha_Scheduler.maxframetime;
delta = kha_Scheduler.maxframetime;
frameEnd += delta;
} else if(kha_Scheduler.vsync) {
var realdif = kha_Scheduler.onedifhz;
while(realdif < delta - kha_Scheduler.onedifhz) realdif += kha_Scheduler.onedifhz;
delta = realdif;
var _g1 = 0;
var _g = kha_Scheduler.DIF_COUNT - 2;
while(_g1 < _g) {
var i = _g1++;
delta += kha_Scheduler.deltas[i];
kha_Scheduler.deltas[i] = kha_Scheduler.deltas[i + 1];
}
delta += kha_Scheduler.deltas[kha_Scheduler.DIF_COUNT - 2];
delta /= kha_Scheduler.DIF_COUNT;
kha_Scheduler.deltas[kha_Scheduler.DIF_COUNT - 2] = realdif;
frameEnd += delta;
} else {
var _g11 = 0;
var _g2 = kha_Scheduler.DIF_COUNT - 1;
while(_g11 < _g2) {
var i1 = _g11++;
kha_Scheduler.deltas[i1] = kha_Scheduler.deltas[i1 + 1];
}
kha_Scheduler.deltas[kha_Scheduler.DIF_COUNT - 1] = delta;
var next = 0;
var _g12 = 0;
var _g3 = kha_Scheduler.DIF_COUNT;
while(_g12 < _g3) {
var i2 = _g12++;
next += kha_Scheduler.deltas[i2];
}
next /= kha_Scheduler.DIF_COUNT;
frameEnd += next;
}
kha_Scheduler.lastTime = frameEnd;
if(!kha_Scheduler.stopped) {
kha_Scheduler.current = frameEnd;
}
var _g4 = 0;
var _g13 = kha_Scheduler.pausedTimeTasks;
while(_g4 < _g13.length) {
var pausedTask = _g13[_g4];
++_g4;
pausedTask.next += delta;
}
if(kha_Scheduler.stopped) {
var _g5 = 0;
var _g14 = kha_Scheduler.timeTasks;
while(_g5 < _g14.length) {
var timeTask = _g14[_g5];
++_g5;
timeTask.next += delta;
}
}
while(kha_Scheduler.timeTasks.length > 0) {
kha_Scheduler.activeTimeTask = kha_Scheduler.timeTasks[0];
if(kha_Scheduler.activeTimeTask.next <= frameEnd) {
kha_Scheduler.activeTimeTask.next += kha_Scheduler.activeTimeTask.period;
HxOverrides.remove(kha_Scheduler.timeTasks,kha_Scheduler.activeTimeTask);
if(kha_Scheduler.activeTimeTask.active && kha_Scheduler.activeTimeTask.task()) {
if(kha_Scheduler.activeTimeTask.period > 0 && (kha_Scheduler.activeTimeTask.duration == 0 || kha_Scheduler.activeTimeTask.duration >= kha_Scheduler.activeTimeTask.start + kha_Scheduler.activeTimeTask.next)) {
kha_Scheduler.insertSorted(kha_Scheduler.timeTasks,kha_Scheduler.activeTimeTask);
} else {
kha_Scheduler.archiveTimeTask(kha_Scheduler.activeTimeTask,frameEnd);
}
} else {
kha_Scheduler.activeTimeTask.active = false;
kha_Scheduler.archiveTimeTask(kha_Scheduler.activeTimeTask,frameEnd);
}
} else {
break;
}
}
kha_Scheduler.activeTimeTask = null;
kha_Scheduler.sortFrameTasks();
var _g6 = 0;
var _g15 = kha_Scheduler.frameTasks;
while(_g6 < _g15.length) {
var frameTask = _g15[_g6];
++_g6;
if(!kha_Scheduler.stopped && !frameTask.paused && frameTask.active) {
if(!frameTask.task()) {
frameTask.active = false;
}
}
}
var _g7 = 0;
var _g16 = kha_Scheduler.frameTasks;
while(_g7 < _g16.length) {
var frameTask1 = _g16[_g7];
++_g7;
if(!frameTask1.active) {
kha_Scheduler.toDeleteFrame.push(frameTask1);
}
}
while(kha_Scheduler.toDeleteFrame.length > 0) HxOverrides.remove(kha_Scheduler.frameTasks,kha_Scheduler.toDeleteFrame.pop());
};
kha_Scheduler.archiveTimeTask = function(timeTask,frameEnd) {
};
kha_Scheduler.time = function() {
return kha_Scheduler.current;
};
kha_Scheduler.realTime = function() {
return kha_System.get_time();
};
kha_Scheduler.resetTime = function() {
var now = kha_System.get_time();
var dif = now - kha_Scheduler.startTime;
kha_Scheduler.startTime = now;
var _g = 0;
var _g1 = kha_Scheduler.timeTasks;
while(_g < _g1.length) {
var timeTask = _g1[_g];
++_g;
timeTask.start -= dif;
timeTask.next -= dif;
}
var _g11 = 0;
var _g2 = kha_Scheduler.DIF_COUNT;
while(_g11 < _g2) {
var i = _g11++;
kha_Scheduler.deltas[i] = 0;
}
kha_Scheduler.current = 0;
kha_Scheduler.lastTime = 0;
};
kha_Scheduler.addBreakableFrameTask = function(task,priority) {
kha_Scheduler.frameTasks.push(new kha_FrameTask(task,priority,++kha_Scheduler.currentFrameTaskId));
kha_Scheduler.frame_tasks_sorted = false;
return kha_Scheduler.currentFrameTaskId;
};
kha_Scheduler.addFrameTask = function(task,priority) {
return kha_Scheduler.addBreakableFrameTask(function() {
task();
return true;
},priority);
};
kha_Scheduler.pauseFrameTask = function(id,paused) {
var _g = 0;
var _g1 = kha_Scheduler.frameTasks;
while(_g < _g1.length) {
var frameTask = _g1[_g];
++_g;
if(frameTask.id == id) {
frameTask.paused = paused;
break;
}
}
};
kha_Scheduler.removeFrameTask = function(id) {
var _g = 0;
var _g1 = kha_Scheduler.frameTasks;
while(_g < _g1.length) {
var frameTask = _g1[_g];
++_g;
if(frameTask.id == id) {
frameTask.active = false;
break;
}
}
};
kha_Scheduler.generateGroupId = function() {
return ++kha_Scheduler.currentGroupId;
};
kha_Scheduler.addBreakableTimeTaskToGroup = function(groupId,task,start,period,duration) {
if(duration == null) {
duration = 0;
}
if(period == null) {
period = 0;
}
var t = new kha_TimeTask();
t.active = true;
t.task = task;
t.id = ++kha_Scheduler.currentTimeTaskId;
t.groupId = groupId;
t.start = kha_Scheduler.current + start;
t.period = 0;
if(period != 0) {
t.period = period;
}
t.duration = 0;
if(duration != 0) {
t.duration = t.start + duration;
}
t.next = t.start;
kha_Scheduler.insertSorted(kha_Scheduler.timeTasks,t);
return t.id;
};
kha_Scheduler.addTimeTaskToGroup = function(groupId,task,start,period,duration) {
if(duration == null) {
duration = 0;
}
if(period == null) {
period = 0;
}
return kha_Scheduler.addBreakableTimeTaskToGroup(groupId,function() {
task();
return true;
},start,period,duration);
};
kha_Scheduler.addBreakableTimeTask = function(task,start,period,duration) {
if(duration == null) {
duration = 0;
}
if(period == null) {
period = 0;
}
return kha_Scheduler.addBreakableTimeTaskToGroup(0,task,start,period,duration);
};
kha_Scheduler.addTimeTask = function(task,start,period,duration) {
if(duration == null) {
duration = 0;
}
if(period == null) {
period = 0;
}
return kha_Scheduler.addTimeTaskToGroup(0,task,start,period,duration);
};
kha_Scheduler.getTimeTask = function(id) {
if(kha_Scheduler.activeTimeTask != null && kha_Scheduler.activeTimeTask.id == id) {
return kha_Scheduler.activeTimeTask;
}
var _g = 0;
var _g1 = kha_Scheduler.timeTasks;
while(_g < _g1.length) {
var timeTask = _g1[_g];
++_g;
if(timeTask.id == id) {
return timeTask;
}
}
var _g2 = 0;
var _g11 = kha_Scheduler.pausedTimeTasks;
while(_g2 < _g11.length) {
var timeTask1 = _g11[_g2];
++_g2;
if(timeTask1.id == id) {
return timeTask1;
}
}
return null;
};
kha_Scheduler.pauseTimeTask = function(id,paused) {
var timeTask = kha_Scheduler.getTimeTask(id);
if(timeTask != null) {
kha_Scheduler.pauseRunningTimeTask(timeTask,paused);
}
if(kha_Scheduler.activeTimeTask != null && kha_Scheduler.activeTimeTask.id == id) {
kha_Scheduler.activeTimeTask.paused = paused;
}
};
kha_Scheduler.pauseRunningTimeTask = function(timeTask,paused) {
timeTask.paused = paused;
if(paused) {
HxOverrides.remove(kha_Scheduler.timeTasks,timeTask);
kha_Scheduler.pausedTimeTasks.push(timeTask);
} else {
kha_Scheduler.insertSorted(kha_Scheduler.timeTasks,timeTask);
HxOverrides.remove(kha_Scheduler.pausedTimeTasks,timeTask);
}
};
kha_Scheduler.pauseTimeTasks = function(groupId,paused) {
var _g = 0;
var _g1 = kha_Scheduler.timeTasks;
while(_g < _g1.length) {
var timeTask = _g1[_g];
++_g;
if(timeTask.groupId == groupId) {
kha_Scheduler.pauseRunningTimeTask(timeTask,paused);
}
}
if(kha_Scheduler.activeTimeTask != null && kha_Scheduler.activeTimeTask.groupId == groupId) {
kha_Scheduler.activeTimeTask.paused = paused;
}
};
kha_Scheduler.removeTimeTask = function(id) {
var timeTask = kha_Scheduler.getTimeTask(id);
if(timeTask != null) {
timeTask.active = false;
HxOverrides.remove(kha_Scheduler.timeTasks,timeTask);
}
};
kha_Scheduler.removeTimeTasks = function(groupId) {
var _g = 0;
var _g1 = kha_Scheduler.timeTasks;
while(_g < _g1.length) {
var timeTask = _g1[_g];
++_g;
if(timeTask.groupId == groupId) {
timeTask.active = false;
kha_Scheduler.timeTasksScratchpad.push(timeTask);
}
}
var _g2 = 0;
var _g11 = kha_Scheduler.timeTasksScratchpad;
while(_g2 < _g11.length) {
var timeTask1 = _g11[_g2];
++_g2;
HxOverrides.remove(kha_Scheduler.timeTasks,timeTask1);
}
while(kha_Scheduler.timeTasksScratchpad.length > 0) HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0]);
if(kha_Scheduler.activeTimeTask != null && kha_Scheduler.activeTimeTask.groupId == groupId) {
kha_Scheduler.activeTimeTask.active = false;
}
};
kha_Scheduler.numTasksInSchedule = function() {
return kha_Scheduler.timeTasks.length + kha_Scheduler.frameTasks.length;
};
kha_Scheduler.insertSorted = function(list,task) {
var _g1 = 0;
var _g = list.length;
while(_g1 < _g) {
var i = _g1++;
if(list[i].next > task.next) {
list.splice(i,0,task);
return;
}
}
list.push(task);
};
kha_Scheduler.sortFrameTasks = function() {
if(kha_Scheduler.frame_tasks_sorted) {
return;
}
kha_Scheduler.frameTasks.sort(function(a,b) {
if(a.priority > b.priority) {
return 1;
} else if(a.priority < b.priority) {
return -1;
} else {
return 0;
}
});
kha_Scheduler.frame_tasks_sorted = true;
};
var kha_ScreenRotation = $hxClasses["kha.ScreenRotation"] = { __ename__ : true, __constructs__ : ["RotationNone","Rotation90","Rotation180","Rotation270"] };
kha_ScreenRotation.RotationNone = ["RotationNone",0];
kha_ScreenRotation.RotationNone.toString = $estr;
kha_ScreenRotation.RotationNone.__enum__ = kha_ScreenRotation;
kha_ScreenRotation.Rotation90 = ["Rotation90",1];
kha_ScreenRotation.Rotation90.toString = $estr;
kha_ScreenRotation.Rotation90.__enum__ = kha_ScreenRotation;
kha_ScreenRotation.Rotation180 = ["Rotation180",2];
kha_ScreenRotation.Rotation180.toString = $estr;
kha_ScreenRotation.Rotation180.__enum__ = kha_ScreenRotation;
kha_ScreenRotation.Rotation270 = ["Rotation270",3];
kha_ScreenRotation.Rotation270.toString = $estr;
kha_ScreenRotation.Rotation270.__enum__ = kha_ScreenRotation;
var kha_Shaders = function() { };
$hxClasses["kha.Shaders"] = kha_Shaders;
kha_Shaders.__name__ = true;
kha_Shaders.init = function() {
var blobs = [];
var _g = 0;
while(_g < 3) {
var i = _g++;
var data = Reflect.field(kha_Shaders,"painter_colored_fragData" + i);
var bytes = haxe_Unserializer.run(data);
blobs.push(kha_internal_BytesBlob.fromBytes(bytes));
}
kha_Shaders.painter_colored_frag = new kha_graphics4_FragmentShader(blobs,["painter-colored.frag.essl","painter-colored-relaxed.frag.essl","painter-colored-webgl2.frag.essl"]);
var blobs1 = [];
var _g1 = 0;
while(_g1 < 3) {
var i1 = _g1++;
var data1 = Reflect.field(kha_Shaders,"painter_colored_vertData" + i1);
var bytes1 = haxe_Unserializer.run(data1);
blobs1.push(kha_internal_BytesBlob.fromBytes(bytes1));
}
kha_Shaders.painter_colored_vert = new kha_graphics4_VertexShader(blobs1,["painter-colored.vert.essl","painter-colored-relaxed.vert.essl","painter-colored-webgl2.vert.essl"]);
var blobs2 = [];
var _g2 = 0;
while(_g2 < 3) {
var i2 = _g2++;
var data2 = Reflect.field(kha_Shaders,"painter_image_fragData" + i2);
var bytes2 = haxe_Unserializer.run(data2);
blobs2.push(kha_internal_BytesBlob.fromBytes(bytes2));
}
kha_Shaders.painter_image_frag = new kha_graphics4_FragmentShader(blobs2,["painter-image.frag.essl","painter-image-relaxed.frag.essl","painter-image-webgl2.frag.essl"]);
var blobs3 = [];
var _g3 = 0;
while(_g3 < 3) {
var i3 = _g3++;
var data3 = Reflect.field(kha_Shaders,"painter_image_vertData" + i3);
var bytes3 = haxe_Unserializer.run(data3);
blobs3.push(kha_internal_BytesBlob.fromBytes(bytes3));
}
kha_Shaders.painter_image_vert = new kha_graphics4_VertexShader(blobs3,["painter-image.vert.essl","painter-image-relaxed.vert.essl","painter-image-webgl2.vert.essl"]);
var blobs4 = [];
var _g4 = 0;
while(_g4 < 3) {
var i4 = _g4++;
var data4 = Reflect.field(kha_Shaders,"painter_text_fragData" + i4);
var bytes4 = haxe_Unserializer.run(data4);
blobs4.push(kha_internal_BytesBlob.fromBytes(bytes4));
}
kha_Shaders.painter_text_frag = new kha_graphics4_FragmentShader(blobs4,["painter-text.frag.essl","painter-text-relaxed.frag.essl","painter-text-webgl2.frag.essl"]);
var blobs5 = [];
var _g5 = 0;
while(_g5 < 3) {
var i5 = _g5++;
var data5 = Reflect.field(kha_Shaders,"painter_text_vertData" + i5);
var bytes5 = haxe_Unserializer.run(data5);
blobs5.push(kha_internal_BytesBlob.fromBytes(bytes5));
}
kha_Shaders.painter_text_vert = new kha_graphics4_VertexShader(blobs5,["painter-text.vert.essl","painter-text-relaxed.vert.essl","painter-text-webgl2.vert.essl"]);
var blobs6 = [];
var _g6 = 0;
while(_g6 < 3) {
var i6 = _g6++;
var data6 = Reflect.field(kha_Shaders,"painter_video_fragData" + i6);
var bytes6 = haxe_Unserializer.run(data6);
blobs6.push(kha_internal_BytesBlob.fromBytes(bytes6));
}
kha_Shaders.painter_video_frag = new kha_graphics4_FragmentShader(blobs6,["painter-video.frag.essl","painter-video-relaxed.frag.essl","painter-video-webgl2.frag.essl"]);
var blobs7 = [];
var _g7 = 0;
while(_g7 < 3) {
var i7 = _g7++;
var data7 = Reflect.field(kha_Shaders,"painter_video_vertData" + i7);
var bytes7 = haxe_Unserializer.run(data7);
blobs7.push(kha_internal_BytesBlob.fromBytes(bytes7));
}
kha_Shaders.painter_video_vert = new kha_graphics4_VertexShader(blobs7,["painter-video.vert.essl","painter-video-relaxed.vert.essl","painter-video-webgl2.vert.essl"]);
};
var kha_Sound = function() {
};
$hxClasses["kha.Sound"] = kha_Sound;
kha_Sound.__name__ = true;
kha_Sound.__interfaces__ = [kha_Resource];
kha_Sound.prototype = {
compressedData: null
,uncompressedData: null
,uncompress: function(done) {
var output = new haxe_io_BytesOutput();
var header = kha_audio2_ogg_vorbis_Reader.readAll(this.compressedData,output,true);
var soundBytes = output.getBytes();
var count = soundBytes.length / 4 | 0;
if(header.channel == 1) {
var this1 = new Array(count * 2);
this.uncompressedData = this1;
var _g1 = 0;
var _g = count;
while(_g1 < _g) {
var i = _g1++;
this.uncompressedData[i * 2] = soundBytes.getFloat(i * 4);
this.uncompressedData[i * 2 + 1] = soundBytes.getFloat(i * 4);
}
} else {
var this2 = new Array(count);
this.uncompressedData = this2;
var _g11 = 0;
var _g2 = count;
while(_g11 < _g2) {
var i1 = _g11++;
this.uncompressedData[i1] = soundBytes.getFloat(i1 * 4);
}
}
this.compressedData = null;
done();
}
,unload: function() {
this.compressedData = null;
this.uncompressedData = null;
}
,__class__: kha_Sound
};
var kha_System = function() { };
$hxClasses["kha.System"] = kha_System;
kha_System.__name__ = true;
kha_System.init = function(options,callback) {
if(options.title == null) {
options.title = "Kha";
}
if(options.width == null) {
options.width = 800;
}
if(options.height == null) {
options.height = 600;
}
if(options.samplesPerPixel == null) {
options.samplesPerPixel = 1;
}
if(options.vSync == null) {
options.vSync = true;
}
if(options.windowMode == null) {
options.windowMode = kha_WindowMode.Window;
}
kha_System.theTitle = options.title;
kha_SystemImpl.init(options,callback);
};
kha_System.initEx = function(title,options,windowCallback,callback) {
kha_System.theTitle = title;
kha_SystemImpl.initEx(title,options,windowCallback,callback);
};
kha_System.get_title = function() {
return kha_System.theTitle;
};
kha_System.notifyOnRender = function(listener,id) {
if(id == null) {
id = 0;
}
while(id >= kha_System.renderListeners.length) kha_System.renderListeners.push([]);
kha_System.renderListeners[id].push(listener);
};
kha_System.removeRenderListener = function(listener,id) {
if(id == null) {
id = 0;
}
HxOverrides.remove(kha_System.renderListeners[id],listener);
};
kha_System.notifyOnApplicationState = function(foregroundListener,resumeListener,pauseListener,backgroundListener,shutdownListener) {
if(foregroundListener != null) {
kha_System.foregroundListeners.push(foregroundListener);
}
if(resumeListener != null) {
kha_System.resumeListeners.push(resumeListener);
}
if(pauseListener != null) {
kha_System.pauseListeners.push(pauseListener);
}
if(backgroundListener != null) {
kha_System.backgroundListeners.push(backgroundListener);
}
if(shutdownListener != null) {
kha_System.shutdownListeners.push(shutdownListener);
}
};
kha_System.render = function(id,framebuffer) {
if(kha_System.renderListeners.length == 0) {
return;
}
var _g = 0;
var _g1 = kha_System.renderListeners[id];
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(framebuffer);
}
};
kha_System.foreground = function() {
var _g = 0;
var _g1 = kha_System.foregroundListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener();
}
};
kha_System.resume = function() {
var _g = 0;
var _g1 = kha_System.resumeListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener();
}
};
kha_System.pause = function() {
var _g = 0;
var _g1 = kha_System.pauseListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener();
}
};
kha_System.background = function() {
var _g = 0;
var _g1 = kha_System.backgroundListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener();
}
};
kha_System.shutdown = function() {
var _g = 0;
var _g1 = kha_System.shutdownListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener();
}
};
kha_System.get_time = function() {
return kha_SystemImpl.getTime();
};
kha_System.windowWidth = function(windowId) {
if(windowId == null) {
windowId = 0;
}
return kha_SystemImpl.windowWidth(windowId);
};
kha_System.windowHeight = function(windowId) {
if(windowId == null) {
windowId = 0;
}
return kha_SystemImpl.windowHeight(windowId);
};
kha_System.screenDpi = function() {
return kha_SystemImpl.screenDpi();
};
kha_System.get_screenRotation = function() {
return kha_SystemImpl.getScreenRotation();
};
kha_System.get_vsync = function() {
return kha_SystemImpl.getVsync();
};
kha_System.get_refreshRate = function() {
return kha_SystemImpl.getRefreshRate();
};
kha_System.get_systemId = function() {
return kha_SystemImpl.getSystemId();
};
kha_System.requestShutdown = function() {
kha_SystemImpl.requestShutdown();
};
kha_System.changeResolution = function(width,height) {
kha_SystemImpl.changeResolution(width,height);
};
kha_System.loadUrl = function(url) {
kha_SystemImpl.loadUrl(url);
};
var kha_GamepadStates = function() {
this.axes = [];
this.buttons = [];
};
$hxClasses["kha.GamepadStates"] = kha_GamepadStates;
kha_GamepadStates.__name__ = true;
kha_GamepadStates.prototype = {
axes: null
,buttons: null
,__class__: kha_GamepadStates
};
var kha_SystemImpl = function() { };
$hxClasses["kha.SystemImpl"] = kha_SystemImpl;
kha_SystemImpl.__name__ = true;
kha_SystemImpl.initPerformanceTimer = function() {
if(window.performance != null && ($_=window.performance,$bind($_,$_.now)) != null) {
kha_SystemImpl.performance = window.performance;
} else {
kha_SystemImpl.performance = window.Date;
}
};
kha_SystemImpl.errorHandler = function(message,source,lineno,colno,error) {
window.console.error(error.stack);
return true;
};
kha_SystemImpl.init = function(options,callback) {
kha_SystemImpl.options = options;
kha_SystemImpl.mobile = kha_SystemImpl.isMobile();
kha_SystemImpl.chrome = kha_SystemImpl.isChrome();
kha_SystemImpl.init2();
callback();
};
kha_SystemImpl.initEx = function(title,options,windowCallback,callback) {
haxe_Log.trace("initEx is not supported on the html5 target, running init() with first window options",{ fileName : "SystemImpl.hx", lineNumber : 86, className : "kha.SystemImpl", methodName : "initEx"});
kha_SystemImpl.init({ title : title, width : options[0].width, height : options[0].height},callback);
if(windowCallback != null) {
windowCallback(0);
}
};
kha_SystemImpl.isMobile = function() {
var agent = window.navigator.userAgent;
if(agent.indexOf("Android") >= 0 || agent.indexOf("webOS") >= 0 || agent.indexOf("iPhone") >= 0 || agent.indexOf("iPad") >= 0 || agent.indexOf("iPod") >= 0 || agent.indexOf("BlackBerry") >= 0 || agent.indexOf("Windows Phone") >= 0) {
return true;
} else {
return false;
}
};
kha_SystemImpl.isChrome = function() {
var agent = window.navigator.userAgent;
if(agent.indexOf("Chrome") >= 0) {
return true;
} else {
return false;
}
};
kha_SystemImpl.windowWidth = function(windowId) {
if(windowId == null) {
windowId = 0;
}
if(kha_SystemImpl.khanvas.width == 0 && kha_SystemImpl.options.width != null) {
return kha_SystemImpl.options.width;
} else {
return kha_SystemImpl.khanvas.width;
}
};
kha_SystemImpl.windowHeight = function(windowId) {
if(windowId == null) {
windowId = 0;
}
if(kha_SystemImpl.khanvas.height == 0 && kha_SystemImpl.options.height != null) {
return kha_SystemImpl.options.height;
} else {
return kha_SystemImpl.khanvas.height;
}
};
kha_SystemImpl.screenDpi = function() {
var dpiElement = window.document.createElement("div");
dpiElement.style.position = "absolute";
dpiElement.style.width = "1in";
dpiElement.style.height = "1in";
dpiElement.style.left = "-100%";
dpiElement.style.top = "-100%";
window.document.body.appendChild(dpiElement);
var dpi = dpiElement.offsetHeight;
dpiElement.remove();
return dpi;
};
kha_SystemImpl.setCanvas = function(canvas) {
kha_SystemImpl.khanvas = canvas;
};
kha_SystemImpl.getScreenRotation = function() {
return kha_ScreenRotation.RotationNone;
};
kha_SystemImpl.getTime = function() {
return kha_SystemImpl.performance.now() / 1000;
};
kha_SystemImpl.getVsync = function() {
return true;
};
kha_SystemImpl.getRefreshRate = function() {
return 60;
};
kha_SystemImpl.getSystemId = function() {
return "HTML5";
};
kha_SystemImpl.requestShutdown = function() {
window.close();
};
kha_SystemImpl.init2 = function(backbufferFormat) {
haxe_Log.trace = js_Boot.__trace;
kha_SystemImpl.keyboard = new kha_input_Keyboard();
kha_SystemImpl.mouse = new kha_input_MouseImpl();
kha_SystemImpl.surface = new kha_input_Surface();
kha_SystemImpl.gamepads = [];
kha_SystemImpl.gamepadStates = [];
var _g = 0;
while(_g < 4) {
var i = _g++;
kha_SystemImpl.gamepads[i] = new kha_input_Gamepad(i);
kha_SystemImpl.gamepadStates[i] = new kha_GamepadStates();
}
kha_SystemImpl.pressedKeys = [];
var _g1 = 0;
while(_g1 < 256) {
var i1 = _g1++;
kha_SystemImpl.pressedKeys.push(false);
}
var _g2 = 0;
while(_g2 < 256) {
var i2 = _g2++;
kha_SystemImpl.pressedKeys.push(null);
}
kha_CanvasImage.init();
kha_SystemImpl.initPerformanceTimer();
kha_Scheduler.init();
kha_SystemImpl.loadFinished();
kha_EnvironmentVariables.instance = new kha_js_EnvironmentVariables();
};
kha_SystemImpl.getMouse = function(num) {
if(num != 0) {
return null;
}
return kha_SystemImpl.mouse;
};
kha_SystemImpl.getKeyboard = function(num) {
if(num != 0) {
return null;
}
return kha_SystemImpl.keyboard;
};
kha_SystemImpl.checkGamepad = function(pad) {
var _g1 = 0;
var _g = pad.axes.length;
while(_g1 < _g) {
var i = _g1++;
if(pad.axes[i] != null) {
if(kha_SystemImpl.gamepadStates[pad.index].axes[i] != pad.axes[i]) {
var axis = pad.axes[i];
if(i % 2 == 1) {
axis = -axis;
}
kha_SystemImpl.gamepadStates[pad.index].axes[i] = axis;
kha_SystemImpl.gamepads[pad.index].sendAxisEvent(i,axis);
}
}
}
var _g11 = 0;
var _g2 = pad.buttons.length;
while(_g11 < _g2) {
var i1 = _g11++;
if(pad.buttons[i1] != null) {
if(kha_SystemImpl.gamepadStates[pad.index].buttons[i1] != pad.buttons[i1].value) {
kha_SystemImpl.gamepadStates[pad.index].buttons[i1] = pad.buttons[i1].value;
kha_SystemImpl.gamepads[pad.index].sendButtonEvent(i1,pad.buttons[i1].value);
}
}
}
if(pad.axes.length <= 4 && pad.buttons.length > 7) {
kha_SystemImpl.gamepadStates[pad.index].axes[4] = pad.buttons[6].value;
kha_SystemImpl.gamepads[pad.index].sendAxisEvent(4,pad.buttons[6].value);
kha_SystemImpl.gamepadStates[pad.index].axes[5] = pad.buttons[7].value;
kha_SystemImpl.gamepads[pad.index].sendAxisEvent(5,pad.buttons[7].value);
}
};
kha_SystemImpl.loadFinished = function() {
var canvas = kha_SystemImpl.khanvas;
if(canvas == null) {
canvas = window.document.getElementById(kha_CompilerDefines.canvas_id);
}
canvas.style.cursor = "default";
var gl = false;
try {
kha_SystemImpl.gl = canvas.getContext("webgl2",{ alpha : false, antialias : kha_SystemImpl.options.samplesPerPixel > 1, stencil : true, preserveDrawingBuffer : true});
kha_SystemImpl.gl.pixelStorei(37441,1);
kha_SystemImpl.halfFloat = { HALF_FLOAT_OES : 5131};
kha_SystemImpl.depthTexture = { UNSIGNED_INT_24_8_WEBGL : 34042};
kha_SystemImpl.drawBuffers = { COLOR_ATTACHMENT0_WEBGL : 36064};
kha_SystemImpl.elementIndexUint = true;
kha_SystemImpl.gl.getExtension("EXT_color_buffer_float");
kha_SystemImpl.gl.getExtension("OES_texture_float_linear");
kha_SystemImpl.gl.getExtension("OES_texture_half_float_linear");
kha_SystemImpl.anisotropicFilter = kha_SystemImpl.gl.getExtension("EXT_texture_filter_anisotropic");
if(kha_SystemImpl.anisotropicFilter == null) {
kha_SystemImpl.anisotropicFilter = kha_SystemImpl.gl.getExtension("WEBKIT_EXT_texture_filter_anisotropic");
}
gl = true;
kha_SystemImpl.gl2 = true;
kha_Shaders.init();
} catch( e ) {
haxe_Log.trace("Could not initialize WebGL 2, falling back to WebGL.",{ fileName : "SystemImpl.hx", lineNumber : 302, className : "kha.SystemImpl", methodName : "loadFinished"});
}
if(!kha_SystemImpl.gl2) {
try {
kha_SystemImpl.gl = canvas.getContext("experimental-webgl",{ alpha : false, antialias : kha_SystemImpl.options.samplesPerPixel > 1, stencil : true, preserveDrawingBuffer : true});
if(kha_SystemImpl.gl != null) {
kha_SystemImpl.gl.pixelStorei(37441,1);
kha_SystemImpl.gl.getExtension("OES_texture_float");
kha_SystemImpl.gl.getExtension("OES_texture_float_linear");
kha_SystemImpl.halfFloat = kha_SystemImpl.gl.getExtension("OES_texture_half_float");
kha_SystemImpl.gl.getExtension("OES_texture_half_float_linear");
kha_SystemImpl.depthTexture = kha_SystemImpl.gl.getExtension("WEBGL_depth_texture");
kha_SystemImpl.gl.getExtension("EXT_shader_texture_lod");
kha_SystemImpl.gl.getExtension("OES_standard_derivatives");
kha_SystemImpl.anisotropicFilter = kha_SystemImpl.gl.getExtension("EXT_texture_filter_anisotropic");
if(kha_SystemImpl.anisotropicFilter == null) {
kha_SystemImpl.anisotropicFilter = kha_SystemImpl.gl.getExtension("WEBKIT_EXT_texture_filter_anisotropic");
}
kha_SystemImpl.drawBuffers = kha_SystemImpl.gl.getExtension("WEBGL_draw_buffers");
kha_SystemImpl.elementIndexUint = kha_SystemImpl.gl.getExtension("OES_element_index_uint");
gl = true;
kha_Shaders.init();
}
} catch( e1 ) {
haxe_Log.trace("Could not initialize WebGL, falling back to Canvas.",{ fileName : "SystemImpl.hx", lineNumber : 326, className : "kha.SystemImpl", methodName : "loadFinished"});
}
}
kha_SystemImpl.setCanvas(canvas);
if(gl) {
var g4 = gl ? new kha_js_graphics4_Graphics() : null;
kha_SystemImpl.frame = new kha_Framebuffer(0,null,null,g4);
kha_SystemImpl.frame.init(new kha_graphics2_Graphics1(kha_SystemImpl.frame),new kha_js_graphics4_Graphics2(kha_SystemImpl.frame),g4);
} else {
var g2 = new kha_js_CanvasGraphics(canvas.getContext("2d"));
kha_SystemImpl.frame = new kha_Framebuffer(0,null,g2,null);
kha_SystemImpl.frame.init(new kha_graphics2_Graphics1(kha_SystemImpl.frame),g2,null);
}
if(!kha_SystemImpl.mobile && kha_audio2_Audio._init()) {
kha_SystemImpl._hasWebAudio = true;
kha_audio2_Audio1._init();
} else if(kha_SystemImpl.mobile) {
kha_SystemImpl._hasWebAudio = false;
kha_js_MobileWebAudio._init();
kha_audio2_Audio1 = kha_js_MobileWebAudio;
} else {
kha_SystemImpl._hasWebAudio = false;
kha_js_AudioElementAudio._compile();
kha_audio2_Audio1 = kha_js_AudioElementAudio;
}
kha_vr_VrInterface.instance = new kha_js_vr_VrInterface();
kha_Scheduler.start();
var $window = window;
var requestAnimationFrame = $window.requestAnimationFrame;
if(requestAnimationFrame == null) {
requestAnimationFrame = $window.mozRequestAnimationFrame;
}
if(requestAnimationFrame == null) {
requestAnimationFrame = $window.webkitRequestAnimationFrame;
}
if(requestAnimationFrame == null) {
requestAnimationFrame = $window.msRequestAnimationFrame;
}
var animate = null;
animate = function(timestamp) {
var window1 = window;
if(requestAnimationFrame == null) {
window1.setTimeout(animate,16.6666666666666679);
} else {
requestAnimationFrame(animate);
}
var sysGamepads = kha_SystemImpl.getGamepads();
if(sysGamepads != null) {
var _g1 = 0;
var _g = sysGamepads.length;
while(_g1 < _g) {
var i = _g1++;
var pad = sysGamepads[i];
if(pad != null) {
kha_SystemImpl.checkGamepad(pad);
}
}
}
kha_Scheduler.executeFrame();
if(canvas.getContext) {
var displayWidth = canvas.clientWidth;
var displayHeight = canvas.clientHeight;
if(canvas.width != displayWidth || canvas.height != displayHeight) {
canvas.width = displayWidth;
canvas.height = displayHeight;
}
kha_System.render(0,kha_SystemImpl.frame);
if(kha_SystemImpl.gl != null) {
kha_SystemImpl.gl.clearColor(1,1,1,1);
kha_SystemImpl.gl.colorMask(false,false,false,true);
kha_SystemImpl.gl.clear(16384);
kha_SystemImpl.gl.colorMask(true,true,true,true);
}
}
};
var animate1 = animate;
if(requestAnimationFrame == null) {
$window.setTimeout(animate1,16.6666666666666679);
} else {
requestAnimationFrame(animate1);
}
if(canvas.getAttribute("tabindex") == null) {
canvas.setAttribute("tabindex","0");
}
canvas.focus();
canvas.oncontextmenu = function(event) {
event.stopPropagation();
event.preventDefault();
};
canvas.onmousedown = kha_SystemImpl.mouseDown;
canvas.onmousemove = kha_SystemImpl.mouseMove;
if(kha_SystemImpl.keyboard != null) {
canvas.onkeydown = kha_SystemImpl.keyDown;
canvas.onkeyup = kha_SystemImpl.keyUp;
}
canvas.onblur = kha_SystemImpl.onBlur;
canvas.onfocus = kha_SystemImpl.onFocus;
canvas.onmousewheel = canvas.onwheel = kha_SystemImpl.mouseWheel;
canvas.onmouseleave = kha_SystemImpl.mouseLeave;
canvas.addEventListener("wheel mousewheel",kha_SystemImpl.mouseWheel,false);
canvas.addEventListener("touchstart",kha_SystemImpl.touchDown,false);
canvas.addEventListener("touchend",kha_SystemImpl.touchUp,false);
canvas.addEventListener("touchmove",kha_SystemImpl.touchMove,false);
window.addEventListener("unload",kha_SystemImpl.unload);
};
kha_SystemImpl.lockMouse = function() {
if(($_=kha_SystemImpl.khanvas,$bind($_,$_.requestPointerLock))) {
kha_SystemImpl.khanvas.requestPointerLock();
} else if(kha_SystemImpl.khanvas.mozRequestPointerLock) {
kha_SystemImpl.khanvas.mozRequestPointerLock();
} else if(kha_SystemImpl.khanvas.webkitRequestPointerLock) {
kha_SystemImpl.khanvas.webkitRequestPointerLock();
}
};
kha_SystemImpl.unlockMouse = function() {
if(document.exitPointerLock) {
document.exitPointerLock();
} else if(document.mozExitPointerLock) {
document.mozExitPointerLock();
} else if(document.webkitExitPointerLock) {
document.webkitExitPointerLock();
}
};
kha_SystemImpl.canLockMouse = function() {
return 'pointerLockElement' in document ||
'mozPointerLockElement' in document ||
'webkitPointerLockElement' in document;
};
kha_SystemImpl.isMouseLocked = function() {
return document.pointerLockElement === kha_Sys.khanvas ||
document.mozPointerLockElement === kha_Sys.khanvas ||
document.webkitPointerLockElement === kha_Sys.khanvas;
};
kha_SystemImpl.notifyOfMouseLockChange = function(func,error) {
window.document.addEventListener("pointerlockchange",func,false);
window.document.addEventListener("mozpointerlockchange",func,false);
window.document.addEventListener("webkitpointerlockchange",func,false);
window.document.addEventListener("pointerlockerror",error,false);
window.document.addEventListener("mozpointerlockerror",error,false);
window.document.addEventListener("webkitpointerlockerror",error,false);
};
kha_SystemImpl.removeFromMouseLockChange = function(func,error) {
window.document.removeEventListener("pointerlockchange",func,false);
window.document.removeEventListener("mozpointerlockchange",func,false);
window.document.removeEventListener("webkitpointerlockchange",func,false);
window.document.removeEventListener("pointerlockerror",error,false);
window.document.removeEventListener("mozpointerlockerror",error,false);
window.document.removeEventListener("webkitpointerlockerror",error,false);
};
kha_SystemImpl.unload = function(_) {
};
kha_SystemImpl.setMouseXY = function(event) {
var rect = kha_SystemImpl.khanvas.getBoundingClientRect();
var borderWidth = kha_SystemImpl.khanvas.clientLeft;
var borderHeight = kha_SystemImpl.khanvas.clientTop;
kha_SystemImpl.mouseX = (event.clientX - rect.left - borderWidth) * kha_SystemImpl.khanvas.width / (rect.width - 2 * borderWidth) | 0;
kha_SystemImpl.mouseY = (event.clientY - rect.top - borderHeight) * kha_SystemImpl.khanvas.height / (rect.height - 2 * borderHeight) | 0;
};
kha_SystemImpl.unlockSoundOnIOS = function() {
if(!kha_SystemImpl.mobile || kha_SystemImpl.iosSoundEnabled) {
return;
}
var buffer = kha_js_MobileWebAudio._context.createBuffer(1,1,22050);
var source = kha_js_MobileWebAudio._context.createBufferSource();
source.buffer = buffer;
source.connect(kha_js_MobileWebAudio._context.destination);
if(source.noteOn) {
source.noteOn(0);
}
kha_SystemImpl.iosSoundEnabled = true;
};
kha_SystemImpl.mouseLeave = function() {
kha_SystemImpl.mouse.sendLeaveEvent(0);
};
kha_SystemImpl.mouseWheel = function(event) {
kha_SystemImpl.insideInputEvent = true;
kha_SystemImpl.unlockSoundOnIOS();
event.preventDefault();
if(event.deltaMode == 0) {
if(event.deltaY < 0) {
kha_SystemImpl.mouse.sendWheelEvent(0,-1);
} else if(event.deltaY > 0) {
kha_SystemImpl.mouse.sendWheelEvent(0,1);
}
kha_SystemImpl.insideInputEvent = false;
return false;
}
if(event.deltaMode == 1) {
kha_SystemImpl.minimumScroll = Math.min(kha_SystemImpl.minimumScroll,Math.abs(event.deltaY)) | 0;
kha_SystemImpl.mouse.sendWheelEvent(0,event.deltaY / kha_SystemImpl.minimumScroll | 0);
kha_SystemImpl.insideInputEvent = false;
return false;
}
kha_SystemImpl.insideInputEvent = false;
return false;
};
kha_SystemImpl.mouseDown = function(event) {
kha_SystemImpl.insideInputEvent = true;
kha_SystemImpl.unlockSoundOnIOS();
kha_SystemImpl.setMouseXY(event);
if(event.which == 1) {
if(event.ctrlKey) {
kha_SystemImpl.leftMouseCtrlDown = true;
kha_SystemImpl.mouse.sendDownEvent(0,1,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY);
} else {
kha_SystemImpl.leftMouseCtrlDown = false;
kha_SystemImpl.mouse.sendDownEvent(0,0,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY);
}
if(($_=kha_SystemImpl.khanvas,$bind($_,$_.setCapture)) != null) {
kha_SystemImpl.khanvas.setCapture();
}
kha_SystemImpl.khanvas.ownerDocument.addEventListener("mouseup",kha_SystemImpl.mouseLeftUp);
} else if(event.which == 2) {
kha_SystemImpl.mouse.sendDownEvent(0,2,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY);
kha_SystemImpl.khanvas.ownerDocument.addEventListener("mouseup",kha_SystemImpl.mouseMiddleUp);
} else if(event.which == 3) {
kha_SystemImpl.mouse.sendDownEvent(0,1,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY);
kha_SystemImpl.khanvas.ownerDocument.addEventListener("mouseup",kha_SystemImpl.mouseRightUp);
}
kha_SystemImpl.insideInputEvent = false;
};
kha_SystemImpl.mouseLeftUp = function(event) {
kha_SystemImpl.unlockSoundOnIOS();
if(event.which != 1) {
return;
}
kha_SystemImpl.insideInputEvent = true;
kha_SystemImpl.khanvas.ownerDocument.removeEventListener("mouseup",kha_SystemImpl.mouseLeftUp);
if(($_=kha_SystemImpl.khanvas,$bind($_,$_.releaseCapture)) != null) {
kha_SystemImpl.khanvas.ownerDocument.releaseCapture();
}
if(kha_SystemImpl.leftMouseCtrlDown) {
kha_SystemImpl.mouse.sendUpEvent(0,1,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY);
} else {
kha_SystemImpl.mouse.sendUpEvent(0,0,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY);
}
kha_SystemImpl.leftMouseCtrlDown = false;
kha_SystemImpl.insideInputEvent = false;
};
kha_SystemImpl.mouseMiddleUp = function(event) {
kha_SystemImpl.unlockSoundOnIOS();
if(event.which != 2) {
return;
}
kha_SystemImpl.insideInputEvent = true;
kha_SystemImpl.khanvas.ownerDocument.removeEventListener("mouseup",kha_SystemImpl.mouseMiddleUp);
kha_SystemImpl.mouse.sendUpEvent(0,2,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY);
kha_SystemImpl.insideInputEvent = false;
};
kha_SystemImpl.mouseRightUp = function(event) {
kha_SystemImpl.unlockSoundOnIOS();
if(event.which != 3) {
return;
}
kha_SystemImpl.insideInputEvent = true;
kha_SystemImpl.khanvas.ownerDocument.removeEventListener("mouseup",kha_SystemImpl.mouseRightUp);
kha_SystemImpl.mouse.sendUpEvent(0,1,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY);
kha_SystemImpl.insideInputEvent = false;
};
kha_SystemImpl.mouseMove = function(event) {
kha_SystemImpl.insideInputEvent = true;
kha_SystemImpl.unlockSoundOnIOS();
var lastMouseX = kha_SystemImpl.mouseX;
var lastMouseY = kha_SystemImpl.mouseY;
kha_SystemImpl.setMouseXY(event);
var movementX = event.movementX;
var movementY = event.movementY;
if(event.movementX == null) {
if(event.mozMovementX != null) {
movementX = event.mozMovementX;
} else if(event.webkitMovementX != null) {
movementX = event.webkitMovementX;
} else {
movementX = kha_SystemImpl.mouseX - lastMouseX;
}
if(event.mozMovementY != null) {
movementY = event.mozMovementY;
} else if(event.webkitMovementY != null) {
movementY = event.webkitMovementY;
} else {
movementY = kha_SystemImpl.mouseY - lastMouseY;
}
}
kha_SystemImpl.mouse.sendMoveEvent(0,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY,movementX,movementY);
kha_SystemImpl.insideInputEvent = false;
};
kha_SystemImpl.setTouchXY = function(touch) {
var rect = kha_SystemImpl.khanvas.getBoundingClientRect();
var borderWidth = kha_SystemImpl.khanvas.clientLeft;
var borderHeight = kha_SystemImpl.khanvas.clientTop;
kha_SystemImpl.touchX = (touch.clientX - rect.left - borderWidth) * kha_SystemImpl.khanvas.width / (rect.width - 2 * borderWidth) | 0;
kha_SystemImpl.touchY = (touch.clientY - rect.top - borderHeight) * kha_SystemImpl.khanvas.height / (rect.height - 2 * borderHeight) | 0;
};
kha_SystemImpl.touchDown = function(event) {
kha_SystemImpl.insideInputEvent = true;
kha_SystemImpl.unlockSoundOnIOS();
event.stopPropagation();
event.preventDefault();
var _g = 0;
var _g1 = event.changedTouches;
while(_g < _g1.length) {
var touch = _g1[_g];
++_g;
kha_SystemImpl.setTouchXY(touch);
kha_SystemImpl.mouse.sendDownEvent(0,0,kha_SystemImpl.touchX,kha_SystemImpl.touchY);
kha_SystemImpl.surface.sendTouchStartEvent(touch.identifier,kha_SystemImpl.touchX,kha_SystemImpl.touchY);
}
kha_SystemImpl.insideInputEvent = false;
};
kha_SystemImpl.touchUp = function(event) {
kha_SystemImpl.insideInputEvent = true;
kha_SystemImpl.unlockSoundOnIOS();
var _g = 0;
var _g1 = event.changedTouches;
while(_g < _g1.length) {
var touch = _g1[_g];
++_g;
kha_SystemImpl.setTouchXY(touch);
kha_SystemImpl.mouse.sendUpEvent(0,0,kha_SystemImpl.touchX,kha_SystemImpl.touchY);
kha_SystemImpl.surface.sendTouchEndEvent(touch.identifier,kha_SystemImpl.touchX,kha_SystemImpl.touchY);
}
kha_SystemImpl.insideInputEvent = false;
};
kha_SystemImpl.touchMove = function(event) {
kha_SystemImpl.insideInputEvent = true;
kha_SystemImpl.unlockSoundOnIOS();
var index = 0;
var _g = 0;
var _g1 = event.changedTouches;
while(_g < _g1.length) {
var touch = _g1[_g];
++_g;
kha_SystemImpl.setTouchXY(touch);
if(index == 0) {
var movementX = kha_SystemImpl.touchX - kha_SystemImpl.lastFirstTouchX;
var movementY = kha_SystemImpl.touchY - kha_SystemImpl.lastFirstTouchY;
kha_SystemImpl.lastFirstTouchX = kha_SystemImpl.touchX;
kha_SystemImpl.lastFirstTouchY = kha_SystemImpl.touchY;
kha_SystemImpl.mouse.sendMoveEvent(0,kha_SystemImpl.touchX,kha_SystemImpl.touchY,movementX,movementY);
}
kha_SystemImpl.surface.sendMoveEvent(touch.identifier,kha_SystemImpl.touchX,kha_SystemImpl.touchY);
++index;
}
kha_SystemImpl.insideInputEvent = false;
};
kha_SystemImpl.onBlur = function() {
kha_System.background();
};
kha_SystemImpl.onFocus = function() {
kha_System.foreground();
};
kha_SystemImpl.keycodeToChar = function(key,keycode,shift) {
if(key != null) {
if(key.length == 1) {
return key;
}
switch(key) {
case "Add":
return "+";
case "Divide":
return "/";
case "Multiply":
return "*";
case "Subtract":
return "-";
}
}
switch(keycode) {
case 48:
if(shift) {
return "=";
} else {
return "0";
}
break;
case 49:
if(shift) {
return "!";
} else {
return "1";
}
break;
case 50:
if(shift) {
return "\"";
} else {
return "2";
}
break;
case 51:
if(shift) {
return "§";
} else {
return "3";
}
break;
case 52:
if(shift) {
return "$";
} else {
return "4";
}
break;
case 53:
if(shift) {
return "%";
} else {
return "5";
}
break;
case 54:
if(shift) {
return "&";
} else {
return "6";
}
break;
case 55:
if(shift) {
return "/";
} else {
return "7";
}
break;
case 56:
if(shift) {
return "(";
} else {
return "8";
}
break;
case 57:
if(shift) {
return ")";
} else {
return "9";
}
break;
case 106:
return "*";
case 107:
return "+";
case 109:
return "-";
case 111:
return "/";
case 187:
if(shift) {
return "*";
} else {
return "+";
}
break;
case 188:
if(shift) {
return ";";
} else {
return ",";
}
break;
case 189:
if(shift) {
return "_";
} else {
return "-";
}
break;
case 190:
if(shift) {
return ":";
} else {
return ".";
}
break;
case 191:
if(shift) {
return "'";
} else {
return "#";
}
break;
case 212:
if(shift) {
return "`";
} else {
return "´";
}
break;
case 219:
if(shift) {
return "?";
} else {
return "ß";
}
break;
case 226:
if(shift) {
return ">";
} else {
return "<";
}
break;
}
if(keycode >= 96 && keycode <= 105) {
return String.fromCharCode(-48 + keycode);
}
if(keycode >= 65 && keycode <= 90) {
if(shift) {
return String.fromCharCode(keycode);
} else {
return String.fromCharCode(keycode - 65 + 97);
}
}
return String.fromCharCode(keycode);
};
kha_SystemImpl.keyDown = function(event) {
event.stopPropagation();
if(kha_SystemImpl.pressedKeys[event.keyCode]) {
event.preventDefault();
return;
}
kha_SystemImpl.pressedKeys[event.keyCode] = true;
var _g = event.keyCode;
switch(_g) {
case 8:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.BACKSPACE,"");
event.preventDefault();
break;
case 9:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.TAB,"");
event.preventDefault();
break;
case 13:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.ENTER,"");
event.preventDefault();
break;
case 16:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.SHIFT,"");
event.preventDefault();
break;
case 17:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.CTRL,"");
event.preventDefault();
break;
case 18:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.ALT,"");
event.preventDefault();
break;
case 27:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.ESC,"");
event.preventDefault();
break;
case 32:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.CHAR," ");
event.preventDefault();
break;
case 37:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.LEFT,"");
event.preventDefault();
break;
case 38:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.UP,"");
event.preventDefault();
break;
case 39:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.RIGHT,"");
event.preventDefault();
break;
case 40:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.DOWN,"");
event.preventDefault();
break;
case 46:
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.DEL,"");
event.preventDefault();
break;
default:
if(!event.altKey) {
var $char = kha_SystemImpl.keycodeToChar(event.key,event.keyCode,event.shiftKey);
kha_SystemImpl.keyboard.sendDownEvent(kha_Key.CHAR,$char);
}
}
};
kha_SystemImpl.keyUp = function(event) {
event.preventDefault();
event.stopPropagation();
kha_SystemImpl.pressedKeys[event.keyCode] = false;
var _g = event.keyCode;
switch(_g) {
case 8:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.BACKSPACE,"");
break;
case 9:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.TAB,"");
break;
case 13:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.ENTER,"");
break;
case 16:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.SHIFT,"");
break;
case 17:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.CTRL,"");
break;
case 18:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.ALT,"");
break;
case 27:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.ESC,"");
break;
case 32:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.CHAR," ");
break;
case 37:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.LEFT,"");
break;
case 38:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.UP,"");
break;
case 39:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.RIGHT,"");
break;
case 40:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.DOWN,"");
break;
case 46:
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.DEL,"");
break;
default:
if(!event.altKey) {
var $char = kha_SystemImpl.keycodeToChar(event.key,event.keyCode,event.shiftKey);
kha_SystemImpl.keyboard.sendUpEvent(kha_Key.CHAR,$char);
}
}
};
kha_SystemImpl.canSwitchFullscreen = function() {
return 'fullscreenElement ' in document ||
'mozFullScreenElement' in document ||
'webkitFullscreenElement' in document ||
'msFullscreenElement' in document
;
};
kha_SystemImpl.isFullscreen = function() {
return document.fullscreenElement === this.khanvas ||
document.mozFullScreenElement === this.khanvas ||
document.webkitFullscreenElement === this.khanvas ||
document.msFullscreenElement === this.khanvas ;
};
kha_SystemImpl.requestFullscreen = function() {
if(($_=kha_SystemImpl.khanvas,$bind($_,$_.requestFullscreen))) {
kha_SystemImpl.khanvas.requestFullscreen();
} else if(kha_SystemImpl.khanvas.msRequestFullscreen) {
kha_SystemImpl.khanvas.msRequestFullscreen();
} else if(kha_SystemImpl.khanvas.mozRequestFullScreen) {
kha_SystemImpl.khanvas.mozRequestFullScreen();
} else if(kha_SystemImpl.khanvas.webkitRequestFullscreen) {
kha_SystemImpl.khanvas.webkitRequestFullscreen();
}
};
kha_SystemImpl.exitFullscreen = function() {
if(document.exitFullscreen) {
document.exitFullscreen();
} else if(document.msExitFullscreen) {
document.msExitFullscreen();
} else if(document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if(document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
};
kha_SystemImpl.notifyOfFullscreenChange = function(func,error) {
window.document.addEventListener("fullscreenchange",func,false);
window.document.addEventListener("mozfullscreenchange",func,false);
window.document.addEventListener("webkitfullscreenchange",func,false);
window.document.addEventListener("MSFullscreenChange",func,false);
window.document.addEventListener("fullscreenerror",error,false);
window.document.addEventListener("mozfullscreenerror",error,false);
window.document.addEventListener("webkitfullscreenerror",error,false);
window.document.addEventListener("MSFullscreenError",error,false);
};
kha_SystemImpl.removeFromFullscreenChange = function(func,error) {
window.document.removeEventListener("fullscreenchange",func,false);
window.document.removeEventListener("mozfullscreenchange",func,false);
window.document.removeEventListener("webkitfullscreenchange",func,false);
window.document.removeEventListener("MSFullscreenChange",func,false);
window.document.removeEventListener("fullscreenerror",error,false);
window.document.removeEventListener("mozfullscreenerror",error,false);
window.document.removeEventListener("webkitfullscreenerror",error,false);
window.document.removeEventListener("MSFullscreenError",error,false);
};
kha_SystemImpl.changeResolution = function(width,height) {
};
kha_SystemImpl.setKeepScreenOn = function(on) {
};
kha_SystemImpl.loadUrl = function(url) {
window.open(url,"_blank");
};
kha_SystemImpl.getGamepadId = function(index) {
var sysGamepads = kha_SystemImpl.getGamepads();
if(sysGamepads != null && sysGamepads[index]) {
return sysGamepads[index].id;
}
return "unkown";
};
kha_SystemImpl.getGamepads = function() {
if(kha_SystemImpl.chrome && kha_vr_VrInterface.instance.IsVrEnabled()) {
return null;
}
if(navigator.getGamepads) {
return window.navigator.getGamepads();
} else {
return null;
}
};
var kha_Video = function() {
};
$hxClasses["kha.Video"] = kha_Video;
kha_Video.__name__ = true;
kha_Video.__interfaces__ = [kha_Resource];
kha_Video.prototype = {
width: function() {
return 100;
}
,height: function() {
return 100;
}
,play: function(loop) {
if(loop == null) {
loop = false;
}
}
,pause: function() {
}
,stop: function() {
}
,getLength: function() {
return 0;
}
,getCurrentPos: function() {
return 0;
}
,get_position: function() {
return 0;
}
,set_position: function(value) {
return 0;
}
,getVolume: function() {
return 1;
}
,setVolume: function(volume) {
}
,isFinished: function() {
return this.getCurrentPos() >= this.getLength();
}
,unload: function() {
}
,__class__: kha_Video
};
var kha_WebGLImage = function(width,height,format,renderTarget,depthStencilFormat) {
this.pixels = null;
this.depthTexture = null;
this.texture = null;
this.renderBuffer = null;
this.frameBuffer = null;
this.myWidth = width;
this.myHeight = height;
this.format = format;
this.renderTarget = renderTarget;
this.image = null;
this.video = null;
this.depthStencilFormat = depthStencilFormat;
kha_WebGLImage.init();
if(renderTarget) {
this.createTexture();
}
};
$hxClasses["kha.WebGLImage"] = kha_WebGLImage;
kha_WebGLImage.__name__ = true;
kha_WebGLImage.init = function() {
if(kha_WebGLImage.context == null) {
var canvas = window.document.createElement("canvas");
if(canvas != null) {
kha_WebGLImage.context = canvas.getContext("2d");
canvas.width = 2048;
canvas.height = 2048;
kha_WebGLImage.context.globalCompositeOperation = "copy";
}
}
};
kha_WebGLImage.upperPowerOfTwo = function(v) {
--v;
v |= v >>> 1;
v |= v >>> 2;
v |= v >>> 4;
v |= v >>> 8;
v |= v >>> 16;
return ++v;
};
kha_WebGLImage.formatByteSize = function(format) {
switch(format[1]) {
case 0:
return 4;
case 1:
return 1;
case 2:
return 16;
case 3:
return 2;
case 4:
return 8;
case 5:
return 4;
case 6:
return 2;
}
};
kha_WebGLImage.__super__ = kha_Image;
kha_WebGLImage.prototype = $extend(kha_Image.prototype,{
image: null
,video: null
,data: null
,myWidth: null
,myHeight: null
,format: null
,renderTarget: null
,frameBuffer: null
,renderBuffer: null
,texture: null
,depthTexture: null
,graphics1: null
,graphics2: null
,graphics4: null
,depthStencilFormat: null
,get_g1: function() {
if(this.graphics1 == null) {
this.graphics1 = new kha_graphics2_Graphics1(this);
}
return this.graphics1;
}
,get_g2: function() {
if(this.graphics2 == null) {
this.graphics2 = new kha_js_graphics4_Graphics2(this);
}
return this.graphics2;
}
,get_g4: function() {
if(this.graphics4 == null) {
this.graphics4 = new kha_js_graphics4_Graphics(this);
}
return this.graphics4;
}
,get_width: function() {
return this.myWidth;
}
,get_height: function() {
return this.myHeight;
}
,get_realWidth: function() {
return this.myWidth;
}
,get_realHeight: function() {
return this.myHeight;
}
,isOpaque: function(x,y) {
if(this.data == null) {
if(kha_WebGLImage.context == null) {
return true;
} else {
this.createImageData();
}
}
return this.data.data[y * (this.image.width | 0) * 4 + x * 4 + 3] != 0;
}
,at: function(x,y) {
if(this.data == null) {
if(kha_WebGLImage.context == null) {
return -16777216;
} else {
this.createImageData();
}
}
var r = this.data.data[y * (this.image.width | 0) * 4 + x * 4];
var g = this.data.data[y * (this.image.width | 0) * 4 + x * 4 + 1];
var b = this.data.data[y * (this.image.width | 0) * 4 + x * 4 + 2];
var a = this.data.data[y * (this.image.width | 0) * 4 + x * 4 + 3];
return kha__$Color_Color_$Impl_$._new(a << 24 | r << 16 | g << 8 | b);
}
,createImageData: function() {
if(js_Boot.__instanceof(this.image,Uint8Array)) {
this.data = new ImageData(new Uint8ClampedArray(this.image.buffer),this.get_width(),this.get_height());
} else {
kha_WebGLImage.context.strokeStyle = "rgba(0,0,0,0)";
kha_WebGLImage.context.fillStyle = "rgba(0,0,0,0)";
kha_WebGLImage.context.fillRect(0,0,this.image.width,this.image.height);
kha_WebGLImage.context.drawImage(this.image,0,0,this.image.width,this.image.height,0,0,this.image.width,this.image.height);
this.data = kha_WebGLImage.context.getImageData(0,0,this.image.width,this.image.height);
}
}
,createTexture: function() {
if(kha_SystemImpl.gl == null) {
return;
}
this.texture = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(3553,this.texture);
kha_SystemImpl.gl.texParameteri(3553,10240,9729);
kha_SystemImpl.gl.texParameteri(3553,10241,9729);
kha_SystemImpl.gl.texParameteri(3553,10242,33071);
kha_SystemImpl.gl.texParameteri(3553,10243,33071);
if(this.renderTarget) {
this.frameBuffer = kha_SystemImpl.gl.createFramebuffer();
kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer);
var _g = this.format;
switch(_g[1]) {
case 0:
kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_realWidth(),this.get_realHeight(),0,6408,5121,null);
break;
case 2:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34836 : 6408,this.get_realWidth(),this.get_realHeight(),0,6408,5126,null);
break;
case 3:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33189 : 6402,this.get_realWidth(),this.get_realHeight(),0,6402,5123,null);
break;
case 4:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34842 : 6408,this.get_realWidth(),this.get_realHeight(),0,6408,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,null);
break;
case 5:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33326 : 6406,this.get_realWidth(),this.get_realHeight(),0,6406,5126,null);
break;
case 6:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33325 : 6406,this.get_realWidth(),this.get_realHeight(),0,6406,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,null);
break;
default:
kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_realWidth(),this.get_realHeight(),0,6408,5121,null);
}
if(this.format == kha_graphics4_TextureFormat.DEPTH16) {
kha_SystemImpl.gl.texParameteri(3553,10240,9728);
kha_SystemImpl.gl.texParameteri(3553,10241,9728);
kha_SystemImpl.gl.framebufferTexture2D(36160,36096,3553,this.texture,0);
if(navigator.appVersion.indexOf("Win") == -1) {
var colortex = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(3553,colortex);
kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_realWidth(),this.get_realHeight(),0,6408,5121,null);
kha_SystemImpl.gl.framebufferTexture2D(36160,36064,3553,colortex,0);
kha_SystemImpl.gl.bindTexture(3553,this.texture);
}
} else {
kha_SystemImpl.gl.framebufferTexture2D(36160,36064,3553,this.texture,0);
}
this.initDepthStencilBuffer(this.depthStencilFormat);
if(kha_SystemImpl.gl.checkFramebufferStatus(36160) != 36053) {
haxe_Log.trace("WebGL error: Framebuffer incomplete",{ fileName : "WebGLImage.hx", lineNumber : 205, className : "kha.WebGLImage", methodName : "createTexture"});
}
kha_SystemImpl.gl.bindRenderbuffer(36161,null);
kha_SystemImpl.gl.bindFramebuffer(36160,null);
} else if(this.video != null) {
kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.video);
} else {
var _g1 = this.format;
switch(_g1[1]) {
case 0:
if(js_Boot.__instanceof(this.image,Uint8Array)) {
kha_SystemImpl.gl.texImage2D(3553,0,6408,this.myWidth,this.myHeight,0,6408,5121,this.image);
} else {
kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.image);
}
break;
case 2:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34836 : 6408,this.myWidth,this.myHeight,0,6408,5126,this.image);
break;
case 4:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34842 : 6408,this.myWidth,this.myHeight,0,6408,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,this.image);
break;
case 5:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33326 : 6406,this.myWidth,this.myHeight,0,6406,5126,this.image);
break;
case 6:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33325 : 6406,this.myWidth,this.myHeight,0,6406,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,this.image);
break;
default:
kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.image);
}
}
kha_SystemImpl.gl.bindTexture(3553,null);
}
,initDepthStencilBuffer: function(depthStencilFormat) {
switch(depthStencilFormat) {
case 0:
break;
case 1:case 5:
if(kha_SystemImpl.depthTexture == null) {
this.renderBuffer = kha_SystemImpl.gl.createRenderbuffer();
kha_SystemImpl.gl.bindRenderbuffer(36161,this.renderBuffer);
kha_SystemImpl.gl.renderbufferStorage(36161,33189,this.get_realWidth(),this.get_realHeight());
kha_SystemImpl.gl.framebufferRenderbuffer(36160,36096,36161,this.renderBuffer);
} else {
this.depthTexture = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(3553,this.depthTexture);
if(depthStencilFormat == 1) {
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33190 : 6402,this.get_realWidth(),this.get_realHeight(),0,6402,5125,null);
} else {
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33189 : 6402,this.get_realWidth(),this.get_realHeight(),0,6402,5123,null);
}
kha_SystemImpl.gl.texParameteri(3553,10240,9728);
kha_SystemImpl.gl.texParameteri(3553,10241,9728);
kha_SystemImpl.gl.texParameteri(3553,10242,33071);
kha_SystemImpl.gl.texParameteri(3553,10243,33071);
kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer);
kha_SystemImpl.gl.framebufferTexture2D(36160,36096,3553,this.depthTexture,0);
}
break;
case 2:case 3:case 4:
if(kha_SystemImpl.depthTexture == null) {
this.renderBuffer = kha_SystemImpl.gl.createRenderbuffer();
kha_SystemImpl.gl.bindRenderbuffer(36161,this.renderBuffer);
kha_SystemImpl.gl.renderbufferStorage(36161,34041,this.get_realWidth(),this.get_realHeight());
kha_SystemImpl.gl.framebufferRenderbuffer(36160,33306,36161,this.renderBuffer);
} else {
this.depthTexture = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(3553,this.depthTexture);
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 35056 : 34041,this.get_realWidth(),this.get_realHeight(),0,34041,kha_SystemImpl.depthTexture.UNSIGNED_INT_24_8_WEBGL,null);
kha_SystemImpl.gl.texParameteri(3553,10240,9728);
kha_SystemImpl.gl.texParameteri(3553,10241,9728);
kha_SystemImpl.gl.texParameteri(3553,10242,33071);
kha_SystemImpl.gl.texParameteri(3553,10243,33071);
kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer);
kha_SystemImpl.gl.framebufferTexture2D(36160,33306,3553,this.depthTexture,0);
}
break;
}
}
,set: function(stage) {
kha_SystemImpl.gl.activeTexture(33984 + stage);
kha_SystemImpl.gl.bindTexture(3553,this.texture);
if(this.video != null) {
kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.video);
}
}
,setDepth: function(stage) {
kha_SystemImpl.gl.activeTexture(33984 + stage);
kha_SystemImpl.gl.bindTexture(3553,this.depthTexture);
}
,setDepthStencilFrom: function(image) {
kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer);
kha_SystemImpl.gl.framebufferTexture2D(36160,36096,3553,(js_Boot.__cast(image , kha_WebGLImage)).depthTexture,0);
}
,bytesToArray: function(bytes) {
var _g = this.format;
switch(_g[1]) {
case 0:case 1:
return new Uint8Array(bytes.b.bufferValue);
case 2:case 4:case 5:case 6:
return new Float32Array(bytes.b.bufferValue);
default:
return new Uint8Array(bytes.b.bufferValue);
}
}
,bytes: null
,lock: function(level) {
if(level == null) {
level = 0;
}
this.bytes = new haxe_io_Bytes(new ArrayBuffer(kha_WebGLImage.formatByteSize(this.format) * this.get_width() * this.get_height()));
return this.bytes;
}
,unlock: function() {
if(kha_SystemImpl.gl != null) {
this.texture = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(3553,this.texture);
kha_SystemImpl.gl.texParameteri(3553,10240,9729);
kha_SystemImpl.gl.texParameteri(3553,10241,9729);
kha_SystemImpl.gl.texParameteri(3553,10242,33071);
kha_SystemImpl.gl.texParameteri(3553,10243,33071);
var _g = this.format;
switch(_g[1]) {
case 0:
kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_width(),this.get_height(),0,6408,5121,this.bytesToArray(this.bytes));
break;
case 1:
kha_SystemImpl.gl.texImage2D(3553,0,6409,this.get_width(),this.get_height(),0,6409,5121,this.bytesToArray(this.bytes));
if(kha_SystemImpl.gl.getError() == 1282) {
var rgbaBytes = new haxe_io_Bytes(new ArrayBuffer(this.get_width() * this.get_height() * 4));
var _g1 = 0;
var _g2 = this.get_height();
while(_g1 < _g2) {
var y = _g1++;
var _g3 = 0;
var _g21 = this.get_width();
while(_g3 < _g21) {
var x = _g3++;
var _this = this.bytes;
var pos = y * this.get_width() + x;
var value = _this.b[pos];
var pos1 = y * this.get_width() * 4 + x * 4;
rgbaBytes.b[pos1] = value & 255;
var pos2 = y * this.get_width() * 4 + x * 4 + 1;
rgbaBytes.b[pos2] = value & 255;
var pos3 = y * this.get_width() * 4 + x * 4 + 2;
rgbaBytes.b[pos3] = value & 255;
var pos4 = y * this.get_width() * 4 + x * 4 + 3;
rgbaBytes.b[pos4] = 255;
}
}
kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_width(),this.get_height(),0,6408,5121,this.bytesToArray(rgbaBytes));
}
break;
case 2:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34836 : 6408,this.get_width(),this.get_height(),0,6408,5126,this.bytesToArray(this.bytes));
break;
case 4:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34842 : 6408,this.get_width(),this.get_height(),0,6408,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,this.bytesToArray(this.bytes));
break;
case 5:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33326 : 6406,this.get_width(),this.get_height(),0,6406,5126,this.bytesToArray(this.bytes));
break;
case 6:
kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33325 : 6406,this.get_width(),this.get_height(),0,6406,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,this.bytesToArray(this.bytes));
break;
default:
kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_width(),this.get_height(),0,6408,5121,this.bytesToArray(this.bytes));
}
kha_SystemImpl.gl.bindTexture(3553,null);
this.bytes = null;
}
}
,pixels: null
,getPixels: function() {
if(this.frameBuffer == null) {
return null;
}
if(this.pixels == null) {
this.pixels = new Uint8Array(this.format == kha_graphics4_TextureFormat.RGBA32 ? 4 * this.get_width() * this.get_height() : this.get_width() * this.get_height());
}
kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer);
kha_SystemImpl.gl.readPixels(0,0,this.myWidth,this.myHeight,6408,5121,this.pixels);
return haxe_io_Bytes.ofData(this.pixels.buffer);
}
,unload: function() {
if(this.texture != null) {
kha_SystemImpl.gl.deleteTexture(this.texture);
}
if(this.depthTexture != null) {
kha_SystemImpl.gl.deleteTexture(this.depthTexture);
}
if(this.frameBuffer != null) {
kha_SystemImpl.gl.deleteFramebuffer(this.frameBuffer);
}
if(this.renderBuffer != null) {
kha_SystemImpl.gl.deleteRenderbuffer(this.renderBuffer);
}
}
,generateMipmaps: function(levels) {
kha_SystemImpl.gl.bindTexture(3553,this.texture);
kha_SystemImpl.gl.generateMipmap(3553);
}
,setMipmaps: function(mipmaps) {
kha_SystemImpl.gl.bindTexture(3553,this.texture);
if(this.format == kha_graphics4_TextureFormat.RGBA128) {
var _g1 = 0;
var _g = mipmaps.length;
while(_g1 < _g) {
var i = _g1++;
kha_SystemImpl.gl.texImage2D(3553,i + 1,kha_SystemImpl.gl2 ? 34836 : 6408,mipmaps[i].get_width(),mipmaps[i].get_height(),0,6408,5126,(js_Boot.__cast(mipmaps[i] , kha_WebGLImage)).image);
}
} else if(this.format == kha_graphics4_TextureFormat.RGBA64) {
var _g11 = 0;
var _g2 = mipmaps.length;
while(_g11 < _g2) {
var i1 = _g11++;
kha_SystemImpl.gl.texImage2D(3553,i1 + 1,kha_SystemImpl.gl2 ? 34842 : 6408,mipmaps[i1].get_width(),mipmaps[i1].get_height(),0,6408,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,(js_Boot.__cast(mipmaps[i1] , kha_WebGLImage)).image);
}
} else {
var _g12 = 0;
var _g3 = mipmaps.length;
while(_g12 < _g3) {
var i2 = _g12++;
kha_SystemImpl.gl.texImage2D(3553,i2 + 1,6408,6408,5121,(js_Boot.__cast(mipmaps[i2] , kha_WebGLImage)).image);
}
}
}
,__class__: kha_WebGLImage
});
var kha_WindowMode = $hxClasses["kha.WindowMode"] = { __ename__ : true, __constructs__ : ["Window","BorderlessWindow","Fullscreen"] };
kha_WindowMode.Window = ["Window",0];
kha_WindowMode.Window.toString = $estr;
kha_WindowMode.Window.__enum__ = kha_WindowMode;
kha_WindowMode.BorderlessWindow = ["BorderlessWindow",1];
kha_WindowMode.BorderlessWindow.toString = $estr;
kha_WindowMode.BorderlessWindow.__enum__ = kha_WindowMode;
kha_WindowMode.Fullscreen = ["Fullscreen",2];
kha_WindowMode.Fullscreen.toString = $estr;
kha_WindowMode.Fullscreen.__enum__ = kha_WindowMode;
var kha_Position = $hxClasses["kha.Position"] = { __ename__ : true, __constructs__ : ["Center","Fixed"] };
kha_Position.Center = ["Center",0];
kha_Position.Center.toString = $estr;
kha_Position.Center.__enum__ = kha_Position;
kha_Position.Fixed = function(v) { var $x = ["Fixed",1,v]; $x.__enum__ = kha_Position; $x.toString = $estr; return $x; };
var kha_TargetDisplay = $hxClasses["kha.TargetDisplay"] = { __ename__ : true, __constructs__ : ["Primary","ById"] };
kha_TargetDisplay.Primary = ["Primary",0];
kha_TargetDisplay.Primary.toString = $estr;
kha_TargetDisplay.Primary.__enum__ = kha_TargetDisplay;
kha_TargetDisplay.ById = function(id) { var $x = ["ById",1,id]; $x.__enum__ = kha_TargetDisplay; $x.toString = $estr; return $x; };
var kha_RendererOptions = function(textureFormat,depthStencilFormat,samplesPerPixel) {
this.textureFormat = textureFormat;
this.depthStencilFormat = depthStencilFormat;
this.samplesPerPixel = samplesPerPixel;
};
$hxClasses["kha.RendererOptions"] = kha_RendererOptions;
kha_RendererOptions.__name__ = true;
kha_RendererOptions.prototype = {
textureFormat: null
,depthStencilFormat: null
,samplesPerPixel: null
,__class__: kha_RendererOptions
};
var kha_WindowedModeOptions = function(minimizable,maximizable,resizable) {
this.minimizable = minimizable;
this.maximizable = maximizable;
this.resizable = resizable;
};
$hxClasses["kha.WindowedModeOptions"] = kha_WindowedModeOptions;
kha_WindowedModeOptions.__name__ = true;
kha_WindowedModeOptions.prototype = {
minimizable: null
,maximizable: null
,resizable: null
,__class__: kha_WindowedModeOptions
};
var kha_WindowOptions = function(width,height,mode,title,x,y,targetDisplay,rendererOptions,windowedModeOptions) {
this.width = width;
this.height = height;
this.mode = mode;
this.title = title;
this.x = x;
this.y = y;
this.targetDisplay = targetDisplay;
this.rendererOptions = rendererOptions;
this.windowedModeOptions = windowedModeOptions;
};
$hxClasses["kha.WindowOptions"] = kha_WindowOptions;
kha_WindowOptions.__name__ = true;
kha_WindowOptions.prototype = {
width: null
,height: null
,mode: null
,title: null
,x: null
,y: null
,targetDisplay: null
,rendererOptions: null
,windowedModeOptions: null
,__class__: kha_WindowOptions
};
var kha_arrays__$Float32Array_Float32Array_$Impl_$ = {};
$hxClasses["kha.arrays._Float32Array.Float32Array_Impl_"] = kha_arrays__$Float32Array_Float32Array_$Impl_$;
kha_arrays__$Float32Array_Float32Array_$Impl_$.__name__ = true;
kha_arrays__$Float32Array_Float32Array_$Impl_$._new = function(elements) {
var this1 = new Float32Array(elements);
return this1;
};
kha_arrays__$Float32Array_Float32Array_$Impl_$.get_length = function(this1) {
return this1.length;
};
kha_arrays__$Float32Array_Float32Array_$Impl_$.set = function(this1,index,value) {
return this1[index] = value;
};
kha_arrays__$Float32Array_Float32Array_$Impl_$.get = function(this1,index) {
return this1[index];
};
kha_arrays__$Float32Array_Float32Array_$Impl_$.data = function(this1) {
return this1;
};
kha_arrays__$Float32Array_Float32Array_$Impl_$.arrayRead = function(this1,index) {
return this1[index];
};
kha_arrays__$Float32Array_Float32Array_$Impl_$.arrayWrite = function(this1,index,value) {
return this1[index] = value;
};
kha_arrays__$Float32Array_Float32Array_$Impl_$.subarray = function(this1,start,end) {
return this1.subarray(start,end);
};
var kha_arrays__$Uint32Array_Uint32Array_$Impl_$ = {};
$hxClasses["kha.arrays._Uint32Array.Uint32Array_Impl_"] = kha_arrays__$Uint32Array_Uint32Array_$Impl_$;
kha_arrays__$Uint32Array_Uint32Array_$Impl_$.__name__ = true;
kha_arrays__$Uint32Array_Uint32Array_$Impl_$._new = function(elements) {
var this1 = new Uint32Array(elements);
return this1;
};
kha_arrays__$Uint32Array_Uint32Array_$Impl_$.get_length = function(this1) {
return this1.length;
};
kha_arrays__$Uint32Array_Uint32Array_$Impl_$.set = function(this1,index,value) {
return this1[index] = value;
};
kha_arrays__$Uint32Array_Uint32Array_$Impl_$.get = function(this1,index) {
return this1[index];
};
kha_arrays__$Uint32Array_Uint32Array_$Impl_$.data = function(this1) {
return this1;
};
kha_arrays__$Uint32Array_Uint32Array_$Impl_$.arrayRead = function(this1,index) {
return this1[index];
};
kha_arrays__$Uint32Array_Uint32Array_$Impl_$.arrayWrite = function(this1,index,value) {
return this1[index] = value;
};
kha_arrays__$Uint32Array_Uint32Array_$Impl_$.subarray = function(this1,start,end) {
return this1.subarray(start,end);
};
var kha_audio1_AudioChannel = function() { };
$hxClasses["kha.audio1.AudioChannel"] = kha_audio1_AudioChannel;
kha_audio1_AudioChannel.__name__ = true;
kha_audio1_AudioChannel.prototype = {
play: null
,pause: null
,stop: null
,length: null
,get_length: null
,position: null
,get_position: null
,get_volume: null
,set_volume: null
,finished: null
,get_finished: null
,__class__: kha_audio1_AudioChannel
};
var kha_audio2_Audio = function() { };
$hxClasses["kha.audio2.Audio"] = kha_audio2_Audio;
kha_audio2_Audio.__name__ = true;
kha_audio2_Audio.initContext = function() {
try {
kha_audio2_Audio._context = new AudioContext();
return;
} catch( e ) {
}
try {
this._context = new webkitAudioContext();
return;
} catch( e1 ) {
}
};
kha_audio2_Audio._init = function() {
kha_audio2_Audio.initContext();
if(kha_audio2_Audio._context == null) {
return false;
}
var bufferSize = 2048;
kha_audio2_Audio.buffer = new kha_audio2_Buffer(bufferSize * 4,2,kha_audio2_Audio._context.sampleRate | 0);
kha_audio2_Audio.processingNode = kha_audio2_Audio._context.createScriptProcessor(bufferSize,0,2);
kha_audio2_Audio.processingNode.onaudioprocess = function(e) {
var output1 = e.outputBuffer.getChannelData(0);
var output2 = e.outputBuffer.getChannelData(1);
if(kha_audio2_Audio.audioCallback != null) {
kha_audio2_Audio.audioCallback(e.outputBuffer.length * 2,kha_audio2_Audio.buffer);
var _g1 = 0;
var _g = e.outputBuffer.length;
while(_g1 < _g) {
var i = _g1++;
output1[i] = kha_audio2_Audio.buffer.data[kha_audio2_Audio.buffer.readLocation];
kha_audio2_Audio.buffer.readLocation += 1;
output2[i] = kha_audio2_Audio.buffer.data[kha_audio2_Audio.buffer.readLocation];
kha_audio2_Audio.buffer.readLocation += 1;
if(kha_audio2_Audio.buffer.readLocation >= kha_audio2_Audio.buffer.size) {
kha_audio2_Audio.buffer.readLocation = 0;
}
}
} else {
var _g11 = 0;
var _g2 = e.outputBuffer.length;
while(_g11 < _g2) {
var i1 = _g11++;
output1[i1] = 0;
output2[i1] = 0;
}
}
};
kha_audio2_Audio.processingNode.connect(kha_audio2_Audio._context.destination);
return true;
};
kha_audio2_Audio.stream = function(sound,loop) {
if(loop == null) {
loop = false;
}
var element = window.document.createElement("audio");
var blob = new Blob([sound.compressedData.b.bufferValue],{ type : "audio/mp4"});
element.src = URL.createObjectURL(blob);
element.loop = loop;
var channel = new kha_js_AEAudioChannel(element);
channel.play();
return channel;
};
var kha_audio2_Audio1 = function() { };
$hxClasses["kha.audio2.Audio1"] = kha_audio2_Audio1;
kha_audio2_Audio1.__name__ = true;
kha_audio2_Audio1._init = function() {
var this1 = new Array(16);
kha_audio2_Audio1.soundChannels = this1;
var this2 = new Array(16);
kha_audio2_Audio1.streamChannels = this2;
var this3 = new Array(16);
kha_audio2_Audio1.internalSoundChannels = this3;
var this4 = new Array(16);
kha_audio2_Audio1.internalStreamChannels = this4;
var this5 = new Array(512);
kha_audio2_Audio1.sampleCache1 = this5;
var this6 = new Array(512);
kha_audio2_Audio1.sampleCache2 = this6;
kha_audio2_Audio.audioCallback = kha_audio2_Audio1._mix;
};
kha_audio2_Audio1.max = function(a,b) {
if(a > b) {
return a;
} else {
return b;
}
};
kha_audio2_Audio1.min = function(a,b) {
if(a < b) {
return a;
} else {
return b;
}
};
kha_audio2_Audio1._mix = function(samples,buffer) {
if(kha_audio2_Audio1.sampleCache1.length < samples) {
var this1 = new Array(samples);
kha_audio2_Audio1.sampleCache1 = this1;
var this2 = new Array(samples);
kha_audio2_Audio1.sampleCache2 = this2;
}
var _g1 = 0;
var _g = samples;
while(_g1 < _g) {
var i = _g1++;
kha_audio2_Audio1.sampleCache2[i] = 0;
}
var _g2 = 0;
while(_g2 < 16) {
var i1 = _g2++;
kha_audio2_Audio1.internalSoundChannels[i1] = kha_audio2_Audio1.soundChannels[i1];
}
var _g3 = 0;
while(_g3 < 16) {
var i2 = _g3++;
kha_audio2_Audio1.internalStreamChannels[i2] = kha_audio2_Audio1.streamChannels[i2];
}
var _g4 = 0;
var _g11 = kha_audio2_Audio1.internalSoundChannels;
while(_g4 < _g11.length) {
var channel = _g11[_g4];
++_g4;
if(channel == null || channel.get_finished()) {
continue;
}
channel.nextSamples(kha_audio2_Audio1.sampleCache1,samples,buffer.samplesPerSecond);
var _g31 = 0;
var _g21 = samples;
while(_g31 < _g21) {
var i3 = _g31++;
var _g41 = i3;
var _g5 = kha_audio2_Audio1.sampleCache2;
var val = kha_audio2_Audio1.sampleCache1[i3] * channel.get_volume();
_g5[_g41] = _g5[_g41] + val;
}
}
var _g6 = 0;
var _g12 = kha_audio2_Audio1.internalStreamChannels;
while(_g6 < _g12.length) {
var channel1 = _g12[_g6];
++_g6;
if(channel1 == null || channel1.get_finished()) {
continue;
}
channel1.nextSamples(kha_audio2_Audio1.sampleCache1,samples,buffer.samplesPerSecond);
var _g32 = 0;
var _g22 = samples;
while(_g32 < _g22) {
var i4 = _g32++;
var _g42 = i4;
var _g51 = kha_audio2_Audio1.sampleCache2;
var val1 = kha_audio2_Audio1.sampleCache1[i4] * channel1.get_volume();
_g51[_g42] = _g51[_g42] + val1;
}
}
var _g13 = 0;
var _g7 = samples;
while(_g13 < _g7) {
var i5 = _g13++;
var a = kha_audio2_Audio1.sampleCache2[i5];
var a1 = a < 1.0 ? a : 1.0;
buffer.data[buffer.writeLocation] = a1 > -1.0 ? a1 : -1.0;
buffer.writeLocation += 1;
if(buffer.writeLocation >= buffer.size) {
buffer.writeLocation = 0;
}
}
};
kha_audio2_Audio1.play = function(sound,loop) {
if(loop == null) {
loop = false;
}
var channel = null;
var _g = 0;
while(_g < 16) {
var i = _g++;
if(kha_audio2_Audio1.soundChannels[i] == null || kha_audio2_Audio1.soundChannels[i].get_finished()) {
channel = new kha_audio2_AudioChannel(loop);
channel.data = sound.uncompressedData;
kha_audio2_Audio1.soundChannels[i] = channel;
break;
}
}
return channel;
};
kha_audio2_Audio1._playAgain = function(channel) {
var _g = 0;
while(_g < 16) {
var i = _g++;
if(kha_audio2_Audio1.soundChannels[i] == null || kha_audio2_Audio1.soundChannels[i].get_finished() || kha_audio2_Audio1.soundChannels[i] == channel) {
kha_audio2_Audio1.soundChannels[i] = channel;
break;
}
}
};
kha_audio2_Audio1.stream = function(sound,loop) {
if(loop == null) {
loop = false;
}
var hardwareChannel = kha_audio2_Audio.stream(sound,loop);
if(hardwareChannel != null) {
return hardwareChannel;
}
var channel = null;
var _g = 0;
while(_g < 16) {
var i = _g++;
if(kha_audio2_Audio1.streamChannels[i] == null || kha_audio2_Audio1.streamChannels[i].get_finished()) {
channel = new kha_audio2_StreamChannel(sound.compressedData,loop);
kha_audio2_Audio1.streamChannels[i] = channel;
break;
}
}
return channel;
};
var kha_audio2_AudioChannel = function(looping) {
this.paused = false;
this.looping = looping;
this.myVolume = 1;
this.myPosition = 0;
};
$hxClasses["kha.audio2.AudioChannel"] = kha_audio2_AudioChannel;
kha_audio2_AudioChannel.__name__ = true;
kha_audio2_AudioChannel.__interfaces__ = [kha_audio1_AudioChannel];
kha_audio2_AudioChannel.prototype = {
data: null
,myVolume: null
,myPosition: null
,paused: null
,looping: null
,nextSamples: function(samples,length,sampleRate) {
if(this.paused) {
var _g1 = 0;
var _g = length;
while(_g1 < _g) {
var i = _g1++;
samples[i] = 0;
}
return;
}
var _g11 = 0;
var _g2 = length;
while(_g11 < _g2) {
var i1 = _g11++;
if(this.myPosition >= this.data.length && this.looping) {
this.myPosition = 0;
}
samples[i1] = this.myPosition < this.data.length ? this.data[this.myPosition] : 0;
++this.myPosition;
}
}
,play: function() {
this.paused = false;
if(this.get_finished()) {
this.myPosition = 0;
kha_audio2_Audio1._playAgain(this);
}
}
,pause: function() {
this.paused = true;
}
,stop: function() {
this.myPosition = this.data.length;
}
,length: null
,get_length: function() {
return this.data.length / 44100 / 2;
}
,position: null
,get_position: function() {
return this.myPosition / 44100 / 2;
}
,get_volume: function() {
return this.myVolume;
}
,set_volume: function(value) {
return this.myVolume = value;
}
,finished: null
,get_finished: function() {
return this.myPosition >= this.data.length;
}
,__class__: kha_audio2_AudioChannel
};
var kha_audio2_Buffer = function(size,channels,samplesPerSecond) {
this.size = size;
var this1 = new Array(size);
this.data = this1;
this.channels = channels;
this.samplesPerSecond = samplesPerSecond;
this.readLocation = 0;
this.writeLocation = 0;
};
$hxClasses["kha.audio2.Buffer"] = kha_audio2_Buffer;
kha_audio2_Buffer.__name__ = true;
kha_audio2_Buffer.prototype = {
channels: null
,samplesPerSecond: null
,data: null
,size: null
,readLocation: null
,writeLocation: null
,__class__: kha_audio2_Buffer
};
var kha_audio2_StreamChannel = function(data,loop) {
this.paused = false;
this.atend = false;
this.myVolume = 1;
this.loop = loop;
this.reader = kha_audio2_ogg_vorbis_Reader.openFromBytes(data);
};
$hxClasses["kha.audio2.StreamChannel"] = kha_audio2_StreamChannel;
kha_audio2_StreamChannel.__name__ = true;
kha_audio2_StreamChannel.__interfaces__ = [kha_audio1_AudioChannel];
kha_audio2_StreamChannel.prototype = {
reader: null
,atend: null
,loop: null
,myVolume: null
,paused: null
,nextSamples: function(samples,length,sampleRate) {
if(this.paused) {
var _g1 = 0;
var _g = length;
while(_g1 < _g) {
var i = _g1++;
samples[i] = 0;
}
return;
}
var count = this.reader.read(samples,length / 2 | 0,2,sampleRate,true) * 2;
if(count < length) {
if(this.loop) {
this.reader.set_currentMillisecond(0);
} else {
this.atend = true;
}
var _g11 = count;
var _g2 = length;
while(_g11 < _g2) {
var i1 = _g11++;
samples[i1] = 0;
}
}
}
,play: function() {
this.paused = false;
}
,pause: function() {
this.paused = true;
}
,stop: function() {
this.atend = true;
}
,length: null
,get_length: function() {
return this.reader.get_totalMillisecond() / 1000.0;
}
,position: null
,get_position: function() {
return this.reader.get_currentMillisecond() / 1000.0;
}
,get_volume: function() {
return this.myVolume;
}
,set_volume: function(value) {
return this.myVolume = value;
}
,finished: null
,get_finished: function() {
return this.atend;
}
,__class__: kha_audio2_StreamChannel
};
var kha_audio2_ogg_tools_Crc32 = function() { };
$hxClasses["kha.audio2.ogg.tools.Crc32"] = kha_audio2_ogg_tools_Crc32;
kha_audio2_ogg_tools_Crc32.__name__ = true;
kha_audio2_ogg_tools_Crc32.init = function() {
if(kha_audio2_ogg_tools_Crc32.table != null) {
return;
}
var this1 = new Array(256);
kha_audio2_ogg_tools_Crc32.table = this1;
var _g = 0;
while(_g < 256) {
var i = _g++;
var s = i << 24;
var _g1 = 0;
while(_g1 < 8) {
var j = _g1++;
s = s << 1 ^ (_$UInt_UInt_$Impl_$.gte(s,1 << 31) ? 79764919 : 0);
}
kha_audio2_ogg_tools_Crc32.table[i] = s;
}
};
kha_audio2_ogg_tools_Crc32.update = function(crc,$byte) {
return crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[$byte ^ crc >>> 24];
};
var kha_audio2_ogg_tools_MathTools = function() { };
$hxClasses["kha.audio2.ogg.tools.MathTools"] = kha_audio2_ogg_tools_MathTools;
kha_audio2_ogg_tools_MathTools.__name__ = true;
kha_audio2_ogg_tools_MathTools.ilog = function(n) {
var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
if(n < 16384) {
if(n < 16) {
return log2_4[n];
} else if(n < 512) {
return 5 + log2_4[n >> 5];
} else {
return 10 + log2_4[n >> 10];
}
} else if(n < 16777216) {
if(n < 524288) {
return 15 + log2_4[n >> 15];
} else {
return 20 + log2_4[n >> 20];
}
} else if(n < 536870912) {
return 25 + log2_4[n >> 25];
} else if(n < -2147483648) {
return 30 + log2_4[n >> 30];
} else {
return 0;
}
};
var kha_audio2_ogg_tools_Mdct = function() { };
$hxClasses["kha.audio2.ogg.tools.Mdct"] = kha_audio2_ogg_tools_Mdct;
kha_audio2_ogg_tools_Mdct.__name__ = true;
kha_audio2_ogg_tools_Mdct.inverseTransform = function(buffer,n,a,b,c,bitReverse) {
var n2 = n >> 1;
var n4 = n >> 2;
var n8 = n >> 3;
var this1 = new Array(n2);
var buf2 = this1;
var dOffset = n2 - 2;
var aaOffset = 0;
var eOffset = 0;
var eStopOffset = n2;
while(eOffset != eStopOffset) {
buf2[dOffset + 1] = buffer[eOffset] * a[aaOffset] - buffer[eOffset + 2] * a[aaOffset + 1];
buf2[dOffset] = buffer[eOffset] * a[aaOffset + 1] + buffer[eOffset + 2] * a[aaOffset];
dOffset -= 2;
aaOffset += 2;
eOffset += 4;
}
eOffset = n2 - 3;
while(dOffset >= 0) {
buf2[dOffset + 1] = -buffer[eOffset + 2] * a[aaOffset] - -buffer[eOffset] * a[aaOffset + 1];
buf2[dOffset] = -buffer[eOffset + 2] * a[aaOffset + 1] + -buffer[eOffset] * a[aaOffset];
dOffset -= 2;
aaOffset += 2;
eOffset -= 4;
}
var u = buffer;
var v = buf2;
var aaOffset1 = n2 - 8;
var eOffset0 = n4;
var eOffset1 = 0;
var dOffset0 = n4;
var dOffset1 = 0;
while(aaOffset1 >= 0) {
var v41_21 = v[eOffset0 + 1] - v[eOffset1 + 1];
var v40_20 = v[eOffset0] - v[eOffset1];
u[dOffset0 + 1] = v[eOffset0 + 1] + v[eOffset1 + 1];
u[dOffset0] = v[eOffset0] + v[eOffset1];
u[dOffset1 + 1] = v41_21 * a[aaOffset1 + 4] - v40_20 * a[aaOffset1 + 5];
u[dOffset1] = v40_20 * a[aaOffset1 + 4] + v41_21 * a[aaOffset1 + 5];
v41_21 = v[eOffset0 + 3] - v[eOffset1 + 3];
v40_20 = v[eOffset0 + 2] - v[eOffset1 + 2];
u[dOffset0 + 3] = v[eOffset0 + 3] + v[eOffset1 + 3];
u[dOffset0 + 2] = v[eOffset0 + 2] + v[eOffset1 + 2];
u[dOffset1 + 3] = v41_21 * a[aaOffset1] - v40_20 * a[aaOffset1 + 1];
u[dOffset1 + 2] = v40_20 * a[aaOffset1] + v41_21 * a[aaOffset1 + 1];
aaOffset1 -= 8;
dOffset0 += 4;
dOffset1 += 4;
eOffset0 += 4;
eOffset1 += 4;
}
var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
var ld = (n < 16384 ? n < 16 ? log2_4[n] : n < 512 ? 5 + log2_4[n >> 5] : 10 + log2_4[n >> 10] : n < 16777216 ? n < 524288 ? 15 + log2_4[n >> 15] : 20 + log2_4[n >> 20] : n < 536870912 ? 25 + log2_4[n >> 25] : n < -2147483648 ? 30 + log2_4[n >> 30] : 0) - 1;
var i_off = n2 - 1 - n4 * 0;
var eeOffset0 = i_off;
var eeOffset2 = i_off + -(n >> 3);
var aOffset = 0;
var i = (n >> 4 >> 2) + 1;
while(--i > 0) {
var k00_20 = u[eeOffset0] - u[eeOffset2];
var k01_21 = u[eeOffset0 + -1] - u[eeOffset2 + -1];
var _g = eeOffset0;
var _g1 = u;
_g1[_g] = _g1[_g] + u[eeOffset2];
var _g2 = eeOffset0 + -1;
var _g11 = u;
_g11[_g2] = _g11[_g2] + u[eeOffset2 + -1];
u[eeOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
u[eeOffset2 + -1] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
k00_20 = u[eeOffset0 + -2] - u[eeOffset2 + -2];
k01_21 = u[eeOffset0 + -3] - u[eeOffset2 + -3];
var _g3 = eeOffset0 + -2;
var _g12 = u;
_g12[_g3] = _g12[_g3] + u[eeOffset2 + -2];
var _g4 = eeOffset0 + -3;
var _g13 = u;
_g13[_g4] = _g13[_g4] + u[eeOffset2 + -3];
u[eeOffset2 + -2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
u[eeOffset2 + -3] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
k00_20 = u[eeOffset0 + -4] - u[eeOffset2 + -4];
k01_21 = u[eeOffset0 + -5] - u[eeOffset2 + -5];
var _g5 = eeOffset0 + -4;
var _g14 = u;
_g14[_g5] = _g14[_g5] + u[eeOffset2 + -4];
var _g6 = eeOffset0 + -5;
var _g15 = u;
_g15[_g6] = _g15[_g6] + u[eeOffset2 + -5];
u[eeOffset2 + -4] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
u[eeOffset2 + -5] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
k00_20 = u[eeOffset0 + -6] - u[eeOffset2 + -6];
k01_21 = u[eeOffset0 + -7] - u[eeOffset2 + -7];
var _g7 = eeOffset0 + -6;
var _g16 = u;
_g16[_g7] = _g16[_g7] + u[eeOffset2 + -6];
var _g8 = eeOffset0 + -7;
var _g17 = u;
_g17[_g8] = _g17[_g8] + u[eeOffset2 + -7];
u[eeOffset2 + -6] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
u[eeOffset2 + -7] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
eeOffset0 -= 8;
eeOffset2 -= 8;
}
var i_off1 = n2 - 1 - n4;
var eeOffset01 = i_off1;
var eeOffset21 = i_off1 + -(n >> 3);
var aOffset1 = 0;
var i1 = (n >> 4 >> 2) + 1;
while(--i1 > 0) {
var k00_201 = u[eeOffset01] - u[eeOffset21];
var k01_211 = u[eeOffset01 + -1] - u[eeOffset21 + -1];
var _g9 = eeOffset01;
var _g18 = u;
_g18[_g9] = _g18[_g9] + u[eeOffset21];
var _g10 = eeOffset01 + -1;
var _g19 = u;
_g19[_g10] = _g19[_g10] + u[eeOffset21 + -1];
u[eeOffset21] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1];
u[eeOffset21 + -1] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1];
aOffset1 += 8;
k00_201 = u[eeOffset01 + -2] - u[eeOffset21 + -2];
k01_211 = u[eeOffset01 + -3] - u[eeOffset21 + -3];
var _g20 = eeOffset01 + -2;
var _g110 = u;
_g110[_g20] = _g110[_g20] + u[eeOffset21 + -2];
var _g21 = eeOffset01 + -3;
var _g111 = u;
_g111[_g21] = _g111[_g21] + u[eeOffset21 + -3];
u[eeOffset21 + -2] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1];
u[eeOffset21 + -3] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1];
aOffset1 += 8;
k00_201 = u[eeOffset01 + -4] - u[eeOffset21 + -4];
k01_211 = u[eeOffset01 + -5] - u[eeOffset21 + -5];
var _g22 = eeOffset01 + -4;
var _g112 = u;
_g112[_g22] = _g112[_g22] + u[eeOffset21 + -4];
var _g23 = eeOffset01 + -5;
var _g113 = u;
_g113[_g23] = _g113[_g23] + u[eeOffset21 + -5];
u[eeOffset21 + -4] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1];
u[eeOffset21 + -5] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1];
aOffset1 += 8;
k00_201 = u[eeOffset01 + -6] - u[eeOffset21 + -6];
k01_211 = u[eeOffset01 + -7] - u[eeOffset21 + -7];
var _g24 = eeOffset01 + -6;
var _g114 = u;
_g114[_g24] = _g114[_g24] + u[eeOffset21 + -6];
var _g25 = eeOffset01 + -7;
var _g115 = u;
_g115[_g25] = _g115[_g25] + u[eeOffset21 + -7];
u[eeOffset21 + -6] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1];
u[eeOffset21 + -7] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1];
aOffset1 += 8;
eeOffset01 -= 8;
eeOffset21 -= 8;
}
var d0 = n2 - 1 - n8 * 0;
var aOffset2 = 0;
var eOffset01 = d0;
var eOffset2 = d0 + -(n >> 4);
var i2 = (n >> 5 >> 2) + 1;
while(--i2 > 0) {
var k00_202 = u[eOffset01] - u[eOffset2];
var k01_212 = u[eOffset01 + -1] - u[eOffset2 + -1];
var _g26 = eOffset01;
var _g116 = u;
_g116[_g26] = _g116[_g26] + u[eOffset2];
var _g27 = eOffset01 + -1;
var _g117 = u;
_g117[_g27] = _g117[_g27] + u[eOffset2 + -1];
u[eOffset2] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1];
u[eOffset2 + -1] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1];
aOffset2 += 16;
k00_202 = u[eOffset01 + -2] - u[eOffset2 + -2];
k01_212 = u[eOffset01 + -3] - u[eOffset2 + -3];
var _g28 = eOffset01 + -2;
var _g118 = u;
_g118[_g28] = _g118[_g28] + u[eOffset2 + -2];
var _g29 = eOffset01 + -3;
var _g119 = u;
_g119[_g29] = _g119[_g29] + u[eOffset2 + -3];
u[eOffset2 + -2] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1];
u[eOffset2 + -3] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1];
aOffset2 += 16;
k00_202 = u[eOffset01 + -4] - u[eOffset2 + -4];
k01_212 = u[eOffset01 + -5] - u[eOffset2 + -5];
var _g30 = eOffset01 + -4;
var _g120 = u;
_g120[_g30] = _g120[_g30] + u[eOffset2 + -4];
var _g31 = eOffset01 + -5;
var _g121 = u;
_g121[_g31] = _g121[_g31] + u[eOffset2 + -5];
u[eOffset2 + -4] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1];
u[eOffset2 + -5] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1];
aOffset2 += 16;
k00_202 = u[eOffset01 + -6] - u[eOffset2 + -6];
k01_212 = u[eOffset01 + -7] - u[eOffset2 + -7];
var _g32 = eOffset01 + -6;
var _g122 = u;
_g122[_g32] = _g122[_g32] + u[eOffset2 + -6];
var _g33 = eOffset01 + -7;
var _g123 = u;
_g123[_g33] = _g123[_g33] + u[eOffset2 + -7];
u[eOffset2 + -6] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1];
u[eOffset2 + -7] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1];
eOffset01 -= 8;
eOffset2 -= 8;
aOffset2 += 16;
}
var d01 = n2 - 1 - n8;
var aOffset3 = 0;
var eOffset02 = d01;
var eOffset21 = d01 + -(n >> 4);
var i3 = (n >> 5 >> 2) + 1;
while(--i3 > 0) {
var k00_203 = u[eOffset02] - u[eOffset21];
var k01_213 = u[eOffset02 + -1] - u[eOffset21 + -1];
var _g34 = eOffset02;
var _g124 = u;
_g124[_g34] = _g124[_g34] + u[eOffset21];
var _g35 = eOffset02 + -1;
var _g125 = u;
_g125[_g35] = _g125[_g35] + u[eOffset21 + -1];
u[eOffset21] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1];
u[eOffset21 + -1] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1];
aOffset3 += 16;
k00_203 = u[eOffset02 + -2] - u[eOffset21 + -2];
k01_213 = u[eOffset02 + -3] - u[eOffset21 + -3];
var _g36 = eOffset02 + -2;
var _g126 = u;
_g126[_g36] = _g126[_g36] + u[eOffset21 + -2];
var _g37 = eOffset02 + -3;
var _g127 = u;
_g127[_g37] = _g127[_g37] + u[eOffset21 + -3];
u[eOffset21 + -2] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1];
u[eOffset21 + -3] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1];
aOffset3 += 16;
k00_203 = u[eOffset02 + -4] - u[eOffset21 + -4];
k01_213 = u[eOffset02 + -5] - u[eOffset21 + -5];
var _g38 = eOffset02 + -4;
var _g128 = u;
_g128[_g38] = _g128[_g38] + u[eOffset21 + -4];
var _g39 = eOffset02 + -5;
var _g129 = u;
_g129[_g39] = _g129[_g39] + u[eOffset21 + -5];
u[eOffset21 + -4] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1];
u[eOffset21 + -5] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1];
aOffset3 += 16;
k00_203 = u[eOffset02 + -6] - u[eOffset21 + -6];
k01_213 = u[eOffset02 + -7] - u[eOffset21 + -7];
var _g40 = eOffset02 + -6;
var _g130 = u;
_g130[_g40] = _g130[_g40] + u[eOffset21 + -6];
var _g41 = eOffset02 + -7;
var _g131 = u;
_g131[_g41] = _g131[_g41] + u[eOffset21 + -7];
u[eOffset21 + -6] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1];
u[eOffset21 + -7] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1];
eOffset02 -= 8;
eOffset21 -= 8;
aOffset3 += 16;
}
var d02 = n2 - 1 - n8 * 2;
var aOffset4 = 0;
var eOffset03 = d02;
var eOffset22 = d02 + -(n >> 4);
var i4 = (n >> 5 >> 2) + 1;
while(--i4 > 0) {
var k00_204 = u[eOffset03] - u[eOffset22];
var k01_214 = u[eOffset03 + -1] - u[eOffset22 + -1];
var _g42 = eOffset03;
var _g132 = u;
_g132[_g42] = _g132[_g42] + u[eOffset22];
var _g43 = eOffset03 + -1;
var _g133 = u;
_g133[_g43] = _g133[_g43] + u[eOffset22 + -1];
u[eOffset22] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1];
u[eOffset22 + -1] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1];
aOffset4 += 16;
k00_204 = u[eOffset03 + -2] - u[eOffset22 + -2];
k01_214 = u[eOffset03 + -3] - u[eOffset22 + -3];
var _g44 = eOffset03 + -2;
var _g134 = u;
_g134[_g44] = _g134[_g44] + u[eOffset22 + -2];
var _g45 = eOffset03 + -3;
var _g135 = u;
_g135[_g45] = _g135[_g45] + u[eOffset22 + -3];
u[eOffset22 + -2] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1];
u[eOffset22 + -3] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1];
aOffset4 += 16;
k00_204 = u[eOffset03 + -4] - u[eOffset22 + -4];
k01_214 = u[eOffset03 + -5] - u[eOffset22 + -5];
var _g46 = eOffset03 + -4;
var _g136 = u;
_g136[_g46] = _g136[_g46] + u[eOffset22 + -4];
var _g47 = eOffset03 + -5;
var _g137 = u;
_g137[_g47] = _g137[_g47] + u[eOffset22 + -5];
u[eOffset22 + -4] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1];
u[eOffset22 + -5] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1];
aOffset4 += 16;
k00_204 = u[eOffset03 + -6] - u[eOffset22 + -6];
k01_214 = u[eOffset03 + -7] - u[eOffset22 + -7];
var _g48 = eOffset03 + -6;
var _g138 = u;
_g138[_g48] = _g138[_g48] + u[eOffset22 + -6];
var _g49 = eOffset03 + -7;
var _g139 = u;
_g139[_g49] = _g139[_g49] + u[eOffset22 + -7];
u[eOffset22 + -6] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1];
u[eOffset22 + -7] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1];
eOffset03 -= 8;
eOffset22 -= 8;
aOffset4 += 16;
}
var d03 = n2 - 1 - n8 * 3;
var aOffset5 = 0;
var eOffset04 = d03;
var eOffset23 = d03 + -(n >> 4);
var i5 = (n >> 5 >> 2) + 1;
while(--i5 > 0) {
var k00_205 = u[eOffset04] - u[eOffset23];
var k01_215 = u[eOffset04 + -1] - u[eOffset23 + -1];
var _g50 = eOffset04;
var _g140 = u;
_g140[_g50] = _g140[_g50] + u[eOffset23];
var _g51 = eOffset04 + -1;
var _g141 = u;
_g141[_g51] = _g141[_g51] + u[eOffset23 + -1];
u[eOffset23] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1];
u[eOffset23 + -1] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1];
aOffset5 += 16;
k00_205 = u[eOffset04 + -2] - u[eOffset23 + -2];
k01_215 = u[eOffset04 + -3] - u[eOffset23 + -3];
var _g52 = eOffset04 + -2;
var _g142 = u;
_g142[_g52] = _g142[_g52] + u[eOffset23 + -2];
var _g53 = eOffset04 + -3;
var _g143 = u;
_g143[_g53] = _g143[_g53] + u[eOffset23 + -3];
u[eOffset23 + -2] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1];
u[eOffset23 + -3] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1];
aOffset5 += 16;
k00_205 = u[eOffset04 + -4] - u[eOffset23 + -4];
k01_215 = u[eOffset04 + -5] - u[eOffset23 + -5];
var _g54 = eOffset04 + -4;
var _g144 = u;
_g144[_g54] = _g144[_g54] + u[eOffset23 + -4];
var _g55 = eOffset04 + -5;
var _g145 = u;
_g145[_g55] = _g145[_g55] + u[eOffset23 + -5];
u[eOffset23 + -4] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1];
u[eOffset23 + -5] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1];
aOffset5 += 16;
k00_205 = u[eOffset04 + -6] - u[eOffset23 + -6];
k01_215 = u[eOffset04 + -7] - u[eOffset23 + -7];
var _g56 = eOffset04 + -6;
var _g146 = u;
_g146[_g56] = _g146[_g56] + u[eOffset23 + -6];
var _g57 = eOffset04 + -7;
var _g147 = u;
_g147[_g57] = _g147[_g57] + u[eOffset23 + -7];
u[eOffset23 + -6] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1];
u[eOffset23 + -7] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1];
eOffset04 -= 8;
eOffset23 -= 8;
aOffset5 += 16;
}
var _g148 = 2;
var _g58 = ld - 3 >> 1;
while(_g148 < _g58) {
var l = _g148++;
var k0 = n >> l + 2;
var k0_2 = k0 >> 1;
var lim = 1 << l + 1;
var _g310 = 0;
var _g210 = lim;
while(_g310 < _g210) {
var i6 = _g310++;
var d04 = n2 - 1 - k0 * i6;
var k1 = 1 << l + 3;
var aOffset6 = 0;
var eOffset05 = d04;
var eOffset24 = d04 + -k0_2;
var i7 = (n >> l + 4 >> 2) + 1;
while(--i7 > 0) {
var k00_206 = u[eOffset05] - u[eOffset24];
var k01_216 = u[eOffset05 + -1] - u[eOffset24 + -1];
var _g59 = eOffset05;
var _g149 = u;
_g149[_g59] = _g149[_g59] + u[eOffset24];
var _g60 = eOffset05 + -1;
var _g150 = u;
_g150[_g60] = _g150[_g60] + u[eOffset24 + -1];
u[eOffset24] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1];
u[eOffset24 + -1] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1];
aOffset6 += k1;
k00_206 = u[eOffset05 + -2] - u[eOffset24 + -2];
k01_216 = u[eOffset05 + -3] - u[eOffset24 + -3];
var _g61 = eOffset05 + -2;
var _g151 = u;
_g151[_g61] = _g151[_g61] + u[eOffset24 + -2];
var _g62 = eOffset05 + -3;
var _g152 = u;
_g152[_g62] = _g152[_g62] + u[eOffset24 + -3];
u[eOffset24 + -2] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1];
u[eOffset24 + -3] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1];
aOffset6 += k1;
k00_206 = u[eOffset05 + -4] - u[eOffset24 + -4];
k01_216 = u[eOffset05 + -5] - u[eOffset24 + -5];
var _g63 = eOffset05 + -4;
var _g153 = u;
_g153[_g63] = _g153[_g63] + u[eOffset24 + -4];
var _g64 = eOffset05 + -5;
var _g154 = u;
_g154[_g64] = _g154[_g64] + u[eOffset24 + -5];
u[eOffset24 + -4] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1];
u[eOffset24 + -5] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1];
aOffset6 += k1;
k00_206 = u[eOffset05 + -6] - u[eOffset24 + -6];
k01_216 = u[eOffset05 + -7] - u[eOffset24 + -7];
var _g65 = eOffset05 + -6;
var _g155 = u;
_g155[_g65] = _g155[_g65] + u[eOffset24 + -6];
var _g66 = eOffset05 + -7;
var _g156 = u;
_g156[_g66] = _g156[_g66] + u[eOffset24 + -7];
u[eOffset24 + -6] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1];
u[eOffset24 + -7] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1];
eOffset05 -= 8;
eOffset24 -= 8;
aOffset6 += k1;
}
}
}
var _g157 = ld - 3 >> 1;
var _g67 = ld - 6;
while(_g157 < _g67) {
var l1 = _g157++;
var k01 = n >> l1 + 2;
var k11 = 1 << l1 + 3;
var k0_21 = k01 >> 1;
var rlim = n >> l1 + 6;
var lim1 = 1 << l1 + 1;
var aOffset7 = 0;
var i_off2 = n2 - 1;
var r = rlim + 1;
while(--r > 0) {
var A0 = a[aOffset7];
var A1 = a[aOffset7 + 1];
var A2 = a[aOffset7 + k11];
var A3 = a[aOffset7 + k11 + 1];
var A4 = a[aOffset7 + k11 * 2];
var A5 = a[aOffset7 + k11 * 2 + 1];
var A6 = a[aOffset7 + k11 * 3];
var A7 = a[aOffset7 + k11 * 3 + 1];
var eeOffset02 = i_off2;
var eeOffset22 = i_off2 + -k0_21;
var i8 = lim1 + 1;
while(--i8 > 0) {
var k00 = u[eeOffset02] - u[eeOffset22];
var k111 = u[eeOffset02 + -1] - u[eeOffset22 + -1];
u[eeOffset02] = u[eeOffset02] + u[eeOffset22];
u[eeOffset02 + -1] = u[eeOffset02 + -1] + u[eeOffset22 + -1];
u[eeOffset22] = k00 * A0 - k111 * A1;
u[eeOffset22 + -1] = k111 * A0 + k00 * A1;
k00 = u[eeOffset02 + -2] - u[eeOffset22 + -2];
k111 = u[eeOffset02 + -3] - u[eeOffset22 + -3];
u[eeOffset02 + -2] = u[eeOffset02 + -2] + u[eeOffset22 + -2];
u[eeOffset02 + -3] = u[eeOffset02 + -3] + u[eeOffset22 + -3];
u[eeOffset22 + -2] = k00 * A2 - k111 * A3;
u[eeOffset22 + -3] = k111 * A2 + k00 * A3;
k00 = u[eeOffset02 + -4] - u[eeOffset22 + -4];
k111 = u[eeOffset02 + -5] - u[eeOffset22 + -5];
u[eeOffset02 + -4] = u[eeOffset02 + -4] + u[eeOffset22 + -4];
u[eeOffset02 + -5] = u[eeOffset02 + -5] + u[eeOffset22 + -5];
u[eeOffset22 + -4] = k00 * A4 - k111 * A5;
u[eeOffset22 + -5] = k111 * A4 + k00 * A5;
k00 = u[eeOffset02 + -6] - u[eeOffset22 + -6];
k111 = u[eeOffset02 + -7] - u[eeOffset22 + -7];
u[eeOffset02 + -6] = u[eeOffset02 + -6] + u[eeOffset22 + -6];
u[eeOffset02 + -7] = u[eeOffset02 + -7] + u[eeOffset22 + -7];
u[eeOffset22 + -6] = k00 * A6 - k111 * A7;
u[eeOffset22 + -7] = k111 * A6 + k00 * A7;
eeOffset02 -= k01;
eeOffset22 -= k01;
}
aOffset7 += k11 * 4;
i_off2 -= 8;
}
}
var i_off3 = n2 - 1;
var A21 = a[n >> 3];
var zOffset = i_off3;
var baseOffset = i_off3 - 16 * (n >> 5);
while(zOffset > baseOffset) {
var t0 = u[zOffset];
var t1 = u[zOffset + -8];
u[zOffset + -8] = t0 - t1;
u[zOffset] = t0 + t1;
t0 = u[zOffset + -1];
t1 = u[zOffset + -9];
u[zOffset + -9] = t0 - t1;
u[zOffset + -1] = t0 + t1;
t0 = u[zOffset + -2];
t1 = u[zOffset + -10];
var k001 = t0 - t1;
u[zOffset + -2] = t0 + t1;
t0 = u[zOffset + -3];
t1 = u[zOffset + -11];
var k112 = t0 - t1;
u[zOffset + -3] = t0 + t1;
u[zOffset + -10] = (k001 + k112) * A21;
u[zOffset + -11] = (k112 - k001) * A21;
t0 = u[zOffset + -4];
t1 = u[zOffset + -12];
k001 = t1 - t0;
u[zOffset + -4] = t0 + t1;
t0 = u[zOffset + -5];
t1 = u[zOffset + -13];
k112 = t0 - t1;
u[zOffset + -5] = t0 + t1;
u[zOffset + -12] = k112;
u[zOffset + -13] = k001;
t0 = u[zOffset + -6];
t1 = u[zOffset + -14];
k001 = t1 - t0;
u[zOffset + -6] = t0 + t1;
t0 = u[zOffset + -7];
t1 = u[zOffset + -15];
k112 = t0 - t1;
u[zOffset + -7] = t0 + t1;
u[zOffset + -14] = (k001 + k112) * A21;
u[zOffset + -15] = (k001 - k112) * A21;
var t01 = u[zOffset];
var t11 = u[zOffset + -4];
var k002 = t01 - t11;
var y0 = t01 + t11;
t01 = u[zOffset + -2];
t11 = u[zOffset + -6];
var y2 = t01 + t11;
var k22 = t01 - t11;
u[zOffset] = y0 + y2;
u[zOffset + -2] = y0 - y2;
var k33 = u[zOffset + -3] - u[zOffset + -7];
u[zOffset + -4] = k002 + k33;
u[zOffset + -6] = k002 - k33;
t01 = u[zOffset + -1];
t11 = u[zOffset + -5];
var k113 = t01 - t11;
var y1 = t01 + t11;
var y3 = u[zOffset + -3] + u[zOffset + -7];
u[zOffset + -1] = y1 + y3;
u[zOffset + -3] = y1 - y3;
u[zOffset + -5] = k113 - k22;
u[zOffset + -7] = k113 + k22;
var zOffset1 = zOffset - 8;
var t02 = u[zOffset1];
var t12 = u[zOffset1 + -4];
var k003 = t02 - t12;
var y01 = t02 + t12;
t02 = u[zOffset1 + -2];
t12 = u[zOffset1 + -6];
var y21 = t02 + t12;
var k221 = t02 - t12;
u[zOffset1] = y01 + y21;
u[zOffset1 + -2] = y01 - y21;
var k331 = u[zOffset1 + -3] - u[zOffset1 + -7];
u[zOffset1 + -4] = k003 + k331;
u[zOffset1 + -6] = k003 - k331;
t02 = u[zOffset1 + -1];
t12 = u[zOffset1 + -5];
var k114 = t02 - t12;
var y11 = t02 + t12;
var y31 = u[zOffset1 + -3] + u[zOffset1 + -7];
u[zOffset1 + -1] = y11 + y31;
u[zOffset1 + -3] = y11 - y31;
u[zOffset1 + -5] = k114 - k221;
u[zOffset1 + -7] = k114 + k221;
zOffset -= 16;
}
var brOffset = 0;
var dOffset01 = n4 - 4;
var dOffset11 = n2 - 4;
while(dOffset01 >= 0) {
var k4 = bitReverse[brOffset];
v[dOffset11 + 3] = u[k4];
v[dOffset11 + 2] = u[k4 + 1];
v[dOffset01 + 3] = u[k4 + 2];
v[dOffset01 + 2] = u[k4 + 3];
k4 = bitReverse[brOffset + 1];
v[dOffset11 + 1] = u[k4];
v[dOffset11] = u[k4 + 1];
v[dOffset01 + 1] = u[k4 + 2];
v[dOffset01] = u[k4 + 3];
dOffset01 -= 4;
dOffset11 -= 4;
brOffset += 2;
}
var cOffset = 0;
var dOffset2 = 0;
var eOffset3 = n2 - 4;
while(dOffset2 < eOffset3) {
var a02 = v[dOffset2] - v[eOffset3 + 2];
var a11 = v[dOffset2 + 1] + v[eOffset3 + 3];
var b0 = c[cOffset + 1] * a02 + c[cOffset] * a11;
var b1 = c[cOffset + 1] * a11 - c[cOffset] * a02;
var b2 = v[dOffset2] + v[eOffset3 + 2];
var b3 = v[dOffset2 + 1] - v[eOffset3 + 3];
v[dOffset2] = b2 + b0;
v[dOffset2 + 1] = b3 + b1;
v[eOffset3 + 2] = b2 - b0;
v[eOffset3 + 3] = b1 - b3;
a02 = v[dOffset2 + 2] - v[eOffset3];
a11 = v[dOffset2 + 3] + v[eOffset3 + 1];
b0 = c[cOffset + 3] * a02 + c[cOffset + 2] * a11;
b1 = c[cOffset + 3] * a11 - c[cOffset + 2] * a02;
b2 = v[dOffset2 + 2] + v[eOffset3];
b3 = v[dOffset2 + 3] - v[eOffset3 + 1];
v[dOffset2 + 2] = b2 + b0;
v[dOffset2 + 3] = b3 + b1;
v[eOffset3] = b2 - b0;
v[eOffset3 + 1] = b1 - b3;
cOffset += 4;
dOffset2 += 4;
eOffset3 -= 4;
}
var bOffset = n2 - 8;
var eOffset4 = n2 - 8;
var dOffset02 = 0;
var dOffset12 = n2 - 4;
var dOffset21 = n2;
var dOffset3 = n - 4;
while(eOffset4 >= 0) {
var p3 = buf2[eOffset4 + 6] * b[bOffset + 7] - buf2[eOffset4 + 7] * b[bOffset + 6];
var p2 = -buf2[eOffset4 + 6] * b[bOffset + 6] - buf2[eOffset4 + 7] * b[bOffset + 7];
buffer[dOffset02] = p3;
buffer[dOffset12 + 3] = -p3;
buffer[dOffset21] = p2;
buffer[dOffset3 + 3] = p2;
var p1 = buf2[eOffset4 + 4] * b[bOffset + 5] - buf2[eOffset4 + 5] * b[bOffset + 4];
var p0 = -buf2[eOffset4 + 4] * b[bOffset + 4] - buf2[eOffset4 + 5] * b[bOffset + 5];
buffer[dOffset02 + 1] = p1;
buffer[dOffset12 + 2] = -p1;
buffer[dOffset21 + 1] = p0;
buffer[dOffset3 + 2] = p0;
p3 = buf2[eOffset4 + 2] * b[bOffset + 3] - buf2[eOffset4 + 3] * b[bOffset + 2];
p2 = -buf2[eOffset4 + 2] * b[bOffset + 2] - buf2[eOffset4 + 3] * b[bOffset + 3];
buffer[dOffset02 + 2] = p3;
buffer[dOffset12 + 1] = -p3;
buffer[dOffset21 + 2] = p2;
buffer[dOffset3 + 1] = p2;
p1 = buf2[eOffset4] * b[bOffset + 1] - buf2[eOffset4 + 1] * b[bOffset];
p0 = -buf2[eOffset4] * b[bOffset] - buf2[eOffset4 + 1] * b[bOffset + 1];
buffer[dOffset02 + 3] = p1;
buffer[dOffset12] = -p1;
buffer[dOffset21 + 3] = p0;
buffer[dOffset3] = p0;
bOffset -= 8;
eOffset4 -= 8;
dOffset02 += 4;
dOffset21 += 4;
dOffset12 -= 4;
dOffset3 -= 4;
}
};
kha_audio2_ogg_tools_Mdct.step3Iter0Loop = function(n,e,i_off,k_off,a) {
var eeOffset0 = i_off;
var eeOffset2 = i_off + k_off;
var aOffset = 0;
var i = (n >> 2) + 1;
while(--i > 0) {
var k00_20 = e[eeOffset0] - e[eeOffset2];
var k01_21 = e[eeOffset0 + -1] - e[eeOffset2 + -1];
var _g = eeOffset0;
var _g1 = e;
_g1[_g] = _g1[_g] + e[eeOffset2];
var _g2 = eeOffset0 + -1;
var _g11 = e;
_g11[_g2] = _g11[_g2] + e[eeOffset2 + -1];
e[eeOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
e[eeOffset2 + -1] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
k00_20 = e[eeOffset0 + -2] - e[eeOffset2 + -2];
k01_21 = e[eeOffset0 + -3] - e[eeOffset2 + -3];
var _g3 = eeOffset0 + -2;
var _g12 = e;
_g12[_g3] = _g12[_g3] + e[eeOffset2 + -2];
var _g4 = eeOffset0 + -3;
var _g13 = e;
_g13[_g4] = _g13[_g4] + e[eeOffset2 + -3];
e[eeOffset2 + -2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
e[eeOffset2 + -3] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
k00_20 = e[eeOffset0 + -4] - e[eeOffset2 + -4];
k01_21 = e[eeOffset0 + -5] - e[eeOffset2 + -5];
var _g5 = eeOffset0 + -4;
var _g14 = e;
_g14[_g5] = _g14[_g5] + e[eeOffset2 + -4];
var _g6 = eeOffset0 + -5;
var _g15 = e;
_g15[_g6] = _g15[_g6] + e[eeOffset2 + -5];
e[eeOffset2 + -4] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
e[eeOffset2 + -5] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
k00_20 = e[eeOffset0 + -6] - e[eeOffset2 + -6];
k01_21 = e[eeOffset0 + -7] - e[eeOffset2 + -7];
var _g7 = eeOffset0 + -6;
var _g16 = e;
_g16[_g7] = _g16[_g7] + e[eeOffset2 + -6];
var _g8 = eeOffset0 + -7;
var _g17 = e;
_g17[_g8] = _g17[_g8] + e[eeOffset2 + -7];
e[eeOffset2 + -6] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
e[eeOffset2 + -7] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
eeOffset0 -= 8;
eeOffset2 -= 8;
}
};
kha_audio2_ogg_tools_Mdct.step3InnerRLoop = function(lim,e,d0,k_off,a,k1) {
var aOffset = 0;
var eOffset0 = d0;
var eOffset2 = d0 + k_off;
var i = (lim >> 2) + 1;
while(--i > 0) {
var k00_20 = e[eOffset0] - e[eOffset2];
var k01_21 = e[eOffset0 + -1] - e[eOffset2 + -1];
var _g = eOffset0;
var _g1 = e;
_g1[_g] = _g1[_g] + e[eOffset2];
var _g2 = eOffset0 + -1;
var _g11 = e;
_g11[_g2] = _g11[_g2] + e[eOffset2 + -1];
e[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
e[eOffset2 + -1] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += k1;
k00_20 = e[eOffset0 + -2] - e[eOffset2 + -2];
k01_21 = e[eOffset0 + -3] - e[eOffset2 + -3];
var _g3 = eOffset0 + -2;
var _g12 = e;
_g12[_g3] = _g12[_g3] + e[eOffset2 + -2];
var _g4 = eOffset0 + -3;
var _g13 = e;
_g13[_g4] = _g13[_g4] + e[eOffset2 + -3];
e[eOffset2 + -2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
e[eOffset2 + -3] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += k1;
k00_20 = e[eOffset0 + -4] - e[eOffset2 + -4];
k01_21 = e[eOffset0 + -5] - e[eOffset2 + -5];
var _g5 = eOffset0 + -4;
var _g14 = e;
_g14[_g5] = _g14[_g5] + e[eOffset2 + -4];
var _g6 = eOffset0 + -5;
var _g15 = e;
_g15[_g6] = _g15[_g6] + e[eOffset2 + -5];
e[eOffset2 + -4] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
e[eOffset2 + -5] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += k1;
k00_20 = e[eOffset0 + -6] - e[eOffset2 + -6];
k01_21 = e[eOffset0 + -7] - e[eOffset2 + -7];
var _g7 = eOffset0 + -6;
var _g16 = e;
_g16[_g7] = _g16[_g7] + e[eOffset2 + -6];
var _g8 = eOffset0 + -7;
var _g17 = e;
_g17[_g8] = _g17[_g8] + e[eOffset2 + -7];
e[eOffset2 + -6] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
e[eOffset2 + -7] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
eOffset0 -= 8;
eOffset2 -= 8;
aOffset += k1;
}
};
kha_audio2_ogg_tools_Mdct.step3InnerSLoop = function(n,e,i_off,k_off,a,aOffset0,aOffset1,k0) {
var A0 = a[aOffset0];
var A1 = a[aOffset0 + 1];
var A2 = a[aOffset0 + aOffset1];
var A3 = a[aOffset0 + aOffset1 + 1];
var A4 = a[aOffset0 + aOffset1 * 2];
var A5 = a[aOffset0 + aOffset1 * 2 + 1];
var A6 = a[aOffset0 + aOffset1 * 3];
var A7 = a[aOffset0 + aOffset1 * 3 + 1];
var eeOffset0 = i_off;
var eeOffset2 = i_off + k_off;
var i = n + 1;
while(--i > 0) {
var k00 = e[eeOffset0] - e[eeOffset2];
var k11 = e[eeOffset0 + -1] - e[eeOffset2 + -1];
e[eeOffset0] = e[eeOffset0] + e[eeOffset2];
e[eeOffset0 + -1] = e[eeOffset0 + -1] + e[eeOffset2 + -1];
e[eeOffset2] = k00 * A0 - k11 * A1;
e[eeOffset2 + -1] = k11 * A0 + k00 * A1;
k00 = e[eeOffset0 + -2] - e[eeOffset2 + -2];
k11 = e[eeOffset0 + -3] - e[eeOffset2 + -3];
e[eeOffset0 + -2] = e[eeOffset0 + -2] + e[eeOffset2 + -2];
e[eeOffset0 + -3] = e[eeOffset0 + -3] + e[eeOffset2 + -3];
e[eeOffset2 + -2] = k00 * A2 - k11 * A3;
e[eeOffset2 + -3] = k11 * A2 + k00 * A3;
k00 = e[eeOffset0 + -4] - e[eeOffset2 + -4];
k11 = e[eeOffset0 + -5] - e[eeOffset2 + -5];
e[eeOffset0 + -4] = e[eeOffset0 + -4] + e[eeOffset2 + -4];
e[eeOffset0 + -5] = e[eeOffset0 + -5] + e[eeOffset2 + -5];
e[eeOffset2 + -4] = k00 * A4 - k11 * A5;
e[eeOffset2 + -5] = k11 * A4 + k00 * A5;
k00 = e[eeOffset0 + -6] - e[eeOffset2 + -6];
k11 = e[eeOffset0 + -7] - e[eeOffset2 + -7];
e[eeOffset0 + -6] = e[eeOffset0 + -6] + e[eeOffset2 + -6];
e[eeOffset0 + -7] = e[eeOffset0 + -7] + e[eeOffset2 + -7];
e[eeOffset2 + -6] = k00 * A6 - k11 * A7;
e[eeOffset2 + -7] = k11 * A6 + k00 * A7;
eeOffset0 -= k0;
eeOffset2 -= k0;
}
};
kha_audio2_ogg_tools_Mdct.iter54 = function(e,zOffset) {
var t0 = e[zOffset];
var t1 = e[zOffset + -4];
var k00 = t0 - t1;
var y0 = t0 + t1;
t0 = e[zOffset + -2];
t1 = e[zOffset + -6];
var y2 = t0 + t1;
var k22 = t0 - t1;
e[zOffset] = y0 + y2;
e[zOffset + -2] = y0 - y2;
var k33 = e[zOffset + -3] - e[zOffset + -7];
e[zOffset + -4] = k00 + k33;
e[zOffset + -6] = k00 - k33;
t0 = e[zOffset + -1];
t1 = e[zOffset + -5];
var k11 = t0 - t1;
var y1 = t0 + t1;
var y3 = e[zOffset + -3] + e[zOffset + -7];
e[zOffset + -1] = y1 + y3;
e[zOffset + -3] = y1 - y3;
e[zOffset + -5] = k11 - k22;
e[zOffset + -7] = k11 + k22;
};
kha_audio2_ogg_tools_Mdct.step3InnerSLoopLd654 = function(n,e,i_off,a,baseN) {
var A2 = a[baseN >> 3];
var zOffset = i_off;
var baseOffset = i_off - 16 * n;
while(zOffset > baseOffset) {
var t0 = e[zOffset];
var t1 = e[zOffset + -8];
e[zOffset + -8] = t0 - t1;
e[zOffset] = t0 + t1;
t0 = e[zOffset + -1];
t1 = e[zOffset + -9];
e[zOffset + -9] = t0 - t1;
e[zOffset + -1] = t0 + t1;
t0 = e[zOffset + -2];
t1 = e[zOffset + -10];
var k00 = t0 - t1;
e[zOffset + -2] = t0 + t1;
t0 = e[zOffset + -3];
t1 = e[zOffset + -11];
var k11 = t0 - t1;
e[zOffset + -3] = t0 + t1;
e[zOffset + -10] = (k00 + k11) * A2;
e[zOffset + -11] = (k11 - k00) * A2;
t0 = e[zOffset + -4];
t1 = e[zOffset + -12];
k00 = t1 - t0;
e[zOffset + -4] = t0 + t1;
t0 = e[zOffset + -5];
t1 = e[zOffset + -13];
k11 = t0 - t1;
e[zOffset + -5] = t0 + t1;
e[zOffset + -12] = k11;
e[zOffset + -13] = k00;
t0 = e[zOffset + -6];
t1 = e[zOffset + -14];
k00 = t1 - t0;
e[zOffset + -6] = t0 + t1;
t0 = e[zOffset + -7];
t1 = e[zOffset + -15];
k11 = t0 - t1;
e[zOffset + -7] = t0 + t1;
e[zOffset + -14] = (k00 + k11) * A2;
e[zOffset + -15] = (k00 - k11) * A2;
var t01 = e[zOffset];
var t11 = e[zOffset + -4];
var k001 = t01 - t11;
var y0 = t01 + t11;
t01 = e[zOffset + -2];
t11 = e[zOffset + -6];
var y2 = t01 + t11;
var k22 = t01 - t11;
e[zOffset] = y0 + y2;
e[zOffset + -2] = y0 - y2;
var k33 = e[zOffset + -3] - e[zOffset + -7];
e[zOffset + -4] = k001 + k33;
e[zOffset + -6] = k001 - k33;
t01 = e[zOffset + -1];
t11 = e[zOffset + -5];
var k111 = t01 - t11;
var y1 = t01 + t11;
var y3 = e[zOffset + -3] + e[zOffset + -7];
e[zOffset + -1] = y1 + y3;
e[zOffset + -3] = y1 - y3;
e[zOffset + -5] = k111 - k22;
e[zOffset + -7] = k111 + k22;
var zOffset1 = zOffset - 8;
var t02 = e[zOffset1];
var t12 = e[zOffset1 + -4];
var k002 = t02 - t12;
var y01 = t02 + t12;
t02 = e[zOffset1 + -2];
t12 = e[zOffset1 + -6];
var y21 = t02 + t12;
var k221 = t02 - t12;
e[zOffset1] = y01 + y21;
e[zOffset1 + -2] = y01 - y21;
var k331 = e[zOffset1 + -3] - e[zOffset1 + -7];
e[zOffset1 + -4] = k002 + k331;
e[zOffset1 + -6] = k002 - k331;
t02 = e[zOffset1 + -1];
t12 = e[zOffset1 + -5];
var k112 = t02 - t12;
var y11 = t02 + t12;
var y31 = e[zOffset1 + -3] + e[zOffset1 + -7];
e[zOffset1 + -1] = y11 + y31;
e[zOffset1 + -3] = y11 - y31;
e[zOffset1 + -5] = k112 - k221;
e[zOffset1 + -7] = k112 + k221;
zOffset -= 16;
}
};
var kha_audio2_ogg_vorbis_Reader = function(input,seekFunc,inputLength) {
this.seekFunc = seekFunc;
this.inputLength = inputLength;
this.decoder = kha_audio2_ogg_vorbis_VorbisDecoder.start(input);
this.decoder.setupSampleNumber(seekFunc,inputLength);
this.loopStart = this.get_header().comment.get_loopStart();
this.loopLength = this.get_header().comment.get_loopLength();
};
$hxClasses["kha.audio2.ogg.vorbis.Reader"] = kha_audio2_ogg_vorbis_Reader;
kha_audio2_ogg_vorbis_Reader.__name__ = true;
kha_audio2_ogg_vorbis_Reader.openFromBytes = function(bytes) {
var input = new haxe_io_BytesInput(bytes);
var a1 = input;
return new kha_audio2_ogg_vorbis_Reader(input,function(a2) {
kha_audio2_ogg_vorbis_Reader.seekBytes(a1,a2);
},bytes.length);
};
kha_audio2_ogg_vorbis_Reader.seekBytes = function(bytes,pos) {
bytes.set_position(pos);
};
kha_audio2_ogg_vorbis_Reader.readAll = function(bytes,output,useFloat) {
if(useFloat == null) {
useFloat = false;
}
var input = new haxe_io_BytesInput(bytes);
var decoder = kha_audio2_ogg_vorbis_VorbisDecoder.start(input);
var a1 = input;
decoder.setupSampleNumber(function(a2) {
kha_audio2_ogg_vorbis_Reader.seekBytes(a1,a2);
},bytes.length);
var header = decoder.header;
var count = 0;
var bufferSize = 4096;
var length = bufferSize * header.channel;
var this1 = new Array(length);
var buffer = this1;
while(true) {
var n = decoder.read(buffer,bufferSize,header.channel,header.sampleRate,useFloat);
var _g1 = 0;
var _g = n * header.channel;
while(_g1 < _g) {
var i = _g1++;
output.writeFloat(buffer[i]);
}
if(n == 0) {
break;
}
count += n;
}
return decoder.header;
};
kha_audio2_ogg_vorbis_Reader.prototype = {
decoder: null
,get_header: function() {
return this.decoder.header;
}
,get_totalSample: function() {
return this.decoder.totalSample;
}
,get_totalMillisecond: function() {
var samples = this.decoder.totalSample;
var b = this.get_header().sampleRate;
return _$UInt_UInt_$Impl_$.toFloat(samples) / _$UInt_UInt_$Impl_$.toFloat(b) * 1000;
}
,get_currentSample: function() {
return this.decoder.currentSample;
}
,set_currentSample: function(value) {
this.decoder.seek(this.seekFunc,this.inputLength,value);
return this.decoder.currentSample;
}
,get_currentMillisecond: function() {
var samples = this.get_currentSample();
var b = this.get_header().sampleRate;
return _$UInt_UInt_$Impl_$.toFloat(samples) / _$UInt_UInt_$Impl_$.toFloat(b) * 1000;
}
,set_currentMillisecond: function(value) {
var _g = value / 1000;
var _g1 = this.get_header().sampleRate;
this.set_currentSample(Math.floor(_$UInt_UInt_$Impl_$.toFloat(_g1) * _g));
return this.get_currentMillisecond();
}
,loopStart: null
,loopLength: null
,seekFunc: null
,inputLength: null
,read: function(output,samples,channels,sampleRate,useFloat) {
if(useFloat == null) {
useFloat = false;
}
this.decoder.ensurePosition(this.seekFunc);
if(samples == null) {
samples = this.decoder.totalSample;
}
if(channels == null) {
channels = this.get_header().channel;
}
if(sampleRate == null) {
sampleRate = this.get_header().sampleRate;
}
return this.decoder.read(output,samples,channels,sampleRate,useFloat);
}
,clone: function() {
var reader = Type.createEmptyInstance(kha_audio2_ogg_vorbis_Reader);
reader.seekFunc = this.seekFunc;
reader.inputLength = this.inputLength;
reader.decoder = this.decoder.clone(this.seekFunc);
reader.loopStart = this.loopStart;
reader.loopLength = this.loopLength;
return reader;
}
,sampleToMillisecond: function(samples) {
var b = this.get_header().sampleRate;
return _$UInt_UInt_$Impl_$.toFloat(samples) / _$UInt_UInt_$Impl_$.toFloat(b) * 1000;
}
,millisecondToSample: function(millseconds) {
var _g = millseconds / 1000;
var _g1 = this.get_header().sampleRate;
return Math.floor(_$UInt_UInt_$Impl_$.toFloat(_g1) * _g);
}
,__class__: kha_audio2_ogg_vorbis_Reader
};
var kha_audio2_ogg_vorbis_VorbisDecodeState = function(input) {
this.nextSeg = 0;
this.firstDecode = false;
this.bytesInSeg = 0;
this.validBits = 0;
this.input = input;
this.inputPosition = 0;
this.page = new kha_audio2_ogg_vorbis_data_Page();
kha_audio2_ogg_tools_Crc32.init();
};
$hxClasses["kha.audio2.ogg.vorbis.VorbisDecodeState"] = kha_audio2_ogg_vorbis_VorbisDecodeState;
kha_audio2_ogg_vorbis_VorbisDecodeState.__name__ = true;
kha_audio2_ogg_vorbis_VorbisDecodeState.prototype = {
page: null
,eof: null
,pFirst: null
,pLast: null
,validBits: null
,inputPosition: null
,input: null
,discardSamplesDeferred: null
,segments: null
,bytesInSeg: null
,channelBuffers: null
,channelBufferStart: null
,channelBufferEnd: null
,currentSample: null
,previousWindow: null
,previousLength: null
,finalY: null
,firstDecode: null
,nextSeg: null
,acc: null
,lastSeg: null
,lastSegWhich: null
,endSegWithKnownLoc: null
,knownLocForPacket: null
,error: null
,currentLoc: null
,currentLocValid: null
,firstAudioPageOffset: null
,setup: function(loc0,loc1) {
this.inputPosition += 1;
var segmentCount = this.input.readByte();
this.inputPosition += segmentCount;
var this1 = new Array(segmentCount);
var vec = this1;
var _g1 = 0;
var _g = segmentCount;
while(_g1 < _g) {
var i = _g1++;
vec[i] = this.input.readByte();
}
this.segments = vec;
this.endSegWithKnownLoc = -2;
if(loc0 != -1 || loc1 != -1) {
var i1 = segmentCount - 1;
while(i1 >= 0) {
if(this.segments[i1] < 255) {
break;
}
if(i1 >= 0) {
this.endSegWithKnownLoc = i1;
this.knownLocForPacket = loc0;
}
--i1;
}
}
if(this.firstDecode) {
var i2 = 0;
var len = 0;
var p = new kha_audio2_ogg_vorbis_data_ProbedPage();
var _g11 = 0;
var _g2 = segmentCount;
while(_g11 < _g2) {
var i3 = _g11++;
len += this.segments[i3];
}
len += 27 + segmentCount;
p.pageStart = this.firstAudioPageOffset;
p.pageEnd = p.pageStart + len;
p.firstDecodedSample = 0;
p.lastDecodedSample = loc0;
this.pFirst = p;
}
this.nextSeg = 0;
}
,clone: function(seekFunc) {
var state = Type.createEmptyInstance(kha_audio2_ogg_vorbis_VorbisDecodeState);
seekFunc(this.inputPosition);
state.input = this.input;
state.eof = this.eof;
state.validBits = this.validBits;
state.discardSamplesDeferred = this.discardSamplesDeferred;
state.firstDecode = this.firstDecode;
state.nextSeg = this.nextSeg;
state.bytesInSeg = this.bytesInSeg;
state.acc = state.acc;
state.lastSeg = this.lastSeg;
state.lastSegWhich = this.lastSegWhich;
state.currentLoc = this.currentLoc;
state.currentLocValid = this.currentLocValid;
state.inputPosition = this.inputPosition;
state.firstAudioPageOffset = this.firstAudioPageOffset;
state.error = this.error;
state.segments = this.segments;
state.pFirst = this.pFirst;
state.pLast = this.pLast;
state.page = this.page.clone();
return state;
}
,next: function() {
if(this.lastSeg) {
return 0;
}
if(this.nextSeg == -1) {
this.lastSegWhich = this.segments.length - 1;
try {
this.page.start(this);
} catch( e ) {
if (e instanceof js__$Boot_HaxeError) e = e.val;
if( js_Boot.__instanceof(e,kha_audio2_ogg_vorbis_data_ReaderError) ) {
this.lastSeg = true;
this.error = e;
return 0;
} else throw(e);
}
if((this.page.flag & 1) == 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 171, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "next"}));
}
}
var len = this.segments[this.nextSeg++];
if(len < 255) {
this.lastSeg = true;
this.lastSegWhich = this.nextSeg - 1;
}
if(this.nextSeg >= this.segments.length) {
this.nextSeg = -1;
}
var b = this.bytesInSeg == 0;
this.bytesInSeg = len;
return len;
}
,startPacket: function() {
while(this.nextSeg == -1) {
this.page.start(this);
if((this.page.flag & 1) != 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 193, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "startPacket"}));
}
}
this.lastSeg = false;
this.validBits = 0;
this.bytesInSeg = 0;
}
,maybeStartPacket: function() {
if(this.nextSeg == -1) {
var eof = false;
var x;
try {
this.inputPosition += 1;
x = this.input.readByte();
} catch( e ) {
if (e instanceof js__$Boot_HaxeError) e = e.val;
if( js_Boot.__instanceof(e,haxe_io_Eof) ) {
eof = true;
x = 0;
} else throw(e);
}
if(eof) {
return false;
}
var tmp;
var tmp1;
var tmp2;
if(x == 79) {
this.inputPosition += 1;
tmp2 = this.input.readByte() != 103;
} else {
tmp2 = true;
}
if(!tmp2) {
this.inputPosition += 1;
tmp1 = this.input.readByte() != 103;
} else {
tmp1 = true;
}
if(!tmp1) {
this.inputPosition += 1;
tmp = this.input.readByte() != 83;
} else {
tmp = true;
}
if(tmp) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 218, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "maybeStartPacket"}));
}
this.page.startWithoutCapturePattern(this);
}
this.startPacket();
return true;
}
,readBits: function(n) {
if(this.validBits < 0) {
return 0;
} else if(this.validBits < n) {
if(n > 24) {
return this.readBits(24) + (this.readBits(n - 24) << 24);
} else {
if(this.validBits == 0) {
this.acc = 0;
}
while(true) {
if(this.bytesInSeg == 0 && (this.lastSeg || this.next() == 0)) {
this.validBits = -1;
break;
} else {
this.bytesInSeg--;
this.inputPosition += 1;
this.acc = this.acc + (this.input.readByte() << this.validBits);
this.validBits += 8;
}
if(!(this.validBits < n)) {
break;
}
}
if(this.validBits < 0) {
return 0;
} else {
var z = this.acc & (1 << n) - 1;
this.acc = this.acc >>> n;
this.validBits -= n;
return z;
}
}
} else {
var z1 = this.acc & (1 << n) - 1;
this.acc = this.acc >>> n;
this.validBits -= n;
return z1;
}
}
,readPacketRaw: function() {
if(this.bytesInSeg == 0 && (this.lastSeg || this.next() == 0)) {
return -1;
} else {
this.bytesInSeg--;
this.inputPosition += 1;
return this.input.readByte();
}
}
,readPacket: function() {
var x;
if(this.bytesInSeg == 0 && (this.lastSeg || this.next() == 0)) {
x = -1;
} else {
this.bytesInSeg--;
this.inputPosition += 1;
x = this.input.readByte();
}
this.validBits = 0;
return x;
}
,flushPacket: function() {
while(this.bytesInSeg != 0 || !this.lastSeg && this.next() != 0) {
this.bytesInSeg--;
this.inputPosition += 1;
this.input.readByte();
}
}
,vorbisValidate: function() {
var header = new haxe_io_Bytes(new ArrayBuffer(6));
var _g = 0;
while(_g < 6) {
var i = _g++;
var x;
if(this.bytesInSeg == 0 && (this.lastSeg || this.next() == 0)) {
x = -1;
} else {
this.bytesInSeg--;
this.inputPosition += 1;
x = this.input.readByte();
}
this.validBits = 0;
header.b[i] = x & 255;
}
if(header.toString() != "vorbis") {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{ fileName : "VorbisDecodeState.hx", lineNumber : 300, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "vorbisValidate"}));
}
}
,firstPageValidate: function() {
if(this.segments.length != 1) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"segmentCount",{ fileName : "VorbisDecodeState.hx", lineNumber : 307, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "firstPageValidate"}));
}
if(this.segments[0] != 30) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"decodeState head",{ fileName : "VorbisDecodeState.hx", lineNumber : 310, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "firstPageValidate"}));
}
}
,startFirstDecode: function() {
this.firstAudioPageOffset = this.inputPosition;
this.firstDecode = true;
}
,capturePattern: function() {
var tmp;
var tmp1;
var tmp2;
this.inputPosition += 1;
if(this.input.readByte() == 79) {
this.inputPosition += 1;
tmp2 = this.input.readByte() != 103;
} else {
tmp2 = true;
}
if(!tmp2) {
this.inputPosition += 1;
tmp1 = this.input.readByte() != 103;
} else {
tmp1 = true;
}
if(!tmp1) {
this.inputPosition += 1;
tmp = this.input.readByte() != 83;
} else {
tmp = true;
}
if(tmp) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 323, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "capturePattern"}));
}
}
,skip: function(len) {
this.inputPosition += len;
var this1 = new Array(len);
var vec = this1;
var _g1 = 0;
var _g = len;
while(_g1 < _g) {
var i = _g1++;
vec[i] = this.input.readByte();
}
}
,prepHuffman: function() {
if(this.validBits <= 24) {
if(this.validBits == 0) {
this.acc = 0;
}
while(true) {
if(this.bytesInSeg == 0 && (this.lastSeg || this.next() == 0)) {
return;
} else {
this.bytesInSeg--;
this.inputPosition += 1;
this.acc = this.acc + (this.input.readByte() << this.validBits);
this.validBits += 8;
}
if(!(this.validBits <= 24)) {
break;
}
}
}
}
,decode: function(c) {
if(this.validBits < 10) {
this.prepHuffman();
}
var i = c.fastHuffman[this.acc & 1023];
var val;
if(i >= 0) {
var l = c.codewordLengths[i];
this.acc = this.acc >>> l;
this.validBits -= l;
if(this.validBits < 0) {
this.validBits = 0;
val = -1;
} else {
val = i;
}
} else {
val = this.decodeScalarRaw(c);
}
if(c.sparse) {
val = c.sortedValues[val];
}
return val;
}
,decodeRaw: function(c) {
if(this.validBits < 10) {
this.prepHuffman();
}
var i = c.fastHuffman[this.acc & 1023];
if(i >= 0) {
var l = c.codewordLengths[i];
this.acc = this.acc >>> l;
this.validBits -= l;
if(this.validBits < 0) {
this.validBits = 0;
return -1;
} else {
return i;
}
} else {
return this.decodeScalarRaw(c);
}
}
,isLastByte: function() {
if(this.bytesInSeg == 0) {
return this.lastSeg;
} else {
return false;
}
}
,finishDecodePacket: function(previousLength,n,r) {
var left = r.left.start;
var currentLocValid = false;
var n2 = n >> 1;
if(this.firstDecode) {
this.currentLoc = -n2;
this.discardSamplesDeferred = n - r.right.end;
currentLocValid = true;
this.firstDecode = false;
} else if(this.discardSamplesDeferred != 0) {
r.left.start += this.discardSamplesDeferred;
left = r.left.start;
this.discardSamplesDeferred = 0;
} else {
var tmp = previousLength == 0 && currentLocValid;
}
if(this.lastSegWhich == this.endSegWithKnownLoc) {
if(currentLocValid && (this.page.flag & 4) != 0) {
var currentEnd = this.knownLocForPacket - (n - r.right.end);
if(currentEnd < this.currentLoc + r.right.end) {
var len = currentEnd < this.currentLoc ? 0 : currentEnd - this.currentLoc;
len += r.left.start;
this.currentLoc += len;
return { len : len, left : left, right : r.right.start};
}
}
this.currentLoc = this.knownLocForPacket - (n2 - r.left.start);
currentLocValid = true;
}
if(currentLocValid) {
this.currentLoc += r.right.start - r.left.start;
}
return { len : r.right.end, left : left, right : r.right.start};
}
,readInt32: function() {
this.inputPosition += 4;
return this.input.readInt32();
}
,readByte: function() {
this.inputPosition += 1;
return this.input.readByte();
}
,read: function(n) {
this.inputPosition += n;
var this1 = new Array(n);
var vec = this1;
var _g1 = 0;
var _g = n;
while(_g1 < _g) {
var i = _g1++;
vec[i] = this.input.readByte();
}
return vec;
}
,readBytes: function(n) {
this.inputPosition += n;
return this.input.read(n);
}
,readString: function(n) {
this.inputPosition += n;
return this.input.readString(n);
}
,getSampleNumber: function(seekFunc,inputLength) {
var restoreOffset = this.inputPosition;
var previousSafe = _$UInt_UInt_$Impl_$.gte(inputLength,65536) && _$UInt_UInt_$Impl_$.gte(inputLength - 65536,this.firstAudioPageOffset) ? inputLength - 65536 : this.firstAudioPageOffset;
seekFunc(this.inputPosition = previousSafe);
var end = 0;
var last = false;
var _g = this.findPage(seekFunc,inputLength);
switch(_g[1]) {
case 0:
var l = _g[3];
var e = _g[2];
end = e;
last = l;
break;
case 1:
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 518, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "getSampleNumber"}));
break;
}
var lastPageLoc = this.inputPosition;
try {
while(!last) {
seekFunc(this.inputPosition = end);
var _g1 = this.findPage(seekFunc,inputLength);
switch(_g1[1]) {
case 0:
var l1 = _g1[3];
var e1 = _g1[2];
end = e1;
last = l1;
break;
case 1:
throw "__break__";
break;
}
previousSafe = lastPageLoc + 1;
lastPageLoc = this.inputPosition;
}
} catch( e ) { if( e != "__break__" ) throw e; }
seekFunc(this.inputPosition = lastPageLoc);
this.inputPosition += 6;
var this1 = new Array(6);
var vec = this1;
var _g11 = 0;
var _g2 = 6;
while(_g11 < _g2) {
var i = _g11++;
vec[i] = this.input.readByte();
}
var vorbisHeader = vec;
this.inputPosition += 4;
var lo = this.input.readInt32();
this.inputPosition += 4;
var hi = this.input.readInt32();
if(lo == -1 && hi == -1 || hi > 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 552, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "getSampleNumber"}));
}
this.pLast = new kha_audio2_ogg_vorbis_data_ProbedPage();
this.pLast.pageStart = lastPageLoc;
this.pLast.pageEnd = end;
this.pLast.lastDecodedSample = lo;
this.pLast.firstDecodedSample = null;
this.pLast.afterPreviousPageStart = previousSafe;
seekFunc(this.inputPosition = restoreOffset);
return lo;
}
,forcePageResync: function() {
this.nextSeg = -1;
}
,setInputOffset: function(seekFunc,n) {
seekFunc(this.inputPosition = n);
}
,findPage: function(seekFunc,inputLength) {
try {
while(true) {
this.inputPosition += 1;
var n = this.input.readByte();
if(n == 79) {
var retryLoc = this.inputPosition;
if(retryLoc - 25 > inputLength) {
return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound;
}
var tmp;
var tmp1;
this.inputPosition += 1;
if(this.input.readByte() == 103) {
this.inputPosition += 1;
tmp1 = this.input.readByte() != 103;
} else {
tmp1 = true;
}
if(!tmp1) {
this.inputPosition += 1;
tmp = this.input.readByte() != 83;
} else {
tmp = true;
}
if(tmp) {
continue;
}
var this1 = new Array(27);
var header = this1;
header[0] = 79;
header[1] = 103;
header[2] = 103;
header[3] = 83;
var _g = 4;
while(_g < 27) {
var i = _g++;
this.inputPosition += 1;
header[i] = this.input.readByte();
}
if(header[4] != 0) {
seekFunc(this.inputPosition = retryLoc);
continue;
}
var goal = header[22] + (header[23] << 8) + (header[24] << 16) + (header[25] << 24);
var _g1 = 22;
while(_g1 < 26) {
var i1 = _g1++;
header[i1] = 0;
}
var crc = 0;
var _g2 = 0;
while(_g2 < 27) {
var i2 = _g2++;
crc = crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[header[i2] ^ crc >>> 24];
}
var len = 0;
try {
var _g11 = 0;
var _g3 = header[26];
while(_g11 < _g3) {
var i3 = _g11++;
this.inputPosition += 1;
var s = this.input.readByte();
crc = crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[s ^ crc >>> 24];
len += s;
}
var _g12 = 0;
var _g4 = len;
while(_g12 < _g4) {
var i4 = _g12++;
this.inputPosition += 1;
var $byte = this.input.readByte();
crc = crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[$byte ^ crc >>> 24];
}
} catch( e ) {
if (e instanceof js__$Boot_HaxeError) e = e.val;
if( js_Boot.__instanceof(e,haxe_io_Eof) ) {
return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound;
} else throw(e);
}
if(crc == goal) {
var end = this.inputPosition;
seekFunc(this.inputPosition = retryLoc - 1);
return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.Found(end,(header[5] & 4) != 0);
}
}
}
} catch( e1 ) {
if (e1 instanceof js__$Boot_HaxeError) e1 = e1.val;
if( js_Boot.__instanceof(e1,haxe_io_Eof) ) {
return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound;
} else throw(e1);
}
}
,analyzePage: function(seekFunc,h) {
var z = new kha_audio2_ogg_vorbis_data_ProbedPage();
var this1 = new Array(255);
var packetType = this1;
z.pageStart = this.inputPosition;
this.inputPosition += 27;
var this2 = new Array(27);
var vec = this2;
var _g1 = 0;
var _g = 27;
while(_g1 < _g) {
var i = _g1++;
vec[i] = this.input.readByte();
}
var pageHeader = vec;
var n = pageHeader[26];
this.inputPosition += n;
var this3 = new Array(n);
var vec1 = this3;
var _g11 = 0;
var _g2 = n;
while(_g11 < _g2) {
var i1 = _g11++;
vec1[i1] = this.input.readByte();
}
var lacing = vec1;
var len = 0;
var _g12 = 0;
var _g3 = pageHeader[26];
while(_g12 < _g3) {
var i2 = _g12++;
len += lacing[i2];
}
z.pageEnd = z.pageStart + 27 + pageHeader[26] + len;
z.lastDecodedSample = pageHeader[6] + (pageHeader[7] << 8) + (pageHeader[8] << 16) + (pageHeader[9] << 16);
if((pageHeader[5] & 4) != 0) {
z.firstDecodedSample = null;
seekFunc(this.inputPosition = z.pageStart);
return z;
}
var numPacket = 0;
var packetStart = (pageHeader[5] & 1) == 0;
var modeCount = h.modes.length;
var _g13 = 0;
var _g4 = pageHeader[26];
while(_g13 < _g4) {
var i3 = _g13++;
if(packetStart) {
if(lacing[i3] == 0) {
seekFunc(this.inputPosition = z.pageStart);
return null;
}
this.inputPosition += 1;
var n1 = this.input.readByte();
if((n1 & 1) != 0) {
seekFunc(this.inputPosition = z.pageStart);
return null;
}
n1 >>= 1;
var n2 = modeCount - 1;
var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
var b = n2 < 16384 ? n2 < 16 ? log2_4[n2] : n2 < 512 ? 5 + log2_4[n2 >> 5] : 10 + log2_4[n2 >> 10] : n2 < 16777216 ? n2 < 524288 ? 15 + log2_4[n2 >> 15] : 20 + log2_4[n2 >> 20] : n2 < 536870912 ? 25 + log2_4[n2 >> 25] : n2 < -2147483648 ? 30 + log2_4[n2 >> 30] : 0;
n1 &= (1 << b) - 1;
if(n1 >= modeCount) {
seekFunc(this.inputPosition = z.pageStart);
return null;
}
packetType[numPacket++] = h.modes[n1].blockflag;
var len1 = lacing[i3] - 1;
this.inputPosition += len1;
var this4 = new Array(len1);
var vec2 = this4;
var _g14 = 0;
var _g5 = len1;
while(_g14 < _g5) {
var i4 = _g14++;
vec2[i4] = this.input.readByte();
}
} else {
var len2 = lacing[i3];
this.inputPosition += len2;
var this5 = new Array(len2);
var vec3 = this5;
var _g15 = 0;
var _g6 = len2;
while(_g15 < _g6) {
var i5 = _g15++;
vec3[i5] = this.input.readByte();
}
}
packetStart = lacing[i3] < 255;
}
var samples = 0;
if(numPacket > 1) {
samples += packetType[numPacket - 1] ? h.blocksize1 : h.blocksize0;
}
var i6 = numPacket - 2;
while(i6 >= 1) {
--i6;
if(packetType[i6]) {
if(packetType[i6 + 1]) {
samples += h.blocksize1 >> 1;
} else {
samples += (h.blocksize1 - h.blocksize0 >> 2) + (h.blocksize0 >> 1);
}
} else {
samples += h.blocksize0 >> 1;
}
--i6;
}
z.firstDecodedSample = z.lastDecodedSample - samples;
seekFunc(this.inputPosition = z.pageStart);
return z;
}
,decodeScalarRaw: function(c) {
this.prepHuffman();
var b = c.sortedCodewords != null || c.codewords != null;
var codewordLengths = c.codewordLengths;
var codewords = c.codewords;
var sortedCodewords = c.sortedCodewords;
if(c.entries > 8 ? sortedCodewords != null : codewords != null) {
var n = this.acc;
n = (n & -1431655766) >>> 1 | (n & 1431655765) << 1;
n = (n & -858993460) >>> 2 | (n & 858993459) << 2;
n = (n & -252645136) >>> 4 | (n & 252645135) << 4;
n = (n & -16711936) >>> 8 | (n & 16711935) << 8;
var code = n >>> 16 | n << 16;
var x = 0;
var n1 = c.sortedEntries;
while(n1 > 1) {
var m = x + (n1 >> 1);
if(_$UInt_UInt_$Impl_$.gte(code,sortedCodewords[m])) {
x = m;
n1 -= n1 >> 1;
} else {
n1 >>= 1;
}
}
if(!c.sparse) {
x = c.sortedValues[x];
}
var len = codewordLengths[x];
if(this.validBits >= len) {
this.acc = this.acc >>> len;
this.validBits -= len;
return x;
}
this.validBits = 0;
return -1;
}
var b1 = !c.sparse;
var _g1 = 0;
var _g = c.entries;
while(_g1 < _g) {
var i = _g1++;
var cl = codewordLengths[i];
if(cl == 255) {
continue;
}
if(codewords[i] == (this.acc & (1 << cl) - 1)) {
if(this.validBits >= cl) {
this.acc = this.acc >>> cl;
this.validBits -= cl;
return i;
}
this.validBits = 0;
return -1;
}
}
this.error = new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 846, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "decodeScalarRaw"});
this.validBits = 0;
return -1;
}
,__class__: kha_audio2_ogg_vorbis_VorbisDecodeState
};
var kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult = $hxClasses["kha.audio2.ogg.vorbis._VorbisDecodeState.FindPageResult"] = { __ename__ : true, __constructs__ : ["Found","NotFound"] };
kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.Found = function(end,last) { var $x = ["Found",0,end,last]; $x.__enum__ = kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult; $x.toString = $estr; return $x; };
kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound = ["NotFound",1];
kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound.toString = $estr;
kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound.__enum__ = kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult;
var kha_audio2_ogg_vorbis_VorbisDecoder = function(header,decodeState) {
this.header = header;
this.decodeState = decodeState;
this.totalSample = null;
this.currentSample = 0;
this.previousLength = 0;
var length = header.channel;
var this1 = new Array(length);
this.channelBuffers = this1;
var length1 = header.channel;
var this2 = new Array(length1);
this.previousWindow = this2;
var length2 = header.channel;
var this3 = new Array(length2);
this.finalY = this3;
var _g1 = 0;
var _g = header.channel;
while(_g1 < _g) {
var i = _g1++;
var this4 = this.channelBuffers;
var len = header.blocksize1;
var this5 = new Array(len);
var vec = this5;
this4[i] = vec;
var this6 = this.previousWindow;
var len1 = header.blocksize1 / 2 | 0;
var this7 = new Array(len1);
var vec1 = this7;
this6[i] = vec1;
this.finalY[i] = [];
}
var this8 = new Array(2);
this.a = this8;
var this9 = new Array(2);
this.b = this9;
var this10 = new Array(2);
this.c = this10;
var this11 = new Array(2);
this.window = this11;
var this12 = new Array(2);
this.bitReverseData = this12;
this.initBlocksize(0,header.blocksize0);
this.initBlocksize(1,header.blocksize1);
};
$hxClasses["kha.audio2.ogg.vorbis.VorbisDecoder"] = kha_audio2_ogg_vorbis_VorbisDecoder;
kha_audio2_ogg_vorbis_VorbisDecoder.__name__ = true;
kha_audio2_ogg_vorbis_VorbisDecoder.start = function(input) {
var decodeState = new kha_audio2_ogg_vorbis_VorbisDecodeState(input);
var header = kha_audio2_ogg_vorbis_data_Header.read(decodeState);
var decoder = new kha_audio2_ogg_vorbis_VorbisDecoder(header,decodeState);
decodeState.startFirstDecode();
decoder.pumpFirstFrame();
return decoder;
};
kha_audio2_ogg_vorbis_VorbisDecoder.prototype = {
previousWindow: null
,previousLength: null
,finalY: null
,a: null
,b: null
,c: null
,window: null
,bitReverseData: null
,channelBuffers: null
,channelBufferStart: null
,channelBufferEnd: null
,header: null
,currentSample: null
,totalSample: null
,decodeState: null
,read: function(output,samples,channels,sampleRate,useFloat) {
var b = this.header.sampleRate;
if((_$UInt_UInt_$Impl_$.toFloat(sampleRate) % _$UInt_UInt_$Impl_$.toFloat(b) | 0) != 0) {
throw new js__$Boot_HaxeError("Unsupported sampleRate : can't convert " + Std.string(_$UInt_UInt_$Impl_$.toFloat(this.header.sampleRate)) + " to " + sampleRate);
}
if(channels % this.header.channel != 0) {
throw new js__$Boot_HaxeError("Unsupported channels : can't convert " + this.header.channel + " to " + channels);
}
var b1 = this.header.sampleRate;
var sampleRepeat = _$UInt_UInt_$Impl_$.toFloat(sampleRate) / _$UInt_UInt_$Impl_$.toFloat(b1) | 0;
var channelRepeat = channels / this.header.channel | 0;
var n = 0;
var len = Math.floor(samples / sampleRepeat);
if(this.totalSample != null && len > this.totalSample - this.currentSample) {
len = this.totalSample - this.currentSample;
}
var index = 0;
while(n < len) {
var k = this.channelBufferEnd - this.channelBufferStart;
if(k >= len - n) {
k = len - n;
}
var _g1 = this.channelBufferStart;
var _g = this.channelBufferStart + k;
while(_g1 < _g) {
var j = _g1++;
var _g3 = 0;
var _g2 = sampleRepeat;
while(_g3 < _g2) {
var sr = _g3++;
var _g5 = 0;
var _g4 = this.header.channel;
while(_g5 < _g4) {
var i = _g5++;
var _g7 = 0;
var _g6 = channelRepeat;
while(_g7 < _g6) {
var cr = _g7++;
var value = this.channelBuffers[i][j];
if(value > 1) {
value = 1;
} else if(value < -1) {
value = -1;
}
if(useFloat) {
output[index] = value;
++index;
}
}
}
}
}
n += k;
this.channelBufferStart += k;
if(n == len || this.getFrameFloat() == 0) {
break;
}
}
var _g11 = n;
var _g8 = len;
while(_g11 < _g8) {
var j1 = _g11++;
var _g31 = 0;
var _g21 = sampleRepeat;
while(_g31 < _g21) {
var sr1 = _g31++;
var _g51 = 0;
var _g41 = this.header.channel;
while(_g51 < _g41) {
var i1 = _g51++;
var _g71 = 0;
var _g61 = channelRepeat;
while(_g71 < _g61) {
var cr1 = _g71++;
if(useFloat) {
output[index] = 0;
++index;
}
}
}
}
}
this.currentSample += len;
return len * sampleRepeat;
}
,skipSamples: function(len) {
var n = 0;
if(this.totalSample != null && len > this.totalSample - this.currentSample) {
len = this.totalSample - this.currentSample;
}
while(n < len) {
var k = this.channelBufferEnd - this.channelBufferStart;
if(k >= len - n) {
k = len - n;
}
n += k;
this.channelBufferStart += k;
if(n == len || this.getFrameFloat() == 0) {
break;
}
}
this.currentSample += len;
return len;
}
,setupSampleNumber: function(seekFunc,inputLength) {
if(this.totalSample == null) {
this.totalSample = this.decodeState.getSampleNumber(seekFunc,inputLength);
}
}
,seek: function(seekFunc,inputLength,sampleNumber) {
if(this.currentSample == sampleNumber) {
return;
}
if(this.totalSample == null) {
this.setupSampleNumber(seekFunc,inputLength);
if(this.totalSample == 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{ fileName : "VorbisDecoder.hx", lineNumber : 187, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"}));
}
}
if(sampleNumber < 0) {
sampleNumber = 0;
}
var p0 = this.decodeState.pFirst;
var p1 = this.decodeState.pLast;
if(sampleNumber >= p1.lastDecodedSample) {
sampleNumber = p1.lastDecodedSample - 1;
}
if(sampleNumber < p0.lastDecodedSample) {
this.seekFrameFromPage(seekFunc,p0.pageStart,0,sampleNumber);
} else {
var attempts = 0;
while(p0.pageEnd < p1.pageStart) {
var startOffset = p0.pageEnd;
var endOffset = p1.afterPreviousPageStart;
var startSample = p0.lastDecodedSample;
var endSample = p1.lastDecodedSample;
if(startSample == null || endSample == null) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "VorbisDecoder.hx", lineNumber : 219, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"}));
}
if(_$UInt_UInt_$Impl_$.gt(endOffset,startOffset + 4000)) {
endOffset = endOffset - 4000;
}
var probe = startOffset + Math.floor(_$UInt_UInt_$Impl_$.toFloat(endOffset - startOffset) / _$UInt_UInt_$Impl_$.toFloat(endSample - startSample) * (sampleNumber - startSample));
if(attempts >= 4) {
var probe2 = startOffset + (endOffset - startOffset >>> 1);
if(attempts >= 8) {
probe = probe2;
} else if(_$UInt_UInt_$Impl_$.gt(probe2,probe)) {
probe = probe + (probe2 - probe >>> 1);
} else {
probe = probe2 + (probe - probe2 >>> 1);
}
}
++attempts;
seekFunc(this.decodeState.inputPosition = probe);
var _g = this.decodeState.findPage(seekFunc,inputLength);
switch(_g[1]) {
case 0:
break;
case 1:
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "VorbisDecoder.hx", lineNumber : 249, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"}));
break;
}
var q = this.decodeState.analyzePage(seekFunc,this.header);
if(q == null) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "VorbisDecoder.hx", lineNumber : 255, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"}));
}
q.afterPreviousPageStart = probe;
if(q.pageStart == p1.pageStart) {
p1 = q;
continue;
}
if(sampleNumber < q.lastDecodedSample) {
p1 = q;
} else {
p0 = q;
}
}
if(p0.lastDecodedSample <= sampleNumber && sampleNumber < p1.lastDecodedSample) {
this.seekFrameFromPage(seekFunc,p1.pageStart,p0.lastDecodedSample,sampleNumber);
} else {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "VorbisDecoder.hx", lineNumber : 275, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"}));
}
}
}
,seekFrameFromPage: function(seekFunc,pageStart,firstSample,targetSample) {
var frame = 0;
var frameStart = firstSample;
seekFunc(this.decodeState.inputPosition = pageStart);
this.decodeState.nextSeg = -1;
var leftEnd = 0;
var leftStart = 0;
var prevState = null;
var lastState = null;
while(true) {
prevState = lastState;
lastState = this.decodeState.clone(seekFunc);
var initialResult = this.decodeInitial();
if(initialResult == null) {
lastState = prevState;
break;
}
leftStart = initialResult.left.start;
leftEnd = initialResult.left.end;
var start = frame == 0 ? leftEnd : leftStart;
if(targetSample < frameStart + initialResult.right.start - start) {
break;
}
var _this = this.decodeState;
while(_this.bytesInSeg != 0 || !_this.lastSeg && _this.next() != 0) {
_this.bytesInSeg--;
_this.inputPosition += 1;
_this.input.readByte();
}
frameStart += initialResult.right.start - start;
++frame;
}
this.decodeState = lastState;
seekFunc(this.decodeState.inputPosition);
this.previousLength = 0;
this.pumpFirstFrame();
this.currentSample = frameStart;
this.skipSamples(targetSample - frameStart);
}
,clone: function(seekFunc) {
var decoder = Type.createEmptyInstance(kha_audio2_ogg_vorbis_VorbisDecoder);
decoder.currentSample = this.currentSample;
decoder.totalSample = this.totalSample;
decoder.previousLength = this.previousLength;
decoder.channelBufferStart = this.channelBufferStart;
decoder.channelBufferEnd = this.channelBufferEnd;
decoder.a = this.a;
decoder.b = this.b;
decoder.c = this.c;
decoder.window = this.window;
decoder.bitReverseData = this.bitReverseData;
decoder.header = this.header;
decoder.decodeState = this.decodeState.clone(seekFunc);
var length = this.header.channel;
var this1 = new Array(length);
decoder.channelBuffers = this1;
var length1 = this.header.channel;
var this2 = new Array(length1);
decoder.previousWindow = this2;
var length2 = this.header.channel;
var this3 = new Array(length2);
decoder.finalY = this3;
var _g1 = 0;
var _g = this.header.channel;
while(_g1 < _g) {
var i = _g1++;
decoder.channelBuffers[i] = kha_audio2_ogg_vorbis_VorbisTools.copyVector(this.channelBuffers[i]);
decoder.previousWindow[i] = kha_audio2_ogg_vorbis_VorbisTools.copyVector(this.previousWindow[i]);
decoder.finalY[i] = Lambda.array(this.finalY[i]);
}
return decoder;
}
,ensurePosition: function(seekFunc) {
seekFunc(this.decodeState.inputPosition);
}
,getFrameFloat: function() {
var result = this.decodePacket();
if(result == null) {
this.channelBufferStart = this.channelBufferEnd = 0;
return 0;
}
var len = this.finishFrame(result);
this.channelBufferStart = result.left;
this.channelBufferEnd = result.left + len;
return len;
}
,pumpFirstFrame: function() {
this.finishFrame(this.decodePacket());
}
,finishFrame: function(r) {
var len = r.len;
var right = r.right;
var left = r.left;
if(this.previousLength != 0) {
var n = this.previousLength;
var w = this.getWindow(n);
var _g1 = 0;
var _g = this.header.channel;
while(_g1 < _g) {
var i = _g1++;
var cb = this.channelBuffers[i];
var pw = this.previousWindow[i];
var _g3 = 0;
var _g2 = n;
while(_g3 < _g2) {
var j = _g3++;
cb[left + j] = cb[left + j] * w[j] + pw[j] * w[n - 1 - j];
}
}
}
var prev = this.previousLength;
this.previousLength = len - right;
var _g11 = 0;
var _g4 = this.header.channel;
while(_g11 < _g4) {
var i1 = _g11++;
var pw1 = this.previousWindow[i1];
var cb1 = this.channelBuffers[i1];
var _g31 = 0;
var _g21 = len - right;
while(_g31 < _g21) {
var j1 = _g31++;
pw1[j1] = cb1[right + j1];
}
}
if(prev == 0) {
return 0;
}
if(len < right) {
right = len;
}
return right - left;
}
,getWindow: function(len) {
len <<= 1;
if(len == this.header.blocksize0) {
return this.window[0];
} else if(len == this.header.blocksize1) {
return this.window[1];
} else {
return null;
}
}
,initBlocksize: function(bs,n) {
var n2 = n >> 1;
var n4 = n >> 2;
var n8 = n >> 3;
var this1 = this.a;
var this2 = new Array(n2);
this1[bs] = this2;
var this3 = this.b;
var this4 = new Array(n2);
this3[bs] = this4;
var this5 = this.c;
var this6 = new Array(n4);
this5[bs] = this6;
var this7 = this.window;
var this8 = new Array(n2);
this7[bs] = this8;
var this9 = this.bitReverseData;
var this10 = new Array(n8);
this9[bs] = this10;
kha_audio2_ogg_vorbis_VorbisTools.computeTwiddleFactors(n,this.a[bs],this.b[bs],this.c[bs]);
kha_audio2_ogg_vorbis_VorbisTools.computeWindow(n,this.window[bs]);
kha_audio2_ogg_vorbis_VorbisTools.computeBitReverse(n,this.bitReverseData[bs]);
}
,inverseMdct: function(buffer,n,blocktype) {
var bt = blocktype ? 1 : 0;
var a = this.a[bt];
var b = this.b[bt];
var c = this.c[bt];
var bitReverse = this.bitReverseData[bt];
var n2 = n >> 1;
var n4 = n >> 2;
var n8 = n >> 3;
var this1 = new Array(n2);
var buf2 = this1;
var dOffset = n2 - 2;
var aaOffset = 0;
var eOffset = 0;
var eStopOffset = n2;
while(eOffset != eStopOffset) {
buf2[dOffset + 1] = buffer[eOffset] * a[aaOffset] - buffer[eOffset + 2] * a[aaOffset + 1];
buf2[dOffset] = buffer[eOffset] * a[aaOffset + 1] + buffer[eOffset + 2] * a[aaOffset];
dOffset -= 2;
aaOffset += 2;
eOffset += 4;
}
eOffset = n2 - 3;
while(dOffset >= 0) {
buf2[dOffset + 1] = -buffer[eOffset + 2] * a[aaOffset] - -buffer[eOffset] * a[aaOffset + 1];
buf2[dOffset] = -buffer[eOffset + 2] * a[aaOffset + 1] + -buffer[eOffset] * a[aaOffset];
dOffset -= 2;
aaOffset += 2;
eOffset -= 4;
}
var u = buffer;
var v = buf2;
var aaOffset1 = n2 - 8;
var eOffset0 = n4;
var eOffset1 = 0;
var dOffset0 = n4;
var dOffset1 = 0;
while(aaOffset1 >= 0) {
var v41_21 = v[eOffset0 + 1] - v[eOffset1 + 1];
var v40_20 = v[eOffset0] - v[eOffset1];
u[dOffset0 + 1] = v[eOffset0 + 1] + v[eOffset1 + 1];
u[dOffset0] = v[eOffset0] + v[eOffset1];
u[dOffset1 + 1] = v41_21 * a[aaOffset1 + 4] - v40_20 * a[aaOffset1 + 5];
u[dOffset1] = v40_20 * a[aaOffset1 + 4] + v41_21 * a[aaOffset1 + 5];
v41_21 = v[eOffset0 + 3] - v[eOffset1 + 3];
v40_20 = v[eOffset0 + 2] - v[eOffset1 + 2];
u[dOffset0 + 3] = v[eOffset0 + 3] + v[eOffset1 + 3];
u[dOffset0 + 2] = v[eOffset0 + 2] + v[eOffset1 + 2];
u[dOffset1 + 3] = v41_21 * a[aaOffset1] - v40_20 * a[aaOffset1 + 1];
u[dOffset1 + 2] = v40_20 * a[aaOffset1] + v41_21 * a[aaOffset1 + 1];
aaOffset1 -= 8;
dOffset0 += 4;
dOffset1 += 4;
eOffset0 += 4;
eOffset1 += 4;
}
var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
var ld = (n < 16384 ? n < 16 ? log2_4[n] : n < 512 ? 5 + log2_4[n >> 5] : 10 + log2_4[n >> 10] : n < 16777216 ? n < 524288 ? 15 + log2_4[n >> 15] : 20 + log2_4[n >> 20] : n < 536870912 ? 25 + log2_4[n >> 25] : n < -2147483648 ? 30 + log2_4[n >> 30] : 0) - 1;
var i_off = n2 - 1 - n4 * 0;
var eeOffset0 = i_off;
var eeOffset2 = i_off + -(n >> 3);
var aOffset = 0;
var i = (n >> 4 >> 2) + 1;
while(--i > 0) {
var k00_20 = u[eeOffset0] - u[eeOffset2];
var k01_21 = u[eeOffset0 + -1] - u[eeOffset2 + -1];
var _g = eeOffset0;
var _g1 = u;
_g1[_g] = _g1[_g] + u[eeOffset2];
var _g2 = eeOffset0 + -1;
var _g11 = u;
_g11[_g2] = _g11[_g2] + u[eeOffset2 + -1];
u[eeOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
u[eeOffset2 + -1] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
k00_20 = u[eeOffset0 + -2] - u[eeOffset2 + -2];
k01_21 = u[eeOffset0 + -3] - u[eeOffset2 + -3];
var _g3 = eeOffset0 + -2;
var _g12 = u;
_g12[_g3] = _g12[_g3] + u[eeOffset2 + -2];
var _g4 = eeOffset0 + -3;
var _g13 = u;
_g13[_g4] = _g13[_g4] + u[eeOffset2 + -3];
u[eeOffset2 + -2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
u[eeOffset2 + -3] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
k00_20 = u[eeOffset0 + -4] - u[eeOffset2 + -4];
k01_21 = u[eeOffset0 + -5] - u[eeOffset2 + -5];
var _g5 = eeOffset0 + -4;
var _g14 = u;
_g14[_g5] = _g14[_g5] + u[eeOffset2 + -4];
var _g6 = eeOffset0 + -5;
var _g15 = u;
_g15[_g6] = _g15[_g6] + u[eeOffset2 + -5];
u[eeOffset2 + -4] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
u[eeOffset2 + -5] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
k00_20 = u[eeOffset0 + -6] - u[eeOffset2 + -6];
k01_21 = u[eeOffset0 + -7] - u[eeOffset2 + -7];
var _g7 = eeOffset0 + -6;
var _g16 = u;
_g16[_g7] = _g16[_g7] + u[eeOffset2 + -6];
var _g8 = eeOffset0 + -7;
var _g17 = u;
_g17[_g8] = _g17[_g8] + u[eeOffset2 + -7];
u[eeOffset2 + -6] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1];
u[eeOffset2 + -7] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1];
aOffset += 8;
eeOffset0 -= 8;
eeOffset2 -= 8;
}
var i_off1 = n2 - 1 - n4;
var eeOffset01 = i_off1;
var eeOffset21 = i_off1 + -(n >> 3);
var aOffset1 = 0;
var i1 = (n >> 4 >> 2) + 1;
while(--i1 > 0) {
var k00_201 = u[eeOffset01] - u[eeOffset21];
var k01_211 = u[eeOffset01 + -1] - u[eeOffset21 + -1];
var _g9 = eeOffset01;
var _g18 = u;
_g18[_g9] = _g18[_g9] + u[eeOffset21];
var _g10 = eeOffset01 + -1;
var _g19 = u;
_g19[_g10] = _g19[_g10] + u[eeOffset21 + -1];
u[eeOffset21] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1];
u[eeOffset21 + -1] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1];
aOffset1 += 8;
k00_201 = u[eeOffset01 + -2] - u[eeOffset21 + -2];
k01_211 = u[eeOffset01 + -3] - u[eeOffset21 + -3];
var _g20 = eeOffset01 + -2;
var _g110 = u;
_g110[_g20] = _g110[_g20] + u[eeOffset21 + -2];
var _g21 = eeOffset01 + -3;
var _g111 = u;
_g111[_g21] = _g111[_g21] + u[eeOffset21 + -3];
u[eeOffset21 + -2] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1];
u[eeOffset21 + -3] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1];
aOffset1 += 8;
k00_201 = u[eeOffset01 + -4] - u[eeOffset21 + -4];
k01_211 = u[eeOffset01 + -5] - u[eeOffset21 + -5];
var _g22 = eeOffset01 + -4;
var _g112 = u;
_g112[_g22] = _g112[_g22] + u[eeOffset21 + -4];
var _g23 = eeOffset01 + -5;
var _g113 = u;
_g113[_g23] = _g113[_g23] + u[eeOffset21 + -5];
u[eeOffset21 + -4] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1];
u[eeOffset21 + -5] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1];
aOffset1 += 8;
k00_201 = u[eeOffset01 + -6] - u[eeOffset21 + -6];
k01_211 = u[eeOffset01 + -7] - u[eeOffset21 + -7];
var _g24 = eeOffset01 + -6;
var _g114 = u;
_g114[_g24] = _g114[_g24] + u[eeOffset21 + -6];
var _g25 = eeOffset01 + -7;
var _g115 = u;
_g115[_g25] = _g115[_g25] + u[eeOffset21 + -7];
u[eeOffset21 + -6] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1];
u[eeOffset21 + -7] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1];
aOffset1 += 8;
eeOffset01 -= 8;
eeOffset21 -= 8;
}
var d0 = n2 - 1 - n8 * 0;
var aOffset2 = 0;
var eOffset01 = d0;
var eOffset2 = d0 + -(n >> 4);
var i2 = (n >> 5 >> 2) + 1;
while(--i2 > 0) {
var k00_202 = u[eOffset01] - u[eOffset2];
var k01_212 = u[eOffset01 + -1] - u[eOffset2 + -1];
var _g26 = eOffset01;
var _g116 = u;
_g116[_g26] = _g116[_g26] + u[eOffset2];
var _g27 = eOffset01 + -1;
var _g117 = u;
_g117[_g27] = _g117[_g27] + u[eOffset2 + -1];
u[eOffset2] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1];
u[eOffset2 + -1] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1];
aOffset2 += 16;
k00_202 = u[eOffset01 + -2] - u[eOffset2 + -2];
k01_212 = u[eOffset01 + -3] - u[eOffset2 + -3];
var _g28 = eOffset01 + -2;
var _g118 = u;
_g118[_g28] = _g118[_g28] + u[eOffset2 + -2];
var _g29 = eOffset01 + -3;
var _g119 = u;
_g119[_g29] = _g119[_g29] + u[eOffset2 + -3];
u[eOffset2 + -2] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1];
u[eOffset2 + -3] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1];
aOffset2 += 16;
k00_202 = u[eOffset01 + -4] - u[eOffset2 + -4];
k01_212 = u[eOffset01 + -5] - u[eOffset2 + -5];
var _g30 = eOffset01 + -4;
var _g120 = u;
_g120[_g30] = _g120[_g30] + u[eOffset2 + -4];
var _g31 = eOffset01 + -5;
var _g121 = u;
_g121[_g31] = _g121[_g31] + u[eOffset2 + -5];
u[eOffset2 + -4] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1];
u[eOffset2 + -5] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1];
aOffset2 += 16;
k00_202 = u[eOffset01 + -6] - u[eOffset2 + -6];
k01_212 = u[eOffset01 + -7] - u[eOffset2 + -7];
var _g32 = eOffset01 + -6;
var _g122 = u;
_g122[_g32] = _g122[_g32] + u[eOffset2 + -6];
var _g33 = eOffset01 + -7;
var _g123 = u;
_g123[_g33] = _g123[_g33] + u[eOffset2 + -7];
u[eOffset2 + -6] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1];
u[eOffset2 + -7] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1];
eOffset01 -= 8;
eOffset2 -= 8;
aOffset2 += 16;
}
var d01 = n2 - 1 - n8;
var aOffset3 = 0;
var eOffset02 = d01;
var eOffset21 = d01 + -(n >> 4);
var i3 = (n >> 5 >> 2) + 1;
while(--i3 > 0) {
var k00_203 = u[eOffset02] - u[eOffset21];
var k01_213 = u[eOffset02 + -1] - u[eOffset21 + -1];
var _g34 = eOffset02;
var _g124 = u;
_g124[_g34] = _g124[_g34] + u[eOffset21];
var _g35 = eOffset02 + -1;
var _g125 = u;
_g125[_g35] = _g125[_g35] + u[eOffset21 + -1];
u[eOffset21] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1];
u[eOffset21 + -1] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1];
aOffset3 += 16;
k00_203 = u[eOffset02 + -2] - u[eOffset21 + -2];
k01_213 = u[eOffset02 + -3] - u[eOffset21 + -3];
var _g36 = eOffset02 + -2;
var _g126 = u;
_g126[_g36] = _g126[_g36] + u[eOffset21 + -2];
var _g37 = eOffset02 + -3;
var _g127 = u;
_g127[_g37] = _g127[_g37] + u[eOffset21 + -3];
u[eOffset21 + -2] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1];
u[eOffset21 + -3] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1];
aOffset3 += 16;
k00_203 = u[eOffset02 + -4] - u[eOffset21 + -4];
k01_213 = u[eOffset02 + -5] - u[eOffset21 + -5];
var _g38 = eOffset02 + -4;
var _g128 = u;
_g128[_g38] = _g128[_g38] + u[eOffset21 + -4];
var _g39 = eOffset02 + -5;
var _g129 = u;
_g129[_g39] = _g129[_g39] + u[eOffset21 + -5];
u[eOffset21 + -4] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1];
u[eOffset21 + -5] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1];
aOffset3 += 16;
k00_203 = u[eOffset02 + -6] - u[eOffset21 + -6];
k01_213 = u[eOffset02 + -7] - u[eOffset21 + -7];
var _g40 = eOffset02 + -6;
var _g130 = u;
_g130[_g40] = _g130[_g40] + u[eOffset21 + -6];
var _g41 = eOffset02 + -7;
var _g131 = u;
_g131[_g41] = _g131[_g41] + u[eOffset21 + -7];
u[eOffset21 + -6] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1];
u[eOffset21 + -7] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1];
eOffset02 -= 8;
eOffset21 -= 8;
aOffset3 += 16;
}
var d02 = n2 - 1 - n8 * 2;
var aOffset4 = 0;
var eOffset03 = d02;
var eOffset22 = d02 + -(n >> 4);
var i4 = (n >> 5 >> 2) + 1;
while(--i4 > 0) {
var k00_204 = u[eOffset03] - u[eOffset22];
var k01_214 = u[eOffset03 + -1] - u[eOffset22 + -1];
var _g42 = eOffset03;
var _g132 = u;
_g132[_g42] = _g132[_g42] + u[eOffset22];
var _g43 = eOffset03 + -1;
var _g133 = u;
_g133[_g43] = _g133[_g43] + u[eOffset22 + -1];
u[eOffset22] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1];
u[eOffset22 + -1] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1];
aOffset4 += 16;
k00_204 = u[eOffset03 + -2] - u[eOffset22 + -2];
k01_214 = u[eOffset03 + -3] - u[eOffset22 + -3];
var _g44 = eOffset03 + -2;
var _g134 = u;
_g134[_g44] = _g134[_g44] + u[eOffset22 + -2];
var _g45 = eOffset03 + -3;
var _g135 = u;
_g135[_g45] = _g135[_g45] + u[eOffset22 + -3];
u[eOffset22 + -2] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1];
u[eOffset22 + -3] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1];
aOffset4 += 16;
k00_204 = u[eOffset03 + -4] - u[eOffset22 + -4];
k01_214 = u[eOffset03 + -5] - u[eOffset22 + -5];
var _g46 = eOffset03 + -4;
var _g136 = u;
_g136[_g46] = _g136[_g46] + u[eOffset22 + -4];
var _g47 = eOffset03 + -5;
var _g137 = u;
_g137[_g47] = _g137[_g47] + u[eOffset22 + -5];
u[eOffset22 + -4] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1];
u[eOffset22 + -5] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1];
aOffset4 += 16;
k00_204 = u[eOffset03 + -6] - u[eOffset22 + -6];
k01_214 = u[eOffset03 + -7] - u[eOffset22 + -7];
var _g48 = eOffset03 + -6;
var _g138 = u;
_g138[_g48] = _g138[_g48] + u[eOffset22 + -6];
var _g49 = eOffset03 + -7;
var _g139 = u;
_g139[_g49] = _g139[_g49] + u[eOffset22 + -7];
u[eOffset22 + -6] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1];
u[eOffset22 + -7] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1];
eOffset03 -= 8;
eOffset22 -= 8;
aOffset4 += 16;
}
var d03 = n2 - 1 - n8 * 3;
var aOffset5 = 0;
var eOffset04 = d03;
var eOffset23 = d03 + -(n >> 4);
var i5 = (n >> 5 >> 2) + 1;
while(--i5 > 0) {
var k00_205 = u[eOffset04] - u[eOffset23];
var k01_215 = u[eOffset04 + -1] - u[eOffset23 + -1];
var _g50 = eOffset04;
var _g140 = u;
_g140[_g50] = _g140[_g50] + u[eOffset23];
var _g51 = eOffset04 + -1;
var _g141 = u;
_g141[_g51] = _g141[_g51] + u[eOffset23 + -1];
u[eOffset23] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1];
u[eOffset23 + -1] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1];
aOffset5 += 16;
k00_205 = u[eOffset04 + -2] - u[eOffset23 + -2];
k01_215 = u[eOffset04 + -3] - u[eOffset23 + -3];
var _g52 = eOffset04 + -2;
var _g142 = u;
_g142[_g52] = _g142[_g52] + u[eOffset23 + -2];
var _g53 = eOffset04 + -3;
var _g143 = u;
_g143[_g53] = _g143[_g53] + u[eOffset23 + -3];
u[eOffset23 + -2] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1];
u[eOffset23 + -3] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1];
aOffset5 += 16;
k00_205 = u[eOffset04 + -4] - u[eOffset23 + -4];
k01_215 = u[eOffset04 + -5] - u[eOffset23 + -5];
var _g54 = eOffset04 + -4;
var _g144 = u;
_g144[_g54] = _g144[_g54] + u[eOffset23 + -4];
var _g55 = eOffset04 + -5;
var _g145 = u;
_g145[_g55] = _g145[_g55] + u[eOffset23 + -5];
u[eOffset23 + -4] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1];
u[eOffset23 + -5] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1];
aOffset5 += 16;
k00_205 = u[eOffset04 + -6] - u[eOffset23 + -6];
k01_215 = u[eOffset04 + -7] - u[eOffset23 + -7];
var _g56 = eOffset04 + -6;
var _g146 = u;
_g146[_g56] = _g146[_g56] + u[eOffset23 + -6];
var _g57 = eOffset04 + -7;
var _g147 = u;
_g147[_g57] = _g147[_g57] + u[eOffset23 + -7];
u[eOffset23 + -6] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1];
u[eOffset23 + -7] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1];
eOffset04 -= 8;
eOffset23 -= 8;
aOffset5 += 16;
}
var _g148 = 2;
var _g58 = ld - 3 >> 1;
while(_g148 < _g58) {
var l = _g148++;
var k0 = n >> l + 2;
var k0_2 = k0 >> 1;
var lim = 1 << l + 1;
var _g310 = 0;
var _g210 = lim;
while(_g310 < _g210) {
var i6 = _g310++;
var d04 = n2 - 1 - k0 * i6;
var k1 = 1 << l + 3;
var aOffset6 = 0;
var eOffset05 = d04;
var eOffset24 = d04 + -k0_2;
var i7 = (n >> l + 4 >> 2) + 1;
while(--i7 > 0) {
var k00_206 = u[eOffset05] - u[eOffset24];
var k01_216 = u[eOffset05 + -1] - u[eOffset24 + -1];
var _g59 = eOffset05;
var _g149 = u;
_g149[_g59] = _g149[_g59] + u[eOffset24];
var _g60 = eOffset05 + -1;
var _g150 = u;
_g150[_g60] = _g150[_g60] + u[eOffset24 + -1];
u[eOffset24] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1];
u[eOffset24 + -1] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1];
aOffset6 += k1;
k00_206 = u[eOffset05 + -2] - u[eOffset24 + -2];
k01_216 = u[eOffset05 + -3] - u[eOffset24 + -3];
var _g61 = eOffset05 + -2;
var _g151 = u;
_g151[_g61] = _g151[_g61] + u[eOffset24 + -2];
var _g62 = eOffset05 + -3;
var _g152 = u;
_g152[_g62] = _g152[_g62] + u[eOffset24 + -3];
u[eOffset24 + -2] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1];
u[eOffset24 + -3] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1];
aOffset6 += k1;
k00_206 = u[eOffset05 + -4] - u[eOffset24 + -4];
k01_216 = u[eOffset05 + -5] - u[eOffset24 + -5];
var _g63 = eOffset05 + -4;
var _g153 = u;
_g153[_g63] = _g153[_g63] + u[eOffset24 + -4];
var _g64 = eOffset05 + -5;
var _g154 = u;
_g154[_g64] = _g154[_g64] + u[eOffset24 + -5];
u[eOffset24 + -4] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1];
u[eOffset24 + -5] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1];
aOffset6 += k1;
k00_206 = u[eOffset05 + -6] - u[eOffset24 + -6];
k01_216 = u[eOffset05 + -7] - u[eOffset24 + -7];
var _g65 = eOffset05 + -6;
var _g155 = u;
_g155[_g65] = _g155[_g65] + u[eOffset24 + -6];
var _g66 = eOffset05 + -7;
var _g156 = u;
_g156[_g66] = _g156[_g66] + u[eOffset24 + -7];
u[eOffset24 + -6] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1];
u[eOffset24 + -7] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1];
eOffset05 -= 8;
eOffset24 -= 8;
aOffset6 += k1;
}
}
}
var _g157 = ld - 3 >> 1;
var _g67 = ld - 6;
while(_g157 < _g67) {
var l1 = _g157++;
var k01 = n >> l1 + 2;
var k11 = 1 << l1 + 3;
var k0_21 = k01 >> 1;
var rlim = n >> l1 + 6;
var lim1 = 1 << l1 + 1;
var aOffset7 = 0;
var i_off2 = n2 - 1;
var r = rlim + 1;
while(--r > 0) {
var A0 = a[aOffset7];
var A1 = a[aOffset7 + 1];
var A2 = a[aOffset7 + k11];
var A3 = a[aOffset7 + k11 + 1];
var A4 = a[aOffset7 + k11 * 2];
var A5 = a[aOffset7 + k11 * 2 + 1];
var A6 = a[aOffset7 + k11 * 3];
var A7 = a[aOffset7 + k11 * 3 + 1];
var eeOffset02 = i_off2;
var eeOffset22 = i_off2 + -k0_21;
var i8 = lim1 + 1;
while(--i8 > 0) {
var k00 = u[eeOffset02] - u[eeOffset22];
var k111 = u[eeOffset02 + -1] - u[eeOffset22 + -1];
u[eeOffset02] = u[eeOffset02] + u[eeOffset22];
u[eeOffset02 + -1] = u[eeOffset02 + -1] + u[eeOffset22 + -1];
u[eeOffset22] = k00 * A0 - k111 * A1;
u[eeOffset22 + -1] = k111 * A0 + k00 * A1;
k00 = u[eeOffset02 + -2] - u[eeOffset22 + -2];
k111 = u[eeOffset02 + -3] - u[eeOffset22 + -3];
u[eeOffset02 + -2] = u[eeOffset02 + -2] + u[eeOffset22 + -2];
u[eeOffset02 + -3] = u[eeOffset02 + -3] + u[eeOffset22 + -3];
u[eeOffset22 + -2] = k00 * A2 - k111 * A3;
u[eeOffset22 + -3] = k111 * A2 + k00 * A3;
k00 = u[eeOffset02 + -4] - u[eeOffset22 + -4];
k111 = u[eeOffset02 + -5] - u[eeOffset22 + -5];
u[eeOffset02 + -4] = u[eeOffset02 + -4] + u[eeOffset22 + -4];
u[eeOffset02 + -5] = u[eeOffset02 + -5] + u[eeOffset22 + -5];
u[eeOffset22 + -4] = k00 * A4 - k111 * A5;
u[eeOffset22 + -5] = k111 * A4 + k00 * A5;
k00 = u[eeOffset02 + -6] - u[eeOffset22 + -6];
k111 = u[eeOffset02 + -7] - u[eeOffset22 + -7];
u[eeOffset02 + -6] = u[eeOffset02 + -6] + u[eeOffset22 + -6];
u[eeOffset02 + -7] = u[eeOffset02 + -7] + u[eeOffset22 + -7];
u[eeOffset22 + -6] = k00 * A6 - k111 * A7;
u[eeOffset22 + -7] = k111 * A6 + k00 * A7;
eeOffset02 -= k01;
eeOffset22 -= k01;
}
aOffset7 += k11 * 4;
i_off2 -= 8;
}
}
var i_off3 = n2 - 1;
var A21 = a[n >> 3];
var zOffset = i_off3;
var baseOffset = i_off3 - 16 * (n >> 5);
while(zOffset > baseOffset) {
var t0 = u[zOffset];
var t1 = u[zOffset + -8];
u[zOffset + -8] = t0 - t1;
u[zOffset] = t0 + t1;
t0 = u[zOffset + -1];
t1 = u[zOffset + -9];
u[zOffset + -9] = t0 - t1;
u[zOffset + -1] = t0 + t1;
t0 = u[zOffset + -2];
t1 = u[zOffset + -10];
var k001 = t0 - t1;
u[zOffset + -2] = t0 + t1;
t0 = u[zOffset + -3];
t1 = u[zOffset + -11];
var k112 = t0 - t1;
u[zOffset + -3] = t0 + t1;
u[zOffset + -10] = (k001 + k112) * A21;
u[zOffset + -11] = (k112 - k001) * A21;
t0 = u[zOffset + -4];
t1 = u[zOffset + -12];
k001 = t1 - t0;
u[zOffset + -4] = t0 + t1;
t0 = u[zOffset + -5];
t1 = u[zOffset + -13];
k112 = t0 - t1;
u[zOffset + -5] = t0 + t1;
u[zOffset + -12] = k112;
u[zOffset + -13] = k001;
t0 = u[zOffset + -6];
t1 = u[zOffset + -14];
k001 = t1 - t0;
u[zOffset + -6] = t0 + t1;
t0 = u[zOffset + -7];
t1 = u[zOffset + -15];
k112 = t0 - t1;
u[zOffset + -7] = t0 + t1;
u[zOffset + -14] = (k001 + k112) * A21;
u[zOffset + -15] = (k001 - k112) * A21;
var t01 = u[zOffset];
var t11 = u[zOffset + -4];
var k002 = t01 - t11;
var y0 = t01 + t11;
t01 = u[zOffset + -2];
t11 = u[zOffset + -6];
var y2 = t01 + t11;
var k22 = t01 - t11;
u[zOffset] = y0 + y2;
u[zOffset + -2] = y0 - y2;
var k33 = u[zOffset + -3] - u[zOffset + -7];
u[zOffset + -4] = k002 + k33;
u[zOffset + -6] = k002 - k33;
t01 = u[zOffset + -1];
t11 = u[zOffset + -5];
var k113 = t01 - t11;
var y1 = t01 + t11;
var y3 = u[zOffset + -3] + u[zOffset + -7];
u[zOffset + -1] = y1 + y3;
u[zOffset + -3] = y1 - y3;
u[zOffset + -5] = k113 - k22;
u[zOffset + -7] = k113 + k22;
var zOffset1 = zOffset - 8;
var t02 = u[zOffset1];
var t12 = u[zOffset1 + -4];
var k003 = t02 - t12;
var y01 = t02 + t12;
t02 = u[zOffset1 + -2];
t12 = u[zOffset1 + -6];
var y21 = t02 + t12;
var k221 = t02 - t12;
u[zOffset1] = y01 + y21;
u[zOffset1 + -2] = y01 - y21;
var k331 = u[zOffset1 + -3] - u[zOffset1 + -7];
u[zOffset1 + -4] = k003 + k331;
u[zOffset1 + -6] = k003 - k331;
t02 = u[zOffset1 + -1];
t12 = u[zOffset1 + -5];
var k114 = t02 - t12;
var y11 = t02 + t12;
var y31 = u[zOffset1 + -3] + u[zOffset1 + -7];
u[zOffset1 + -1] = y11 + y31;
u[zOffset1 + -3] = y11 - y31;
u[zOffset1 + -5] = k114 - k221;
u[zOffset1 + -7] = k114 + k221;
zOffset -= 16;
}
var brOffset = 0;
var dOffset01 = n4 - 4;
var dOffset11 = n2 - 4;
while(dOffset01 >= 0) {
var k4 = bitReverse[brOffset];
v[dOffset11 + 3] = u[k4];
v[dOffset11 + 2] = u[k4 + 1];
v[dOffset01 + 3] = u[k4 + 2];
v[dOffset01 + 2] = u[k4 + 3];
k4 = bitReverse[brOffset + 1];
v[dOffset11 + 1] = u[k4];
v[dOffset11] = u[k4 + 1];
v[dOffset01 + 1] = u[k4 + 2];
v[dOffset01] = u[k4 + 3];
dOffset01 -= 4;
dOffset11 -= 4;
brOffset += 2;
}
var cOffset = 0;
var dOffset2 = 0;
var eOffset3 = n2 - 4;
while(dOffset2 < eOffset3) {
var a02 = v[dOffset2] - v[eOffset3 + 2];
var a11 = v[dOffset2 + 1] + v[eOffset3 + 3];
var b0 = c[cOffset + 1] * a02 + c[cOffset] * a11;
var b1 = c[cOffset + 1] * a11 - c[cOffset] * a02;
var b2 = v[dOffset2] + v[eOffset3 + 2];
var b3 = v[dOffset2 + 1] - v[eOffset3 + 3];
v[dOffset2] = b2 + b0;
v[dOffset2 + 1] = b3 + b1;
v[eOffset3 + 2] = b2 - b0;
v[eOffset3 + 3] = b1 - b3;
a02 = v[dOffset2 + 2] - v[eOffset3];
a11 = v[dOffset2 + 3] + v[eOffset3 + 1];
b0 = c[cOffset + 3] * a02 + c[cOffset + 2] * a11;
b1 = c[cOffset + 3] * a11 - c[cOffset + 2] * a02;
b2 = v[dOffset2 + 2] + v[eOffset3];
b3 = v[dOffset2 + 3] - v[eOffset3 + 1];
v[dOffset2 + 2] = b2 + b0;
v[dOffset2 + 3] = b3 + b1;
v[eOffset3] = b2 - b0;
v[eOffset3 + 1] = b1 - b3;
cOffset += 4;
dOffset2 += 4;
eOffset3 -= 4;
}
var bOffset = n2 - 8;
var eOffset4 = n2 - 8;
var dOffset02 = 0;
var dOffset12 = n2 - 4;
var dOffset21 = n2;
var dOffset3 = n - 4;
while(eOffset4 >= 0) {
var p3 = buf2[eOffset4 + 6] * b[bOffset + 7] - buf2[eOffset4 + 7] * b[bOffset + 6];
var p2 = -buf2[eOffset4 + 6] * b[bOffset + 6] - buf2[eOffset4 + 7] * b[bOffset + 7];
buffer[dOffset02] = p3;
buffer[dOffset12 + 3] = -p3;
buffer[dOffset21] = p2;
buffer[dOffset3 + 3] = p2;
var p1 = buf2[eOffset4 + 4] * b[bOffset + 5] - buf2[eOffset4 + 5] * b[bOffset + 4];
var p0 = -buf2[eOffset4 + 4] * b[bOffset + 4] - buf2[eOffset4 + 5] * b[bOffset + 5];
buffer[dOffset02 + 1] = p1;
buffer[dOffset12 + 2] = -p1;
buffer[dOffset21 + 1] = p0;
buffer[dOffset3 + 2] = p0;
p3 = buf2[eOffset4 + 2] * b[bOffset + 3] - buf2[eOffset4 + 3] * b[bOffset + 2];
p2 = -buf2[eOffset4 + 2] * b[bOffset + 2] - buf2[eOffset4 + 3] * b[bOffset + 3];
buffer[dOffset02 + 2] = p3;
buffer[dOffset12 + 1] = -p3;
buffer[dOffset21 + 2] = p2;
buffer[dOffset3 + 1] = p2;
p1 = buf2[eOffset4] * b[bOffset + 1] - buf2[eOffset4 + 1] * b[bOffset];
p0 = -buf2[eOffset4] * b[bOffset] - buf2[eOffset4 + 1] * b[bOffset + 1];
buffer[dOffset02 + 3] = p1;
buffer[dOffset12] = -p1;
buffer[dOffset21 + 3] = p0;
buffer[dOffset3] = p0;
bOffset -= 8;
eOffset4 -= 8;
dOffset02 += 4;
dOffset21 += 4;
dOffset12 -= 4;
dOffset3 -= 4;
}
}
,decodePacket: function() {
var result = this.decodeInitial();
if(result == null) {
return null;
}
var rest = this.decodePacketRest(result);
return rest;
}
,decodeInitial: function() {
this.channelBufferStart = this.channelBufferEnd = 0;
while(true) {
if(!this.decodeState.maybeStartPacket()) {
return null;
}
var _this = this.decodeState;
var tmp;
if(_this.validBits < 0) {
tmp = 0;
} else if(_this.validBits < 1) {
if(_this.validBits == 0) {
_this.acc = 0;
}
while(true) {
if(_this.bytesInSeg == 0 && (_this.lastSeg || _this.next() == 0)) {
_this.validBits = -1;
break;
} else {
_this.bytesInSeg--;
_this.inputPosition += 1;
_this.acc = _this.acc + (_this.input.readByte() << _this.validBits);
_this.validBits += 8;
}
if(!(_this.validBits < 1)) {
break;
}
}
if(_this.validBits < 0) {
tmp = 0;
} else {
var z = _this.acc & 1;
_this.acc = _this.acc >>> 1;
_this.validBits -= 1;
tmp = z;
}
} else {
var z1 = _this.acc & 1;
_this.acc = _this.acc >>> 1;
_this.validBits -= 1;
tmp = z1;
}
if(tmp != 0) {
while(true) {
var _this1 = this.decodeState;
var x;
if(_this1.bytesInSeg == 0 && (_this1.lastSeg || _this1.next() == 0)) {
x = -1;
} else {
_this1.bytesInSeg--;
_this1.inputPosition += 1;
x = _this1.input.readByte();
}
_this1.validBits = 0;
if(!(-1 != x)) {
break;
}
}
continue;
}
break;
}
var _this2 = this.decodeState;
var n = this.header.modes.length - 1;
var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
var n1 = n < 16384 ? n < 16 ? log2_4[n] : n < 512 ? 5 + log2_4[n >> 5] : 10 + log2_4[n >> 10] : n < 16777216 ? n < 524288 ? 15 + log2_4[n >> 15] : 20 + log2_4[n >> 20] : n < 536870912 ? 25 + log2_4[n >> 25] : n < -2147483648 ? 30 + log2_4[n >> 30] : 0;
var i;
if(_this2.validBits < 0) {
i = 0;
} else if(_this2.validBits < n1) {
if(n1 > 24) {
i = _this2.readBits(24) + (_this2.readBits(n1 - 24) << 24);
} else {
if(_this2.validBits == 0) {
_this2.acc = 0;
}
while(true) {
if(_this2.bytesInSeg == 0 && (_this2.lastSeg || _this2.next() == 0)) {
_this2.validBits = -1;
break;
} else {
_this2.bytesInSeg--;
_this2.inputPosition += 1;
_this2.acc = _this2.acc + (_this2.input.readByte() << _this2.validBits);
_this2.validBits += 8;
}
if(!(_this2.validBits < n1)) {
break;
}
}
if(_this2.validBits < 0) {
i = 0;
} else {
var z2 = _this2.acc & (1 << n1) - 1;
_this2.acc = _this2.acc >>> n1;
_this2.validBits -= n1;
i = z2;
}
}
} else {
var z3 = _this2.acc & (1 << n1) - 1;
_this2.acc = _this2.acc >>> n1;
_this2.validBits -= n1;
i = z3;
}
if(i == -1 || i >= this.header.modes.length) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "VorbisDecoder.hx", lineNumber : 519, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "decodeInitial"}));
}
var m = this.header.modes[i];
var n2;
var prev;
var next;
if(m.blockflag) {
n2 = this.header.blocksize1;
var _this3 = this.decodeState;
if(_this3.validBits < 0) {
prev = 0;
} else if(_this3.validBits < 1) {
if(_this3.validBits == 0) {
_this3.acc = 0;
}
while(true) {
if(_this3.bytesInSeg == 0 && (_this3.lastSeg || _this3.next() == 0)) {
_this3.validBits = -1;
break;
} else {
_this3.bytesInSeg--;
_this3.inputPosition += 1;
_this3.acc = _this3.acc + (_this3.input.readByte() << _this3.validBits);
_this3.validBits += 8;
}
if(!(_this3.validBits < 1)) {
break;
}
}
if(_this3.validBits < 0) {
prev = 0;
} else {
var z4 = _this3.acc & 1;
_this3.acc = _this3.acc >>> 1;
_this3.validBits -= 1;
prev = z4;
}
} else {
var z5 = _this3.acc & 1;
_this3.acc = _this3.acc >>> 1;
_this3.validBits -= 1;
prev = z5;
}
var _this4 = this.decodeState;
if(_this4.validBits < 0) {
next = 0;
} else if(_this4.validBits < 1) {
if(_this4.validBits == 0) {
_this4.acc = 0;
}
while(true) {
if(_this4.bytesInSeg == 0 && (_this4.lastSeg || _this4.next() == 0)) {
_this4.validBits = -1;
break;
} else {
_this4.bytesInSeg--;
_this4.inputPosition += 1;
_this4.acc = _this4.acc + (_this4.input.readByte() << _this4.validBits);
_this4.validBits += 8;
}
if(!(_this4.validBits < 1)) {
break;
}
}
if(_this4.validBits < 0) {
next = 0;
} else {
var z6 = _this4.acc & 1;
_this4.acc = _this4.acc >>> 1;
_this4.validBits -= 1;
next = z6;
}
} else {
var z7 = _this4.acc & 1;
_this4.acc = _this4.acc >>> 1;
_this4.validBits -= 1;
next = z7;
}
} else {
next = 0;
prev = next;
n2 = this.header.blocksize0;
}
var windowCenter = n2 >> 1;
return { mode : i, left : m.blockflag && prev == 0 ? { start : n2 - this.header.blocksize0 >> 2, end : n2 + this.header.blocksize0 >> 2} : { start : 0, end : windowCenter}, right : m.blockflag && next == 0 ? { start : n2 * 3 - this.header.blocksize0 >> 2, end : n2 * 3 + this.header.blocksize0 >> 2} : { start : windowCenter, end : n2}};
}
,decodePacketRest: function(r) {
var len = 0;
var m = this.header.modes[r.mode];
var this1 = new Array(256);
var zeroChannel = this1;
var this2 = new Array(256);
var reallyZeroChannel = this2;
var n = m.blockflag ? this.header.blocksize1 : this.header.blocksize0;
var map = this.header.mapping[m.mapping];
var n2 = n >> 1;
var rangeList = [256,128,86,64];
var codebooks = this.header.codebooks;
var _g1 = 0;
var _g = this.header.channel;
while(_g1 < _g) {
var i = _g1++;
var s = map.chan[i].mux;
zeroChannel[i] = false;
var floor = this.header.floorConfig[map.submapFloor[s]];
if(floor.type == 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "VorbisDecoder.hx", lineNumber : 581, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "decodePacketRest"}));
} else {
var g = floor.floor1;
var _this = this.decodeState;
var tmp;
if(_this.validBits < 0) {
tmp = 0;
} else if(_this.validBits < 1) {
if(_this.validBits == 0) {
_this.acc = 0;
}
while(true) {
if(_this.bytesInSeg == 0 && (_this.lastSeg || _this.next() == 0)) {
_this.validBits = -1;
break;
} else {
_this.bytesInSeg--;
_this.inputPosition += 1;
_this.acc = _this.acc + (_this.input.readByte() << _this.validBits);
_this.validBits += 8;
}
if(!(_this.validBits < 1)) {
break;
}
}
if(_this.validBits < 0) {
tmp = 0;
} else {
var z = _this.acc & 1;
_this.acc = _this.acc >>> 1;
_this.validBits -= 1;
tmp = z;
}
} else {
var z1 = _this.acc & 1;
_this.acc = _this.acc >>> 1;
_this.validBits -= 1;
tmp = z1;
}
if(tmp != 0) {
var fy = [];
var this3 = new Array(256);
var step2Flag = this3;
var range = rangeList[g.floor1Multiplier - 1];
var offset = 2;
fy = this.finalY[i];
var _this1 = this.decodeState;
var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
var n1 = (range < 16384 ? range < 16 ? log2_4[range] : range < 512 ? 5 + log2_4[range >> 5] : 10 + log2_4[range >> 10] : range < 16777216 ? range < 524288 ? 15 + log2_4[range >> 15] : 20 + log2_4[range >> 20] : range < 536870912 ? 25 + log2_4[range >> 25] : range < -2147483648 ? 30 + log2_4[range >> 30] : 0) - 1;
var tmp1;
if(_this1.validBits < 0) {
tmp1 = 0;
} else if(_this1.validBits < n1) {
if(n1 > 24) {
tmp1 = _this1.readBits(24) + (_this1.readBits(n1 - 24) << 24);
} else {
if(_this1.validBits == 0) {
_this1.acc = 0;
}
while(true) {
if(_this1.bytesInSeg == 0 && (_this1.lastSeg || _this1.next() == 0)) {
_this1.validBits = -1;
break;
} else {
_this1.bytesInSeg--;
_this1.inputPosition += 1;
_this1.acc = _this1.acc + (_this1.input.readByte() << _this1.validBits);
_this1.validBits += 8;
}
if(!(_this1.validBits < n1)) {
break;
}
}
if(_this1.validBits < 0) {
tmp1 = 0;
} else {
var z2 = _this1.acc & (1 << n1) - 1;
_this1.acc = _this1.acc >>> n1;
_this1.validBits -= n1;
tmp1 = z2;
}
}
} else {
var z3 = _this1.acc & (1 << n1) - 1;
_this1.acc = _this1.acc >>> n1;
_this1.validBits -= n1;
tmp1 = z3;
}
fy[0] = tmp1;
var _this2 = this.decodeState;
var log2_41 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
var n3 = (range < 16384 ? range < 16 ? log2_41[range] : range < 512 ? 5 + log2_41[range >> 5] : 10 + log2_41[range >> 10] : range < 16777216 ? range < 524288 ? 15 + log2_41[range >> 15] : 20 + log2_41[range >> 20] : range < 536870912 ? 25 + log2_41[range >> 25] : range < -2147483648 ? 30 + log2_41[range >> 30] : 0) - 1;
var tmp2;
if(_this2.validBits < 0) {
tmp2 = 0;
} else if(_this2.validBits < n3) {
if(n3 > 24) {
tmp2 = _this2.readBits(24) + (_this2.readBits(n3 - 24) << 24);
} else {
if(_this2.validBits == 0) {
_this2.acc = 0;
}
while(true) {
if(_this2.bytesInSeg == 0 && (_this2.lastSeg || _this2.next() == 0)) {
_this2.validBits = -1;
break;
} else {
_this2.bytesInSeg--;
_this2.inputPosition += 1;
_this2.acc = _this2.acc + (_this2.input.readByte() << _this2.validBits);
_this2.validBits += 8;
}
if(!(_this2.validBits < n3)) {
break;
}
}
if(_this2.validBits < 0) {
tmp2 = 0;
} else {
var z4 = _this2.acc & (1 << n3) - 1;
_this2.acc = _this2.acc >>> n3;
_this2.validBits -= n3;
tmp2 = z4;
}
}
} else {
var z5 = _this2.acc & (1 << n3) - 1;
_this2.acc = _this2.acc >>> n3;
_this2.validBits -= n3;
tmp2 = z5;
}
fy[1] = tmp2;
var _g3 = 0;
var _g2 = g.partitions;
while(_g3 < _g2) {
var j = _g3++;
var pclass = g.partitionClassList[j];
var cdim = g.classDimensions[pclass];
var cbits = g.classSubclasses[pclass];
var csub = (1 << cbits) - 1;
var cval = 0;
if(cbits != 0) {
var c = codebooks[g.classMasterbooks[pclass]];
var _this3 = this.decodeState;
if(_this3.validBits < 10) {
_this3.prepHuffman();
}
var i1 = c.fastHuffman[_this3.acc & 1023];
var val;
if(i1 >= 0) {
var l = c.codewordLengths[i1];
_this3.acc = _this3.acc >>> l;
_this3.validBits -= l;
if(_this3.validBits < 0) {
_this3.validBits = 0;
val = -1;
} else {
val = i1;
}
} else {
val = _this3.decodeScalarRaw(c);
}
if(c.sparse) {
val = c.sortedValues[val];
}
cval = val;
}
var books = g.subclassBooks[pclass];
var _g5 = 0;
var _g4 = cdim;
while(_g5 < _g4) {
var k = _g5++;
var book = books[cval & csub];
cval >>= cbits;
var tmp3 = offset++;
var tmp4;
if(book >= 0) {
var _this4 = this.decodeState;
var c1 = codebooks[book];
if(_this4.validBits < 10) {
_this4.prepHuffman();
}
var i2 = c1.fastHuffman[_this4.acc & 1023];
var val1;
if(i2 >= 0) {
var l1 = c1.codewordLengths[i2];
_this4.acc = _this4.acc >>> l1;
_this4.validBits -= l1;
if(_this4.validBits < 0) {
_this4.validBits = 0;
val1 = -1;
} else {
val1 = i2;
}
} else {
val1 = _this4.decodeScalarRaw(c1);
}
if(c1.sparse) {
val1 = c1.sortedValues[val1];
}
tmp4 = val1;
} else {
tmp4 = 0;
}
fy[tmp3] = tmp4;
}
}
if(this.decodeState.validBits == -1) {
zeroChannel[i] = true;
continue;
}
step2Flag[0] = step2Flag[1] = true;
var naighbors = g.neighbors;
var xlist = g.xlist;
var _g31 = 2;
var _g21 = g.values;
while(_g31 < _g21) {
var j1 = _g31++;
var low = naighbors[j1][0];
var high = naighbors[j1][1];
var x0 = xlist[low];
var y0 = fy[low];
var dy = fy[high] - y0;
var adx = xlist[high] - x0;
var err = Math.abs(dy) * (xlist[j1] - x0);
var off = err / adx | 0;
var lowroom = dy < 0 ? y0 - off : y0 + off;
var val2 = fy[j1];
var highroom = range - lowroom;
var room = highroom < lowroom ? highroom * 2 : lowroom * 2;
if(val2 != 0) {
step2Flag[low] = step2Flag[high] = true;
step2Flag[j1] = true;
if(val2 >= room) {
if(highroom > lowroom) {
fy[j1] = val2 - lowroom + lowroom;
} else {
fy[j1] = lowroom - val2 + highroom - 1;
}
} else if((val2 & 1) != 0) {
fy[j1] = lowroom - (val2 + 1 >> 1);
} else {
fy[j1] = lowroom + (val2 >> 1);
}
} else {
step2Flag[j1] = false;
fy[j1] = lowroom;
}
}
var _g32 = 0;
var _g22 = g.values;
while(_g32 < _g22) {
var j2 = _g32++;
if(!step2Flag[j2]) {
fy[j2] = -1;
}
}
} else {
zeroChannel[i] = true;
}
}
}
var _g11 = 0;
var _g6 = this.header.channel;
while(_g11 < _g6) {
var i3 = _g11++;
reallyZeroChannel[i3] = zeroChannel[i3];
}
var _g12 = 0;
var _g7 = map.couplingSteps;
while(_g12 < _g7) {
var i4 = _g12++;
if(!zeroChannel[map.chan[i4].magnitude] || !zeroChannel[map.chan[i4].angle]) {
zeroChannel[map.chan[i4].magnitude] = zeroChannel[map.chan[i4].angle] = false;
}
}
var _g13 = 0;
var _g8 = map.submaps;
while(_g13 < _g8) {
var i5 = _g13++;
var length = this.header.channel;
var this4 = new Array(length);
var residueBuffers = this4;
var this5 = new Array(256);
var doNotDecode = this5;
var ch = 0;
var _g33 = 0;
var _g23 = this.header.channel;
while(_g33 < _g23) {
var j3 = _g33++;
if(map.chan[j3].mux == i5) {
if(zeroChannel[j3]) {
doNotDecode[ch] = true;
residueBuffers[ch] = null;
} else {
doNotDecode[ch] = false;
residueBuffers[ch] = this.channelBuffers[j3];
}
++ch;
}
}
var r1 = map.submapResidue[i5];
var residue = this.header.residueConfig[r1];
residue.decode(this.decodeState,this.header,residueBuffers,ch,n2,doNotDecode,this.channelBuffers);
}
var i6 = map.couplingSteps;
var n21 = n >> 1;
while(--i6 >= 0) {
var m1 = this.channelBuffers[map.chan[i6].magnitude];
var a = this.channelBuffers[map.chan[i6].angle];
var _g14 = 0;
var _g9 = n21;
while(_g14 < _g9) {
var j4 = _g14++;
var a2;
var m2;
if(m1[j4] > 0) {
if(a[j4] > 0) {
m2 = m1[j4];
a2 = m1[j4] - a[j4];
} else {
a2 = m1[j4];
m2 = m1[j4] + a[j4];
}
} else if(a[j4] > 0) {
m2 = m1[j4];
a2 = m1[j4] + a[j4];
} else {
a2 = m1[j4];
m2 = m1[j4] - a[j4];
}
m1[j4] = m2;
a[j4] = a2;
}
}
var _g15 = 0;
var _g10 = this.header.channel;
while(_g15 < _g10) {
var i7 = _g15++;
if(reallyZeroChannel[i7]) {
var _g34 = 0;
var _g24 = n21;
while(_g34 < _g24) {
var j5 = _g34++;
this.channelBuffers[i7][j5] = 0;
}
} else {
map.doFloor(this.header.floorConfig,i7,n,this.channelBuffers[i7],this.finalY[i7],null);
}
}
var _g16 = 0;
var _g17 = this.header.channel;
while(_g16 < _g17) {
var i8 = _g16++;
this.inverseMdct(this.channelBuffers[i8],n,m.blockflag);
}
var _this5 = this.decodeState;
while(_this5.bytesInSeg != 0 || !_this5.lastSeg && _this5.next() != 0) {
_this5.bytesInSeg--;
_this5.inputPosition += 1;
_this5.input.readByte();
}
return this.decodeState.finishDecodePacket(this.previousLength,n,r);
}
,__class__: kha_audio2_ogg_vorbis_VorbisDecoder
};
var kha_audio2_ogg_vorbis_VorbisTools = function() { };
$hxClasses["kha.audio2.ogg.vorbis.VorbisTools"] = kha_audio2_ogg_vorbis_VorbisTools;
kha_audio2_ogg_vorbis_VorbisTools.__name__ = true;
kha_audio2_ogg_vorbis_VorbisTools.assert = function(b,p) {
};
kha_audio2_ogg_vorbis_VorbisTools.neighbors = function(x,n) {
var low = -1;
var high = 65536;
var plow = 0;
var phigh = 0;
var _g1 = 0;
var _g = n;
while(_g1 < _g) {
var i = _g1++;
if(x[i] > low && x[i] < x[n]) {
plow = i;
low = x[i];
}
if(x[i] < high && x[i] > x[n]) {
phigh = i;
high = x[i];
}
}
return { low : plow, high : phigh};
};
kha_audio2_ogg_vorbis_VorbisTools.floatUnpack = function(x) {
var mantissa = _$UInt_UInt_$Impl_$.toFloat(x & 2097151);
var sign = x & -2147483648;
var exp = (x & 2145386496) >>> 21;
var res = sign != 0 ? -mantissa : mantissa;
return res * Math.pow(2,exp - 788);
};
kha_audio2_ogg_vorbis_VorbisTools.bitReverse = function(n) {
n = (n & -1431655766) >>> 1 | (n & 1431655765) << 1;
n = (n & -858993460) >>> 2 | (n & 858993459) << 2;
n = (n & -252645136) >>> 4 | (n & 252645135) << 4;
n = (n & -16711936) >>> 8 | (n & 16711935) << 8;
return n >>> 16 | n << 16;
};
kha_audio2_ogg_vorbis_VorbisTools.pointCompare = function(a,b) {
if(a.x < b.x) {
return -1;
} else if(a.x > b.x) {
return 1;
} else {
return 0;
}
};
kha_audio2_ogg_vorbis_VorbisTools.uintAsc = function(a,b) {
if(_$UInt_UInt_$Impl_$.gt(b,a)) {
return -1;
} else if(a == b) {
return 0;
} else {
return 1;
}
};
kha_audio2_ogg_vorbis_VorbisTools.lookup1Values = function(entries,dim) {
var r = Math.exp(Math.log(entries) / dim) | 0;
if((Math.pow(r + 1,dim) | 0) <= entries) {
++r;
}
var b = Math.pow(r + 1,dim) > entries;
var b1 = (Math.pow(r,dim) | 0) <= entries;
return r;
};
kha_audio2_ogg_vorbis_VorbisTools.computeWindow = function(n,window) {
var n2 = n >> 1;
var _g1 = 0;
var _g = n2;
while(_g1 < _g) {
var i = _g1++;
window[i] = Math.sin(1.57079632679489656 * kha_audio2_ogg_vorbis_VorbisTools.square(Math.sin((i + 0.5) / n2 * 0.5 * 3.14159265358979323846264)));
}
};
kha_audio2_ogg_vorbis_VorbisTools.square = function(f) {
return f * f;
};
kha_audio2_ogg_vorbis_VorbisTools.computeBitReverse = function(n,rev) {
var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
var ld = (n < 16384 ? n < 16 ? log2_4[n] : n < 512 ? 5 + log2_4[n >> 5] : 10 + log2_4[n >> 10] : n < 16777216 ? n < 524288 ? 15 + log2_4[n >> 15] : 20 + log2_4[n >> 20] : n < 536870912 ? 25 + log2_4[n >> 25] : n < -2147483648 ? 30 + log2_4[n >> 30] : 0) - 1;
var n8 = n >> 3;
var _g1 = 0;
var _g = n8;
while(_g1 < _g) {
var i = _g1++;
var n1 = i;
n1 = (n1 & -1431655766) >>> 1 | (n1 & 1431655765) << 1;
n1 = (n1 & -858993460) >>> 2 | (n1 & 858993459) << 2;
n1 = (n1 & -252645136) >>> 4 | (n1 & 252645135) << 4;
n1 = (n1 & -16711936) >>> 8 | (n1 & 16711935) << 8;
rev[i] = (n1 >>> 16 | n1 << 16) >>> 32 - ld + 3 << 2;
}
};
kha_audio2_ogg_vorbis_VorbisTools.computeTwiddleFactors = function(n,af,bf,cf) {
var n4 = n >> 2;
var n8 = n >> 3;
var k2 = 0;
var _g1 = 0;
var _g = n4;
while(_g1 < _g) {
var k = _g1++;
af[k2] = Math.cos(4 * k * 3.14159265358979323846264 / n);
af[k2 + 1] = -Math.sin(4 * k * 3.14159265358979323846264 / n);
bf[k2] = Math.cos((k2 + 1) * 3.14159265358979323846264 / n / 2) * 0.5;
bf[k2 + 1] = Math.sin((k2 + 1) * 3.14159265358979323846264 / n / 2) * 0.5;
k2 += 2;
}
var k21 = 0;
var _g11 = 0;
var _g2 = n8;
while(_g11 < _g2) {
var k1 = _g11++;
cf[k21] = Math.cos(2 * (k21 + 1) * 3.14159265358979323846264 / n);
cf[k21 + 1] = -Math.sin(2 * (k21 + 1) * 3.14159265358979323846264 / n);
k21 += 2;
}
};
kha_audio2_ogg_vorbis_VorbisTools.drawLine = function(output,x0,y0,x1,y1,n) {
if(kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable == null) {
var this1 = new Array(32);
kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable = this1;
var _g = 0;
while(_g < 32) {
var i = _g++;
var this2 = kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable;
var this3 = new Array(64);
this2[i] = this3;
var _g1 = 1;
while(_g1 < 64) {
var j = _g1++;
kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable[i][j] = i / j | 0;
}
}
}
var dy = y1 - y0;
var adx = x1 - x0;
var ady = dy < 0 ? -dy : dy;
var base;
var x = x0;
var y = y0;
var err = 0;
var sy;
if(adx < 64 && ady < 32) {
if(dy < 0) {
base = -kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable[ady][adx];
sy = base - 1;
} else {
base = kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable[ady][adx];
sy = base + 1;
}
} else {
base = dy / adx | 0;
if(dy < 0) {
sy = base - 1;
} else {
sy = base + 1;
}
}
ady -= (base < 0 ? -base : base) * adx;
if(x1 > n) {
x1 = n;
}
var _g2 = x;
var _g11 = output;
_g11[_g2] = _g11[_g2] * kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE[y];
var _g12 = x + 1;
var _g3 = x1;
while(_g12 < _g3) {
var i1 = _g12++;
err += ady;
if(err >= adx) {
err -= adx;
y += sy;
} else {
y += base;
}
var _g21 = i1;
var _g31 = output;
_g31[_g21] = _g31[_g21] * kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE[y];
}
};
kha_audio2_ogg_vorbis_VorbisTools.predictPoint = function(x,x0,x1,y0,y1) {
var dy = y1 - y0;
var adx = x1 - x0;
var err = Math.abs(dy) * (x - x0);
var off = err / adx | 0;
if(dy < 0) {
return y0 - off;
} else {
return y0 + off;
}
};
kha_audio2_ogg_vorbis_VorbisTools.emptyFloatVector = function(len) {
var this1 = new Array(len);
var vec = this1;
return vec;
};
kha_audio2_ogg_vorbis_VorbisTools.copyVector = function(source) {
var length = source.length;
var this1 = new Array(length);
var dest = this1;
var _g1 = 0;
var _g = source.length;
while(_g1 < _g) {
var i = _g1++;
dest[i] = source[i];
}
return dest;
};
var kha_audio2_ogg_vorbis_data_Codebook = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.Codebook"] = kha_audio2_ogg_vorbis_data_Codebook;
kha_audio2_ogg_vorbis_data_Codebook.__name__ = true;
kha_audio2_ogg_vorbis_data_Codebook.read = function(decodeState) {
var c = new kha_audio2_ogg_vorbis_data_Codebook();
var tmp;
var tmp1;
var tmp2;
if(decodeState.validBits < 0) {
tmp2 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp2 = 0;
} else {
var z = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp2 = z;
}
} else {
var z1 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp2 = z1;
}
if(tmp2 == 66) {
var tmp3;
if(decodeState.validBits < 0) {
tmp3 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp3 = 0;
} else {
var z2 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp3 = z2;
}
} else {
var z3 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp3 = z3;
}
tmp1 = tmp3 != 67;
} else {
tmp1 = true;
}
if(!tmp1) {
var tmp4;
if(decodeState.validBits < 0) {
tmp4 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp4 = 0;
} else {
var z4 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp4 = z4;
}
} else {
var z5 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp4 = z5;
}
tmp = tmp4 != 86;
} else {
tmp = true;
}
if(tmp) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Codebook.hx", lineNumber : 40, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"}));
}
var x;
if(decodeState.validBits < 0) {
x = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
x = 0;
} else {
var z6 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
x = z6;
}
} else {
var z7 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
x = z7;
}
var tmp5;
if(decodeState.validBits < 0) {
tmp5 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp5 = 0;
} else {
var z8 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp5 = z8;
}
} else {
var z9 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp5 = z9;
}
c.dimensions = (tmp5 << 8) + x;
var x1;
if(decodeState.validBits < 0) {
x1 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
x1 = 0;
} else {
var z10 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
x1 = z10;
}
} else {
var z11 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
x1 = z11;
}
var y;
if(decodeState.validBits < 0) {
y = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
y = 0;
} else {
var z12 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
y = z12;
}
} else {
var z13 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
y = z13;
}
var tmp6;
if(decodeState.validBits < 0) {
tmp6 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp6 = 0;
} else {
var z14 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp6 = z14;
}
} else {
var z15 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp6 = z15;
}
c.entries = (tmp6 << 16) + (y << 8) + x1;
var ordered;
if(decodeState.validBits < 0) {
ordered = 0;
} else if(decodeState.validBits < 1) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 1)) {
break;
}
}
if(decodeState.validBits < 0) {
ordered = 0;
} else {
var z16 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
ordered = z16;
}
} else {
var z17 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
ordered = z17;
}
var tmp7;
if(ordered != 0) {
tmp7 = false;
} else {
var tmp8;
if(decodeState.validBits < 0) {
tmp8 = 0;
} else if(decodeState.validBits < 1) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 1)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp8 = 0;
} else {
var z18 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp8 = z18;
}
} else {
var z19 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp8 = z19;
}
tmp7 = tmp8 != 0;
}
c.sparse = tmp7;
var length = c.entries;
var this1 = new Array(length);
var lengths = this1;
if(!c.sparse) {
c.codewordLengths = lengths;
}
var total = 0;
if(ordered != 0) {
var currentEntry = 0;
var currentLength;
if(decodeState.validBits < 0) {
currentLength = 0;
} else if(decodeState.validBits < 5) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 5)) {
break;
}
}
if(decodeState.validBits < 0) {
currentLength = 0;
} else {
var z20 = decodeState.acc & 31;
decodeState.acc = decodeState.acc >>> 5;
decodeState.validBits -= 5;
currentLength = z20;
}
} else {
var z21 = decodeState.acc & 31;
decodeState.acc = decodeState.acc >>> 5;
decodeState.validBits -= 5;
currentLength = z21;
}
var currentLength1 = currentLength + 1;
while(currentEntry < c.entries) {
var limit = c.entries - currentEntry;
var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
var n = limit < 16384 ? limit < 16 ? log2_4[limit] : limit < 512 ? 5 + log2_4[limit >> 5] : 10 + log2_4[limit >> 10] : limit < 16777216 ? limit < 524288 ? 15 + log2_4[limit >> 15] : 20 + log2_4[limit >> 20] : limit < 536870912 ? 25 + log2_4[limit >> 25] : limit < -2147483648 ? 30 + log2_4[limit >> 30] : 0;
var n1;
if(decodeState.validBits < 0) {
n1 = 0;
} else if(decodeState.validBits < n) {
if(n > 24) {
n1 = decodeState.readBits(24) + (decodeState.readBits(n - 24) << 24);
} else {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < n)) {
break;
}
}
if(decodeState.validBits < 0) {
n1 = 0;
} else {
var z22 = decodeState.acc & (1 << n) - 1;
decodeState.acc = decodeState.acc >>> n;
decodeState.validBits -= n;
n1 = z22;
}
}
} else {
var z23 = decodeState.acc & (1 << n) - 1;
decodeState.acc = decodeState.acc >>> n;
decodeState.validBits -= n;
n1 = z23;
}
if(currentEntry + n1 > c.entries) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"codebook entrys",{ fileName : "Codebook.hx", lineNumber : 67, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"}));
}
var _g1 = 0;
var _g = n1;
while(_g1 < _g) {
var i = _g1++;
lengths[currentEntry + i] = currentLength1;
}
currentEntry += n1;
++currentLength1;
}
} else {
var _g11 = 0;
var _g2 = c.entries;
while(_g11 < _g2) {
var j = _g11++;
var present;
if(c.sparse) {
if(decodeState.validBits < 0) {
present = 0;
} else if(decodeState.validBits < 1) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 1)) {
break;
}
}
if(decodeState.validBits < 0) {
present = 0;
} else {
var z24 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
present = z24;
}
} else {
var z25 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
present = z25;
}
} else {
present = 1;
}
if(present != 0) {
var val;
if(decodeState.validBits < 0) {
val = 0;
} else if(decodeState.validBits < 5) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 5)) {
break;
}
}
if(decodeState.validBits < 0) {
val = 0;
} else {
var z26 = decodeState.acc & 31;
decodeState.acc = decodeState.acc >>> 5;
decodeState.validBits -= 5;
val = z26;
}
} else {
var z27 = decodeState.acc & 31;
decodeState.acc = decodeState.acc >>> 5;
decodeState.validBits -= 5;
val = z27;
}
lengths[j] = val + 1;
++total;
} else {
lengths[j] = 255;
}
}
}
if(c.sparse && total >= c.entries >> 2) {
c.codewordLengths = lengths;
c.sparse = false;
}
var tmp9;
if(c.sparse) {
tmp9 = total;
} else {
var sortedCount = 0;
var _g12 = 0;
var _g3 = c.entries;
while(_g12 < _g3) {
var j1 = _g12++;
var l = lengths[j1];
if(l > 10 && l != 255) {
++sortedCount;
}
}
tmp9 = sortedCount;
}
c.sortedEntries = tmp9;
var values = null;
if(!c.sparse) {
var length1 = c.entries;
var this2 = new Array(length1);
c.codewords = this2;
} else {
if(c.sortedEntries != 0) {
var length2 = c.sortedEntries;
var this3 = new Array(length2);
c.codewordLengths = this3;
var length3 = c.entries;
var this4 = new Array(length3);
c.codewords = this4;
var length4 = c.entries;
var this5 = new Array(length4);
values = this5;
}
var size = c.entries + 64 * c.sortedEntries;
}
if(!c.computeCodewords(lengths,c.entries,values)) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"compute codewords",{ fileName : "Codebook.hx", lineNumber : 120, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"}));
}
if(c.sortedEntries != 0) {
c.sortedCodewords = [];
var length5 = c.sortedEntries;
var this6 = new Array(length5);
c.sortedValues = this6;
c.computeSortedHuffman(lengths,values);
}
if(c.sparse) {
values = null;
c.codewords = null;
lengths = null;
}
c.computeAcceleratedHuffman();
var tmp10;
if(decodeState.validBits < 0) {
tmp10 = 0;
} else if(decodeState.validBits < 4) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 4)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp10 = 0;
} else {
var z28 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp10 = z28;
}
} else {
var z29 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp10 = z29;
}
c.lookupType = tmp10;
if(c.lookupType > 2) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"codebook lookup type",{ fileName : "Codebook.hx", lineNumber : 143, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"}));
}
if(c.lookupType > 0) {
var x2;
if(decodeState.validBits < 0) {
x2 = 0;
} else if(decodeState.validBits < 32) {
x2 = decodeState.readBits(24) + (decodeState.readBits(8) << 24);
} else {
var z30 = decodeState.acc & -1;
decodeState.acc = decodeState.acc >>> 32;
decodeState.validBits -= 32;
x2 = z30;
}
var mantissa = _$UInt_UInt_$Impl_$.toFloat(x2 & 2097151);
var sign = x2 & -2147483648;
var exp = (x2 & 2145386496) >>> 21;
var res = sign != 0 ? -mantissa : mantissa;
c.minimumValue = res * Math.pow(2,exp - 788);
var x3;
if(decodeState.validBits < 0) {
x3 = 0;
} else if(decodeState.validBits < 32) {
x3 = decodeState.readBits(24) + (decodeState.readBits(8) << 24);
} else {
var z31 = decodeState.acc & -1;
decodeState.acc = decodeState.acc >>> 32;
decodeState.validBits -= 32;
x3 = z31;
}
var mantissa1 = _$UInt_UInt_$Impl_$.toFloat(x3 & 2097151);
var sign1 = x3 & -2147483648;
var exp1 = (x3 & 2145386496) >>> 21;
var res1 = sign1 != 0 ? -mantissa1 : mantissa1;
c.deltaValue = res1 * Math.pow(2,exp1 - 788);
var tmp11;
if(decodeState.validBits < 0) {
tmp11 = 0;
} else if(decodeState.validBits < 4) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 4)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp11 = 0;
} else {
var z32 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp11 = z32;
}
} else {
var z33 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp11 = z33;
}
c.valueBits = tmp11 + 1;
var tmp12;
if(decodeState.validBits < 0) {
tmp12 = 0;
} else if(decodeState.validBits < 1) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 1)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp12 = 0;
} else {
var z34 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp12 = z34;
}
} else {
var z35 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp12 = z35;
}
c.sequenceP = tmp12 != 0;
if(c.lookupType == 1) {
c.lookupValues = kha_audio2_ogg_vorbis_VorbisTools.lookup1Values(c.entries,c.dimensions);
} else {
c.lookupValues = c.entries * c.dimensions;
}
var length6 = c.lookupValues;
var this7 = new Array(length6);
var mults = this7;
var _g13 = 0;
var _g4 = c.lookupValues;
while(_g13 < _g4) {
var j2 = _g13++;
var n2 = c.valueBits;
var q;
if(decodeState.validBits < 0) {
q = 0;
} else if(decodeState.validBits < n2) {
if(n2 > 24) {
q = decodeState.readBits(24) + (decodeState.readBits(n2 - 24) << 24);
} else {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < n2)) {
break;
}
}
if(decodeState.validBits < 0) {
q = 0;
} else {
var z36 = decodeState.acc & (1 << n2) - 1;
decodeState.acc = decodeState.acc >>> n2;
decodeState.validBits -= n2;
q = z36;
}
}
} else {
var z37 = decodeState.acc & (1 << n2) - 1;
decodeState.acc = decodeState.acc >>> n2;
decodeState.validBits -= n2;
q = z37;
}
if(q == -1) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"fail lookup",{ fileName : "Codebook.hx", lineNumber : 161, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"}));
}
mults[j2] = q;
}
var length7 = c.lookupValues;
var this8 = new Array(length7);
c.multiplicands = this8;
var _g14 = 0;
var _g5 = c.lookupValues;
while(_g14 < _g5) {
var j3 = _g14++;
c.multiplicands[j3] = mults[j3] * c.deltaValue + c.minimumValue;
}
if(c.lookupType == 2 && c.sequenceP) {
var _g15 = 1;
var _g6 = c.lookupValues;
while(_g15 < _g6) {
var j4 = _g15++;
c.multiplicands[j4] = c.multiplicands[j4 - 1];
}
c.sequenceP = false;
}
}
return c;
};
kha_audio2_ogg_vorbis_data_Codebook.prototype = {
dimensions: null
,entries: null
,codewordLengths: null
,minimumValue: null
,deltaValue: null
,valueBits: null
,lookupType: null
,sequenceP: null
,sparse: null
,lookupValues: null
,multiplicands: null
,codewords: null
,fastHuffman: null
,sortedCodewords: null
,sortedValues: null
,sortedEntries: null
,addEntry: function(huffCode,symbol,count,len,values) {
if(!this.sparse) {
this.codewords[symbol] = huffCode;
} else {
this.codewords[count] = huffCode;
this.codewordLengths[count] = len;
values[count] = symbol;
}
}
,includeInSort: function(len) {
if(this.sparse) {
return true;
} else if(len == 255) {
return false;
} else if(len > 10) {
return true;
} else {
return false;
}
}
,computeCodewords: function(len,n,values) {
var this1 = new Array(32);
var available = this1;
var _g = 0;
while(_g < 32) {
var x = _g++;
available[x] = 0;
}
var k = 0;
while(k < n) {
if(len[k] < 255) {
break;
}
++k;
}
if(k == n) {
var b = this.sortedEntries == 0;
return true;
}
var m = 0;
var count = m++;
if(!this.sparse) {
this.codewords[k] = 0;
} else {
this.codewords[count] = 0;
this.codewordLengths[count] = len[k];
values[count] = k;
}
var i = 0;
while(++i <= len[k]) available[i] = 1 << 32 - i;
i = k;
while(++i < n) {
var z = len[i];
if(z == 255) {
continue;
}
while(z > 0 && available[z] == 0) --z;
if(z == 0) {
return false;
}
var res = available[z];
available[z] = 0;
var n1 = res;
n1 = (n1 & -1431655766) >>> 1 | (n1 & 1431655765) << 1;
n1 = (n1 & -858993460) >>> 2 | (n1 & 858993459) << 2;
n1 = (n1 & -252645136) >>> 4 | (n1 & 252645135) << 4;
n1 = (n1 & -16711936) >>> 8 | (n1 & 16711935) << 8;
var huffCode = n1 >>> 16 | n1 << 16;
var count1 = m++;
if(!this.sparse) {
this.codewords[i] = huffCode;
} else {
this.codewords[count1] = huffCode;
this.codewordLengths[count1] = len[i];
values[count1] = i;
}
if(z != len[i]) {
var y = len[i];
while(y > z) {
available[y] = res + (1 << 32 - y);
--y;
}
}
}
return true;
}
,computeSortedHuffman: function(lengths,values) {
if(!this.sparse) {
var k = 0;
var _g1 = 0;
var _g = this.entries;
while(_g1 < _g) {
var i = _g1++;
var len = lengths[i];
if(this.sparse ? true : len == 255 ? false : len > 10) {
var n = this.codewords[i];
n = (n & -1431655766) >>> 1 | (n & 1431655765) << 1;
n = (n & -858993460) >>> 2 | (n & 858993459) << 2;
n = (n & -252645136) >>> 4 | (n & 252645135) << 4;
n = (n & -16711936) >>> 8 | (n & 16711935) << 8;
this.sortedCodewords[k++] = n >>> 16 | n << 16;
}
}
var b = k == this.sortedEntries;
} else {
var _g11 = 0;
var _g2 = this.sortedEntries;
while(_g11 < _g2) {
var i1 = _g11++;
var n1 = this.codewords[i1];
n1 = (n1 & -1431655766) >>> 1 | (n1 & 1431655765) << 1;
n1 = (n1 & -858993460) >>> 2 | (n1 & 858993459) << 2;
n1 = (n1 & -252645136) >>> 4 | (n1 & 252645135) << 4;
n1 = (n1 & -16711936) >>> 8 | (n1 & 16711935) << 8;
this.sortedCodewords[i1] = n1 >>> 16 | n1 << 16;
}
}
this.sortedCodewords[this.sortedEntries] = -1;
this.sortedCodewords.sort(kha_audio2_ogg_vorbis_VorbisTools.uintAsc);
var len1 = this.sparse ? this.sortedEntries : this.entries;
var _g12 = 0;
var _g3 = len1;
while(_g12 < _g3) {
var i2 = _g12++;
var huffLen = this.sparse ? lengths[values[i2]] : lengths[i2];
if(this.sparse ? true : huffLen == 255 ? false : huffLen > 10) {
var n2 = this.codewords[i2];
n2 = (n2 & -1431655766) >>> 1 | (n2 & 1431655765) << 1;
n2 = (n2 & -858993460) >>> 2 | (n2 & 858993459) << 2;
n2 = (n2 & -252645136) >>> 4 | (n2 & 252645135) << 4;
n2 = (n2 & -16711936) >>> 8 | (n2 & 16711935) << 8;
var code = n2 >>> 16 | n2 << 16;
var x = 0;
var n3 = this.sortedEntries;
while(n3 > 1) {
var m = x + (n3 >> 1);
if(_$UInt_UInt_$Impl_$.gte(code,this.sortedCodewords[m])) {
x = m;
n3 -= n3 >> 1;
} else {
n3 >>= 1;
}
}
if(this.sparse) {
this.sortedValues[x] = values[i2];
this.codewordLengths[x] = huffLen;
} else {
this.sortedValues[x] = i2;
}
}
}
}
,computeAcceleratedHuffman: function() {
var this1 = new Array(1024);
this.fastHuffman = this1;
this.fastHuffman[0] = -1;
var _g1 = 0;
var _g = 1024;
while(_g1 < _g) {
var i = _g1++;
this.fastHuffman[i] = -1;
}
var len = this.sparse ? this.sortedEntries : this.entries;
var _g11 = 0;
var _g2 = len;
while(_g11 < _g2) {
var i1 = _g11++;
if(this.codewordLengths[i1] <= 10) {
var z;
if(this.sparse) {
var n = this.sortedCodewords[i1];
n = (n & -1431655766) >>> 1 | (n & 1431655765) << 1;
n = (n & -858993460) >>> 2 | (n & 858993459) << 2;
n = (n & -252645136) >>> 4 | (n & 252645135) << 4;
n = (n & -16711936) >>> 8 | (n & 16711935) << 8;
z = n >>> 16 | n << 16;
} else {
z = this.codewords[i1];
}
while(z < 1024) {
this.fastHuffman[z] = i1;
z += 1 << this.codewordLengths[i1];
}
}
}
}
,codebookDecode: function(decodeState,output,offset,len) {
if(decodeState.validBits < 10) {
decodeState.prepHuffman();
}
var i = this.fastHuffman[decodeState.acc & 1023];
var val;
if(i >= 0) {
var l = this.codewordLengths[i];
decodeState.acc = decodeState.acc >>> l;
decodeState.validBits -= l;
if(decodeState.validBits < 0) {
decodeState.validBits = 0;
val = -1;
} else {
val = i;
}
} else {
val = decodeState.decodeScalarRaw(this);
}
if(this.sparse) {
val = this.sortedValues[val];
}
var z = val;
var lookupValues = this.lookupValues;
var sequenceP = this.sequenceP;
var multiplicands = this.multiplicands;
var minimumValue = this.minimumValue;
if(z < 0) {
return false;
}
if(len > this.dimensions) {
len = this.dimensions;
}
if(this.lookupType == 1) {
var div = 1;
var last = 0.0;
var _g1 = 0;
var _g = len;
while(_g1 < _g) {
var i1 = _g1++;
var off = _$UInt_UInt_$Impl_$.toFloat(z / div | 0) % _$UInt_UInt_$Impl_$.toFloat(lookupValues) | 0;
var val1 = multiplicands[off] + last;
var _g2 = offset + i1;
var _g3 = output;
_g3[_g2] = _g3[_g2] + val1;
if(sequenceP) {
last = val1 + minimumValue;
}
div = div * lookupValues;
}
return true;
}
z *= this.dimensions;
if(sequenceP) {
var last1 = 0.0;
var _g11 = 0;
var _g4 = len;
while(_g11 < _g4) {
var i2 = _g11++;
var val2 = multiplicands[z + i2] + last1;
var _g21 = offset + i2;
var _g31 = output;
_g31[_g21] = _g31[_g21] + val2;
last1 = val2 + minimumValue;
}
} else {
var last2 = 0.0;
var _g12 = 0;
var _g5 = len;
while(_g12 < _g5) {
var i3 = _g12++;
var _g22 = offset + i3;
var _g32 = output;
_g32[_g22] = _g32[_g22] + (multiplicands[z + i3] + last2);
}
}
return true;
}
,codebookDecodeStep: function(decodeState,output,offset,len,step) {
if(decodeState.validBits < 10) {
decodeState.prepHuffman();
}
var i = this.fastHuffman[decodeState.acc & 1023];
var val;
if(i >= 0) {
var l = this.codewordLengths[i];
decodeState.acc = decodeState.acc >>> l;
decodeState.validBits -= l;
if(decodeState.validBits < 0) {
decodeState.validBits = 0;
val = -1;
} else {
val = i;
}
} else {
val = decodeState.decodeScalarRaw(this);
}
if(this.sparse) {
val = this.sortedValues[val];
}
var z = val;
var last = 0.0;
if(z < 0) {
return false;
}
if(len > this.dimensions) {
len = this.dimensions;
}
var lookupValues = this.lookupValues;
var sequenceP = this.sequenceP;
var multiplicands = this.multiplicands;
if(this.lookupType == 1) {
var div = 1;
var _g1 = 0;
var _g = len;
while(_g1 < _g) {
var i1 = _g1++;
var off = _$UInt_UInt_$Impl_$.toFloat(z / div | 0) % _$UInt_UInt_$Impl_$.toFloat(lookupValues) | 0;
var val1 = multiplicands[off] + last;
var _g2 = offset + i1 * step;
var _g3 = output;
_g3[_g2] = _g3[_g2] + val1;
if(sequenceP) {
last = val1;
}
div = div * lookupValues;
}
return true;
}
z *= this.dimensions;
var _g11 = 0;
var _g4 = len;
while(_g11 < _g4) {
var i2 = _g11++;
var val2 = multiplicands[z + i2] + last;
var _g21 = offset + i2 * step;
var _g31 = output;
_g31[_g21] = _g31[_g21] + val2;
if(sequenceP) {
last = val2;
}
}
return true;
}
,decodeStart: function(decodeState) {
if(decodeState.validBits < 10) {
decodeState.prepHuffman();
}
var i = this.fastHuffman[decodeState.acc & 1023];
var val;
if(i >= 0) {
var l = this.codewordLengths[i];
decodeState.acc = decodeState.acc >>> l;
decodeState.validBits -= l;
if(decodeState.validBits < 0) {
decodeState.validBits = 0;
val = -1;
} else {
val = i;
}
} else {
val = decodeState.decodeScalarRaw(this);
}
if(this.sparse) {
val = this.sortedValues[val];
}
return val;
}
,decodeDeinterleaveRepeat: function(decodeState,residueBuffers,ch,cInter,pInter,len,totalDecode) {
var effective = this.dimensions;
if(this.lookupType == 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "Codebook.hx", lineNumber : 488, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "decodeDeinterleaveRepeat"}));
}
var multiplicands = this.multiplicands;
var sequenceP = this.sequenceP;
var lookupValues = this.lookupValues;
while(totalDecode > 0) {
var last = 0.0;
if(decodeState.validBits < 10) {
decodeState.prepHuffman();
}
var i = this.fastHuffman[decodeState.acc & 1023];
var val;
if(i >= 0) {
var l = this.codewordLengths[i];
decodeState.acc = decodeState.acc >>> l;
decodeState.validBits -= l;
if(decodeState.validBits < 0) {
decodeState.validBits = 0;
val = -1;
} else {
val = i;
}
} else {
val = decodeState.decodeScalarRaw(this);
}
if(this.sparse) {
val = this.sortedValues[val];
}
var z = val;
if(z < 0) {
if(decodeState.bytesInSeg == 0 && decodeState.lastSeg) {
return null;
}
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "Codebook.hx", lineNumber : 503, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "decodeDeinterleaveRepeat"}));
}
if(cInter + pInter * ch + effective > len * ch) {
effective = len * ch - (pInter * ch - cInter);
}
if(this.lookupType == 1) {
var div = 1;
if(sequenceP) {
var _g1 = 0;
var _g = effective;
while(_g1 < _g) {
var i1 = _g1++;
var off = _$UInt_UInt_$Impl_$.toFloat(z / div | 0) % _$UInt_UInt_$Impl_$.toFloat(lookupValues) | 0;
var val1 = multiplicands[off] + last;
var _g2 = pInter;
var _g3 = residueBuffers[cInter];
_g3[_g2] = _g3[_g2] + val1;
if(++cInter == ch) {
cInter = 0;
++pInter;
}
last = val1;
div = div * lookupValues;
}
} else {
var _g11 = 0;
var _g4 = effective;
while(_g11 < _g4) {
var i2 = _g11++;
var off1 = _$UInt_UInt_$Impl_$.toFloat(z / div | 0) % _$UInt_UInt_$Impl_$.toFloat(lookupValues) | 0;
var val2 = multiplicands[off1] + last;
var _g21 = pInter;
var _g31 = residueBuffers[cInter];
_g31[_g21] = _g31[_g21] + val2;
if(++cInter == ch) {
cInter = 0;
++pInter;
}
div = div * lookupValues;
}
}
} else {
z *= this.dimensions;
if(sequenceP) {
var _g12 = 0;
var _g5 = effective;
while(_g12 < _g5) {
var i3 = _g12++;
var val3 = multiplicands[z + i3] + last;
var _g22 = pInter;
var _g32 = residueBuffers[cInter];
_g32[_g22] = _g32[_g22] + val3;
if(++cInter == ch) {
cInter = 0;
++pInter;
}
last = val3;
}
} else {
var _g13 = 0;
var _g6 = effective;
while(_g13 < _g6) {
var i4 = _g13++;
var val4 = multiplicands[z + i4] + last;
var _g23 = pInter;
var _g33 = residueBuffers[cInter];
_g33[_g23] = _g33[_g23] + val4;
if(++cInter == ch) {
cInter = 0;
++pInter;
}
}
}
}
totalDecode -= effective;
}
return { cInter : cInter, pInter : pInter};
}
,residueDecode: function(decodeState,target,offset,n,rtype) {
if(rtype == 0) {
var step = n / this.dimensions | 0;
var _g1 = 0;
var _g = step;
while(_g1 < _g) {
var k = _g1++;
if(!this.codebookDecodeStep(decodeState,target,offset + k,n - offset - k,step)) {
return false;
}
}
} else {
var k1 = 0;
while(k1 < n) {
if(!this.codebookDecode(decodeState,target,offset,n - k1)) {
return false;
}
k1 += this.dimensions;
offset += this.dimensions;
}
}
return true;
}
,__class__: kha_audio2_ogg_vorbis_data_Codebook
};
var kha_audio2_ogg_vorbis_data_Comment = function() {
this.data = new haxe_ds_StringMap();
};
$hxClasses["kha.audio2.ogg.vorbis.data.Comment"] = kha_audio2_ogg_vorbis_data_Comment;
kha_audio2_ogg_vorbis_data_Comment.__name__ = true;
kha_audio2_ogg_vorbis_data_Comment.prototype = {
data: null
,get_title: function() {
return this.getString("title");
}
,get_loopStart: function() {
return Std.parseInt(this.getString("loopstart"));
}
,get_loopLength: function() {
return Std.parseInt(this.getString("looplength"));
}
,get_version: function() {
return this.getString("version");
}
,get_album: function() {
return this.getString("album");
}
,get_organization: function() {
return this.getString("organization");
}
,get_tracknumber: function() {
return this.getString("tracknumber");
}
,get_performer: function() {
return this.getString("performer");
}
,get_copyright: function() {
return this.getString("copyright");
}
,get_license: function() {
return this.getString("license");
}
,get_artist: function() {
return this.getString("artist");
}
,get_description: function() {
return this.getString("description");
}
,get_genre: function() {
return this.getString("genre");
}
,get_date: function() {
return this.getString("date");
}
,get_location: function() {
return this.getString("location");
}
,get_contact: function() {
return this.getString("contact");
}
,get_isrc: function() {
return this.getString("isrc");
}
,get_artists: function() {
return this.getArray("artist");
}
,add: function(key,value) {
key = key.toLowerCase();
var _this = this.data;
if(__map_reserved[key] != null ? _this.existsReserved(key) : _this.h.hasOwnProperty(key)) {
var _this1 = this.data;
(__map_reserved[key] != null ? _this1.getReserved(key) : _this1.h[key]).push(value);
} else {
var v = [value];
var _this2 = this.data;
if(__map_reserved[key] != null) {
_this2.setReserved(key,v);
} else {
_this2.h[key] = v;
}
}
}
,getString: function(key) {
key = key.toLowerCase();
var _this = this.data;
if(__map_reserved[key] != null ? _this.existsReserved(key) : _this.h.hasOwnProperty(key)) {
var _this1 = this.data;
return (__map_reserved[key] != null ? _this1.getReserved(key) : _this1.h[key])[0];
} else {
return null;
}
}
,getArray: function(key) {
key = key.toLowerCase();
var _this = this.data;
if(__map_reserved[key] != null ? _this.existsReserved(key) : _this.h.hasOwnProperty(key)) {
var _this1 = this.data;
if(__map_reserved[key] != null) {
return _this1.getReserved(key);
} else {
return _this1.h[key];
}
} else {
return null;
}
}
,__class__: kha_audio2_ogg_vorbis_data_Comment
};
var kha_audio2_ogg_vorbis_data_Floor = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.Floor"] = kha_audio2_ogg_vorbis_data_Floor;
kha_audio2_ogg_vorbis_data_Floor.__name__ = true;
kha_audio2_ogg_vorbis_data_Floor.read = function(decodeState,codebooks) {
var floor = new kha_audio2_ogg_vorbis_data_Floor();
var tmp;
if(decodeState.validBits < 0) {
tmp = 0;
} else if(decodeState.validBits < 16) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 16)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp = 0;
} else {
var z = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp = z;
}
} else {
var z1 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp = z1;
}
floor.type = tmp;
if(floor.type > 1) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Floor.hx", lineNumber : 28, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"}));
}
if(floor.type == 0) {
var g = floor.floor0 = new kha_audio2_ogg_vorbis_data_Floor0();
var tmp1;
if(decodeState.validBits < 0) {
tmp1 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp1 = 0;
} else {
var z2 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp1 = z2;
}
} else {
var z3 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp1 = z3;
}
g.order = tmp1;
var tmp2;
if(decodeState.validBits < 0) {
tmp2 = 0;
} else if(decodeState.validBits < 16) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 16)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp2 = 0;
} else {
var z4 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp2 = z4;
}
} else {
var z5 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp2 = z5;
}
g.rate = tmp2;
var tmp3;
if(decodeState.validBits < 0) {
tmp3 = 0;
} else if(decodeState.validBits < 16) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 16)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp3 = 0;
} else {
var z6 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp3 = z6;
}
} else {
var z7 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp3 = z7;
}
g.barkMapSize = tmp3;
var tmp4;
if(decodeState.validBits < 0) {
tmp4 = 0;
} else if(decodeState.validBits < 6) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 6)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp4 = 0;
} else {
var z8 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
tmp4 = z8;
}
} else {
var z9 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
tmp4 = z9;
}
g.amplitudeBits = tmp4;
var tmp5;
if(decodeState.validBits < 0) {
tmp5 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp5 = 0;
} else {
var z10 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp5 = z10;
}
} else {
var z11 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp5 = z11;
}
g.amplitudeOffset = tmp5;
var tmp6;
if(decodeState.validBits < 0) {
tmp6 = 0;
} else if(decodeState.validBits < 4) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 4)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp6 = 0;
} else {
var z12 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp6 = z12;
}
} else {
var z13 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp6 = z13;
}
g.numberOfBooks = tmp6 + 1;
var _g1 = 0;
var _g = g.numberOfBooks;
while(_g1 < _g) {
var j = _g1++;
var this1 = g.bookList;
var val;
if(decodeState.validBits < 0) {
val = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
val = 0;
} else {
var z14 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val = z14;
}
} else {
var z15 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val = z15;
}
this1[j] = val;
}
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED,null,{ fileName : "Floor.hx", lineNumber : 41, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"}));
} else {
var p = [];
var g1 = floor.floor1 = new kha_audio2_ogg_vorbis_data_Floor1();
var maxClass = -1;
var tmp7;
if(decodeState.validBits < 0) {
tmp7 = 0;
} else if(decodeState.validBits < 5) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 5)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp7 = 0;
} else {
var z16 = decodeState.acc & 31;
decodeState.acc = decodeState.acc >>> 5;
decodeState.validBits -= 5;
tmp7 = z16;
}
} else {
var z17 = decodeState.acc & 31;
decodeState.acc = decodeState.acc >>> 5;
decodeState.validBits -= 5;
tmp7 = z17;
}
g1.partitions = tmp7;
var length = g1.partitions;
var this2 = new Array(length);
g1.partitionClassList = this2;
var _g11 = 0;
var _g2 = g1.partitions;
while(_g11 < _g2) {
var j1 = _g11++;
var this3 = g1.partitionClassList;
var val1;
if(decodeState.validBits < 0) {
val1 = 0;
} else if(decodeState.validBits < 4) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 4)) {
break;
}
}
if(decodeState.validBits < 0) {
val1 = 0;
} else {
var z18 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
val1 = z18;
}
} else {
var z19 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
val1 = z19;
}
this3[j1] = val1;
if(g1.partitionClassList[j1] > maxClass) {
maxClass = g1.partitionClassList[j1];
}
}
var this4 = new Array(maxClass + 1);
g1.classDimensions = this4;
var this5 = new Array(maxClass + 1);
g1.classMasterbooks = this5;
var this6 = new Array(maxClass + 1);
g1.classSubclasses = this6;
var this7 = new Array(maxClass + 1);
g1.subclassBooks = this7;
var _g12 = 0;
var _g3 = maxClass + 1;
while(_g12 < _g3) {
var j2 = _g12++;
var this8 = g1.classDimensions;
var val2;
if(decodeState.validBits < 0) {
val2 = 0;
} else if(decodeState.validBits < 3) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 3)) {
break;
}
}
if(decodeState.validBits < 0) {
val2 = 0;
} else {
var z20 = decodeState.acc & 7;
decodeState.acc = decodeState.acc >>> 3;
decodeState.validBits -= 3;
val2 = z20;
}
} else {
var z21 = decodeState.acc & 7;
decodeState.acc = decodeState.acc >>> 3;
decodeState.validBits -= 3;
val2 = z21;
}
this8[j2] = val2 + 1;
var this9 = g1.classSubclasses;
var val3;
if(decodeState.validBits < 0) {
val3 = 0;
} else if(decodeState.validBits < 2) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 2)) {
break;
}
}
if(decodeState.validBits < 0) {
val3 = 0;
} else {
var z22 = decodeState.acc & 3;
decodeState.acc = decodeState.acc >>> 2;
decodeState.validBits -= 2;
val3 = z22;
}
} else {
var z23 = decodeState.acc & 3;
decodeState.acc = decodeState.acc >>> 2;
decodeState.validBits -= 2;
val3 = z23;
}
this9[j2] = val3;
if(g1.classSubclasses[j2] != 0) {
var this10 = g1.classMasterbooks;
var val4;
if(decodeState.validBits < 0) {
val4 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
val4 = 0;
} else {
var z24 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val4 = z24;
}
} else {
var z25 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val4 = z25;
}
this10[j2] = val4;
if(g1.classMasterbooks[j2] >= codebooks.length) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Floor.hx", lineNumber : 64, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"}));
}
}
var kl = 1 << g1.classSubclasses[j2];
var this11 = g1.subclassBooks;
var this12 = new Array(kl);
this11[j2] = this12;
var _g31 = 0;
var _g21 = kl;
while(_g31 < _g21) {
var k = _g31++;
var this13 = g1.subclassBooks[j2];
var val5;
if(decodeState.validBits < 0) {
val5 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
val5 = 0;
} else {
var z26 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val5 = z26;
}
} else {
var z27 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val5 = z27;
}
this13[k] = val5 - 1;
if(g1.subclassBooks[j2][k] >= codebooks.length) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Floor.hx", lineNumber : 73, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"}));
}
}
}
var tmp8;
if(decodeState.validBits < 0) {
tmp8 = 0;
} else if(decodeState.validBits < 2) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 2)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp8 = 0;
} else {
var z28 = decodeState.acc & 3;
decodeState.acc = decodeState.acc >>> 2;
decodeState.validBits -= 2;
tmp8 = z28;
}
} else {
var z29 = decodeState.acc & 3;
decodeState.acc = decodeState.acc >>> 2;
decodeState.validBits -= 2;
tmp8 = z29;
}
g1.floor1Multiplier = tmp8 + 1;
var tmp9;
if(decodeState.validBits < 0) {
tmp9 = 0;
} else if(decodeState.validBits < 4) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 4)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp9 = 0;
} else {
var z30 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp9 = z30;
}
} else {
var z31 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp9 = z31;
}
g1.rangebits = tmp9;
var this14 = new Array(250);
g1.xlist = this14;
g1.xlist[0] = 0;
g1.xlist[1] = 1 << g1.rangebits;
g1.values = 2;
var _g13 = 0;
var _g4 = g1.partitions;
while(_g13 < _g4) {
var j3 = _g13++;
var c = g1.partitionClassList[j3];
var _g32 = 0;
var _g22 = g1.classDimensions[c];
while(_g32 < _g22) {
var k1 = _g32++;
var this15 = g1.xlist;
var index = g1.values;
var n = g1.rangebits;
var val6;
if(decodeState.validBits < 0) {
val6 = 0;
} else if(decodeState.validBits < n) {
if(n > 24) {
val6 = decodeState.readBits(24) + (decodeState.readBits(n - 24) << 24);
} else {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < n)) {
break;
}
}
if(decodeState.validBits < 0) {
val6 = 0;
} else {
var z32 = decodeState.acc & (1 << n) - 1;
decodeState.acc = decodeState.acc >>> n;
decodeState.validBits -= n;
val6 = z32;
}
}
} else {
var z33 = decodeState.acc & (1 << n) - 1;
decodeState.acc = decodeState.acc >>> n;
decodeState.validBits -= n;
val6 = z33;
}
this15[index] = val6;
g1.values++;
}
}
var _g14 = 0;
var _g5 = g1.values;
while(_g14 < _g5) {
var j4 = _g14++;
p.push(new kha_audio2_ogg_vorbis_data_IntPoint());
p[j4].x = g1.xlist[j4];
p[j4].y = j4;
}
p.sort(kha_audio2_ogg_vorbis_VorbisTools.pointCompare);
var length1 = g1.values;
var this16 = new Array(length1);
g1.sortedOrder = this16;
var _g15 = 0;
var _g6 = g1.values;
while(_g15 < _g6) {
var j5 = _g15++;
g1.sortedOrder[j5] = p[j5].y;
}
var length2 = g1.values;
var this17 = new Array(length2);
g1.neighbors = this17;
var _g16 = 2;
var _g7 = g1.values;
while(_g16 < _g7) {
var j6 = _g16++;
var ne_low;
var ne_high;
var x = g1.xlist;
var low = -1;
var high = 65536;
var plow = 0;
var phigh = 0;
var _g17 = 0;
var _g8 = j6;
while(_g17 < _g8) {
var i = _g17++;
if(x[i] > low && x[i] < x[j6]) {
plow = i;
low = x[i];
}
if(x[i] < high && x[i] > x[j6]) {
phigh = i;
high = x[i];
}
}
ne_low = plow;
ne_high = phigh;
var this18 = g1.neighbors;
var length3 = g1.values;
var this19 = new Array(length3);
this18[j6] = this19;
g1.neighbors[j6][0] = ne_low;
g1.neighbors[j6][1] = ne_high;
}
}
return floor;
};
kha_audio2_ogg_vorbis_data_Floor.prototype = {
floor0: null
,floor1: null
,type: null
,__class__: kha_audio2_ogg_vorbis_data_Floor
};
var kha_audio2_ogg_vorbis_data_Floor0 = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.Floor0"] = kha_audio2_ogg_vorbis_data_Floor0;
kha_audio2_ogg_vorbis_data_Floor0.__name__ = true;
kha_audio2_ogg_vorbis_data_Floor0.prototype = {
order: null
,rate: null
,barkMapSize: null
,amplitudeBits: null
,amplitudeOffset: null
,numberOfBooks: null
,bookList: null
,__class__: kha_audio2_ogg_vorbis_data_Floor0
};
var kha_audio2_ogg_vorbis_data_Floor1 = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.Floor1"] = kha_audio2_ogg_vorbis_data_Floor1;
kha_audio2_ogg_vorbis_data_Floor1.__name__ = true;
kha_audio2_ogg_vorbis_data_Floor1.prototype = {
partitions: null
,partitionClassList: null
,classDimensions: null
,classSubclasses: null
,classMasterbooks: null
,subclassBooks: null
,xlist: null
,sortedOrder: null
,neighbors: null
,floor1Multiplier: null
,rangebits: null
,values: null
,__class__: kha_audio2_ogg_vorbis_data_Floor1
};
var kha_audio2_ogg_vorbis_data_Header = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.Header"] = kha_audio2_ogg_vorbis_data_Header;
kha_audio2_ogg_vorbis_data_Header.__name__ = true;
kha_audio2_ogg_vorbis_data_Header.read = function(decodeState) {
var page = decodeState.page;
page.start(decodeState);
if((page.flag & 2) == 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"not firstPage",{ fileName : "Header.hx", lineNumber : 46, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
if((page.flag & 4) != 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"lastPage",{ fileName : "Header.hx", lineNumber : 49, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
if((page.flag & 1) != 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"continuedPacket",{ fileName : "Header.hx", lineNumber : 52, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
decodeState.firstPageValidate();
decodeState.inputPosition += 1;
if(decodeState.input.readByte() != 1) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"decodeState head",{ fileName : "Header.hx", lineNumber : 57, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
var header = new haxe_io_Bytes(new ArrayBuffer(6));
var _g = 0;
while(_g < 6) {
var i = _g++;
var x;
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
x = -1;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
x = decodeState.input.readByte();
}
decodeState.validBits = 0;
header.b[i] = x & 255;
}
if(header.toString() != "vorbis") {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{ fileName : "VorbisDecodeState.hx", lineNumber : 300, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "vorbisValidate"}));
}
decodeState.inputPosition += 4;
var version = decodeState.input.readInt32();
if(version != 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"vorbis version : " + version,{ fileName : "Header.hx", lineNumber : 66, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
var header1 = new kha_audio2_ogg_vorbis_data_Header();
decodeState.inputPosition += 1;
header1.channel = decodeState.input.readByte();
if(header1.channel == 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"no channel",{ fileName : "Header.hx", lineNumber : 73, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
} else if(header1.channel > 16) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS,"too many channels",{ fileName : "Header.hx", lineNumber : 75, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
decodeState.inputPosition += 4;
header1.sampleRate = decodeState.input.readInt32();
if(header1.sampleRate == 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"no sampling rate",{ fileName : "Header.hx", lineNumber : 80, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
decodeState.inputPosition += 4;
header1.maximumBitRate = decodeState.input.readInt32();
decodeState.inputPosition += 4;
header1.nominalBitRate = decodeState.input.readInt32();
decodeState.inputPosition += 4;
header1.minimumBitRate = decodeState.input.readInt32();
decodeState.inputPosition += 1;
var x1 = decodeState.input.readByte();
var log0 = x1 & 15;
var log1 = x1 >> 4;
header1.blocksize0 = 1 << log0;
header1.blocksize1 = 1 << log1;
if(log0 < 6 || log0 > 13) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 93, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
if(log1 < 6 || log1 > 13) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 96, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
if(log0 > log1) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 99, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
decodeState.inputPosition += 1;
var x2 = decodeState.input.readByte();
if((x2 & 1) == 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,null,{ fileName : "Header.hx", lineNumber : 105, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
decodeState.page.start(decodeState);
decodeState.startPacket();
var len = 0;
var output = new haxe_io_BytesOutput();
while(true) {
len = decodeState.next();
if(!(len != 0)) {
break;
}
decodeState.inputPosition += len;
output.write(decodeState.input.read(len));
decodeState.bytesInSeg = 0;
}
var packetInput = new haxe_io_BytesInput(output.getBytes());
packetInput.readByte();
packetInput.read(6);
var vendorLength = packetInput.readInt32();
header1.vendor = packetInput.readString(vendorLength);
header1.comment = new kha_audio2_ogg_vorbis_data_Comment();
var commentCount = packetInput.readInt32();
var _g1 = 0;
var _g2 = commentCount;
while(_g1 < _g2) {
var i1 = _g1++;
var n = packetInput.readInt32();
var str = packetInput.readString(n);
var splitter = str.indexOf("=");
if(splitter != -1) {
header1.comment.add(str.substring(0,splitter),str.substring(splitter + 1));
}
}
var x3 = packetInput.readByte();
if((x3 & 1) == 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 141, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
decodeState.startPacket();
var x4;
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
x4 = -1;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
x4 = decodeState.input.readByte();
}
decodeState.validBits = 0;
if(x4 != 5) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"setup packet",{ fileName : "Header.hx", lineNumber : 149, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
var header2 = new haxe_io_Bytes(new ArrayBuffer(6));
var _g3 = 0;
while(_g3 < 6) {
var i2 = _g3++;
var x5;
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
x5 = -1;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
x5 = decodeState.input.readByte();
}
decodeState.validBits = 0;
header2.b[i2] = x5 & 255;
}
if(header2.toString() != "vorbis") {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{ fileName : "VorbisDecodeState.hx", lineNumber : 300, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "vorbisValidate"}));
}
var codebookCount;
if(decodeState.validBits < 0) {
codebookCount = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
codebookCount = 0;
} else {
var z = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
codebookCount = z;
}
} else {
var z1 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
codebookCount = z1;
}
var codebookCount1 = codebookCount + 1;
var this1 = new Array(codebookCount1);
header1.codebooks = this1;
var _g11 = 0;
var _g4 = codebookCount1;
while(_g11 < _g4) {
var i3 = _g11++;
header1.codebooks[i3] = kha_audio2_ogg_vorbis_data_Codebook.read(decodeState);
}
var x6;
if(decodeState.validBits < 0) {
x6 = 0;
} else if(decodeState.validBits < 6) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 6)) {
break;
}
}
if(decodeState.validBits < 0) {
x6 = 0;
} else {
var z2 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
x6 = z2;
}
} else {
var z3 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
x6 = z3;
}
x2 = x6 + 1;
var _g12 = 0;
var _g5 = x2;
while(_g12 < _g5) {
var i4 = _g12++;
var tmp;
if(decodeState.validBits < 0) {
tmp = 0;
} else if(decodeState.validBits < 16) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 16)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp = 0;
} else {
var z4 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp = z4;
}
} else {
var z5 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp = z5;
}
if(tmp != 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 165, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
}
var floorCount;
if(decodeState.validBits < 0) {
floorCount = 0;
} else if(decodeState.validBits < 6) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 6)) {
break;
}
}
if(decodeState.validBits < 0) {
floorCount = 0;
} else {
var z6 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
floorCount = z6;
}
} else {
var z7 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
floorCount = z7;
}
var floorCount1 = floorCount + 1;
var this2 = new Array(floorCount1);
header1.floorConfig = this2;
var _g13 = 0;
var _g6 = floorCount1;
while(_g13 < _g6) {
var i5 = _g13++;
header1.floorConfig[i5] = kha_audio2_ogg_vorbis_data_Floor.read(decodeState,header1.codebooks);
}
var residueCount;
if(decodeState.validBits < 0) {
residueCount = 0;
} else if(decodeState.validBits < 6) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 6)) {
break;
}
}
if(decodeState.validBits < 0) {
residueCount = 0;
} else {
var z8 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
residueCount = z8;
}
} else {
var z9 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
residueCount = z9;
}
var residueCount1 = residueCount + 1;
var this3 = new Array(residueCount1);
header1.residueConfig = this3;
var _g14 = 0;
var _g7 = residueCount1;
while(_g14 < _g7) {
var i6 = _g14++;
header1.residueConfig[i6] = kha_audio2_ogg_vorbis_data_Residue.read(decodeState,header1.codebooks);
}
var mappingCount;
if(decodeState.validBits < 0) {
mappingCount = 0;
} else if(decodeState.validBits < 6) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 6)) {
break;
}
}
if(decodeState.validBits < 0) {
mappingCount = 0;
} else {
var z10 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
mappingCount = z10;
}
} else {
var z11 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
mappingCount = z11;
}
var mappingCount1 = mappingCount + 1;
var this4 = new Array(mappingCount1);
header1.mapping = this4;
var _g15 = 0;
var _g8 = mappingCount1;
while(_g15 < _g8) {
var i7 = _g15++;
var map = kha_audio2_ogg_vorbis_data_Mapping.read(decodeState,header1.channel);
header1.mapping[i7] = map;
var _g31 = 0;
var _g21 = map.submaps;
while(_g31 < _g21) {
var j = _g31++;
if(map.submapFloor[j] >= header1.floorConfig.length) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 191, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
if(map.submapResidue[j] >= header1.residueConfig.length) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 194, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
}
}
var modeCount;
if(decodeState.validBits < 0) {
modeCount = 0;
} else if(decodeState.validBits < 6) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 6)) {
break;
}
}
if(decodeState.validBits < 0) {
modeCount = 0;
} else {
var z12 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
modeCount = z12;
}
} else {
var z13 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
modeCount = z13;
}
var modeCount1 = modeCount + 1;
var this5 = new Array(modeCount1);
header1.modes = this5;
var _g16 = 0;
var _g9 = modeCount1;
while(_g16 < _g9) {
var i8 = _g16++;
var mode = kha_audio2_ogg_vorbis_data_Mode.read(decodeState);
header1.modes[i8] = mode;
if(mode.mapping >= header1.mapping.length) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 205, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"}));
}
}
while(decodeState.bytesInSeg != 0 || !decodeState.lastSeg && decodeState.next() != 0) {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.input.readByte();
}
return header1;
};
kha_audio2_ogg_vorbis_data_Header.prototype = {
maximumBitRate: null
,nominalBitRate: null
,minimumBitRate: null
,sampleRate: null
,channel: null
,blocksize0: null
,blocksize1: null
,codebooks: null
,floorConfig: null
,residueConfig: null
,mapping: null
,modes: null
,comment: null
,vendor: null
,__class__: kha_audio2_ogg_vorbis_data_Header
};
var kha_audio2_ogg_vorbis_data_IntPoint = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.IntPoint"] = kha_audio2_ogg_vorbis_data_IntPoint;
kha_audio2_ogg_vorbis_data_IntPoint.__name__ = true;
kha_audio2_ogg_vorbis_data_IntPoint.prototype = {
x: null
,y: null
,__class__: kha_audio2_ogg_vorbis_data_IntPoint
};
var kha_audio2_ogg_vorbis_data_Mapping = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.Mapping"] = kha_audio2_ogg_vorbis_data_Mapping;
kha_audio2_ogg_vorbis_data_Mapping.__name__ = true;
kha_audio2_ogg_vorbis_data_Mapping.read = function(decodeState,channels) {
var m = new kha_audio2_ogg_vorbis_data_Mapping();
var mappingType;
if(decodeState.validBits < 0) {
mappingType = 0;
} else if(decodeState.validBits < 16) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 16)) {
break;
}
}
if(decodeState.validBits < 0) {
mappingType = 0;
} else {
var z = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
mappingType = z;
}
} else {
var z1 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
mappingType = z1;
}
if(mappingType != 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"mapping type " + mappingType,{ fileName : "Mapping.hx", lineNumber : 22, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"}));
}
var this1 = new Array(channels);
m.chan = this1;
var _g1 = 0;
var _g = channels;
while(_g1 < _g) {
var j = _g1++;
m.chan[j] = new kha_audio2_ogg_vorbis_data_MappingChannel();
}
var tmp;
if(decodeState.validBits < 0) {
tmp = 0;
} else if(decodeState.validBits < 1) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 1)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp = 0;
} else {
var z2 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp = z2;
}
} else {
var z3 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp = z3;
}
if(tmp != 0) {
var tmp1;
if(decodeState.validBits < 0) {
tmp1 = 0;
} else if(decodeState.validBits < 4) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 4)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp1 = 0;
} else {
var z4 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp1 = z4;
}
} else {
var z5 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp1 = z5;
}
m.submaps = tmp1 + 1;
} else {
m.submaps = 1;
}
var tmp2;
if(decodeState.validBits < 0) {
tmp2 = 0;
} else if(decodeState.validBits < 1) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 1)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp2 = 0;
} else {
var z6 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp2 = z6;
}
} else {
var z7 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp2 = z7;
}
if(tmp2 != 0) {
var tmp3;
if(decodeState.validBits < 0) {
tmp3 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp3 = 0;
} else {
var z8 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp3 = z8;
}
} else {
var z9 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp3 = z9;
}
m.couplingSteps = tmp3 + 1;
var _g11 = 0;
var _g2 = m.couplingSteps;
while(_g11 < _g2) {
var k = _g11++;
var tmp4 = m.chan[k];
var n = channels - 1;
var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
var n1 = n < 16384 ? n < 16 ? log2_4[n] : n < 512 ? 5 + log2_4[n >> 5] : 10 + log2_4[n >> 10] : n < 16777216 ? n < 524288 ? 15 + log2_4[n >> 15] : 20 + log2_4[n >> 20] : n < 536870912 ? 25 + log2_4[n >> 25] : n < -2147483648 ? 30 + log2_4[n >> 30] : 0;
var tmp5;
if(decodeState.validBits < 0) {
tmp5 = 0;
} else if(decodeState.validBits < n1) {
if(n1 > 24) {
tmp5 = decodeState.readBits(24) + (decodeState.readBits(n1 - 24) << 24);
} else {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < n1)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp5 = 0;
} else {
var z10 = decodeState.acc & (1 << n1) - 1;
decodeState.acc = decodeState.acc >>> n1;
decodeState.validBits -= n1;
tmp5 = z10;
}
}
} else {
var z11 = decodeState.acc & (1 << n1) - 1;
decodeState.acc = decodeState.acc >>> n1;
decodeState.validBits -= n1;
tmp5 = z11;
}
tmp4.magnitude = tmp5;
var tmp6 = m.chan[k];
var n2 = channels - 1;
var log2_41 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];
var n3 = n2 < 16384 ? n2 < 16 ? log2_41[n2] : n2 < 512 ? 5 + log2_41[n2 >> 5] : 10 + log2_41[n2 >> 10] : n2 < 16777216 ? n2 < 524288 ? 15 + log2_41[n2 >> 15] : 20 + log2_41[n2 >> 20] : n2 < 536870912 ? 25 + log2_41[n2 >> 25] : n2 < -2147483648 ? 30 + log2_41[n2 >> 30] : 0;
var tmp7;
if(decodeState.validBits < 0) {
tmp7 = 0;
} else if(decodeState.validBits < n3) {
if(n3 > 24) {
tmp7 = decodeState.readBits(24) + (decodeState.readBits(n3 - 24) << 24);
} else {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < n3)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp7 = 0;
} else {
var z12 = decodeState.acc & (1 << n3) - 1;
decodeState.acc = decodeState.acc >>> n3;
decodeState.validBits -= n3;
tmp7 = z12;
}
}
} else {
var z13 = decodeState.acc & (1 << n3) - 1;
decodeState.acc = decodeState.acc >>> n3;
decodeState.validBits -= n3;
tmp7 = z13;
}
tmp6.angle = tmp7;
if(m.chan[k].magnitude >= channels) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mapping.hx", lineNumber : 46, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"}));
}
if(m.chan[k].angle >= channels) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mapping.hx", lineNumber : 49, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"}));
}
if(m.chan[k].magnitude == m.chan[k].angle) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mapping.hx", lineNumber : 52, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"}));
}
}
} else {
m.couplingSteps = 0;
}
var tmp8;
if(decodeState.validBits < 0) {
tmp8 = 0;
} else if(decodeState.validBits < 2) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 2)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp8 = 0;
} else {
var z14 = decodeState.acc & 3;
decodeState.acc = decodeState.acc >>> 2;
decodeState.validBits -= 2;
tmp8 = z14;
}
} else {
var z15 = decodeState.acc & 3;
decodeState.acc = decodeState.acc >>> 2;
decodeState.validBits -= 2;
tmp8 = z15;
}
if(tmp8 != 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mapping.hx", lineNumber : 61, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"}));
}
if(m.submaps > 1) {
var _g12 = 0;
var _g3 = channels;
while(_g12 < _g3) {
var j1 = _g12++;
var tmp9 = m.chan[j1];
var tmp10;
if(decodeState.validBits < 0) {
tmp10 = 0;
} else if(decodeState.validBits < 4) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 4)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp10 = 0;
} else {
var z16 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp10 = z16;
}
} else {
var z17 = decodeState.acc & 15;
decodeState.acc = decodeState.acc >>> 4;
decodeState.validBits -= 4;
tmp10 = z17;
}
tmp9.mux = tmp10;
if(m.chan[j1].mux >= m.submaps) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mapping.hx", lineNumber : 67, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"}));
}
}
} else {
var _g13 = 0;
var _g4 = channels;
while(_g13 < _g4) {
var j2 = _g13++;
m.chan[j2].mux = 0;
}
}
var length = m.submaps;
var this2 = new Array(length);
m.submapFloor = this2;
var length1 = m.submaps;
var this3 = new Array(length1);
m.submapResidue = this3;
var _g14 = 0;
var _g5 = m.submaps;
while(_g14 < _g5) {
var j3 = _g14++;
if(decodeState.validBits >= 0) {
if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits >= 0) {
var z18 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
}
} else {
var z19 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
}
}
var this4 = m.submapFloor;
var val;
if(decodeState.validBits < 0) {
val = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
val = 0;
} else {
var z20 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val = z20;
}
} else {
var z21 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val = z21;
}
this4[j3] = val;
var this5 = m.submapResidue;
var val1;
if(decodeState.validBits < 0) {
val1 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
val1 = 0;
} else {
var z22 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val1 = z22;
}
} else {
var z23 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val1 = z23;
}
this5[j3] = val1;
}
return m;
};
kha_audio2_ogg_vorbis_data_Mapping.prototype = {
couplingSteps: null
,chan: null
,submaps: null
,submapFloor: null
,submapResidue: null
,doFloor: function(floors,i,n,target,finalY,step2Flag) {
var n2 = n >> 1;
var s = this.chan[i].mux;
var floor;
var floor1 = floors[this.submapFloor[s]];
if(floor1.type == 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "Mapping.hx", lineNumber : 94, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "doFloor"}));
} else {
var g = floor1.floor1;
var lx = 0;
var ly = finalY[0] * g.floor1Multiplier;
var _g1 = 1;
var _g = g.values;
while(_g1 < _g) {
var q = _g1++;
var j = g.sortedOrder[q];
if(finalY[j] >= 0) {
var hy = finalY[j] * g.floor1Multiplier;
var hx = g.xlist[j];
kha_audio2_ogg_vorbis_VorbisTools.drawLine(target,lx,ly,hx,hy,n2);
lx = hx;
ly = hy;
}
}
if(lx < n2) {
var _g11 = lx;
var _g2 = n2;
while(_g11 < _g2) {
var j1 = _g11++;
var _g21 = j1;
var _g3 = target;
_g3[_g21] = _g3[_g21] * kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE[ly];
}
}
}
}
,__class__: kha_audio2_ogg_vorbis_data_Mapping
};
var kha_audio2_ogg_vorbis_data_MappingChannel = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.MappingChannel"] = kha_audio2_ogg_vorbis_data_MappingChannel;
kha_audio2_ogg_vorbis_data_MappingChannel.__name__ = true;
kha_audio2_ogg_vorbis_data_MappingChannel.prototype = {
magnitude: null
,angle: null
,mux: null
,__class__: kha_audio2_ogg_vorbis_data_MappingChannel
};
var kha_audio2_ogg_vorbis_data_Mode = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.Mode"] = kha_audio2_ogg_vorbis_data_Mode;
kha_audio2_ogg_vorbis_data_Mode.__name__ = true;
kha_audio2_ogg_vorbis_data_Mode.read = function(decodeState) {
var m = new kha_audio2_ogg_vorbis_data_Mode();
var tmp;
if(decodeState.validBits < 0) {
tmp = 0;
} else if(decodeState.validBits < 1) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 1)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp = 0;
} else {
var z = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp = z;
}
} else {
var z1 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp = z1;
}
m.blockflag = tmp != 0;
var tmp1;
if(decodeState.validBits < 0) {
tmp1 = 0;
} else if(decodeState.validBits < 16) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 16)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp1 = 0;
} else {
var z2 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp1 = z2;
}
} else {
var z3 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp1 = z3;
}
m.windowtype = tmp1;
var tmp2;
if(decodeState.validBits < 0) {
tmp2 = 0;
} else if(decodeState.validBits < 16) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 16)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp2 = 0;
} else {
var z4 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp2 = z4;
}
} else {
var z5 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp2 = z5;
}
m.transformtype = tmp2;
var tmp3;
if(decodeState.validBits < 0) {
tmp3 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp3 = 0;
} else {
var z6 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp3 = z6;
}
} else {
var z7 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp3 = z7;
}
m.mapping = tmp3;
if(m.windowtype != 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mode.hx", lineNumber : 22, className : "kha.audio2.ogg.vorbis.data.Mode", methodName : "read"}));
}
if(m.transformtype != 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mode.hx", lineNumber : 25, className : "kha.audio2.ogg.vorbis.data.Mode", methodName : "read"}));
}
return m;
};
kha_audio2_ogg_vorbis_data_Mode.prototype = {
blockflag: null
,mapping: null
,windowtype: null
,transformtype: null
,__class__: kha_audio2_ogg_vorbis_data_Mode
};
var kha_audio2_ogg_vorbis_data_Page = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.Page"] = kha_audio2_ogg_vorbis_data_Page;
kha_audio2_ogg_vorbis_data_Page.__name__ = true;
kha_audio2_ogg_vorbis_data_Page.prototype = {
flag: null
,clone: function() {
var page = new kha_audio2_ogg_vorbis_data_Page();
page.flag = this.flag;
return page;
}
,start: function(decodeState) {
var tmp;
var tmp1;
var tmp2;
decodeState.inputPosition += 1;
if(decodeState.input.readByte() == 79) {
decodeState.inputPosition += 1;
tmp2 = decodeState.input.readByte() != 103;
} else {
tmp2 = true;
}
if(!tmp2) {
decodeState.inputPosition += 1;
tmp1 = decodeState.input.readByte() != 103;
} else {
tmp1 = true;
}
if(!tmp1) {
decodeState.inputPosition += 1;
tmp = decodeState.input.readByte() != 83;
} else {
tmp = true;
}
if(tmp) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 323, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "capturePattern"}));
}
this.startWithoutCapturePattern(decodeState);
}
,startWithoutCapturePattern: function(decodeState) {
decodeState.inputPosition += 1;
var version = decodeState.input.readByte();
if(version != 0) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION,"" + version,{ fileName : "Page.hx", lineNumber : 34, className : "kha.audio2.ogg.vorbis.data.Page", methodName : "startWithoutCapturePattern"}));
}
decodeState.inputPosition += 1;
this.flag = decodeState.input.readByte();
decodeState.inputPosition += 4;
var loc0 = decodeState.input.readInt32();
decodeState.inputPosition += 4;
var loc1 = decodeState.input.readInt32();
decodeState.inputPosition += 4;
decodeState.input.readInt32();
decodeState.inputPosition += 4;
decodeState.input.readInt32();
decodeState.inputPosition += 4;
decodeState.input.readInt32();
decodeState.setup(loc0,loc1);
}
,__class__: kha_audio2_ogg_vorbis_data_Page
};
var kha_audio2_ogg_vorbis_data_PageFlag = function() { };
$hxClasses["kha.audio2.ogg.vorbis.data.PageFlag"] = kha_audio2_ogg_vorbis_data_PageFlag;
kha_audio2_ogg_vorbis_data_PageFlag.__name__ = true;
var kha_audio2_ogg_vorbis_data_ProbedPage = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.ProbedPage"] = kha_audio2_ogg_vorbis_data_ProbedPage;
kha_audio2_ogg_vorbis_data_ProbedPage.__name__ = true;
kha_audio2_ogg_vorbis_data_ProbedPage.prototype = {
pageStart: null
,pageEnd: null
,afterPreviousPageStart: null
,firstDecodedSample: null
,lastDecodedSample: null
,__class__: kha_audio2_ogg_vorbis_data_ProbedPage
};
var kha_audio2_ogg_vorbis_data_ReaderError = function(type,message,posInfos) {
if(message == null) {
message = "";
}
this.type = type;
this.message = message;
this.posInfos = posInfos;
};
$hxClasses["kha.audio2.ogg.vorbis.data.ReaderError"] = kha_audio2_ogg_vorbis_data_ReaderError;
kha_audio2_ogg_vorbis_data_ReaderError.__name__ = true;
kha_audio2_ogg_vorbis_data_ReaderError.prototype = {
type: null
,message: null
,posInfos: null
,__class__: kha_audio2_ogg_vorbis_data_ReaderError
};
var kha_audio2_ogg_vorbis_data_ReaderErrorType = $hxClasses["kha.audio2.ogg.vorbis.data.ReaderErrorType"] = { __ename__ : true, __constructs__ : ["NEED_MORE_DATA","INVALID_API_MIXING","OUTOFMEM","FEATURE_NOT_SUPPORTED","TOO_MANY_CHANNELS","FILE_OPEN_FAILURE","SEEK_WITHOUT_LENGTH","UNEXPECTED_EOF","SEEK_INVALID","INVALID_SETUP","INVALID_STREAM","MISSING_CAPTURE_PATTERN","INVALID_STREAM_STRUCTURE_VERSION","CONTINUED_PACKET_FLAG_INVALID","INCORRECT_STREAM_SERIAL_NUMBER","INVALID_FIRST_PAGE","BAD_PACKET_TYPE","CANT_FIND_LAST_PAGE","SEEK_FAILED","OTHER"] };
kha_audio2_ogg_vorbis_data_ReaderErrorType.NEED_MORE_DATA = ["NEED_MORE_DATA",0];
kha_audio2_ogg_vorbis_data_ReaderErrorType.NEED_MORE_DATA.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.NEED_MORE_DATA.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_API_MIXING = ["INVALID_API_MIXING",1];
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_API_MIXING.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_API_MIXING.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.OUTOFMEM = ["OUTOFMEM",2];
kha_audio2_ogg_vorbis_data_ReaderErrorType.OUTOFMEM.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.OUTOFMEM.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED = ["FEATURE_NOT_SUPPORTED",3];
kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS = ["TOO_MANY_CHANNELS",4];
kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.FILE_OPEN_FAILURE = ["FILE_OPEN_FAILURE",5];
kha_audio2_ogg_vorbis_data_ReaderErrorType.FILE_OPEN_FAILURE.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.FILE_OPEN_FAILURE.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_WITHOUT_LENGTH = ["SEEK_WITHOUT_LENGTH",6];
kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_WITHOUT_LENGTH.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_WITHOUT_LENGTH.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.UNEXPECTED_EOF = ["UNEXPECTED_EOF",7];
kha_audio2_ogg_vorbis_data_ReaderErrorType.UNEXPECTED_EOF.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.UNEXPECTED_EOF.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_INVALID = ["SEEK_INVALID",8];
kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_INVALID.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_INVALID.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP = ["INVALID_SETUP",9];
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM = ["INVALID_STREAM",10];
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN = ["MISSING_CAPTURE_PATTERN",11];
kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION = ["INVALID_STREAM_STRUCTURE_VERSION",12];
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID = ["CONTINUED_PACKET_FLAG_INVALID",13];
kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INCORRECT_STREAM_SERIAL_NUMBER = ["INCORRECT_STREAM_SERIAL_NUMBER",14];
kha_audio2_ogg_vorbis_data_ReaderErrorType.INCORRECT_STREAM_SERIAL_NUMBER.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INCORRECT_STREAM_SERIAL_NUMBER.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE = ["INVALID_FIRST_PAGE",15];
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.BAD_PACKET_TYPE = ["BAD_PACKET_TYPE",16];
kha_audio2_ogg_vorbis_data_ReaderErrorType.BAD_PACKET_TYPE.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.BAD_PACKET_TYPE.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE = ["CANT_FIND_LAST_PAGE",17];
kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED = ["SEEK_FAILED",18];
kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER = ["OTHER",19];
kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER.toString = $estr;
kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType;
var kha_audio2_ogg_vorbis_data_Residue = function() {
};
$hxClasses["kha.audio2.ogg.vorbis.data.Residue"] = kha_audio2_ogg_vorbis_data_Residue;
kha_audio2_ogg_vorbis_data_Residue.__name__ = true;
kha_audio2_ogg_vorbis_data_Residue.read = function(decodeState,codebooks) {
var r = new kha_audio2_ogg_vorbis_data_Residue();
var tmp;
if(decodeState.validBits < 0) {
tmp = 0;
} else if(decodeState.validBits < 16) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 16)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp = 0;
} else {
var z = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp = z;
}
} else {
var z1 = decodeState.acc & 65535;
decodeState.acc = decodeState.acc >>> 16;
decodeState.validBits -= 16;
tmp = z1;
}
r.type = tmp;
if(r.type > 2) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Residue.hx", lineNumber : 29, className : "kha.audio2.ogg.vorbis.data.Residue", methodName : "read"}));
}
var this1 = new Array(64);
var residueCascade = this1;
var tmp1;
if(decodeState.validBits < 0) {
tmp1 = 0;
} else if(decodeState.validBits < 24) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 24)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp1 = 0;
} else {
var z2 = decodeState.acc & 16777215;
decodeState.acc = decodeState.acc >>> 24;
decodeState.validBits -= 24;
tmp1 = z2;
}
} else {
var z3 = decodeState.acc & 16777215;
decodeState.acc = decodeState.acc >>> 24;
decodeState.validBits -= 24;
tmp1 = z3;
}
r.begin = tmp1;
var tmp2;
if(decodeState.validBits < 0) {
tmp2 = 0;
} else if(decodeState.validBits < 24) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 24)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp2 = 0;
} else {
var z4 = decodeState.acc & 16777215;
decodeState.acc = decodeState.acc >>> 24;
decodeState.validBits -= 24;
tmp2 = z4;
}
} else {
var z5 = decodeState.acc & 16777215;
decodeState.acc = decodeState.acc >>> 24;
decodeState.validBits -= 24;
tmp2 = z5;
}
r.end = tmp2;
var tmp3;
if(decodeState.validBits < 0) {
tmp3 = 0;
} else if(decodeState.validBits < 24) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 24)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp3 = 0;
} else {
var z6 = decodeState.acc & 16777215;
decodeState.acc = decodeState.acc >>> 24;
decodeState.validBits -= 24;
tmp3 = z6;
}
} else {
var z7 = decodeState.acc & 16777215;
decodeState.acc = decodeState.acc >>> 24;
decodeState.validBits -= 24;
tmp3 = z7;
}
r.partSize = tmp3 + 1;
var classifications;
if(decodeState.validBits < 0) {
classifications = 0;
} else if(decodeState.validBits < 6) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 6)) {
break;
}
}
if(decodeState.validBits < 0) {
classifications = 0;
} else {
var z8 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
classifications = z8;
}
} else {
var z9 = decodeState.acc & 63;
decodeState.acc = decodeState.acc >>> 6;
decodeState.validBits -= 6;
classifications = z9;
}
var classifications1 = r.classifications = classifications + 1;
var tmp4;
if(decodeState.validBits < 0) {
tmp4 = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp4 = 0;
} else {
var z10 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp4 = z10;
}
} else {
var z11 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
tmp4 = z11;
}
r.classbook = tmp4;
var _g1 = 0;
var _g = r.classifications;
while(_g1 < _g) {
var j = _g1++;
var highBits = 0;
var lowBits;
if(decodeState.validBits < 0) {
lowBits = 0;
} else if(decodeState.validBits < 3) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 3)) {
break;
}
}
if(decodeState.validBits < 0) {
lowBits = 0;
} else {
var z12 = decodeState.acc & 7;
decodeState.acc = decodeState.acc >>> 3;
decodeState.validBits -= 3;
lowBits = z12;
}
} else {
var z13 = decodeState.acc & 7;
decodeState.acc = decodeState.acc >>> 3;
decodeState.validBits -= 3;
lowBits = z13;
}
var tmp5;
if(decodeState.validBits < 0) {
tmp5 = 0;
} else if(decodeState.validBits < 1) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 1)) {
break;
}
}
if(decodeState.validBits < 0) {
tmp5 = 0;
} else {
var z14 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp5 = z14;
}
} else {
var z15 = decodeState.acc & 1;
decodeState.acc = decodeState.acc >>> 1;
decodeState.validBits -= 1;
tmp5 = z15;
}
if(tmp5 != 0) {
if(decodeState.validBits < 0) {
highBits = 0;
} else if(decodeState.validBits < 5) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 5)) {
break;
}
}
if(decodeState.validBits < 0) {
highBits = 0;
} else {
var z16 = decodeState.acc & 31;
decodeState.acc = decodeState.acc >>> 5;
decodeState.validBits -= 5;
highBits = z16;
}
} else {
var z17 = decodeState.acc & 31;
decodeState.acc = decodeState.acc >>> 5;
decodeState.validBits -= 5;
highBits = z17;
}
}
residueCascade[j] = highBits * 8 + lowBits;
}
var length = r.classifications;
var this2 = new Array(length);
r.residueBooks = this2;
var _g11 = 0;
var _g2 = r.classifications;
while(_g11 < _g2) {
var j1 = _g11++;
var this3 = r.residueBooks;
var this4 = new Array(8);
this3[j1] = this4;
var _g21 = 0;
while(_g21 < 8) {
var k = _g21++;
if((residueCascade[j1] & 1 << k) != 0) {
var this5 = r.residueBooks[j1];
var val;
if(decodeState.validBits < 0) {
val = 0;
} else if(decodeState.validBits < 8) {
if(decodeState.validBits == 0) {
decodeState.acc = 0;
}
while(true) {
if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) {
decodeState.validBits = -1;
break;
} else {
decodeState.bytesInSeg--;
decodeState.inputPosition += 1;
decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits);
decodeState.validBits += 8;
}
if(!(decodeState.validBits < 8)) {
break;
}
}
if(decodeState.validBits < 0) {
val = 0;
} else {
var z18 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val = z18;
}
} else {
var z19 = decodeState.acc & 255;
decodeState.acc = decodeState.acc >>> 8;
decodeState.validBits -= 8;
val = z19;
}
this5[k] = val;
if(r.residueBooks[j1][k] >= codebooks.length) {
throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Residue.hx", lineNumber : 55, className : "kha.audio2.ogg.vorbis.data.Residue", methodName : "read"}));
}
} else {
r.residueBooks[j1][k] = -1;
}
}
}
var el = codebooks[r.classbook].entries;
var classwords = codebooks[r.classbook].dimensions;
var this6 = new Array(el);
r.classdata = this6;
var _g12 = 0;
var _g3 = el;
while(_g12 < _g3) {
var j2 = _g12++;
var temp = j2;
var k1 = classwords;
var this7 = r.classdata;
var this8 = new Array(classwords);
var cd = this7[j2] = this8;
while(--k1 >= 0) {
cd[k1] = temp % classifications1;
temp = temp / classifications1 | 0;
}
}
return r;
};
kha_audio2_ogg_vorbis_data_Residue.prototype = {
begin: null
,end: null
,partSize: null
,classifications: null
,classbook: null
,classdata: null
,residueBooks: null
,type: null
,decode: function(decodeState,header,residueBuffers,ch,n,doNotDecode,channelBuffers) {
var codebooks = header.codebooks;
var classwords = codebooks[this.classbook].dimensions;
var nRead = this.end - this.begin;
var partSize = this.partSize;
var partRead = _$UInt_UInt_$Impl_$.toFloat(nRead) / _$UInt_UInt_$Impl_$.toFloat(partSize) | 0;
var length = header.channel * partRead + 1;
var this1 = new Array(length);
var classifications = this1;
var _g1 = 0;
var _g = ch;
while(_g1 < _g) {
var i = _g1++;
if(!doNotDecode[i]) {
var buffer = residueBuffers[i];
var _g3 = 0;
var _g2 = buffer.length;
while(_g3 < _g2) {
var j = _g3++;
buffer[j] = 0;
}
}
}
if(this.type == 2 && ch != 1) {
var _g11 = 0;
var _g4 = ch;
while(_g11 < _g4) {
var j1 = _g11++;
if(!doNotDecode[j1]) {
break;
} else if(j1 == ch - 1) {
return;
}
}
var _g5 = 0;
while(_g5 < 8) {
var pass = _g5++;
var pcount = 0;
var classSet = 0;
if(ch == 2) {
while(pcount < partRead) {
var z = this.begin + pcount * partSize;
var cInter = z & 1;
var pInter = z >>> 1;
if(pass == 0) {
var c = codebooks[this.classbook];
if(decodeState.validBits < 10) {
decodeState.prepHuffman();
}
var i1 = c.fastHuffman[decodeState.acc & 1023];
var val;
if(i1 >= 0) {
var l = c.codewordLengths[i1];
decodeState.acc = decodeState.acc >>> l;
decodeState.validBits -= l;
if(decodeState.validBits < 0) {
decodeState.validBits = 0;
val = -1;
} else {
val = i1;
}
} else {
val = decodeState.decodeScalarRaw(c);
}
if(c.sparse) {
val = c.sortedValues[val];
}
var q = val;
if(q == -1) {
return;
}
var i2 = classwords;
while(--i2 >= 0) {
classifications[i2 + pcount] = q % this.classifications;
q = q / this.classifications | 0;
}
}
var _g21 = 0;
var _g12 = classwords;
while(_g21 < _g12) {
var i3 = _g21++;
if(pcount >= partRead) {
break;
}
var z1 = this.begin + pcount * partSize;
var c1 = classifications[pcount];
var b = this.residueBooks[c1][pass];
if(b >= 0) {
var book = codebooks[b];
var result = book.decodeDeinterleaveRepeat(decodeState,residueBuffers,ch,cInter,pInter,n,partSize);
if(result == null) {
return;
} else {
cInter = result.cInter;
pInter = result.pInter;
}
} else {
z1 = z1 + partSize;
cInter = z1 & 1;
pInter = z1 >>> 1;
}
++pcount;
}
}
} else if(ch == 1) {
while(pcount < partRead) {
var z2 = this.begin + pcount * partSize;
var cInter1 = 0;
var pInter1 = z2;
if(pass == 0) {
var c2 = codebooks[this.classbook];
if(decodeState.validBits < 10) {
decodeState.prepHuffman();
}
var i4 = c2.fastHuffman[decodeState.acc & 1023];
var val1;
if(i4 >= 0) {
var l1 = c2.codewordLengths[i4];
decodeState.acc = decodeState.acc >>> l1;
decodeState.validBits -= l1;
if(decodeState.validBits < 0) {
decodeState.validBits = 0;
val1 = -1;
} else {
val1 = i4;
}
} else {
val1 = decodeState.decodeScalarRaw(c2);
}
if(c2.sparse) {
val1 = c2.sortedValues[val1];
}
var q1 = val1;
if(q1 == -1) {
return;
}
var i5 = classwords;
while(--i5 >= 0) {
classifications[i5 + pcount] = q1 % this.classifications;
q1 = q1 / this.classifications | 0;
}
}
var _g22 = 0;
var _g13 = classwords;
while(_g22 < _g13) {
var i6 = _g22++;
if(pcount >= partRead) {
break;
}
var z3 = this.begin + pcount * partSize;
var b1 = this.residueBooks[classifications[pcount]][pass];
if(b1 >= 0) {
var book1 = codebooks[b1];
var result1 = book1.decodeDeinterleaveRepeat(decodeState,residueBuffers,ch,cInter1,pInter1,n,partSize);
if(result1 == null) {
return;
} else {
cInter1 = result1.cInter;
pInter1 = result1.pInter;
}
} else {
z3 = z3 + partSize;
cInter1 = 0;
pInter1 = z3;
}
++pcount;
}
}
} else {
while(pcount < partRead) {
var z4 = this.begin + pcount * partSize;
var cInter2 = _$UInt_UInt_$Impl_$.toFloat(z4) % _$UInt_UInt_$Impl_$.toFloat(ch) | 0;
var pInter2 = _$UInt_UInt_$Impl_$.toFloat(z4) / _$UInt_UInt_$Impl_$.toFloat(ch) | 0;
if(pass == 0) {
var c3 = codebooks[this.classbook];
if(decodeState.validBits < 10) {
decodeState.prepHuffman();
}
var i7 = c3.fastHuffman[decodeState.acc & 1023];
var val2;
if(i7 >= 0) {
var l2 = c3.codewordLengths[i7];
decodeState.acc = decodeState.acc >>> l2;
decodeState.validBits -= l2;
if(decodeState.validBits < 0) {
decodeState.validBits = 0;
val2 = -1;
} else {
val2 = i7;
}
} else {
val2 = decodeState.decodeScalarRaw(c3);
}
if(c3.sparse) {
val2 = c3.sortedValues[val2];
}
var q2 = val2;
if(q2 == -1) {
return;
}
var i8 = classwords;
while(--i8 >= 0) {
classifications[i8 + pcount] = q2 % this.classifications;
q2 = q2 / this.classifications | 0;
}
}
var _g23 = 0;
var _g14 = classwords;
while(_g23 < _g14) {
var i9 = _g23++;
if(pcount >= partRead) {
break;
}
var z5 = this.begin + pcount * partSize;
var b2 = this.residueBooks[classifications[pcount]][pass];
if(b2 >= 0) {
var book2 = codebooks[b2];
var result2 = book2.decodeDeinterleaveRepeat(decodeState,residueBuffers,ch,cInter2,pInter2,n,partSize);
if(result2 == null) {
return;
} else {
cInter2 = result2.cInter;
pInter2 = result2.pInter;
}
} else {
z5 = z5 + partSize;
cInter2 = _$UInt_UInt_$Impl_$.toFloat(z5) % _$UInt_UInt_$Impl_$.toFloat(ch) | 0;
pInter2 = _$UInt_UInt_$Impl_$.toFloat(z5) / _$UInt_UInt_$Impl_$.toFloat(ch) | 0;
}
++pcount;
}
}
}
}
return;
}
var _g6 = 0;
while(_g6 < 8) {
var pass1 = _g6++;
var pcount1 = 0;
var classSet1 = 0;
while(pcount1 < partRead) {
if(pass1 == 0) {
var _g24 = 0;
var _g15 = ch;
while(_g24 < _g15) {
var j2 = _g24++;
if(!doNotDecode[j2]) {
var c4 = codebooks[this.classbook];
if(decodeState.validBits < 10) {
decodeState.prepHuffman();
}
var i10 = c4.fastHuffman[decodeState.acc & 1023];
var val3;
if(i10 >= 0) {
var l3 = c4.codewordLengths[i10];
decodeState.acc = decodeState.acc >>> l3;
decodeState.validBits -= l3;
if(decodeState.validBits < 0) {
decodeState.validBits = 0;
val3 = -1;
} else {
val3 = i10;
}
} else {
val3 = decodeState.decodeScalarRaw(c4);
}
if(c4.sparse) {
val3 = c4.sortedValues[val3];
}
var temp = val3;
if(temp == -1) {
return;
}
var i11 = classwords;
while(--i11 >= 0) {
classifications[j2 * partRead + i11 + pcount1] = temp % this.classifications;
temp = temp / this.classifications | 0;
}
}
}
}
var _g25 = 0;
var _g16 = classwords;
while(_g25 < _g16) {
var i12 = _g25++;
if(pcount1 >= partRead) {
break;
}
var _g41 = 0;
var _g31 = ch;
while(_g41 < _g31) {
var j3 = _g41++;
if(!doNotDecode[j3]) {
var c5 = classifications[j3 * partRead + pcount1];
var b3 = this.residueBooks[c5][pass1];
if(b3 >= 0) {
var target = residueBuffers[j3];
var offset = this.begin + pcount1 * partSize;
var n1 = partSize;
var book3 = codebooks[b3];
if(!book3.residueDecode(decodeState,target,offset,n1,this.type)) {
return;
}
}
}
}
++pcount1;
}
}
}
}
,__class__: kha_audio2_ogg_vorbis_data_Residue
};
var kha_audio2_ogg_vorbis_data_Setting = function() { };
$hxClasses["kha.audio2.ogg.vorbis.data.Setting"] = kha_audio2_ogg_vorbis_data_Setting;
kha_audio2_ogg_vorbis_data_Setting.__name__ = true;
var kha_graphics1_Graphics = function() { };
$hxClasses["kha.graphics1.Graphics"] = kha_graphics1_Graphics;
kha_graphics1_Graphics.__name__ = true;
kha_graphics1_Graphics.prototype = {
begin: null
,end: null
,setPixel: null
,__class__: kha_graphics1_Graphics
};
var kha_graphics2_Graphics = function() {
this.transformations = [];
this.transformations.push(new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1));
this.opacities = [];
this.opacities.push(1);
this.myFontSize = 12;
this.myFontGlyphs = [];
var _g = 32;
while(_g < 256) {
var i = _g++;
this.myFontGlyphs.push(i);
}
this.pipe = null;
};
$hxClasses["kha.graphics2.Graphics"] = kha_graphics2_Graphics;
kha_graphics2_Graphics.__name__ = true;
kha_graphics2_Graphics.prototype = {
begin: function(clear,clearColor) {
if(clear == null) {
clear = true;
}
}
,end: function() {
}
,flush: function() {
}
,clear: function(color) {
}
,drawImage: function(img,x,y) {
this.drawSubImage(img,x,y,0,0,img.get_width(),img.get_height());
}
,drawSubImage: function(img,x,y,sx,sy,sw,sh) {
this.drawScaledSubImage(img,sx,sy,sw,sh,x,y,sw,sh);
}
,drawScaledImage: function(img,dx,dy,dw,dh) {
this.drawScaledSubImage(img,0,0,img.get_width(),img.get_height(),dx,dy,dw,dh);
}
,drawScaledSubImage: function(image,sx,sy,sw,sh,dx,dy,dw,dh) {
}
,drawRect: function(x,y,width,height,strength) {
if(strength == null) {
strength = 1.0;
}
}
,fillRect: function(x,y,width,height) {
}
,drawString: function(text,x,y) {
}
,drawLine: function(x1,y1,x2,y2,strength) {
if(strength == null) {
strength = 1.0;
}
}
,drawVideo: function(video,x,y,width,height) {
}
,fillTriangle: function(x1,y1,x2,y2,x3,y3) {
}
,get_imageScaleQuality: function() {
return kha_graphics2_ImageScaleQuality.Low;
}
,set_imageScaleQuality: function(value) {
return kha_graphics2_ImageScaleQuality.High;
}
,get_mipmapScaleQuality: function() {
return kha_graphics2_ImageScaleQuality.Low;
}
,set_mipmapScaleQuality: function(value) {
return kha_graphics2_ImageScaleQuality.High;
}
,get_color: function() {
return -16777216;
}
,set_color: function(color) {
return -16777216;
}
,get_font: function() {
return null;
}
,set_font: function(font) {
return null;
}
,get_fontSize: function() {
return this.myFontSize;
}
,set_fontSize: function(value) {
return this.myFontSize = value;
}
,get_fontGlyphs: function() {
return this.myFontGlyphs;
}
,set_fontGlyphs: function(value) {
return this.myFontGlyphs = value;
}
,pushTransformation: function(transformation) {
var trans = new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1);
trans._00 = transformation._00;
trans._10 = transformation._10;
trans._20 = transformation._20;
trans._01 = transformation._01;
trans._11 = transformation._11;
trans._21 = transformation._21;
trans._02 = transformation._02;
trans._12 = transformation._12;
trans._22 = transformation._22;
this.setTransformation(trans);
this.transformations.push(trans);
}
,popTransformation: function() {
var ret = this.transformations.pop();
this.setTransformation(this.transformations[this.transformations.length - 1]);
return ret;
}
,get_transformation: function() {
return this.transformations[this.transformations.length - 1];
}
,set_transformation: function(transformation) {
this.setTransformation(transformation);
var _this = this.transformations[this.transformations.length - 1];
_this._00 = transformation._00;
_this._10 = transformation._10;
_this._20 = transformation._20;
_this._01 = transformation._01;
_this._11 = transformation._11;
_this._21 = transformation._21;
_this._02 = transformation._02;
_this._12 = transformation._12;
_this._22 = transformation._22;
return transformation;
}
,translation: function(tx,ty) {
var _this__22;
var _this__21;
var _this__20;
var _this__12;
var _this__11;
var _this__10;
var _this__02;
var _this__01;
var _this__00 = 1;
_this__10 = 0;
_this__20 = tx;
_this__01 = 0;
_this__11 = 1;
_this__21 = ty;
_this__02 = 0;
_this__12 = 0;
_this__22 = 1;
var m = this.transformations[this.transformations.length - 1];
return new kha_math_FastMatrix3(_this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02,_this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12,_this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22,_this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02,_this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12,_this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22,_this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02,_this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12,_this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22);
}
,translate: function(tx,ty) {
var _this__22;
var _this__21;
var _this__20;
var _this__12;
var _this__11;
var _this__10;
var _this__02;
var _this__01;
var _this__00 = 1;
_this__10 = 0;
_this__20 = tx;
_this__01 = 0;
_this__11 = 1;
_this__21 = ty;
_this__02 = 0;
_this__12 = 0;
_this__22 = 1;
var m = this.transformations[this.transformations.length - 1];
var transformation = new kha_math_FastMatrix3(_this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02,_this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12,_this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22,_this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02,_this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12,_this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22,_this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02,_this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12,_this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22);
this.setTransformation(transformation);
var _this = this.transformations[this.transformations.length - 1];
_this._00 = transformation._00;
_this._10 = transformation._10;
_this._20 = transformation._20;
_this._01 = transformation._01;
_this._11 = transformation._11;
_this._21 = transformation._21;
_this._02 = transformation._02;
_this._12 = transformation._12;
_this._22 = transformation._22;
}
,pushTranslation: function(tx,ty) {
var _this__22;
var _this__21;
var _this__20;
var _this__12;
var _this__11;
var _this__10;
var _this__02;
var _this__01;
var _this__00 = 1;
_this__10 = 0;
_this__20 = tx;
_this__01 = 0;
_this__11 = 1;
_this__21 = ty;
_this__02 = 0;
_this__12 = 0;
_this__22 = 1;
var m = this.transformations[this.transformations.length - 1];
this.pushTransformation(new kha_math_FastMatrix3(_this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02,_this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12,_this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22,_this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02,_this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12,_this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22,_this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02,_this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12,_this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22));
}
,rotation: function(angle,centerx,centery) {
var _this__22;
var _this__21;
var _this__20;
var _this__12;
var _this__11;
var _this__10;
var _this__02;
var _this__01;
var _this__00;
var _this__221;
var _this__211;
var _this__201;
var _this__121;
var _this__111;
var _this__101;
var _this__021;
var _this__011;
var _this__001;
var _this__222;
var _this__212;
var _this__202;
var _this__122;
var _this__112;
var _this__102;
var _this__022;
var _this__012;
var _this__002 = 1;
_this__102 = 0;
_this__202 = centerx;
_this__012 = 0;
_this__112 = 1;
_this__212 = centery;
_this__022 = 0;
_this__122 = 0;
_this__222 = 1;
var m__22;
var m__21;
var m__20;
var m__12;
var m__11;
var m__10;
var m__02;
var m__01;
var m__00 = Math.cos(angle);
m__10 = -Math.sin(angle);
m__20 = 0;
m__01 = Math.sin(angle);
m__11 = Math.cos(angle);
m__21 = 0;
m__02 = 0;
m__12 = 0;
m__22 = 1;
_this__001 = _this__002 * m__00 + _this__102 * m__01 + _this__202 * m__02;
_this__101 = _this__002 * m__10 + _this__102 * m__11 + _this__202 * m__12;
_this__201 = _this__002 * m__20 + _this__102 * m__21 + _this__202 * m__22;
_this__011 = _this__012 * m__00 + _this__112 * m__01 + _this__212 * m__02;
_this__111 = _this__012 * m__10 + _this__112 * m__11 + _this__212 * m__12;
_this__211 = _this__012 * m__20 + _this__112 * m__21 + _this__212 * m__22;
_this__021 = _this__022 * m__00 + _this__122 * m__01 + _this__222 * m__02;
_this__121 = _this__022 * m__10 + _this__122 * m__11 + _this__222 * m__12;
_this__221 = _this__022 * m__20 + _this__122 * m__21 + _this__222 * m__22;
var m__221;
var m__211;
var m__201;
var m__121;
var m__111;
var m__101;
var m__021;
var m__011;
var m__001 = 1;
m__101 = 0;
m__201 = -centerx;
m__011 = 0;
m__111 = 1;
m__211 = -centery;
m__021 = 0;
m__121 = 0;
m__221 = 1;
_this__00 = _this__001 * m__001 + _this__101 * m__011 + _this__201 * m__021;
_this__10 = _this__001 * m__101 + _this__101 * m__111 + _this__201 * m__121;
_this__20 = _this__001 * m__201 + _this__101 * m__211 + _this__201 * m__221;
_this__01 = _this__011 * m__001 + _this__111 * m__011 + _this__211 * m__021;
_this__11 = _this__011 * m__101 + _this__111 * m__111 + _this__211 * m__121;
_this__21 = _this__011 * m__201 + _this__111 * m__211 + _this__211 * m__221;
_this__02 = _this__021 * m__001 + _this__121 * m__011 + _this__221 * m__021;
_this__12 = _this__021 * m__101 + _this__121 * m__111 + _this__221 * m__121;
_this__22 = _this__021 * m__201 + _this__121 * m__211 + _this__221 * m__221;
var m = this.transformations[this.transformations.length - 1];
return new kha_math_FastMatrix3(_this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02,_this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12,_this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22,_this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02,_this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12,_this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22,_this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02,_this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12,_this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22);
}
,rotate: function(angle,centerx,centery) {
var temp__22;
var temp__21;
var temp__20;
var temp__12;
var temp__11;
var temp__10;
var temp__02;
var temp__01;
var temp__00;
var _this__22;
var _this__21;
var _this__20;
var _this__12;
var _this__11;
var _this__10;
var _this__02;
var _this__01;
var _this__00;
var _this__221;
var _this__211;
var _this__201;
var _this__121;
var _this__111;
var _this__101;
var _this__021;
var _this__011;
var _this__001;
var _this__222;
var _this__212;
var _this__202;
var _this__122;
var _this__112;
var _this__102;
var _this__022;
var _this__012;
var _this__002 = 1;
_this__102 = 0;
_this__202 = centerx;
_this__012 = 0;
_this__112 = 1;
_this__212 = centery;
_this__022 = 0;
_this__122 = 0;
_this__222 = 1;
var m__22;
var m__21;
var m__20;
var m__12;
var m__11;
var m__10;
var m__02;
var m__01;
var m__00 = Math.cos(angle);
m__10 = -Math.sin(angle);
m__20 = 0;
m__01 = Math.sin(angle);
m__11 = Math.cos(angle);
m__21 = 0;
m__02 = 0;
m__12 = 0;
m__22 = 1;
_this__001 = _this__002 * m__00 + _this__102 * m__01 + _this__202 * m__02;
_this__101 = _this__002 * m__10 + _this__102 * m__11 + _this__202 * m__12;
_this__201 = _this__002 * m__20 + _this__102 * m__21 + _this__202 * m__22;
_this__011 = _this__012 * m__00 + _this__112 * m__01 + _this__212 * m__02;
_this__111 = _this__012 * m__10 + _this__112 * m__11 + _this__212 * m__12;
_this__211 = _this__012 * m__20 + _this__112 * m__21 + _this__212 * m__22;
_this__021 = _this__022 * m__00 + _this__122 * m__01 + _this__222 * m__02;
_this__121 = _this__022 * m__10 + _this__122 * m__11 + _this__222 * m__12;
_this__221 = _this__022 * m__20 + _this__122 * m__21 + _this__222 * m__22;
var m__221;
var m__211;
var m__201;
var m__121;
var m__111;
var m__101;
var m__021;
var m__011;
var m__001 = 1;
m__101 = 0;
m__201 = -centerx;
m__011 = 0;
m__111 = 1;
m__211 = -centery;
m__021 = 0;
m__121 = 0;
m__221 = 1;
_this__00 = _this__001 * m__001 + _this__101 * m__011 + _this__201 * m__021;
_this__10 = _this__001 * m__101 + _this__101 * m__111 + _this__201 * m__121;
_this__20 = _this__001 * m__201 + _this__101 * m__211 + _this__201 * m__221;
_this__01 = _this__011 * m__001 + _this__111 * m__011 + _this__211 * m__021;
_this__11 = _this__011 * m__101 + _this__111 * m__111 + _this__211 * m__121;
_this__21 = _this__011 * m__201 + _this__111 * m__211 + _this__211 * m__221;
_this__02 = _this__021 * m__001 + _this__121 * m__011 + _this__221 * m__021;
_this__12 = _this__021 * m__101 + _this__121 * m__111 + _this__221 * m__121;
_this__22 = _this__021 * m__201 + _this__121 * m__211 + _this__221 * m__221;
var m = this.transformations[this.transformations.length - 1];
temp__00 = _this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02;
temp__10 = _this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12;
temp__20 = _this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22;
temp__01 = _this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02;
temp__11 = _this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12;
temp__21 = _this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22;
temp__02 = _this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02;
temp__12 = _this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12;
temp__22 = _this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22;
this.transformations[this.transformations.length - 1]._00 = temp__00;
this.transformations[this.transformations.length - 1]._01 = temp__01;
this.transformations[this.transformations.length - 1]._02 = temp__02;
this.transformations[this.transformations.length - 1]._10 = temp__10;
this.transformations[this.transformations.length - 1]._11 = temp__11;
this.transformations[this.transformations.length - 1]._12 = temp__12;
this.transformations[this.transformations.length - 1]._20 = temp__20;
this.transformations[this.transformations.length - 1]._21 = temp__21;
this.transformations[this.transformations.length - 1]._22 = temp__22;
}
,pushRotation: function(angle,centerx,centery) {
var _this__22;
var _this__21;
var _this__20;
var _this__12;
var _this__11;
var _this__10;
var _this__02;
var _this__01;
var _this__00;
var _this__221;
var _this__211;
var _this__201;
var _this__121;
var _this__111;
var _this__101;
var _this__021;
var _this__011;
var _this__001;
var _this__222;
var _this__212;
var _this__202;
var _this__122;
var _this__112;
var _this__102;
var _this__022;
var _this__012;
var _this__002 = 1;
_this__102 = 0;
_this__202 = centerx;
_this__012 = 0;
_this__112 = 1;
_this__212 = centery;
_this__022 = 0;
_this__122 = 0;
_this__222 = 1;
var m__22;
var m__21;
var m__20;
var m__12;
var m__11;
var m__10;
var m__02;
var m__01;
var m__00 = Math.cos(angle);
m__10 = -Math.sin(angle);
m__20 = 0;
m__01 = Math.sin(angle);
m__11 = Math.cos(angle);
m__21 = 0;
m__02 = 0;
m__12 = 0;
m__22 = 1;
_this__001 = _this__002 * m__00 + _this__102 * m__01 + _this__202 * m__02;
_this__101 = _this__002 * m__10 + _this__102 * m__11 + _this__202 * m__12;
_this__201 = _this__002 * m__20 + _this__102 * m__21 + _this__202 * m__22;
_this__011 = _this__012 * m__00 + _this__112 * m__01 + _this__212 * m__02;
_this__111 = _this__012 * m__10 + _this__112 * m__11 + _this__212 * m__12;
_this__211 = _this__012 * m__20 + _this__112 * m__21 + _this__212 * m__22;
_this__021 = _this__022 * m__00 + _this__122 * m__01 + _this__222 * m__02;
_this__121 = _this__022 * m__10 + _this__122 * m__11 + _this__222 * m__12;
_this__221 = _this__022 * m__20 + _this__122 * m__21 + _this__222 * m__22;
var m__221;
var m__211;
var m__201;
var m__121;
var m__111;
var m__101;
var m__021;
var m__011;
var m__001 = 1;
m__101 = 0;
m__201 = -centerx;
m__011 = 0;
m__111 = 1;
m__211 = -centery;
m__021 = 0;
m__121 = 0;
m__221 = 1;
_this__00 = _this__001 * m__001 + _this__101 * m__011 + _this__201 * m__021;
_this__10 = _this__001 * m__101 + _this__101 * m__111 + _this__201 * m__121;
_this__20 = _this__001 * m__201 + _this__101 * m__211 + _this__201 * m__221;
_this__01 = _this__011 * m__001 + _this__111 * m__011 + _this__211 * m__021;
_this__11 = _this__011 * m__101 + _this__111 * m__111 + _this__211 * m__121;
_this__21 = _this__011 * m__201 + _this__111 * m__211 + _this__211 * m__221;
_this__02 = _this__021 * m__001 + _this__121 * m__011 + _this__221 * m__021;
_this__12 = _this__021 * m__101 + _this__121 * m__111 + _this__221 * m__121;
_this__22 = _this__021 * m__201 + _this__121 * m__211 + _this__221 * m__221;
var m = this.transformations[this.transformations.length - 1];
this.pushTransformation(new kha_math_FastMatrix3(_this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02,_this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12,_this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22,_this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02,_this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12,_this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22,_this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02,_this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12,_this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22));
}
,pushOpacity: function(opacity) {
this.setOpacity(opacity);
this.opacities.push(opacity);
}
,popOpacity: function() {
var ret = this.opacities.pop();
this.setOpacity(this.get_opacity());
return ret;
}
,get_opacity: function() {
return this.opacities[this.opacities.length - 1];
}
,set_opacity: function(opacity) {
this.setOpacity(opacity);
return this.opacities[this.opacities.length - 1] = opacity;
}
,scissor: function(x,y,width,height) {
}
,disableScissor: function() {
}
,pipe: null
,get_pipeline: function() {
return this.pipe;
}
,set_pipeline: function(pipeline) {
this.setPipeline(pipeline);
return this.pipe = pipeline;
}
,transformations: null
,opacities: null
,myFontSize: null
,myFontGlyphs: null
,setTransformation: function(transformation) {
}
,setOpacity: function(opacity) {
}
,setPipeline: function(pipeline) {
}
,__class__: kha_graphics2_Graphics
};
var kha_graphics2_Graphics1 = function(canvas) {
this.canvas = canvas;
};
$hxClasses["kha.graphics2.Graphics1"] = kha_graphics2_Graphics1;
kha_graphics2_Graphics1.__name__ = true;
kha_graphics2_Graphics1.__interfaces__ = [kha_graphics1_Graphics];
kha_graphics2_Graphics1.prototype = {
canvas: null
,texture: null
,pixels: null
,begin: function() {
if(this.texture == null) {
this.texture = kha_Image.create(this.canvas.get_width(),this.canvas.get_height(),kha_graphics4_TextureFormat.RGBA32,kha_graphics4_Usage.ReadableUsage);
}
this.pixels = this.texture.lock();
}
,end: function() {
this.texture.unlock();
this.canvas.get_g2().begin();
this.canvas.get_g2().drawImage(this.texture,0,0);
this.canvas.get_g2().end();
}
,setPixel: function(x,y,color) {
this.pixels.setInt32(y * this.texture.get_realWidth() * 4 + x * 4,kha__$Color_Color_$Impl_$.fromBytes(color & 255,(color & 65280) >>> 8,(color & 16711680) >>> 16,color >>> 24));
}
,__class__: kha_graphics2_Graphics1
};
var kha_graphics2_ImageScaleQuality = $hxClasses["kha.graphics2.ImageScaleQuality"] = { __ename__ : true, __constructs__ : ["Low","High"] };
kha_graphics2_ImageScaleQuality.Low = ["Low",0];
kha_graphics2_ImageScaleQuality.Low.toString = $estr;
kha_graphics2_ImageScaleQuality.Low.__enum__ = kha_graphics2_ImageScaleQuality;
kha_graphics2_ImageScaleQuality.High = ["High",1];
kha_graphics2_ImageScaleQuality.High.toString = $estr;
kha_graphics2_ImageScaleQuality.High.__enum__ = kha_graphics2_ImageScaleQuality;
var kha_graphics2_truetype_VectorOfIntPointer = function() {
};
$hxClasses["kha.graphics2.truetype.VectorOfIntPointer"] = kha_graphics2_truetype_VectorOfIntPointer;
kha_graphics2_truetype_VectorOfIntPointer.__name__ = true;
kha_graphics2_truetype_VectorOfIntPointer.prototype = {
value: null
,__class__: kha_graphics2_truetype_VectorOfIntPointer
};
var kha_graphics2_truetype_Stbtt_$temp_$rect = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt_temp_rect"] = kha_graphics2_truetype_Stbtt_$temp_$rect;
kha_graphics2_truetype_Stbtt_$temp_$rect.__name__ = true;
kha_graphics2_truetype_Stbtt_$temp_$rect.prototype = {
x0: null
,y0: null
,x1: null
,y1: null
,__class__: kha_graphics2_truetype_Stbtt_$temp_$rect
};
var kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt_temp_glyph_h_metrics"] = kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics;
kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics.__name__ = true;
kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics.prototype = {
advanceWidth: null
,leftSideBearing: null
,__class__: kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics
};
var kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt_temp_font_v_metrics"] = kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics;
kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics.__name__ = true;
kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics.prototype = {
ascent: null
,descent: null
,lineGap: null
,__class__: kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics
};
var kha_graphics2_truetype_Stbtt_$temp_$region = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt_temp_region"] = kha_graphics2_truetype_Stbtt_$temp_$region;
kha_graphics2_truetype_Stbtt_$temp_$region.__name__ = true;
kha_graphics2_truetype_Stbtt_$temp_$region.prototype = {
width: null
,height: null
,xoff: null
,yoff: null
,__class__: kha_graphics2_truetype_Stbtt_$temp_$region
};
var kha_graphics2_truetype_Stbtt_$bakedchar = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt_bakedchar"] = kha_graphics2_truetype_Stbtt_$bakedchar;
kha_graphics2_truetype_Stbtt_$bakedchar.__name__ = true;
kha_graphics2_truetype_Stbtt_$bakedchar.prototype = {
x0: null
,y0: null
,x1: null
,y1: null
,xoff: null
,yoff: null
,xadvance: null
,__class__: kha_graphics2_truetype_Stbtt_$bakedchar
};
var kha_graphics2_truetype_Stbtt_$aligned_$quad = function() { };
$hxClasses["kha.graphics2.truetype.Stbtt_aligned_quad"] = kha_graphics2_truetype_Stbtt_$aligned_$quad;
kha_graphics2_truetype_Stbtt_$aligned_$quad.__name__ = true;
kha_graphics2_truetype_Stbtt_$aligned_$quad.prototype = {
x0: null
,y0: null
,s0: null
,t0: null
,x1: null
,y1: null
,s1: null
,t1: null
,__class__: kha_graphics2_truetype_Stbtt_$aligned_$quad
};
var kha_graphics2_truetype_Stbtt_$packedchar = function() { };
$hxClasses["kha.graphics2.truetype.Stbtt_packedchar"] = kha_graphics2_truetype_Stbtt_$packedchar;
kha_graphics2_truetype_Stbtt_$packedchar.__name__ = true;
kha_graphics2_truetype_Stbtt_$packedchar.prototype = {
x0: null
,y0: null
,x1: null
,y1: null
,xoff: null
,yoff: null
,xadvance: null
,xoff2: null
,yoff2: null
,__class__: kha_graphics2_truetype_Stbtt_$packedchar
};
var kha_graphics2_truetype_Stbtt_$pack_$range = function() { };
$hxClasses["kha.graphics2.truetype.Stbtt_pack_range"] = kha_graphics2_truetype_Stbtt_$pack_$range;
kha_graphics2_truetype_Stbtt_$pack_$range.__name__ = true;
kha_graphics2_truetype_Stbtt_$pack_$range.prototype = {
font_size: null
,first_unicode_codepoint_in_range: null
,array_of_unicode_codepoints: null
,num_chars: null
,chardata_for_range: null
,h_oversample: null
,v_oversample: null
,__class__: kha_graphics2_truetype_Stbtt_$pack_$range
};
var kha_graphics2_truetype_Stbtt_$pack_$context = function() { };
$hxClasses["kha.graphics2.truetype.Stbtt_pack_context"] = kha_graphics2_truetype_Stbtt_$pack_$context;
kha_graphics2_truetype_Stbtt_$pack_$context.__name__ = true;
kha_graphics2_truetype_Stbtt_$pack_$context.prototype = {
width: null
,height: null
,stride_in_bytes: null
,padding: null
,h_oversample: null
,v_oversample: null
,pixels: null
,__class__: kha_graphics2_truetype_Stbtt_$pack_$context
};
var kha_graphics2_truetype_Stbtt_$fontinfo = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt_fontinfo"] = kha_graphics2_truetype_Stbtt_$fontinfo;
kha_graphics2_truetype_Stbtt_$fontinfo.__name__ = true;
kha_graphics2_truetype_Stbtt_$fontinfo.prototype = {
data: null
,fontstart: null
,numGlyphs: null
,loca: null
,head: null
,glyf: null
,hhea: null
,hmtx: null
,kern: null
,index_map: null
,indexToLocFormat: null
,__class__: kha_graphics2_truetype_Stbtt_$fontinfo
};
var kha_graphics2_truetype_Stbtt_$vertex = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt_vertex"] = kha_graphics2_truetype_Stbtt_$vertex;
kha_graphics2_truetype_Stbtt_$vertex.__name__ = true;
kha_graphics2_truetype_Stbtt_$vertex.prototype = {
x: null
,y: null
,cx: null
,cy: null
,type: null
,padding: null
,__class__: kha_graphics2_truetype_Stbtt_$vertex
};
var kha_graphics2_truetype_Stbtt_$_$bitmap = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt__bitmap"] = kha_graphics2_truetype_Stbtt_$_$bitmap;
kha_graphics2_truetype_Stbtt_$_$bitmap.__name__ = true;
kha_graphics2_truetype_Stbtt_$_$bitmap.prototype = {
w: null
,h: null
,stride: null
,pixels: null
,pixels_offset: null
,__class__: kha_graphics2_truetype_Stbtt_$_$bitmap
};
var kha_graphics2_truetype_Stbtt_$_$edge = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt__edge"] = kha_graphics2_truetype_Stbtt_$_$edge;
kha_graphics2_truetype_Stbtt_$_$edge.__name__ = true;
kha_graphics2_truetype_Stbtt_$_$edge.prototype = {
x0: null
,y0: null
,x1: null
,y1: null
,invert: null
,__class__: kha_graphics2_truetype_Stbtt_$_$edge
};
var kha_graphics2_truetype_Stbtt_$_$active_$edge = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt__active_edge"] = kha_graphics2_truetype_Stbtt_$_$active_$edge;
kha_graphics2_truetype_Stbtt_$_$active_$edge.__name__ = true;
kha_graphics2_truetype_Stbtt_$_$active_$edge.prototype = {
next: null
,fx: null
,fdx: null
,fdy: null
,direction: null
,sy: null
,ey: null
,__class__: kha_graphics2_truetype_Stbtt_$_$active_$edge
};
var kha_graphics2_truetype_Stbtt_$_$point = function() {
};
$hxClasses["kha.graphics2.truetype.Stbtt__point"] = kha_graphics2_truetype_Stbtt_$_$point;
kha_graphics2_truetype_Stbtt_$_$point.__name__ = true;
kha_graphics2_truetype_Stbtt_$_$point.prototype = {
x: null
,y: null
,__class__: kha_graphics2_truetype_Stbtt_$_$point
};
var kha_graphics2_truetype_StbTruetype = function() { };
$hxClasses["kha.graphics2.truetype.StbTruetype"] = kha_graphics2_truetype_StbTruetype;
kha_graphics2_truetype_StbTruetype.__name__ = true;
kha_graphics2_truetype_StbTruetype.STBTT_assert = function(value) {
if(!value) {
throw new js__$Boot_HaxeError("Error");
}
};
kha_graphics2_truetype_StbTruetype.STBTT_POINT_SIZE = function(x) {
return -x;
};
kha_graphics2_truetype_StbTruetype.ttBYTE = function(p,pos) {
if(pos == null) {
pos = 0;
}
return p.readU8(pos);
};
kha_graphics2_truetype_StbTruetype.ttCHAR = function(p,pos) {
if(pos == null) {
pos = 0;
}
var n = p.readU8(pos);
if(n >= 128) {
return n - 256;
}
return n;
};
kha_graphics2_truetype_StbTruetype.ttUSHORT = function(p,pos) {
if(pos == null) {
pos = 0;
}
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
return ch2 | ch1 << 8;
};
kha_graphics2_truetype_StbTruetype.ttSHORT = function(p,pos) {
if(pos == null) {
pos = 0;
}
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
var n = ch2 | ch1 << 8;
if((n & 32768) != 0) {
return n - 65536;
}
return n;
};
kha_graphics2_truetype_StbTruetype.ttULONG = function(p,pos) {
if(pos == null) {
pos = 0;
}
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
var ch3 = p.readU8(pos + 2);
var ch4 = p.readU8(pos + 3);
return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24;
};
kha_graphics2_truetype_StbTruetype.ttLONG = function(p,pos) {
if(pos == null) {
pos = 0;
}
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
var ch3 = p.readU8(pos + 2);
var ch4 = p.readU8(pos + 3);
return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24;
};
kha_graphics2_truetype_StbTruetype.ttFixed = function(p,pos) {
if(pos == null) {
pos = 0;
}
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
var ch3 = p.readU8(pos + 2);
var ch4 = p.readU8(pos + 3);
return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24;
};
kha_graphics2_truetype_StbTruetype.stbtt_tag4 = function(p,pos,c0,c1,c2,c3) {
if(p.readU8(pos) == c0 && p.readU8(pos + 1) == c1 && p.readU8(pos + 2) == c2) {
return p.readU8(pos + 3) == c3;
} else {
return false;
}
};
kha_graphics2_truetype_StbTruetype.stbtt_tag = function(p,pos,str) {
var c0 = HxOverrides.cca(str,0);
var c1 = HxOverrides.cca(str,1);
var c2 = HxOverrides.cca(str,2);
var c3 = HxOverrides.cca(str,3);
if(p.readU8(pos) == c0 && p.readU8(pos + 1) == c1 && p.readU8(pos + 2) == c2) {
return p.readU8(pos + 3) == c3;
} else {
return false;
}
};
kha_graphics2_truetype_StbTruetype.stbtt__isfont = function(font) {
var c0 = HxOverrides.cca("1",0);
if(font.readU8(0) == c0 && font.readU8(1) == 0 && font.readU8(2) == 0 && font.readU8(3) == 0) {
return true;
}
var c01 = HxOverrides.cca("typ1",0);
var c1 = HxOverrides.cca("typ1",1);
var c2 = HxOverrides.cca("typ1",2);
var c3 = HxOverrides.cca("typ1",3);
if(font.readU8(0) == c01 && font.readU8(1) == c1 && font.readU8(2) == c2 && font.readU8(3) == c3) {
return true;
}
var c02 = HxOverrides.cca("OTTO",0);
var c11 = HxOverrides.cca("OTTO",1);
var c21 = HxOverrides.cca("OTTO",2);
var c31 = HxOverrides.cca("OTTO",3);
if(font.readU8(0) == c02 && font.readU8(1) == c11 && font.readU8(2) == c21 && font.readU8(3) == c31) {
return true;
}
if(font.readU8(0) == 0 && font.readU8(1) == 1 && font.readU8(2) == 0 && font.readU8(3) == 0) {
return true;
}
return false;
};
kha_graphics2_truetype_StbTruetype.stbtt__find_table = function(data,fontstart,tag) {
var pos = fontstart + 4;
var ch1 = data.readU8(pos);
var ch2 = data.readU8(pos + 1);
var num_tables = ch2 | ch1 << 8;
var tabledir = fontstart + 12;
var _g1 = 0;
var _g = num_tables;
while(_g1 < _g) {
var i = _g1++;
var loc = tabledir + 16 * i;
var c0 = HxOverrides.cca(tag,0);
var c1 = HxOverrides.cca(tag,1);
var c2 = HxOverrides.cca(tag,2);
var c3 = HxOverrides.cca(tag,3);
if(data.readU8(loc) == c0 && data.readU8(loc + 1) == c1 && data.readU8(loc + 2) == c2 && data.readU8(loc + 3) == c3) {
var pos1 = loc + 8;
var ch11 = data.readU8(pos1);
var ch21 = data.readU8(pos1 + 1);
var ch3 = data.readU8(pos1 + 2);
var ch4 = data.readU8(pos1 + 3);
return ch4 | ch3 << 8 | ch21 << 16 | ch11 << 24;
}
}
return 0;
};
kha_graphics2_truetype_StbTruetype.stbtt_GetFontOffsetForIndex = function(font_collection,index) {
if(kha_graphics2_truetype_StbTruetype.stbtt__isfont(font_collection)) {
if(index == 0) {
return 0;
} else {
return -1;
}
}
var c0 = HxOverrides.cca("ttcf",0);
var c1 = HxOverrides.cca("ttcf",1);
var c2 = HxOverrides.cca("ttcf",2);
var c3 = HxOverrides.cca("ttcf",3);
if(font_collection.readU8(0) == c0 && font_collection.readU8(1) == c1 && font_collection.readU8(2) == c2 && font_collection.readU8(3) == c3) {
var tmp;
var ch1 = font_collection.readU8(4);
var ch2 = font_collection.readU8(5);
var ch3 = font_collection.readU8(6);
var ch4 = font_collection.readU8(7);
if((ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24) != 65536) {
var ch11 = font_collection.readU8(4);
var ch21 = font_collection.readU8(5);
var ch31 = font_collection.readU8(6);
var ch41 = font_collection.readU8(7);
tmp = (ch41 | ch31 << 8 | ch21 << 16 | ch11 << 24) == 131072;
} else {
tmp = true;
}
if(tmp) {
var ch12 = font_collection.readU8(8);
var ch22 = font_collection.readU8(9);
var ch32 = font_collection.readU8(10);
var ch42 = font_collection.readU8(11);
var n = ch42 | ch32 << 8 | ch22 << 16 | ch12 << 24;
if(index >= n) {
return -1;
}
var pos = 12 + index * 4;
var ch13 = font_collection.readU8(pos);
var ch23 = font_collection.readU8(pos + 1);
var ch33 = font_collection.readU8(pos + 2);
var ch43 = font_collection.readU8(pos + 3);
return ch43 | ch33 << 8 | ch23 << 16 | ch13 << 24;
}
}
return -1;
};
kha_graphics2_truetype_StbTruetype.stbtt_InitFont = function(info,data,fontstart) {
var cmap;
var t;
var numTables;
info.data = data;
info.fontstart = fontstart;
cmap = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"cmap");
info.loca = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"loca");
info.head = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"head");
info.glyf = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"glyf");
info.hhea = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"hhea");
info.hmtx = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"hmtx");
info.kern = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"kern");
if(cmap == 0 || info.loca == 0 || info.head == 0 || info.glyf == 0 || info.hhea == 0 || info.hmtx == 0) {
return false;
}
t = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"maxp");
if(t != 0) {
var pos = t + 4;
var ch1 = data.readU8(pos);
var ch2 = data.readU8(pos + 1);
info.numGlyphs = ch2 | ch1 << 8;
} else {
info.numGlyphs = 65535;
}
var pos1 = cmap + 2;
var ch11 = data.readU8(pos1);
var ch21 = data.readU8(pos1 + 1);
numTables = ch21 | ch11 << 8;
info.index_map = 0;
var _g1 = 0;
var _g = numTables;
while(_g1 < _g) {
var i = _g1++;
var encoding_record = cmap + 4 + 8 * i;
var ch12 = data.readU8(encoding_record);
var ch22 = data.readU8(encoding_record + 1);
var _g2 = ch22 | ch12 << 8;
switch(_g2) {
case 0:
var pos2 = encoding_record + 4;
var ch13 = data.readU8(pos2);
var ch23 = data.readU8(pos2 + 1);
var ch3 = data.readU8(pos2 + 2);
var ch4 = data.readU8(pos2 + 3);
info.index_map = cmap + (ch4 | ch3 << 8 | ch23 << 16 | ch13 << 24);
break;
case 3:
var pos3 = encoding_record + 2;
var ch14 = data.readU8(pos3);
var ch24 = data.readU8(pos3 + 1);
var _g21 = ch24 | ch14 << 8;
switch(_g21) {
case 1:case 10:
var pos4 = encoding_record + 4;
var ch15 = data.readU8(pos4);
var ch25 = data.readU8(pos4 + 1);
var ch31 = data.readU8(pos4 + 2);
var ch41 = data.readU8(pos4 + 3);
info.index_map = cmap + (ch41 | ch31 << 8 | ch25 << 16 | ch15 << 24);
break;
}
break;
}
}
if(info.index_map == 0) {
return false;
}
var pos5 = info.head + 50;
var ch16 = data.readU8(pos5);
var ch26 = data.readU8(pos5 + 1);
info.indexToLocFormat = ch26 | ch16 << 8;
return true;
};
kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex = function(info,unicode_codepoint) {
var data = info.data;
var index_map = info.index_map;
var ch1 = data.readU8(index_map);
var ch2 = data.readU8(index_map + 1);
var format = ch2 | ch1 << 8;
if(format == 0) {
var pos = index_map + 2;
var ch11 = data.readU8(pos);
var ch21 = data.readU8(pos + 1);
var bytes = ch21 | ch11 << 8;
if(unicode_codepoint < bytes - 6) {
return data.readU8(index_map + 6 + unicode_codepoint);
}
return 0;
} else if(format == 6) {
var pos1 = index_map + 6;
var ch12 = data.readU8(pos1);
var ch22 = data.readU8(pos1 + 1);
var first = ch22 | ch12 << 8;
var pos2 = index_map + 8;
var ch13 = data.readU8(pos2);
var ch23 = data.readU8(pos2 + 1);
var count = ch23 | ch13 << 8;
if(unicode_codepoint >= first && unicode_codepoint < first + count) {
var pos3 = index_map + 10 + (unicode_codepoint - first) * 2;
var ch14 = data.readU8(pos3);
var ch24 = data.readU8(pos3 + 1);
return ch24 | ch14 << 8;
}
return 0;
} else if(format == 2) {
throw new js__$Boot_HaxeError("Error");
} else if(format == 4) {
var pos4 = index_map + 6;
var ch15 = data.readU8(pos4);
var ch25 = data.readU8(pos4 + 1);
var segcount = (ch25 | ch15 << 8) >> 1;
var pos5 = index_map + 8;
var ch16 = data.readU8(pos5);
var ch26 = data.readU8(pos5 + 1);
var searchRange = (ch26 | ch16 << 8) >> 1;
var pos6 = index_map + 10;
var ch17 = data.readU8(pos6);
var ch27 = data.readU8(pos6 + 1);
var entrySelector = ch27 | ch17 << 8;
var pos7 = index_map + 12;
var ch18 = data.readU8(pos7);
var ch28 = data.readU8(pos7 + 1);
var rangeShift = (ch28 | ch18 << 8) >> 1;
var endCount = index_map + 14;
var search = endCount;
if(unicode_codepoint > 65535) {
return 0;
}
var pos8 = search + rangeShift * 2;
var ch19 = data.readU8(pos8);
var ch29 = data.readU8(pos8 + 1);
if(unicode_codepoint >= (ch29 | ch19 << 8)) {
search += rangeShift * 2;
}
search -= 2;
while(entrySelector != 0) {
var end;
searchRange >>= 1;
var pos9 = search + searchRange * 2;
var ch110 = data.readU8(pos9);
var ch210 = data.readU8(pos9 + 1);
end = ch210 | ch110 << 8;
if(unicode_codepoint > end) {
search += searchRange * 2;
}
--entrySelector;
}
search += 2;
var offset;
var start;
var item = search - endCount >> 1;
var pos10 = endCount + 2 * item;
var ch111 = data.readU8(pos10);
var ch211 = data.readU8(pos10 + 1);
if(unicode_codepoint > (ch211 | ch111 << 8)) {
throw new js__$Boot_HaxeError("Error");
}
var pos11 = index_map + 14 + segcount * 2 + 2 + 2 * item;
var ch112 = data.readU8(pos11);
var ch212 = data.readU8(pos11 + 1);
start = ch212 | ch112 << 8;
if(unicode_codepoint < start) {
return 0;
}
var pos12 = index_map + 14 + segcount * 6 + 2 + 2 * item;
var ch113 = data.readU8(pos12);
var ch213 = data.readU8(pos12 + 1);
offset = ch213 | ch113 << 8;
if(offset == 0) {
var pos13 = index_map + 14 + segcount * 4 + 2 + 2 * item;
var ch114 = data.readU8(pos13);
var ch214 = data.readU8(pos13 + 1);
var n = ch214 | ch114 << 8;
return unicode_codepoint + ((n & 32768) != 0 ? n - 65536 : n);
}
var pos14 = offset + (unicode_codepoint - start) * 2 + index_map + 14 + segcount * 6 + 2 + 2 * item;
var ch115 = data.readU8(pos14);
var ch215 = data.readU8(pos14 + 1);
return ch215 | ch115 << 8;
} else if(format == 12 || format == 13) {
var pos15 = index_map + 12;
var ch116 = data.readU8(pos15);
var ch216 = data.readU8(pos15 + 1);
var ch3 = data.readU8(pos15 + 2);
var ch4 = data.readU8(pos15 + 3);
var ngroups = ch4 | ch3 << 8 | ch216 << 16 | ch116 << 24;
var low;
var high;
low = 0;
high = ngroups;
while(low < high) {
var mid = low + (high - low >> 1);
var pos16 = index_map + 16 + mid * 12;
var ch117 = data.readU8(pos16);
var ch217 = data.readU8(pos16 + 1);
var ch31 = data.readU8(pos16 + 2);
var ch41 = data.readU8(pos16 + 3);
var start_char = ch41 | ch31 << 8 | ch217 << 16 | ch117 << 24;
var pos17 = index_map + 16 + mid * 12 + 4;
var ch118 = data.readU8(pos17);
var ch218 = data.readU8(pos17 + 1);
var ch32 = data.readU8(pos17 + 2);
var ch42 = data.readU8(pos17 + 3);
var end_char = ch42 | ch32 << 8 | ch218 << 16 | ch118 << 24;
if(unicode_codepoint < start_char) {
high = mid;
} else if(unicode_codepoint > end_char) {
low = mid + 1;
} else {
var pos18 = index_map + 16 + mid * 12 + 8;
var ch119 = data.readU8(pos18);
var ch219 = data.readU8(pos18 + 1);
var ch33 = data.readU8(pos18 + 2);
var ch43 = data.readU8(pos18 + 3);
var start_glyph = ch43 | ch33 << 8 | ch219 << 16 | ch119 << 24;
if(format == 12) {
return start_glyph + unicode_codepoint - start_char;
} else {
return start_glyph;
}
}
}
return 0;
}
throw new js__$Boot_HaxeError("Error");
};
kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointShape = function(info,unicode_codepoint) {
return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(info,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,unicode_codepoint));
};
kha_graphics2_truetype_StbTruetype.stbtt_setvertex = function(v,type,x,y,cx,cy) {
v.type = type;
v.x = x;
v.y = y;
v.cx = cx;
v.cy = cy;
};
kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset = function(info,glyph_index) {
var g1;
var g2;
if(glyph_index >= info.numGlyphs) {
return -1;
}
if(info.indexToLocFormat >= 2) {
return -1;
}
if(info.indexToLocFormat == 0) {
var info1 = info.glyf;
var p = info.data;
var pos = info.loca + glyph_index * 2;
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
g1 = info1 + (ch2 | ch1 << 8) * 2;
var info2 = info.glyf;
var p1 = info.data;
var pos1 = info.loca + glyph_index * 2 + 2;
var ch11 = p1.readU8(pos1);
var ch21 = p1.readU8(pos1 + 1);
g2 = info2 + (ch21 | ch11 << 8) * 2;
} else {
var info3 = info.glyf;
var p2 = info.data;
var pos2 = info.loca + glyph_index * 4;
var ch12 = p2.readU8(pos2);
var ch22 = p2.readU8(pos2 + 1);
var ch3 = p2.readU8(pos2 + 2);
var ch4 = p2.readU8(pos2 + 3);
g1 = info3 + (ch4 | ch3 << 8 | ch22 << 16 | ch12 << 24);
var info4 = info.glyf;
var p3 = info.data;
var pos3 = info.loca + glyph_index * 4 + 4;
var ch13 = p3.readU8(pos3);
var ch23 = p3.readU8(pos3 + 1);
var ch31 = p3.readU8(pos3 + 2);
var ch41 = p3.readU8(pos3 + 3);
g2 = info4 + (ch41 | ch31 << 8 | ch23 << 16 | ch13 << 24);
}
if(g1 == g2) {
return -1;
} else {
return g1;
}
};
kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBox = function(info,glyph_index,rect) {
var g = kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset(info,glyph_index);
if(g < 0) {
return false;
}
var p = info.data;
var pos = g + 2;
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
var n = ch2 | ch1 << 8;
rect.x0 = (n & 32768) != 0 ? n - 65536 : n;
var p1 = info.data;
var pos1 = g + 4;
var ch11 = p1.readU8(pos1);
var ch21 = p1.readU8(pos1 + 1);
var n1 = ch21 | ch11 << 8;
rect.y0 = (n1 & 32768) != 0 ? n1 - 65536 : n1;
var p2 = info.data;
var pos2 = g + 6;
var ch12 = p2.readU8(pos2);
var ch22 = p2.readU8(pos2 + 1);
var n2 = ch22 | ch12 << 8;
rect.x1 = (n2 & 32768) != 0 ? n2 - 65536 : n2;
var p3 = info.data;
var pos3 = g + 8;
var ch13 = p3.readU8(pos3);
var ch23 = p3.readU8(pos3 + 1);
var n3 = ch23 | ch13 << 8;
rect.y1 = (n3 & 32768) != 0 ? n3 - 65536 : n3;
return true;
};
kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBox = function(info,codepoint,rect) {
return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBox(info,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,codepoint),rect);
};
kha_graphics2_truetype_StbTruetype.stbtt_IsGlyphEmpty = function(info,glyph_index) {
var numberOfContours;
var g = kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset(info,glyph_index);
if(g < 0) {
return true;
}
var p = info.data;
var ch1 = p.readU8(g);
var ch2 = p.readU8(g + 1);
var n = ch2 | ch1 << 8;
if((n & 32768) != 0) {
numberOfContours = n - 65536;
} else {
numberOfContours = n;
}
return numberOfContours == 0;
};
kha_graphics2_truetype_StbTruetype.stbtt__close_shape = function(vertices,num_vertices,was_off,start_off,sx,sy,scx,scy,cx,cy) {
if(start_off) {
if(was_off) {
kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],3,cx + scx >> 1,cy + scy >> 1,cx,cy);
}
kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],3,sx,sy,scx,scy);
} else if(was_off) {
kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],3,sx,sy,cx,cy);
} else {
kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],2,sx,sy,0,0);
}
return num_vertices;
};
kha_graphics2_truetype_StbTruetype.copyVertices = function(from,to,offset,count) {
var _g1 = 0;
var _g = count;
while(_g1 < _g) {
var i = _g1++;
to[offset + i] = from[i];
}
};
kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape = function(info,glyph_index) {
var numberOfContours;
var endPtsOfContours;
var data = info.data;
var vertices = null;
var num_vertices = 0;
var g = kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset(info,glyph_index);
if(g < 0) {
return null;
}
var ch1 = data.readU8(g);
var ch2 = data.readU8(g + 1);
var n = ch2 | ch1 << 8;
if((n & 32768) != 0) {
numberOfContours = n - 65536;
} else {
numberOfContours = n;
}
if(numberOfContours > 0) {
var flags = 0;
var flagcount;
var ins;
var j = 0;
var m;
var n1;
var next_move = 0;
var off = 0;
var was_off = false;
var start_off = false;
var x;
var y;
var cx;
var cy;
var sx;
var sy;
var scx;
var scy;
var points;
var pointsIndex = 0;
endPtsOfContours = data.sub(g + 10,data.get_length() - (g + 10));
var pos = g + 10 + numberOfContours * 2;
var ch11 = data.readU8(pos);
var ch21 = data.readU8(pos + 1);
ins = ch21 | ch11 << 8;
points = data.sub(g + 10 + numberOfContours * 2 + 2 + ins,data.get_length() - (g + 10 + numberOfContours * 2 + 2 + ins));
var pos1 = numberOfContours * 2 - 2;
var ch12 = endPtsOfContours.readU8(pos1);
var ch22 = endPtsOfContours.readU8(pos1 + 1);
n1 = 1 + (ch22 | ch12 << 8);
m = n1 + 2 * numberOfContours;
var this1 = new Array(m);
vertices = this1;
if(vertices == null) {
return null;
} else {
var _g1 = 0;
var _g = vertices.length;
while(_g1 < _g) {
var i = _g1++;
vertices[i] = new kha_graphics2_truetype_Stbtt_$vertex();
}
}
next_move = 0;
flagcount = 0;
off = m - n1;
var _g11 = 0;
var _g2 = n1;
while(_g11 < _g2) {
var i1 = _g11++;
if(flagcount == 0) {
flags = points.readU8(pointsIndex++);
if((flags & 8) != 0) {
flagcount = points.readU8(pointsIndex++);
}
} else {
--flagcount;
}
vertices[off + i1].type = flags;
}
x = 0;
var _g12 = 0;
var _g3 = n1;
while(_g12 < _g3) {
var i2 = _g12++;
flags = vertices[off + i2].type;
if((flags & 2) != 0) {
var dx = points.readU8(pointsIndex++);
x += (flags & 16) != 0 ? dx : -dx;
} else if((flags & 16) == 0) {
var value;
var ch13 = points.readU8(pointsIndex);
var ch23 = points.readU8(pointsIndex + 1);
var n2 = ch23 | ch13 << 8;
if((n2 & 32768) != 0) {
value = n2 - 65536;
} else {
value = n2;
}
x += value;
pointsIndex += 2;
}
vertices[off + i2].x = x;
}
y = 0;
var _g13 = 0;
var _g4 = n1;
while(_g13 < _g4) {
var i3 = _g13++;
flags = vertices[off + i3].type;
if((flags & 4) != 0) {
var dy = points.readU8(pointsIndex++);
y += (flags & 32) != 0 ? dy : -dy;
} else if((flags & 32) == 0) {
var value1;
var ch14 = points.readU8(pointsIndex);
var ch24 = points.readU8(pointsIndex + 1);
var n3 = ch24 | ch14 << 8;
if((n3 & 32768) != 0) {
value1 = n3 - 65536;
} else {
value1 = n3;
}
y += value1;
pointsIndex += 2;
}
vertices[off + i3].y = y;
}
num_vertices = 0;
scy = 0;
scx = scy;
cy = scx;
cx = cy;
sy = cx;
sx = sy;
var i4 = 0;
while(i4 < n1) {
flags = vertices[off + i4].type;
x = vertices[off + i4].x;
y = vertices[off + i4].y;
if(next_move == i4) {
if(i4 != 0) {
num_vertices = kha_graphics2_truetype_StbTruetype.stbtt__close_shape(vertices,num_vertices,was_off,start_off,sx,sy,scx,scy,cx,cy);
}
start_off = (flags & 1) == 0;
if(start_off) {
scx = x;
scy = y;
if((vertices[off + i4 + 1].type & 1) == 0) {
sx = x + vertices[off + i4 + 1].x >> 1;
sy = y + vertices[off + i4 + 1].y >> 1;
} else {
sx = vertices[off + i4 + 1].x;
sy = vertices[off + i4 + 1].y;
++i4;
}
} else {
sx = x;
sy = y;
}
kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],1,sx,sy,0,0);
was_off = false;
var pos2 = j * 2;
var ch15 = endPtsOfContours.readU8(pos2);
var ch25 = endPtsOfContours.readU8(pos2 + 1);
next_move = 1 + (ch25 | ch15 << 8);
++j;
} else if((flags & 1) == 0) {
if(was_off) {
kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],3,cx + x >> 1,cy + y >> 1,cx,cy);
}
cx = x;
cy = y;
was_off = true;
} else {
if(was_off) {
kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],3,x,y,cx,cy);
} else {
kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],2,x,y,0,0);
}
was_off = false;
}
++i4;
}
num_vertices = kha_graphics2_truetype_StbTruetype.stbtt__close_shape(vertices,num_vertices,was_off,start_off,sx,sy,scx,scy,cx,cy);
} else if(numberOfContours == -1) {
var more = 1;
var comp = data.sub(g + 10,data.get_length() - (g + 10));
var compIndex = 0;
num_vertices = 0;
vertices = null;
while(more != 0) {
var flags1;
var gidx;
var comp_num_verts = 0;
var i5;
var comp_verts = null;
var tmp = null;
var mtx0 = 1;
var mtx1 = 0;
var mtx2 = 0;
var mtx3 = 1;
var mtx4 = 0;
var mtx5 = 0;
var m1;
var n4;
var ch16 = comp.readU8(compIndex);
var ch26 = comp.readU8(compIndex + 1);
var n5 = ch26 | ch16 << 8;
if((n5 & 32768) != 0) {
flags1 = n5 - 65536;
} else {
flags1 = n5;
}
compIndex += 2;
var ch17 = comp.readU8(compIndex);
var ch27 = comp.readU8(compIndex + 1);
var n6 = ch27 | ch17 << 8;
if((n6 & 32768) != 0) {
gidx = n6 - 65536;
} else {
gidx = n6;
}
compIndex += 2;
if((flags1 & 2) != 0) {
if((flags1 & 1) != 0) {
var ch18 = comp.readU8(compIndex);
var ch28 = comp.readU8(compIndex + 1);
var n7 = ch28 | ch18 << 8;
if((n7 & 32768) != 0) {
mtx4 = n7 - 65536;
} else {
mtx4 = n7;
}
compIndex += 2;
var ch19 = comp.readU8(compIndex);
var ch29 = comp.readU8(compIndex + 1);
var n8 = ch29 | ch19 << 8;
if((n8 & 32768) != 0) {
mtx5 = n8 - 65536;
} else {
mtx5 = n8;
}
compIndex += 2;
} else {
var n9 = comp.readU8(compIndex);
if(n9 >= 128) {
mtx4 = n9 - 256;
} else {
mtx4 = n9;
}
++compIndex;
var n10 = comp.readU8(compIndex);
if(n10 >= 128) {
mtx5 = n10 - 256;
} else {
mtx5 = n10;
}
++compIndex;
}
} else {
throw new js__$Boot_HaxeError("Error");
}
if((flags1 & 8) != 0) {
var ch110 = comp.readU8(compIndex);
var ch210 = comp.readU8(compIndex + 1);
var n11 = ch210 | ch110 << 8;
mtx3 = ((n11 & 32768) != 0 ? n11 - 65536 : n11) / 16384.0;
mtx0 = mtx3;
compIndex += 2;
mtx2 = 0;
mtx1 = mtx2;
} else if((flags1 & 64) != 0) {
var ch111 = comp.readU8(compIndex);
var ch211 = comp.readU8(compIndex + 1);
var n12 = ch211 | ch111 << 8;
mtx0 = ((n12 & 32768) != 0 ? n12 - 65536 : n12) / 16384.0;
compIndex += 2;
mtx2 = 0;
mtx1 = mtx2;
var ch112 = comp.readU8(compIndex);
var ch212 = comp.readU8(compIndex + 1);
var n13 = ch212 | ch112 << 8;
mtx3 = ((n13 & 32768) != 0 ? n13 - 65536 : n13) / 16384.0;
compIndex += 2;
} else if((flags1 & 128) != 0) {
var ch113 = comp.readU8(compIndex);
var ch213 = comp.readU8(compIndex + 1);
var n14 = ch213 | ch113 << 8;
mtx0 = ((n14 & 32768) != 0 ? n14 - 65536 : n14) / 16384.0;
compIndex += 2;
var ch114 = comp.readU8(compIndex);
var ch214 = comp.readU8(compIndex + 1);
var n15 = ch214 | ch114 << 8;
mtx1 = ((n15 & 32768) != 0 ? n15 - 65536 : n15) / 16384.0;
compIndex += 2;
var ch115 = comp.readU8(compIndex);
var ch215 = comp.readU8(compIndex + 1);
var n16 = ch215 | ch115 << 8;
mtx2 = ((n16 & 32768) != 0 ? n16 - 65536 : n16) / 16384.0;
compIndex += 2;
var ch116 = comp.readU8(compIndex);
var ch216 = comp.readU8(compIndex + 1);
var n17 = ch216 | ch116 << 8;
mtx3 = ((n17 & 32768) != 0 ? n17 - 65536 : n17) / 16384.0;
compIndex += 2;
}
m1 = Math.sqrt(mtx0 * mtx0 + mtx1 * mtx1);
n4 = Math.sqrt(mtx2 * mtx2 + mtx3 * mtx3);
comp_verts = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(info,gidx);
if(comp_verts == null) {
comp_num_verts = 0;
} else {
comp_num_verts = comp_verts.length;
}
if(comp_num_verts > 0) {
var _g14 = 0;
var _g5 = comp_num_verts;
while(_g14 < _g5) {
var i6 = _g14++;
var v = comp_verts[i6];
var x1;
var y1;
x1 = v.x;
y1 = v.y;
v.x = m1 * (mtx0 * x1 + mtx2 * y1 + mtx4) | 0;
v.y = n4 * (mtx1 * x1 + mtx3 * y1 + mtx5) | 0;
x1 = v.cx;
y1 = v.cy;
v.cx = m1 * (mtx0 * x1 + mtx2 * y1 + mtx4) | 0;
v.cy = n4 * (mtx1 * x1 + mtx3 * y1 + mtx5) | 0;
}
var this2 = new Array(num_vertices + comp_num_verts);
tmp = this2;
if(tmp == null) {
return null;
}
if(num_vertices > 0) {
kha_graphics2_truetype_StbTruetype.copyVertices(vertices,tmp,0,num_vertices);
}
kha_graphics2_truetype_StbTruetype.copyVertices(comp_verts,tmp,num_vertices,comp_num_verts);
vertices = tmp;
num_vertices += comp_num_verts;
}
more = flags1 & 32;
}
} else if(numberOfContours < 0) {
throw new js__$Boot_HaxeError("Error");
}
if(vertices == null) {
return null;
}
if(vertices.length < num_vertices) {
throw new js__$Boot_HaxeError("Error");
}
if(num_vertices < vertices.length) {
var this3 = new Array(num_vertices);
var tmp1 = this3;
kha_graphics2_truetype_StbTruetype.copyVertices(vertices,tmp1,0,num_vertices);
return tmp1;
} else {
return vertices;
}
};
kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphHMetrics = function(info,glyph_index) {
var p = info.data;
var pos = info.hhea + 34;
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
var numOfLongHorMetrics = ch2 | ch1 << 8;
var metrics = new kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics();
if(glyph_index < numOfLongHorMetrics) {
var p1 = info.data;
var pos1 = info.hmtx + 4 * glyph_index;
var ch11 = p1.readU8(pos1);
var ch21 = p1.readU8(pos1 + 1);
var n = ch21 | ch11 << 8;
metrics.advanceWidth = (n & 32768) != 0 ? n - 65536 : n;
var p2 = info.data;
var pos2 = info.hmtx + 4 * glyph_index + 2;
var ch12 = p2.readU8(pos2);
var ch22 = p2.readU8(pos2 + 1);
var n1 = ch22 | ch12 << 8;
metrics.leftSideBearing = (n1 & 32768) != 0 ? n1 - 65536 : n1;
} else {
var p3 = info.data;
var pos3 = info.hmtx + 4 * (numOfLongHorMetrics - 1);
var ch13 = p3.readU8(pos3);
var ch23 = p3.readU8(pos3 + 1);
var n2 = ch23 | ch13 << 8;
metrics.advanceWidth = (n2 & 32768) != 0 ? n2 - 65536 : n2;
var p4 = info.data;
var pos4 = info.hmtx + 4 * numOfLongHorMetrics + 2 * (glyph_index - numOfLongHorMetrics);
var ch14 = p4.readU8(pos4);
var ch24 = p4.readU8(pos4 + 1);
var n3 = ch24 | ch14 << 8;
metrics.leftSideBearing = (n3 & 32768) != 0 ? n3 - 65536 : n3;
}
return metrics;
};
kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphKernAdvance = function(info,glyph1,glyph2) {
var data = info.data.sub(info.kern,info.data.get_length() - info.kern);
var needle;
var straw;
var l;
var r;
var m;
if(info.kern == 0) {
return 0;
}
var ch1 = data.readU8(2);
var ch2 = data.readU8(3);
if((ch2 | ch1 << 8) < 1) {
return 0;
}
var ch11 = data.readU8(8);
var ch21 = data.readU8(9);
if((ch21 | ch11 << 8) != 1) {
return 0;
}
l = 0;
var ch12 = data.readU8(10);
var ch22 = data.readU8(11);
r = (ch22 | ch12 << 8) - 1;
needle = glyph1 << 16 | glyph2;
while(l <= r) {
m = l + r >> 1;
var pos = 18 + m * 6;
var ch13 = data.readU8(pos);
var ch23 = data.readU8(pos + 1);
var ch3 = data.readU8(pos + 2);
var ch4 = data.readU8(pos + 3);
straw = ch4 | ch3 << 8 | ch23 << 16 | ch13 << 24;
if(needle < straw) {
r = m - 1;
} else if(needle > straw) {
l = m + 1;
} else {
var pos1 = 22 + m * 6;
var ch14 = data.readU8(pos1);
var ch24 = data.readU8(pos1 + 1);
var n = ch24 | ch14 << 8;
if((n & 32768) != 0) {
return n - 65536;
} else {
return n;
}
}
}
return 0;
};
kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointKernAdvance = function(info,ch1,ch2) {
if(info.kern == 0) {
return 0;
}
return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphKernAdvance(info,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,ch1),kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,ch2));
};
kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointHMetrics = function(info,codepoint) {
return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphHMetrics(info,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,codepoint));
};
kha_graphics2_truetype_StbTruetype.stbtt_GetFontVMetrics = function(info) {
var metrics = new kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics();
var p = info.data;
var pos = info.hhea + 4;
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
var n = ch2 | ch1 << 8;
metrics.ascent = (n & 32768) != 0 ? n - 65536 : n;
var p1 = info.data;
var pos1 = info.hhea + 6;
var ch11 = p1.readU8(pos1);
var ch21 = p1.readU8(pos1 + 1);
var n1 = ch21 | ch11 << 8;
metrics.descent = (n1 & 32768) != 0 ? n1 - 65536 : n1;
var p2 = info.data;
var pos2 = info.hhea + 8;
var ch12 = p2.readU8(pos2);
var ch22 = p2.readU8(pos2 + 1);
var n2 = ch22 | ch12 << 8;
metrics.lineGap = (n2 & 32768) != 0 ? n2 - 65536 : n2;
return metrics;
};
kha_graphics2_truetype_StbTruetype.stbtt_GetFontBoundingBox = function(info) {
var rect = new kha_graphics2_truetype_Stbtt_$temp_$rect();
var p = info.data;
var pos = info.head + 36;
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
var n = ch2 | ch1 << 8;
rect.x0 = (n & 32768) != 0 ? n - 65536 : n;
var p1 = info.data;
var pos1 = info.head + 38;
var ch11 = p1.readU8(pos1);
var ch21 = p1.readU8(pos1 + 1);
var n1 = ch21 | ch11 << 8;
rect.y0 = (n1 & 32768) != 0 ? n1 - 65536 : n1;
var p2 = info.data;
var pos2 = info.head + 40;
var ch12 = p2.readU8(pos2);
var ch22 = p2.readU8(pos2 + 1);
var n2 = ch22 | ch12 << 8;
rect.x1 = (n2 & 32768) != 0 ? n2 - 65536 : n2;
var p3 = info.data;
var pos3 = info.head + 42;
var ch13 = p3.readU8(pos3);
var ch23 = p3.readU8(pos3 + 1);
var n3 = ch23 | ch13 << 8;
rect.y1 = (n3 & 32768) != 0 ? n3 - 65536 : n3;
return rect;
};
kha_graphics2_truetype_StbTruetype.stbtt_ScaleForPixelHeight = function(info,height) {
var p = info.data;
var pos = info.hhea + 4;
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
var n = ch2 | ch1 << 8;
var p1 = info.data;
var pos1 = info.hhea + 6;
var ch11 = p1.readU8(pos1);
var ch21 = p1.readU8(pos1 + 1);
var n1 = ch21 | ch11 << 8;
var fheight = ((n & 32768) != 0 ? n - 65536 : n) - ((n1 & 32768) != 0 ? n1 - 65536 : n1);
return height / fheight;
};
kha_graphics2_truetype_StbTruetype.stbtt_ScaleForMappingEmToPixels = function(info,pixels) {
var p = info.data;
var pos = info.head + 18;
var ch1 = p.readU8(pos);
var ch2 = p.readU8(pos + 1);
var unitsPerEm = ch2 | ch1 << 8;
return pixels / unitsPerEm;
};
kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel = function(font,glyph,scale_x,scale_y,shift_x,shift_y) {
var rect = new kha_graphics2_truetype_Stbtt_$temp_$rect();
if(!kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBox(font,glyph,rect)) {
rect.x0 = 0;
rect.y0 = 0;
rect.x1 = 0;
rect.y1 = 0;
} else {
var x0 = rect.x0;
var x1 = rect.x1;
var y0 = rect.y0;
var y1 = rect.y1;
rect.x0 = Math.floor(x0 * scale_x + shift_x);
rect.y0 = Math.floor(-y1 * scale_y + shift_y);
rect.x1 = Math.ceil(x1 * scale_x + shift_x);
rect.y1 = Math.ceil(-y0 * scale_y + shift_y);
}
return rect;
};
kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBox = function(font,glyph,scale_x,scale_y) {
return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(font,glyph,scale_x,scale_y,0.0,0.0);
};
kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapBoxSubpixel = function(font,codepoint,scale_x,scale_y,shift_x,shift_y) {
return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(font,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(font,codepoint),scale_x,scale_y,shift_x,shift_y);
};
kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapBox = function(font,codepoint,scale_x,scale_y) {
return kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapBoxSubpixel(font,codepoint,scale_x,scale_y,0.0,0.0);
};
kha_graphics2_truetype_StbTruetype.stbtt__new_active = function(e,eIndex,off_x,start_point) {
var z = new kha_graphics2_truetype_Stbtt_$_$active_$edge();
var dxdy = (e[eIndex].x1 - e[eIndex].x0) / (e[eIndex].y1 - e[eIndex].y0);
if(z == null) {
return z;
}
z.fdx = dxdy;
z.fdy = dxdy != 0.0 ? 1.0 / dxdy : 0.0;
z.fx = e[eIndex].x0 + dxdy * (start_point - e[eIndex].y0);
z.fx -= off_x;
z.direction = e[eIndex].invert ? 1.0 : -1.0;
z.sy = e[eIndex].y0;
z.ey = e[eIndex].y1;
z.next = null;
return z;
};
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge = function(scanline,scanlineIndex,x,e,x0,y0,x1,y1) {
if(y0 == y1) {
return;
}
if(!(y0 < y1)) {
throw new js__$Boot_HaxeError("Error");
}
if(!(e.sy <= e.ey)) {
throw new js__$Boot_HaxeError("Error");
}
if(y0 > e.ey) {
return;
}
if(y1 < e.sy) {
return;
}
if(y0 < e.sy) {
x0 += (x1 - x0) * (e.sy - y0) / (y1 - y0);
y0 = e.sy;
}
if(y1 > e.ey) {
x1 += (x1 - x0) * (e.ey - y1) / (y1 - y0);
y1 = e.ey;
}
if(x0 == x) {
if(!(x1 <= x + 1)) {
throw new js__$Boot_HaxeError("Error");
}
} else if(x0 == x + 1) {
if(!(x1 >= x)) {
throw new js__$Boot_HaxeError("Error");
}
} else if(x0 <= x) {
if(!(x1 <= x)) {
throw new js__$Boot_HaxeError("Error");
}
} else if(x0 >= x + 1) {
if(!(x1 >= x + 1)) {
throw new js__$Boot_HaxeError("Error");
}
} else if(!(x1 >= x && x1 <= x + 1)) {
throw new js__$Boot_HaxeError("Error");
}
if(x0 <= x && x1 <= x) {
var _g = scanlineIndex + x;
var _g1 = scanline;
_g1[_g] = _g1[_g] + e.direction * (y1 - y0);
} else if(!(x0 >= x + 1 && x1 >= x + 1)) {
if(!(x0 >= x && x0 <= x + 1 && x1 >= x && x1 <= x + 1)) {
throw new js__$Boot_HaxeError("Error");
}
var _g2 = scanlineIndex + x;
var _g11 = scanline;
_g11[_g2] = _g11[_g2] + e.direction * (y1 - y0) * (1 - (x0 - x + (x1 - x)) / 2);
}
};
kha_graphics2_truetype_StbTruetype.stbtt__fill_active_edges_new = function(scanline,scanline_fill,scanline_fillIndex,len,e,y_top) {
var y_bottom = y_top + 1;
while(e != null) {
if(!(e.ey >= y_top)) {
throw new js__$Boot_HaxeError("Error");
}
if(e.fdx == 0) {
var x0 = e.fx;
if(x0 < len) {
if(x0 >= 0) {
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x0 | 0,e,x0,y_top,x0,y_bottom);
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline_fill,scanline_fillIndex - 1,x0 + 1 | 0,e,x0,y_top,x0,y_bottom);
} else {
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline_fill,scanline_fillIndex - 1,0,e,x0,y_top,x0,y_bottom);
}
}
} else {
var x01 = e.fx;
var dx = e.fdx;
var xb = x01 + dx;
var x_top;
var x_bottom;
var sy0;
var sy1;
var dy = e.fdy;
if(!(e.sy <= y_bottom && e.ey >= y_top)) {
throw new js__$Boot_HaxeError("Error");
}
if(e.sy > y_top) {
x_top = x01 + dx * (e.sy - y_top);
sy0 = e.sy;
} else {
x_top = x01;
sy0 = y_top;
}
if(e.ey < y_bottom) {
x_bottom = x01 + dx * (e.ey - y_top);
sy1 = e.ey;
} else {
x_bottom = xb;
sy1 = y_bottom;
}
if(x_top >= 0 && x_bottom >= 0 && x_top < len && x_bottom < len) {
if((x_top | 0) == (x_bottom | 0)) {
var height;
var x = x_top | 0;
height = sy1 - sy0;
if(!(x >= 0 && x < len)) {
throw new js__$Boot_HaxeError("Error");
}
var _g = x;
var _g1 = scanline;
_g1[_g] = _g1[_g] + e.direction * (1 - (x_top - x + (x_bottom - x)) / 2) * height;
var _g2 = scanline_fillIndex + x;
var _g11 = scanline_fill;
_g11[_g2] = _g11[_g2] + e.direction * height;
} else {
var x1;
var x11;
var x2;
var y_crossing;
var step;
var sign;
var area;
if(x_top > x_bottom) {
var t;
sy0 = y_bottom - (sy0 - y_top);
sy1 = y_bottom - (sy1 - y_top);
t = sy0;
sy0 = sy1;
sy1 = t;
t = x_bottom;
x_bottom = x_top;
x_top = t;
dx = -dx;
dy = -dy;
t = x01;
x01 = xb;
xb = t;
}
x11 = x_top | 0;
x2 = x_bottom | 0;
y_crossing = (x11 + 1 - x01) * dy + y_top;
sign = e.direction;
area = sign * (y_crossing - sy0);
var _g3 = x11;
var _g12 = scanline;
_g12[_g3] = _g12[_g3] + area * (1 - (x_top - x11 + (x11 + 1 - x11)) / 2);
step = sign * dy;
var _g13 = x11 + 1;
var _g4 = x2;
while(_g13 < _g4) {
var x3 = _g13++;
var _g21 = x3;
var _g31 = scanline;
_g31[_g21] = _g31[_g21] + (area + step / 2);
area += step;
}
y_crossing += dy * (x2 - (x11 + 1));
if(!(Math.abs(area) <= 1.01)) {
throw new js__$Boot_HaxeError("Error");
}
var _g5 = x2;
var _g14 = scanline;
_g14[_g5] = _g14[_g5] + (area + sign * (1 - (x2 - x2 + (x_bottom - x2)) / 2) * (sy1 - y_crossing));
var _g6 = scanline_fillIndex + x2;
var _g15 = scanline_fill;
_g15[_g6] = _g15[_g6] + sign * (sy1 - sy0);
}
} else {
var _g16 = 0;
var _g7 = len;
while(_g16 < _g7) {
var x4 = _g16++;
var y0 = y_top;
var x12 = x4;
var x21 = x4 + 1;
var x31 = xb;
var y3 = y_bottom;
var y1;
var y2;
y1 = (x4 - x01) / dx + y_top;
y2 = (x4 + 1 - x01) / dx + y_top;
if(x01 < x12 && x31 > x21) {
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x12,y1);
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x12,y1,x21,y2);
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x21,y2,x31,y3);
} else if(x31 < x12 && x01 > x21) {
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x21,y2);
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x21,y2,x12,y1);
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x12,y1,x31,y3);
} else if(x01 < x12 && x31 > x12) {
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x12,y1);
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x12,y1,x31,y3);
} else if(x31 < x12 && x01 > x12) {
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x12,y1);
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x12,y1,x31,y3);
} else if(x01 < x21 && x31 > x21) {
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x21,y2);
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x21,y2,x31,y3);
} else if(x31 < x21 && x01 > x21) {
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x21,y2);
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x21,y2,x31,y3);
} else {
kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x31,y3);
}
}
}
}
e = e.next;
}
};
kha_graphics2_truetype_StbTruetype.stbtt__rasterize_sorted_edges = function(result,e,n,vsubsample,off_x,off_y) {
var active = null;
var y;
var j = 0;
var i;
var scanline;
var scanline2;
var scanline2Index = 0;
var eIndex = 0;
if(result.w > 64) {
var length = result.w * 2 + 1;
var this1 = new Array(length);
scanline = this1;
} else {
var this2 = new Array(129);
scanline = this2;
}
scanline2 = scanline;
scanline2Index = result.w;
y = off_y;
e[eIndex + n].y0 = off_y + result.h + 1;
while(j < result.h) {
var scan_y_top = y + 0.0;
var scan_y_bottom = y + 1.0;
var step_value;
var step_parent;
step_value = active;
step_parent = null;
var _g1 = 0;
var _g = result.w;
while(_g1 < _g) {
var i1 = _g1++;
scanline[i1] = 0;
}
var _g11 = 0;
var _g2 = result.w + 1;
while(_g11 < _g2) {
var i2 = _g11++;
scanline2[scanline2Index + i2] = 0;
}
while(step_value != null) {
var z = step_value;
if(z.ey <= scan_y_top) {
if(step_parent == null) {
active = z.next;
step_value = z.next;
} else {
step_parent.next = z.next;
step_value = z.next;
}
if(z.direction == 0) {
throw new js__$Boot_HaxeError("Error");
}
z.direction = 0;
} else {
step_parent = step_value;
step_value = step_value.next;
}
}
while(e[eIndex].y0 <= scan_y_bottom) {
if(e[eIndex].y0 != e[eIndex].y1) {
var z1 = kha_graphics2_truetype_StbTruetype.stbtt__new_active(e,eIndex,off_x,scan_y_top);
if(!(z1.ey >= scan_y_top)) {
throw new js__$Boot_HaxeError("Error");
}
z1.next = active;
active = z1;
}
++eIndex;
}
if(active != null) {
kha_graphics2_truetype_StbTruetype.stbtt__fill_active_edges_new(scanline,scanline2,scanline2Index + 1,result.w,active,scan_y_top);
}
var sum = 0;
var _g12 = 0;
var _g3 = result.w;
while(_g12 < _g3) {
var i3 = _g12++;
var k;
var m;
sum += scanline2[scanline2Index + i3];
k = scanline[i3] + sum;
k = Math.abs(k) * 255.0 + 0.5;
m = k | 0;
if(m > 255) {
m = 255;
}
result.pixels.writeU8(result.pixels_offset + j * result.stride + i3,m);
}
step_parent = null;
step_value = active;
while(step_value != null) {
var z2 = step_value;
z2.fx += z2.fdx;
step_parent = step_value;
step_value = step_value.next;
}
++y;
++j;
}
};
kha_graphics2_truetype_StbTruetype.STBTT__COMPARE = function(a,b) {
return a.y0 < b.y0;
};
kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_ins_sort = function(p,n) {
var i;
var j;
var _g1 = 1;
var _g = n;
while(_g1 < _g) {
var i1 = _g1++;
var t = p[i1];
var a = t;
j = i1;
while(j > 0) {
var b = p[j - 1];
var c = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(a,b);
if(!c) {
break;
}
p[j] = p[j - 1];
--j;
}
if(i1 != j) {
p[j] = t;
}
}
};
kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_quicksort = function(p,pIndex,n) {
while(n > 12) {
var t;
var c01;
var c12;
var c;
var m;
var i;
var j;
m = n >> 1;
c01 = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex],p[pIndex + m]);
c12 = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex + m],p[pIndex + n - 1]);
if(c01 != c12) {
var z;
c = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex],p[pIndex + n - 1]);
if(c == c12) {
z = 0;
} else {
z = n - 1;
}
t = p[pIndex + z];
p[pIndex + z] = p[pIndex + m];
p[pIndex + m] = t;
}
t = p[pIndex];
p[pIndex] = p[pIndex + m];
p[pIndex + m] = t;
i = 1;
j = n - 1;
while(true) {
while(kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex + i],p[pIndex])) ++i;
while(kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex],p[pIndex + j])) --j;
if(i >= j) {
break;
}
t = p[pIndex + i];
p[pIndex + i] = p[pIndex + j];
p[pIndex + j] = t;
++i;
--j;
}
if(j < n - i) {
kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_quicksort(p,pIndex,j);
pIndex += i;
n -= i;
} else {
kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_quicksort(p,pIndex + i,n - i);
n = j;
}
}
};
kha_graphics2_truetype_StbTruetype.stbtt__sort_edges = function(p,n) {
kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_quicksort(p,0,n);
kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_ins_sort(p,n);
};
kha_graphics2_truetype_StbTruetype.stbtt__rasterize = function(result,pts,wcount,windings,scale_x,scale_y,shift_x,shift_y,off_x,off_y,invert) {
var y_scale_inv = invert ? -scale_y : scale_y;
var e;
var n;
var i;
var j;
var k;
var m;
var vsubsample = 1;
var ptsIndex = 0;
n = 0;
var _g1 = 0;
var _g = windings;
while(_g1 < _g) {
var i1 = _g1++;
n += wcount[i1];
}
var this1 = new Array(n + 1);
e = this1;
if(e == null) {
return;
} else {
var _g11 = 0;
var _g2 = e.length;
while(_g11 < _g2) {
var i2 = _g11++;
e[i2] = new kha_graphics2_truetype_Stbtt_$_$edge();
}
}
n = 0;
m = 0;
var _g12 = 0;
var _g3 = windings;
while(_g12 < _g3) {
var i3 = _g12++;
var p = pts;
var pIndex = ptsIndex + m;
m += wcount[i3];
j = wcount[i3] - 1;
var _g31 = 0;
var _g21 = wcount[i3];
while(_g31 < _g21) {
var k1 = _g31++;
var a = k1;
var b = j;
if(p[pIndex + j].y == p[pIndex + k1].y) {
j = k1;
continue;
}
e[n].invert = false;
if(invert ? p[pIndex + j].y > p[pIndex + k1].y : p[pIndex + j].y < p[pIndex + k1].y) {
e[n].invert = true;
a = j;
b = k1;
}
e[n].x0 = p[pIndex + a].x * scale_x + shift_x;
e[n].y0 = (p[pIndex + a].y * y_scale_inv + shift_y) * vsubsample;
e[n].x1 = p[pIndex + b].x * scale_x + shift_x;
e[n].y1 = (p[pIndex + b].y * y_scale_inv + shift_y) * vsubsample;
++n;
j = k1;
}
}
kha_graphics2_truetype_StbTruetype.stbtt__sort_edges(e,n);
kha_graphics2_truetype_StbTruetype.stbtt__rasterize_sorted_edges(result,e,n,vsubsample,off_x,off_y);
};
kha_graphics2_truetype_StbTruetype.stbtt__add_point = function(points,n,x,y) {
if(points == null) {
return;
}
points[n].x = x;
points[n].y = y;
};
kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve = function(points,num_points,x0,y0,x1,y1,x2,y2,objspace_flatness_squared,n) {
var mx = (x0 + 2 * x1 + x2) / 4;
var my = (y0 + 2 * y1 + y2) / 4;
var dx = (x0 + x2) / 2 - mx;
var dy = (y0 + y2) / 2 - my;
if(n > 16) {
return 1;
}
if(dx * dx + dy * dy > objspace_flatness_squared) {
kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve(points,num_points,x0,y0,(x0 + x1) / 2.0,(y0 + y1) / 2.0,mx,my,objspace_flatness_squared,n + 1);
kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve(points,num_points,mx,my,(x1 + x2) / 2.0,(y1 + y2) / 2.0,x2,y2,objspace_flatness_squared,n + 1);
} else {
kha_graphics2_truetype_StbTruetype.stbtt__add_point(points,num_points.value,x2,y2);
num_points.value += 1;
}
return 1;
};
kha_graphics2_truetype_StbTruetype.stbtt_FlattenCurves = function(vertices,num_verts,objspace_flatness,contour_lengths,num_contours) {
var points = null;
var num_points = 0;
var objspace_flatness_squared = objspace_flatness * objspace_flatness;
var i;
var n = 0;
var start = 0;
var pass;
var _g1 = 0;
var _g = num_verts;
while(_g1 < _g) {
var i1 = _g1++;
if(vertices[i1].type == 1) {
++n;
}
}
num_contours.value = n;
if(n == 0) {
return null;
}
var this1 = new Array(n);
contour_lengths.value = this1;
if(contour_lengths.value == null) {
num_contours.value = 0;
return null;
}
var _g2 = 0;
while(_g2 < 2) {
var pass1 = _g2++;
var x = 0;
var y = 0;
if(pass1 == 1) {
var this2 = new Array(num_points);
points = this2;
if(points == null) {
contour_lengths.value = null;
num_contours.value = 0;
return null;
} else {
var _g21 = 0;
var _g11 = points.length;
while(_g21 < _g11) {
var i2 = _g21++;
points[i2] = new kha_graphics2_truetype_Stbtt_$_$point();
}
}
}
num_points = 0;
n = -1;
var _g22 = 0;
var _g12 = num_verts;
while(_g22 < _g12) {
var i3 = _g22++;
var _g3 = vertices[i3].type;
switch(_g3) {
case 1:
if(n >= 0) {
contour_lengths.value[n] = num_points - start;
}
++n;
start = num_points;
x = vertices[i3].x;
y = vertices[i3].y;
kha_graphics2_truetype_StbTruetype.stbtt__add_point(points,num_points++,x,y);
break;
case 2:
x = vertices[i3].x;
y = vertices[i3].y;
kha_graphics2_truetype_StbTruetype.stbtt__add_point(points,num_points++,x,y);
break;
case 3:
var num_points_reference = { value : num_points};
kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve(points,num_points_reference,x,y,vertices[i3].cx,vertices[i3].cy,vertices[i3].x,vertices[i3].y,objspace_flatness_squared,0);
num_points = num_points_reference.value;
x = vertices[i3].x;
y = vertices[i3].y;
break;
}
}
contour_lengths.value[n] = num_points - start;
}
return points;
};
kha_graphics2_truetype_StbTruetype.stbtt_Rasterize = function(result,flatness_in_pixels,vertices,num_verts,scale_x,scale_y,shift_x,shift_y,x_off,y_off,invert) {
var scale = scale_x > scale_y ? scale_y : scale_x;
var winding_count = 0;
var winding_lengths = null;
var winding_count_reference = { value : winding_count};
var winding_lengths_reference = new kha_graphics2_truetype_VectorOfIntPointer();
var windings = kha_graphics2_truetype_StbTruetype.stbtt_FlattenCurves(vertices,num_verts,flatness_in_pixels / scale,winding_lengths_reference,winding_count_reference);
winding_count = winding_count_reference.value;
winding_lengths = winding_lengths_reference.value;
if(windings != null) {
kha_graphics2_truetype_StbTruetype.stbtt__rasterize(result,windings,winding_lengths,winding_count,scale_x,scale_y,shift_x,shift_y,x_off,y_off,invert);
}
};
kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapSubpixel = function(info,scale_x,scale_y,shift_x,shift_y,glyph,region) {
var ix0;
var iy0;
var ix1;
var iy1;
var gbm = new kha_graphics2_truetype_Stbtt_$_$bitmap();
var vertices = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(info,glyph);
var num_verts = vertices.length;
if(scale_x == 0) {
scale_x = scale_y;
}
if(scale_y == 0) {
if(scale_x == 0) {
return null;
}
scale_y = scale_x;
}
var rect = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(info,glyph,scale_x,scale_y,shift_x,shift_y);
ix0 = rect.x0;
iy0 = rect.y0;
ix1 = rect.x1;
iy1 = rect.y1;
gbm.w = ix1 - ix0;
gbm.h = iy1 - iy0;
gbm.pixels = null;
region.width = gbm.w;
region.height = gbm.h;
region.xoff = ix0;
region.yoff = iy0;
if(gbm.w != 0 && gbm.h != 0) {
gbm.pixels = kha_internal_BytesBlob.alloc(gbm.w * gbm.h);
if(gbm.pixels != null) {
gbm.stride = gbm.w;
kha_graphics2_truetype_StbTruetype.stbtt_Rasterize(gbm,0.35,vertices,num_verts,scale_x,scale_y,shift_x,shift_y,ix0,iy0,true);
}
}
return gbm.pixels;
};
kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmap = function(info,scale_x,scale_y,glyph,region) {
return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapSubpixel(info,scale_x,scale_y,0.0,0.0,glyph,region);
};
kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmapSubpixel = function(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,shift_x,shift_y,glyph) {
var ix0 = 0;
var iy0 = 0;
var vertices = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(info,glyph);
var num_verts = vertices == null ? 0 : vertices.length;
var gbm = new kha_graphics2_truetype_Stbtt_$_$bitmap();
var rect = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(info,glyph,scale_x,scale_y,shift_x,shift_y);
ix0 = rect.x0;
iy0 = rect.y0;
gbm.pixels = output;
gbm.pixels_offset = output_offset;
gbm.w = out_w;
gbm.h = out_h;
gbm.stride = out_stride;
if(gbm.w != 0 && gbm.h != 0) {
kha_graphics2_truetype_StbTruetype.stbtt_Rasterize(gbm,0.35,vertices,num_verts,scale_x,scale_y,shift_x,shift_y,ix0,iy0,true);
}
};
kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmap = function(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,glyph) {
kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmapSubpixel(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,0.0,0.0,glyph);
};
kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapSubpixel = function(info,scale_x,scale_y,shift_x,shift_y,codepoint,region) {
return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapSubpixel(info,scale_x,scale_y,shift_x,shift_y,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,codepoint),region);
};
kha_graphics2_truetype_StbTruetype.stbtt_MakeCodepointBitmapSubpixel = function(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,shift_x,shift_y,codepoint) {
kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmapSubpixel(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,shift_x,shift_y,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,codepoint));
};
kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmap = function(info,scale_x,scale_y,codepoint,region) {
return kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapSubpixel(info,scale_x,scale_y,0.0,0.0,codepoint,region);
};
kha_graphics2_truetype_StbTruetype.stbtt_MakeCodepointBitmap = function(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,codepoint) {
kha_graphics2_truetype_StbTruetype.stbtt_MakeCodepointBitmapSubpixel(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,0.0,0.0,codepoint);
};
kha_graphics2_truetype_StbTruetype.stbtt_BakeFontBitmap = function(data,offset,pixel_height,pixels,pw,ph,chars,chardata) {
var scale;
var x;
var y;
var bottom_y;
var f = new kha_graphics2_truetype_Stbtt_$fontinfo();
if(!kha_graphics2_truetype_StbTruetype.stbtt_InitFont(f,data,offset)) {
return -1;
}
var _g1 = 0;
var _g = pw * ph;
while(_g1 < _g) {
var i = _g1++;
pixels.writeU8(i,0);
}
y = 1;
x = y;
bottom_y = 1;
scale = kha_graphics2_truetype_StbTruetype.stbtt_ScaleForPixelHeight(f,pixel_height);
var i1 = 0;
var _g2 = 0;
while(_g2 < chars.length) {
var index = chars[_g2];
++_g2;
var advance;
var lsb;
var x0;
var y0;
var x1;
var y1;
var gw;
var gh;
var g = kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(f,index);
var metrics = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphHMetrics(f,g);
advance = metrics.advanceWidth;
lsb = metrics.leftSideBearing;
var rect = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBox(f,g,scale,scale);
x0 = rect.x0;
y0 = rect.y0;
x1 = rect.x1;
y1 = rect.y1;
gw = x1 - x0;
gh = y1 - y0;
if(x + gw + 1 >= pw) {
y = bottom_y;
x = 1;
}
if(y + gh + 1 >= ph) {
return -i1;
}
if(x + gw >= pw) {
throw new js__$Boot_HaxeError("Error");
}
if(y + gh >= ph) {
throw new js__$Boot_HaxeError("Error");
}
kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmap(f,pixels,x + y * pw,gw,gh,pw,scale,scale,g);
chardata[i1].x0 = x;
chardata[i1].y0 = y;
chardata[i1].x1 = x + gw;
chardata[i1].y1 = y + gh;
chardata[i1].xadvance = scale * advance;
chardata[i1].xoff = x0;
chardata[i1].yoff = y0;
x = x + gw + 1;
if(y + gh + 1 > bottom_y) {
bottom_y = y + gh + 1;
}
++i1;
}
return bottom_y;
};
kha_graphics2_truetype_StbTruetype.stbtt_GetBakedQuad = function(chardata,pw,ph,char_index,xpos,ypos,q,opengl_fillrule) {
var d3d_bias = opengl_fillrule ? 0 : -0.5;
var ipw = 1.0 / pw;
var iph = 1.0 / ph;
var b = chardata[char_index];
var round_x = Math.floor(xpos.value + b.xoff + 0.5);
var round_y = Math.floor(ypos.value + b.yoff + 0.5);
q.x0 = round_x + d3d_bias;
q.y0 = round_y + d3d_bias;
q.x1 = round_x + b.x1 - b.x0 + d3d_bias;
q.y1 = round_y + b.y1 - b.y0 + d3d_bias;
q.s0 = b.x0 * ipw;
q.t0 = b.y0 * iph;
q.s1 = b.x1 * ipw;
q.t1 = b.y1 * iph;
xpos.value += b.xadvance;
};
var kha_graphics4_BlendingFactor = $hxClasses["kha.graphics4.BlendingFactor"] = { __ename__ : true, __constructs__ : ["Undefined","BlendOne","BlendZero","SourceAlpha","DestinationAlpha","InverseSourceAlpha","InverseDestinationAlpha","SourceColor","DestinationColor","InverseSourceColor","InverseDestinationColor"] };
kha_graphics4_BlendingFactor.Undefined = ["Undefined",0];
kha_graphics4_BlendingFactor.Undefined.toString = $estr;
kha_graphics4_BlendingFactor.Undefined.__enum__ = kha_graphics4_BlendingFactor;
kha_graphics4_BlendingFactor.BlendOne = ["BlendOne",1];
kha_graphics4_BlendingFactor.BlendOne.toString = $estr;
kha_graphics4_BlendingFactor.BlendOne.__enum__ = kha_graphics4_BlendingFactor;
kha_graphics4_BlendingFactor.BlendZero = ["BlendZero",2];
kha_graphics4_BlendingFactor.BlendZero.toString = $estr;
kha_graphics4_BlendingFactor.BlendZero.__enum__ = kha_graphics4_BlendingFactor;
kha_graphics4_BlendingFactor.SourceAlpha = ["SourceAlpha",3];
kha_graphics4_BlendingFactor.SourceAlpha.toString = $estr;
kha_graphics4_BlendingFactor.SourceAlpha.__enum__ = kha_graphics4_BlendingFactor;
kha_graphics4_BlendingFactor.DestinationAlpha = ["DestinationAlpha",4];
kha_graphics4_BlendingFactor.DestinationAlpha.toString = $estr;
kha_graphics4_BlendingFactor.DestinationAlpha.__enum__ = kha_graphics4_BlendingFactor;
kha_graphics4_BlendingFactor.InverseSourceAlpha = ["InverseSourceAlpha",5];
kha_graphics4_BlendingFactor.InverseSourceAlpha.toString = $estr;
kha_graphics4_BlendingFactor.InverseSourceAlpha.__enum__ = kha_graphics4_BlendingFactor;
kha_graphics4_BlendingFactor.InverseDestinationAlpha = ["InverseDestinationAlpha",6];
kha_graphics4_BlendingFactor.InverseDestinationAlpha.toString = $estr;
kha_graphics4_BlendingFactor.InverseDestinationAlpha.__enum__ = kha_graphics4_BlendingFactor;
kha_graphics4_BlendingFactor.SourceColor = ["SourceColor",7];
kha_graphics4_BlendingFactor.SourceColor.toString = $estr;
kha_graphics4_BlendingFactor.SourceColor.__enum__ = kha_graphics4_BlendingFactor;
kha_graphics4_BlendingFactor.DestinationColor = ["DestinationColor",8];
kha_graphics4_BlendingFactor.DestinationColor.toString = $estr;
kha_graphics4_BlendingFactor.DestinationColor.__enum__ = kha_graphics4_BlendingFactor;
kha_graphics4_BlendingFactor.InverseSourceColor = ["InverseSourceColor",9];
kha_graphics4_BlendingFactor.InverseSourceColor.toString = $estr;
kha_graphics4_BlendingFactor.InverseSourceColor.__enum__ = kha_graphics4_BlendingFactor;
kha_graphics4_BlendingFactor.InverseDestinationColor = ["InverseDestinationColor",10];
kha_graphics4_BlendingFactor.InverseDestinationColor.toString = $estr;
kha_graphics4_BlendingFactor.InverseDestinationColor.__enum__ = kha_graphics4_BlendingFactor;
var kha_graphics4_BlendingOperation = $hxClasses["kha.graphics4.BlendingOperation"] = { __ename__ : true, __constructs__ : ["Add","Subtract","ReverseSubtract","Min","Max"] };
kha_graphics4_BlendingOperation.Add = ["Add",0];
kha_graphics4_BlendingOperation.Add.toString = $estr;
kha_graphics4_BlendingOperation.Add.__enum__ = kha_graphics4_BlendingOperation;
kha_graphics4_BlendingOperation.Subtract = ["Subtract",1];
kha_graphics4_BlendingOperation.Subtract.toString = $estr;
kha_graphics4_BlendingOperation.Subtract.__enum__ = kha_graphics4_BlendingOperation;
kha_graphics4_BlendingOperation.ReverseSubtract = ["ReverseSubtract",2];
kha_graphics4_BlendingOperation.ReverseSubtract.toString = $estr;
kha_graphics4_BlendingOperation.ReverseSubtract.__enum__ = kha_graphics4_BlendingOperation;
kha_graphics4_BlendingOperation.Min = ["Min",3];
kha_graphics4_BlendingOperation.Min.toString = $estr;
kha_graphics4_BlendingOperation.Min.__enum__ = kha_graphics4_BlendingOperation;
kha_graphics4_BlendingOperation.Max = ["Max",4];
kha_graphics4_BlendingOperation.Max.toString = $estr;
kha_graphics4_BlendingOperation.Max.__enum__ = kha_graphics4_BlendingOperation;
var kha_graphics4_CompareMode = $hxClasses["kha.graphics4.CompareMode"] = { __ename__ : true, __constructs__ : ["Always","Never","Equal","NotEqual","Less","LessEqual","Greater","GreaterEqual"] };
kha_graphics4_CompareMode.Always = ["Always",0];
kha_graphics4_CompareMode.Always.toString = $estr;
kha_graphics4_CompareMode.Always.__enum__ = kha_graphics4_CompareMode;
kha_graphics4_CompareMode.Never = ["Never",1];
kha_graphics4_CompareMode.Never.toString = $estr;
kha_graphics4_CompareMode.Never.__enum__ = kha_graphics4_CompareMode;
kha_graphics4_CompareMode.Equal = ["Equal",2];
kha_graphics4_CompareMode.Equal.toString = $estr;
kha_graphics4_CompareMode.Equal.__enum__ = kha_graphics4_CompareMode;
kha_graphics4_CompareMode.NotEqual = ["NotEqual",3];
kha_graphics4_CompareMode.NotEqual.toString = $estr;
kha_graphics4_CompareMode.NotEqual.__enum__ = kha_graphics4_CompareMode;
kha_graphics4_CompareMode.Less = ["Less",4];
kha_graphics4_CompareMode.Less.toString = $estr;
kha_graphics4_CompareMode.Less.__enum__ = kha_graphics4_CompareMode;
kha_graphics4_CompareMode.LessEqual = ["LessEqual",5];
kha_graphics4_CompareMode.LessEqual.toString = $estr;
kha_graphics4_CompareMode.LessEqual.__enum__ = kha_graphics4_CompareMode;
kha_graphics4_CompareMode.Greater = ["Greater",6];
kha_graphics4_CompareMode.Greater.toString = $estr;
kha_graphics4_CompareMode.Greater.__enum__ = kha_graphics4_CompareMode;
kha_graphics4_CompareMode.GreaterEqual = ["GreaterEqual",7];
kha_graphics4_CompareMode.GreaterEqual.toString = $estr;
kha_graphics4_CompareMode.GreaterEqual.__enum__ = kha_graphics4_CompareMode;
var kha_graphics4_ConstantLocation = function() { };
$hxClasses["kha.graphics4.ConstantLocation"] = kha_graphics4_ConstantLocation;
kha_graphics4_ConstantLocation.__name__ = true;
var kha_graphics4_CubeMap = function(size,format,renderTarget,depthStencilFormat) {
this.isDepthAttachment = false;
this.depthTexture = null;
this.texture = null;
this.frameBuffer = null;
this.myWidth = size;
this.myHeight = size;
this.format = format;
this.renderTarget = renderTarget;
this.depthStencilFormat = depthStencilFormat;
if(renderTarget) {
this.createTexture();
}
};
$hxClasses["kha.graphics4.CubeMap"] = kha_graphics4_CubeMap;
kha_graphics4_CubeMap.__name__ = true;
kha_graphics4_CubeMap.__interfaces__ = [kha_Resource,kha_Canvas];
kha_graphics4_CubeMap.createRenderTarget = function(size,format,depthStencil,contextId) {
if(contextId == null) {
contextId = 0;
}
if(format == null) {
format = kha_graphics4_TextureFormat.RGBA32;
}
if(depthStencil == null) {
depthStencil = 0;
}
return new kha_graphics4_CubeMap(size,format,true,depthStencil);
};
kha_graphics4_CubeMap.prototype = {
myWidth: null
,myHeight: null
,format: null
,renderTarget: null
,depthStencilFormat: null
,graphics4: null
,frameBuffer: null
,texture: null
,depthTexture: null
,isDepthAttachment: null
,createTexture: function() {
if(kha_SystemImpl.gl == null) {
return;
}
this.texture = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(34067,this.texture);
kha_SystemImpl.gl.texParameteri(34067,10240,9729);
kha_SystemImpl.gl.texParameteri(34067,10241,9729);
kha_SystemImpl.gl.texParameteri(34067,10242,33071);
kha_SystemImpl.gl.texParameteri(34067,10243,33071);
if(this.renderTarget) {
this.frameBuffer = kha_SystemImpl.gl.createFramebuffer();
kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer);
var _g = this.format;
switch(_g[1]) {
case 0:
var _g1 = 0;
while(_g1 < 6) {
var i = _g1++;
kha_SystemImpl.gl.texImage2D(34069 + i,0,6408,this.myWidth,this.myHeight,0,6408,5121,null);
}
break;
case 2:
var _g2 = 0;
while(_g2 < 6) {
var i1 = _g2++;
kha_SystemImpl.gl.texImage2D(34069 + i1,0,kha_SystemImpl.gl2 ? 34836 : 6408,this.myWidth,this.myHeight,0,6408,5126,null);
}
break;
case 3:
var _g3 = 0;
while(_g3 < 6) {
var i2 = _g3++;
kha_SystemImpl.gl.texImage2D(34069 + i2,0,kha_SystemImpl.gl2 ? 33189 : 6402,this.myWidth,this.myHeight,0,6402,5123,null);
}
break;
case 4:
var _g4 = 0;
while(_g4 < 6) {
var i3 = _g4++;
kha_SystemImpl.gl.texImage2D(34069 + i3,0,kha_SystemImpl.gl2 ? 34842 : 6408,this.myWidth,this.myHeight,0,6408,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,null);
}
break;
case 5:
var _g5 = 0;
while(_g5 < 6) {
var i4 = _g5++;
kha_SystemImpl.gl.texImage2D(34069 + i4,0,kha_SystemImpl.gl2 ? 33326 : 6406,this.myWidth,this.myHeight,0,6406,5126,null);
}
break;
case 6:
var _g6 = 0;
while(_g6 < 6) {
var i5 = _g6++;
kha_SystemImpl.gl.texImage2D(34069 + i5,0,kha_SystemImpl.gl2 ? 33325 : 6406,this.myWidth,this.myHeight,0,6406,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,null);
}
break;
default:
var _g7 = 0;
while(_g7 < 6) {
var i6 = _g7++;
kha_SystemImpl.gl.texImage2D(34069 + i6,0,6408,this.myWidth,this.myHeight,0,6408,5121,null);
}
}
if(this.format == kha_graphics4_TextureFormat.DEPTH16) {
kha_SystemImpl.gl.texParameteri(34067,10240,9728);
kha_SystemImpl.gl.texParameteri(34067,10241,9728);
this.isDepthAttachment = true;
if(navigator.appVersion.indexOf("Win") == -1) {
var colortex = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(34067,colortex);
var _g11 = 0;
while(_g11 < 6) {
var i7 = _g11++;
kha_SystemImpl.gl.texImage2D(34069 + i7,0,6408,this.myWidth,this.myHeight,0,6408,5121,null);
kha_SystemImpl.gl.framebufferTexture2D(36160,36064,34069 + i7,colortex,0);
}
kha_SystemImpl.gl.bindTexture(34067,this.texture);
}
}
this.initDepthStencilBuffer(this.depthStencilFormat);
kha_SystemImpl.gl.bindFramebuffer(36160,null);
}
kha_SystemImpl.gl.bindTexture(34067,null);
}
,initDepthStencilBuffer: function(depthStencilFormat) {
switch(depthStencilFormat) {
case 0:
break;
case 1:case 5:
this.depthTexture = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(34067,this.depthTexture);
if(depthStencilFormat == 1) {
kha_SystemImpl.gl.texImage2D(34067,0,kha_SystemImpl.gl2 ? 33190 : 6402,this.myWidth,this.myHeight,0,6402,5125,null);
} else {
kha_SystemImpl.gl.texImage2D(34067,0,kha_SystemImpl.gl2 ? 33189 : 6402,this.myWidth,this.myHeight,0,6402,5123,null);
}
kha_SystemImpl.gl.texParameteri(34067,10240,9728);
kha_SystemImpl.gl.texParameteri(34067,10241,9728);
kha_SystemImpl.gl.texParameteri(34067,10242,33071);
kha_SystemImpl.gl.texParameteri(34067,10243,33071);
kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer);
kha_SystemImpl.gl.framebufferTexture2D(36160,36096,34067,this.depthTexture,0);
break;
case 2:case 3:case 4:
this.depthTexture = kha_SystemImpl.gl.createTexture();
kha_SystemImpl.gl.bindTexture(34067,this.depthTexture);
kha_SystemImpl.gl.texImage2D(34067,0,kha_SystemImpl.gl2 ? 35056 : 34041,this.myWidth,this.myHeight,0,34041,kha_SystemImpl.depthTexture.UNSIGNED_INT_24_8_WEBGL,null);
kha_SystemImpl.gl.texParameteri(34067,10240,9728);
kha_SystemImpl.gl.texParameteri(34067,10241,9728);
kha_SystemImpl.gl.texParameteri(34067,10242,33071);
kha_SystemImpl.gl.texParameteri(34067,10243,33071);
kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer);
kha_SystemImpl.gl.framebufferTexture2D(36160,33306,34067,this.depthTexture,0);
break;
}
}
,set: function(stage) {
kha_SystemImpl.gl.activeTexture(33984 + stage);
kha_SystemImpl.gl.bindTexture(34067,this.texture);
}
,setDepth: function(stage) {
kha_SystemImpl.gl.activeTexture(33984 + stage);
kha_SystemImpl.gl.bindTexture(34067,this.depthTexture);
}
,unload: function() {
}
,lock: function(level) {
if(level == null) {
level = 0;
}
return null;
}
,unlock: function() {
}
,width: null
,get_width: function() {
return this.myWidth;
}
,height: null
,get_height: function() {
return this.myHeight;
}
,g1: null
,get_g1: function() {
return null;
}
,g2: null
,get_g2: function() {
return null;
}
,g4: null
,get_g4: function() {
if(this.graphics4 == null) {
this.graphics4 = new kha_js_graphics4_Graphics(this);
}
return this.graphics4;
}
,__class__: kha_graphics4_CubeMap
};
var kha_graphics4_CullMode = $hxClasses["kha.graphics4.CullMode"] = { __ename__ : true, __constructs__ : ["Clockwise","CounterClockwise","None"] };
kha_graphics4_CullMode.Clockwise = ["Clockwise",0];
kha_graphics4_CullMode.Clockwise.toString = $estr;
kha_graphics4_CullMode.Clockwise.__enum__ = kha_graphics4_CullMode;
kha_graphics4_CullMode.CounterClockwise = ["CounterClockwise",1];
kha_graphics4_CullMode.CounterClockwise.toString = $estr;
kha_graphics4_CullMode.CounterClockwise.__enum__ = kha_graphics4_CullMode;
kha_graphics4_CullMode.None = ["None",2];
kha_graphics4_CullMode.None.toString = $estr;
kha_graphics4_CullMode.None.__enum__ = kha_graphics4_CullMode;
var kha_graphics4_FragmentShader = function(sources,files) {
this.sources = [];
var _g = 0;
while(_g < sources.length) {
var source = sources[_g];
++_g;
this.sources.push(source.toString());
}
this.type = 35632;
this.shader = null;
this.files = files;
};
$hxClasses["kha.graphics4.FragmentShader"] = kha_graphics4_FragmentShader;
kha_graphics4_FragmentShader.__name__ = true;
kha_graphics4_FragmentShader.fromSource = function(source) {
var shader = new kha_graphics4_FragmentShader([],["runtime-string"]);
shader.sources.push(source);
return shader;
};
kha_graphics4_FragmentShader.prototype = {
sources: null
,type: null
,shader: null
,files: null
,'delete': function() {
kha_SystemImpl.gl.deleteShader(this.shader);
this.shader = null;
this.sources = null;
}
,__class__: kha_graphics4_FragmentShader
};
var kha_graphics4_GeometryShader = function(source) {
};
$hxClasses["kha.graphics4.GeometryShader"] = kha_graphics4_GeometryShader;
kha_graphics4_GeometryShader.__name__ = true;
kha_graphics4_GeometryShader.prototype = {
'delete': function() {
}
,__class__: kha_graphics4_GeometryShader
};
var kha_graphics4_Graphics = function() { };
$hxClasses["kha.graphics4.Graphics"] = kha_graphics4_Graphics;
kha_graphics4_Graphics.__name__ = true;
kha_graphics4_Graphics.prototype = {
begin: null
,beginFace: null
,beginEye: null
,end: null
,vsynced: null
,refreshRate: null
,clear: null
,viewport: null
,scissor: null
,disableScissor: null
,setVertexBuffer: null
,setVertexBuffers: null
,setIndexBuffer: null
,setTexture: null
,setTextureDepth: null
,setVideoTexture: null
,setImageTexture: null
,setTextureParameters: null
,setTexture3DParameters: null
,setCubeMap: null
,setCubeMapDepth: null
,renderTargetsInvertedY: null
,instancedRenderingAvailable: null
,setPipeline: null
,setBool: null
,setInt: null
,setFloat: null
,setFloat2: null
,setFloat3: null
,setFloat4: null
,setFloats: null
,setVector2: null
,setVector3: null
,setVector4: null
,setMatrix: null
,setMatrix3: null
,drawIndexedVertices: null
,drawIndexedVerticesInstanced: null
,flush: null
,__class__: kha_graphics4_Graphics
};
var kha_graphics4_ImageShaderPainter = function(g4) {
this.destinationBlend = kha_graphics4_BlendingFactor.Undefined;
this.sourceBlend = kha_graphics4_BlendingFactor.Undefined;
this.myPipeline = null;
this.bilinearMipmaps = false;
this.bilinear = false;
this.g = g4;
this.bufferIndex = 0;
kha_graphics4_ImageShaderPainter.initShaders();
this.initBuffers();
this.projectionLocation = kha_graphics4_ImageShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix");
this.textureLocation = kha_graphics4_ImageShaderPainter.shaderPipeline.getTextureUnit("tex");
};
$hxClasses["kha.graphics4.ImageShaderPainter"] = kha_graphics4_ImageShaderPainter;
kha_graphics4_ImageShaderPainter.__name__ = true;
kha_graphics4_ImageShaderPainter.initShaders = function() {
if(kha_graphics4_ImageShaderPainter.shaderPipeline != null) {
return;
}
kha_graphics4_ImageShaderPainter.shaderPipeline = new kha_graphics4_PipelineState();
kha_graphics4_ImageShaderPainter.shaderPipeline.fragmentShader = kha_Shaders.painter_image_frag;
kha_graphics4_ImageShaderPainter.shaderPipeline.vertexShader = kha_Shaders.painter_image_vert;
kha_graphics4_ImageShaderPainter.structure = new kha_graphics4_VertexStructure();
kha_graphics4_ImageShaderPainter.structure.add("vertexPosition",kha_graphics4_VertexData.Float3);
kha_graphics4_ImageShaderPainter.structure.add("texPosition",kha_graphics4_VertexData.Float2);
kha_graphics4_ImageShaderPainter.structure.add("vertexColor",kha_graphics4_VertexData.Float4);
kha_graphics4_ImageShaderPainter.shaderPipeline.inputLayout = [kha_graphics4_ImageShaderPainter.structure];
kha_graphics4_ImageShaderPainter.shaderPipeline.blendSource = kha_graphics4_BlendingFactor.BlendOne;
kha_graphics4_ImageShaderPainter.shaderPipeline.blendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha;
kha_graphics4_ImageShaderPainter.shaderPipeline.alphaBlendSource = kha_graphics4_BlendingFactor.SourceAlpha;
kha_graphics4_ImageShaderPainter.shaderPipeline.alphaBlendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha;
kha_graphics4_ImageShaderPainter.shaderPipeline.compile();
};
kha_graphics4_ImageShaderPainter.prototype = {
projectionMatrix: null
,projectionLocation: null
,textureLocation: null
,bufferIndex: null
,rectVertexBuffer: null
,rectVertices: null
,indexBuffer: null
,lastTexture: null
,bilinear: null
,bilinearMipmaps: null
,g: null
,myPipeline: null
,sourceBlend: null
,destinationBlend: null
,get_pipeline: function() {
return this.myPipeline;
}
,set_pipeline: function(pipe) {
if(pipe == null) {
this.projectionLocation = kha_graphics4_ImageShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix");
this.textureLocation = kha_graphics4_ImageShaderPainter.shaderPipeline.getTextureUnit("tex");
} else {
this.projectionLocation = pipe.getConstantLocation("projectionMatrix");
this.textureLocation = pipe.getTextureUnit("tex");
}
return this.myPipeline = pipe;
}
,setProjection: function(projectionMatrix) {
this.projectionMatrix = projectionMatrix;
}
,initBuffers: function() {
this.rectVertexBuffer = new kha_graphics4_VertexBuffer(kha_graphics4_ImageShaderPainter.bufferSize * 4,kha_graphics4_ImageShaderPainter.structure,kha_graphics4_Usage.DynamicUsage);
this.rectVertices = this.rectVertexBuffer.lock();
this.indexBuffer = new kha_graphics4_IndexBuffer(kha_graphics4_ImageShaderPainter.bufferSize * 3 * 2,kha_graphics4_Usage.StaticUsage);
var indices = this.indexBuffer.lock();
var _g1 = 0;
var _g = kha_graphics4_ImageShaderPainter.bufferSize;
while(_g1 < _g) {
var i = _g1++;
indices[i * 3 * 2] = i * 4;
indices[i * 3 * 2 + 1] = i * 4 + 1;
indices[i * 3 * 2 + 2] = i * 4 + 2;
indices[i * 3 * 2 + 3] = i * 4;
indices[i * 3 * 2 + 4] = i * 4 + 2;
indices[i * 3 * 2 + 5] = i * 4 + 3;
}
this.indexBuffer.unlock();
}
,setRectVertices: function(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) {
var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex] = bottomleftx;
this.rectVertices[baseIndex + 1] = bottomlefty;
this.rectVertices[baseIndex + 2] = -5.0;
this.rectVertices[baseIndex + 9] = topleftx;
this.rectVertices[baseIndex + 10] = toplefty;
this.rectVertices[baseIndex + 11] = -5.0;
this.rectVertices[baseIndex + 18] = toprightx;
this.rectVertices[baseIndex + 19] = toprighty;
this.rectVertices[baseIndex + 20] = -5.0;
this.rectVertices[baseIndex + 27] = bottomrightx;
this.rectVertices[baseIndex + 28] = bottomrighty;
this.rectVertices[baseIndex + 29] = -5.0;
}
,setRectTexCoords: function(left,top,right,bottom) {
var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex + 3] = left;
this.rectVertices[baseIndex + 4] = bottom;
this.rectVertices[baseIndex + 12] = left;
this.rectVertices[baseIndex + 13] = top;
this.rectVertices[baseIndex + 21] = right;
this.rectVertices[baseIndex + 22] = top;
this.rectVertices[baseIndex + 30] = right;
this.rectVertices[baseIndex + 31] = bottom;
}
,setRectColor: function(r,g,b,a) {
var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex + 5] = r;
this.rectVertices[baseIndex + 6] = g;
this.rectVertices[baseIndex + 7] = b;
this.rectVertices[baseIndex + 8] = a;
this.rectVertices[baseIndex + 14] = r;
this.rectVertices[baseIndex + 15] = g;
this.rectVertices[baseIndex + 16] = b;
this.rectVertices[baseIndex + 17] = a;
this.rectVertices[baseIndex + 23] = r;
this.rectVertices[baseIndex + 24] = g;
this.rectVertices[baseIndex + 25] = b;
this.rectVertices[baseIndex + 26] = a;
this.rectVertices[baseIndex + 32] = r;
this.rectVertices[baseIndex + 33] = g;
this.rectVertices[baseIndex + 34] = b;
this.rectVertices[baseIndex + 35] = a;
}
,drawBuffer: function() {
this.rectVertexBuffer.unlock();
this.g.setVertexBuffer(this.rectVertexBuffer);
this.g.setIndexBuffer(this.indexBuffer);
this.g.setPipeline(this.get_pipeline() == null ? kha_graphics4_ImageShaderPainter.shaderPipeline : this.get_pipeline());
this.g.setTexture(this.textureLocation,this.lastTexture);
this.g.setTextureParameters(this.textureLocation,kha_graphics4_TextureAddressing.Clamp,kha_graphics4_TextureAddressing.Clamp,this.bilinear ? kha_graphics4_TextureFilter.LinearFilter : kha_graphics4_TextureFilter.PointFilter,this.bilinear ? kha_graphics4_TextureFilter.LinearFilter : kha_graphics4_TextureFilter.PointFilter,this.bilinearMipmaps ? kha_graphics4_MipMapFilter.LinearMipFilter : kha_graphics4_MipMapFilter.NoMipFilter);
this.g.setMatrix(this.projectionLocation,this.projectionMatrix);
this.g.drawIndexedVertices(0,this.bufferIndex * 2 * 3);
this.g.setTexture(this.textureLocation,null);
this.bufferIndex = 0;
this.rectVertices = this.rectVertexBuffer.lock();
}
,setBilinearFilter: function(bilinear) {
this.end();
this.bilinear = bilinear;
}
,setBilinearMipmapFilter: function(bilinear) {
this.end();
this.bilinearMipmaps = bilinear;
}
,drawImage: function(img,bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty,opacity,color) {
var tex = img;
if(this.bufferIndex + 1 >= kha_graphics4_ImageShaderPainter.bufferSize || this.lastTexture != null && tex != this.lastTexture) {
this.drawBuffer();
}
var r = ((color & 16711680) >>> 16) * 0.00392156862745098;
var g = ((color & 65280) >>> 8) * 0.00392156862745098;
var b = (color & 255) * 0.00392156862745098;
var a = (color >>> 24) * 0.00392156862745098 * opacity;
var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex + 5] = r;
this.rectVertices[baseIndex + 6] = g;
this.rectVertices[baseIndex + 7] = b;
this.rectVertices[baseIndex + 8] = a;
this.rectVertices[baseIndex + 14] = r;
this.rectVertices[baseIndex + 15] = g;
this.rectVertices[baseIndex + 16] = b;
this.rectVertices[baseIndex + 17] = a;
this.rectVertices[baseIndex + 23] = r;
this.rectVertices[baseIndex + 24] = g;
this.rectVertices[baseIndex + 25] = b;
this.rectVertices[baseIndex + 26] = a;
this.rectVertices[baseIndex + 32] = r;
this.rectVertices[baseIndex + 33] = g;
this.rectVertices[baseIndex + 34] = b;
this.rectVertices[baseIndex + 35] = a;
var right = tex.get_width() / tex.get_realWidth();
var bottom = tex.get_height() / tex.get_realHeight();
var baseIndex1 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex1 + 3] = 0;
this.rectVertices[baseIndex1 + 4] = bottom;
this.rectVertices[baseIndex1 + 12] = 0;
this.rectVertices[baseIndex1 + 13] = 0;
this.rectVertices[baseIndex1 + 21] = right;
this.rectVertices[baseIndex1 + 22] = 0;
this.rectVertices[baseIndex1 + 30] = right;
this.rectVertices[baseIndex1 + 31] = bottom;
var baseIndex2 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex2] = bottomleftx;
this.rectVertices[baseIndex2 + 1] = bottomlefty;
this.rectVertices[baseIndex2 + 2] = -5.0;
this.rectVertices[baseIndex2 + 9] = topleftx;
this.rectVertices[baseIndex2 + 10] = toplefty;
this.rectVertices[baseIndex2 + 11] = -5.0;
this.rectVertices[baseIndex2 + 18] = toprightx;
this.rectVertices[baseIndex2 + 19] = toprighty;
this.rectVertices[baseIndex2 + 20] = -5.0;
this.rectVertices[baseIndex2 + 27] = bottomrightx;
this.rectVertices[baseIndex2 + 28] = bottomrighty;
this.rectVertices[baseIndex2 + 29] = -5.0;
++this.bufferIndex;
this.lastTexture = tex;
}
,drawImage2: function(img,sx,sy,sw,sh,bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty,opacity,color) {
var tex = img;
if(this.bufferIndex + 1 >= kha_graphics4_ImageShaderPainter.bufferSize || this.lastTexture != null && tex != this.lastTexture) {
this.drawBuffer();
}
var left = sx / tex.get_realWidth();
var top = sy / tex.get_realHeight();
var right = (sx + sw) / tex.get_realWidth();
var bottom = (sy + sh) / tex.get_realHeight();
var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex + 3] = left;
this.rectVertices[baseIndex + 4] = bottom;
this.rectVertices[baseIndex + 12] = left;
this.rectVertices[baseIndex + 13] = top;
this.rectVertices[baseIndex + 21] = right;
this.rectVertices[baseIndex + 22] = top;
this.rectVertices[baseIndex + 30] = right;
this.rectVertices[baseIndex + 31] = bottom;
var r = ((color & 16711680) >>> 16) * 0.00392156862745098;
var g = ((color & 65280) >>> 8) * 0.00392156862745098;
var b = (color & 255) * 0.00392156862745098;
var a = (color >>> 24) * 0.00392156862745098 * opacity;
var baseIndex1 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex1 + 5] = r;
this.rectVertices[baseIndex1 + 6] = g;
this.rectVertices[baseIndex1 + 7] = b;
this.rectVertices[baseIndex1 + 8] = a;
this.rectVertices[baseIndex1 + 14] = r;
this.rectVertices[baseIndex1 + 15] = g;
this.rectVertices[baseIndex1 + 16] = b;
this.rectVertices[baseIndex1 + 17] = a;
this.rectVertices[baseIndex1 + 23] = r;
this.rectVertices[baseIndex1 + 24] = g;
this.rectVertices[baseIndex1 + 25] = b;
this.rectVertices[baseIndex1 + 26] = a;
this.rectVertices[baseIndex1 + 32] = r;
this.rectVertices[baseIndex1 + 33] = g;
this.rectVertices[baseIndex1 + 34] = b;
this.rectVertices[baseIndex1 + 35] = a;
var baseIndex2 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex2] = bottomleftx;
this.rectVertices[baseIndex2 + 1] = bottomlefty;
this.rectVertices[baseIndex2 + 2] = -5.0;
this.rectVertices[baseIndex2 + 9] = topleftx;
this.rectVertices[baseIndex2 + 10] = toplefty;
this.rectVertices[baseIndex2 + 11] = -5.0;
this.rectVertices[baseIndex2 + 18] = toprightx;
this.rectVertices[baseIndex2 + 19] = toprighty;
this.rectVertices[baseIndex2 + 20] = -5.0;
this.rectVertices[baseIndex2 + 27] = bottomrightx;
this.rectVertices[baseIndex2 + 28] = bottomrighty;
this.rectVertices[baseIndex2 + 29] = -5.0;
++this.bufferIndex;
this.lastTexture = tex;
}
,drawImageScale: function(img,sx,sy,sw,sh,left,top,right,bottom,opacity,color) {
var tex = img;
if(this.bufferIndex + 1 >= kha_graphics4_ImageShaderPainter.bufferSize || this.lastTexture != null && tex != this.lastTexture) {
this.drawBuffer();
}
var left1 = sx / tex.get_realWidth();
var top1 = sy / tex.get_realHeight();
var right1 = (sx + sw) / tex.get_realWidth();
var bottom1 = (sy + sh) / tex.get_realHeight();
var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex + 3] = left1;
this.rectVertices[baseIndex + 4] = bottom1;
this.rectVertices[baseIndex + 12] = left1;
this.rectVertices[baseIndex + 13] = top1;
this.rectVertices[baseIndex + 21] = right1;
this.rectVertices[baseIndex + 22] = top1;
this.rectVertices[baseIndex + 30] = right1;
this.rectVertices[baseIndex + 31] = bottom1;
var r = ((color & 16711680) >>> 16) * 0.00392156862745098;
var g = ((color & 65280) >>> 8) * 0.00392156862745098;
var b = (color & 255) * 0.00392156862745098;
var baseIndex1 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex1 + 5] = r;
this.rectVertices[baseIndex1 + 6] = g;
this.rectVertices[baseIndex1 + 7] = b;
this.rectVertices[baseIndex1 + 8] = opacity;
this.rectVertices[baseIndex1 + 14] = r;
this.rectVertices[baseIndex1 + 15] = g;
this.rectVertices[baseIndex1 + 16] = b;
this.rectVertices[baseIndex1 + 17] = opacity;
this.rectVertices[baseIndex1 + 23] = r;
this.rectVertices[baseIndex1 + 24] = g;
this.rectVertices[baseIndex1 + 25] = b;
this.rectVertices[baseIndex1 + 26] = opacity;
this.rectVertices[baseIndex1 + 32] = r;
this.rectVertices[baseIndex1 + 33] = g;
this.rectVertices[baseIndex1 + 34] = b;
this.rectVertices[baseIndex1 + 35] = opacity;
var baseIndex2 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
this.rectVertices[baseIndex2] = left;
this.rectVertices[baseIndex2 + 1] = bottom;
this.rectVertices[baseIndex2 + 2] = -5.0;
this.rectVertices[baseIndex2 + 9] = left;
this.rectVertices[baseIndex2 + 10] = top;
this.rectVertices[baseIndex2 + 11] = -5.0;
this.rectVertices[baseIndex2 + 18] = right;
this.rectVertices[baseIndex2 + 19] = top;
this.rectVertices[baseIndex2 + 20] = -5.0;
this.rectVertices[baseIndex2 + 27] = right;
this.rectVertices[baseIndex2 + 28] = bottom;
this.rectVertices[baseIndex2 + 29] = -5.0;
++this.bufferIndex;
this.lastTexture = tex;
}
,end: function() {
if(this.bufferIndex > 0) {
this.drawBuffer();
}
this.lastTexture = null;
}
,__class__: kha_graphics4_ImageShaderPainter
};
var kha_graphics4_ColoredShaderPainter = function(g4) {
this.destinationBlend = kha_graphics4_BlendingFactor.Undefined;
this.sourceBlend = kha_graphics4_BlendingFactor.Undefined;
this.myPipeline = null;
this.g = g4;
this.bufferIndex = 0;
this.triangleBufferIndex = 0;
kha_graphics4_ColoredShaderPainter.initShaders();
this.initBuffers();
this.projectionLocation = kha_graphics4_ColoredShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix");
};
$hxClasses["kha.graphics4.ColoredShaderPainter"] = kha_graphics4_ColoredShaderPainter;
kha_graphics4_ColoredShaderPainter.__name__ = true;
kha_graphics4_ColoredShaderPainter.initShaders = function() {
if(kha_graphics4_ColoredShaderPainter.shaderPipeline != null) {
return;
}
kha_graphics4_ColoredShaderPainter.shaderPipeline = new kha_graphics4_PipelineState();
kha_graphics4_ColoredShaderPainter.shaderPipeline.fragmentShader = kha_Shaders.painter_colored_frag;
kha_graphics4_ColoredShaderPainter.shaderPipeline.vertexShader = kha_Shaders.painter_colored_vert;
kha_graphics4_ColoredShaderPainter.structure = new kha_graphics4_VertexStructure();
kha_graphics4_ColoredShaderPainter.structure.add("vertexPosition",kha_graphics4_VertexData.Float3);
kha_graphics4_ColoredShaderPainter.structure.add("vertexColor",kha_graphics4_VertexData.Float4);
kha_graphics4_ColoredShaderPainter.shaderPipeline.inputLayout = [kha_graphics4_ColoredShaderPainter.structure];
kha_graphics4_ColoredShaderPainter.shaderPipeline.blendSource = kha_graphics4_BlendingFactor.SourceAlpha;
kha_graphics4_ColoredShaderPainter.shaderPipeline.blendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha;
kha_graphics4_ColoredShaderPainter.shaderPipeline.alphaBlendSource = kha_graphics4_BlendingFactor.SourceAlpha;
kha_graphics4_ColoredShaderPainter.shaderPipeline.alphaBlendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha;
kha_graphics4_ColoredShaderPainter.shaderPipeline.compile();
};
kha_graphics4_ColoredShaderPainter.prototype = {
projectionMatrix: null
,projectionLocation: null
,bufferIndex: null
,rectVertexBuffer: null
,rectVertices: null
,indexBuffer: null
,triangleBufferIndex: null
,triangleVertexBuffer: null
,triangleVertices: null
,triangleIndexBuffer: null
,g: null
,myPipeline: null
,sourceBlend: null
,destinationBlend: null
,get_pipeline: function() {
return this.myPipeline;
}
,set_pipeline: function(pipe) {
if(pipe == null) {
this.projectionLocation = kha_graphics4_ColoredShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix");
} else {
this.projectionLocation = pipe.getConstantLocation("projectionMatrix");
}
return this.myPipeline = pipe;
}
,setProjection: function(projectionMatrix) {
this.projectionMatrix = projectionMatrix;
}
,initBuffers: function() {
this.rectVertexBuffer = new kha_graphics4_VertexBuffer(kha_graphics4_ColoredShaderPainter.bufferSize * 4,kha_graphics4_ColoredShaderPainter.structure,kha_graphics4_Usage.DynamicUsage);
this.rectVertices = this.rectVertexBuffer.lock();
this.indexBuffer = new kha_graphics4_IndexBuffer(kha_graphics4_ColoredShaderPainter.bufferSize * 3 * 2,kha_graphics4_Usage.StaticUsage);
var indices = this.indexBuffer.lock();
var _g1 = 0;
var _g = kha_graphics4_ColoredShaderPainter.bufferSize;
while(_g1 < _g) {
var i = _g1++;
indices[i * 3 * 2] = i * 4;
indices[i * 3 * 2 + 1] = i * 4 + 1;
indices[i * 3 * 2 + 2] = i * 4 + 2;
indices[i * 3 * 2 + 3] = i * 4;
indices[i * 3 * 2 + 4] = i * 4 + 2;
indices[i * 3 * 2 + 5] = i * 4 + 3;
}
this.indexBuffer.unlock();
this.triangleVertexBuffer = new kha_graphics4_VertexBuffer(kha_graphics4_ColoredShaderPainter.triangleBufferSize * 3,kha_graphics4_ColoredShaderPainter.structure,kha_graphics4_Usage.DynamicUsage);
this.triangleVertices = this.triangleVertexBuffer.lock();
this.triangleIndexBuffer = new kha_graphics4_IndexBuffer(kha_graphics4_ColoredShaderPainter.triangleBufferSize * 3,kha_graphics4_Usage.StaticUsage);
var triIndices = this.triangleIndexBuffer.lock();
var _g11 = 0;
var _g2 = kha_graphics4_ColoredShaderPainter.bufferSize;
while(_g11 < _g2) {
var i1 = _g11++;
triIndices[i1 * 3] = i1 * 3;
triIndices[i1 * 3 + 1] = i1 * 3 + 1;
triIndices[i1 * 3 + 2] = i1 * 3 + 2;
}
this.triangleIndexBuffer.unlock();
}
,setRectVertices: function(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) {
var baseIndex = this.bufferIndex * 7 * 4;
this.rectVertices[baseIndex] = bottomleftx;
this.rectVertices[baseIndex + 1] = bottomlefty;
this.rectVertices[baseIndex + 2] = -5.0;
this.rectVertices[baseIndex + 7] = topleftx;
this.rectVertices[baseIndex + 8] = toplefty;
this.rectVertices[baseIndex + 9] = -5.0;
this.rectVertices[baseIndex + 14] = toprightx;
this.rectVertices[baseIndex + 15] = toprighty;
this.rectVertices[baseIndex + 16] = -5.0;
this.rectVertices[baseIndex + 21] = bottomrightx;
this.rectVertices[baseIndex + 22] = bottomrighty;
this.rectVertices[baseIndex + 23] = -5.0;
}
,setRectColors: function(opacity,color) {
var baseIndex = this.bufferIndex * 7 * 4;
var a = opacity * ((color >>> 24) * 0.00392156862745098);
this.rectVertices[baseIndex + 3] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.rectVertices[baseIndex + 4] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.rectVertices[baseIndex + 5] = (color & 255) * 0.00392156862745098;
this.rectVertices[baseIndex + 6] = a;
this.rectVertices[baseIndex + 10] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.rectVertices[baseIndex + 11] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.rectVertices[baseIndex + 12] = (color & 255) * 0.00392156862745098;
this.rectVertices[baseIndex + 13] = a;
this.rectVertices[baseIndex + 17] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.rectVertices[baseIndex + 18] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.rectVertices[baseIndex + 19] = (color & 255) * 0.00392156862745098;
this.rectVertices[baseIndex + 20] = a;
this.rectVertices[baseIndex + 24] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.rectVertices[baseIndex + 25] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.rectVertices[baseIndex + 26] = (color & 255) * 0.00392156862745098;
this.rectVertices[baseIndex + 27] = a;
}
,setTriVertices: function(x1,y1,x2,y2,x3,y3) {
var baseIndex = this.triangleBufferIndex * 7 * 3;
this.triangleVertices[baseIndex] = x1;
this.triangleVertices[baseIndex + 1] = y1;
this.triangleVertices[baseIndex + 2] = -5.0;
this.triangleVertices[baseIndex + 7] = x2;
this.triangleVertices[baseIndex + 8] = y2;
this.triangleVertices[baseIndex + 9] = -5.0;
this.triangleVertices[baseIndex + 14] = x3;
this.triangleVertices[baseIndex + 15] = y3;
this.triangleVertices[baseIndex + 16] = -5.0;
}
,setTriColors: function(opacity,color) {
var baseIndex = this.triangleBufferIndex * 7 * 3;
var a = opacity * ((color >>> 24) * 0.00392156862745098);
this.triangleVertices[baseIndex + 3] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.triangleVertices[baseIndex + 4] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.triangleVertices[baseIndex + 5] = (color & 255) * 0.00392156862745098;
this.triangleVertices[baseIndex + 6] = a;
this.triangleVertices[baseIndex + 10] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.triangleVertices[baseIndex + 11] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.triangleVertices[baseIndex + 12] = (color & 255) * 0.00392156862745098;
this.triangleVertices[baseIndex + 13] = a;
this.triangleVertices[baseIndex + 17] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.triangleVertices[baseIndex + 18] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.triangleVertices[baseIndex + 19] = (color & 255) * 0.00392156862745098;
this.triangleVertices[baseIndex + 20] = a;
}
,drawBuffer: function(trisDone) {
if(!trisDone) {
if(this.triangleBufferIndex > 0) {
this.drawTriBuffer(true);
}
}
this.rectVertexBuffer.unlock();
this.g.setVertexBuffer(this.rectVertexBuffer);
this.g.setIndexBuffer(this.indexBuffer);
this.g.setPipeline(this.get_pipeline() == null ? kha_graphics4_ColoredShaderPainter.shaderPipeline : this.get_pipeline());
this.g.setMatrix(this.projectionLocation,this.projectionMatrix);
this.g.drawIndexedVertices(0,this.bufferIndex * 2 * 3);
this.bufferIndex = 0;
this.rectVertices = this.rectVertexBuffer.lock();
}
,drawTriBuffer: function(rectsDone) {
if(!rectsDone) {
if(this.bufferIndex > 0) {
this.drawBuffer(true);
}
}
this.triangleVertexBuffer.unlock();
this.g.setVertexBuffer(this.triangleVertexBuffer);
this.g.setIndexBuffer(this.triangleIndexBuffer);
this.g.setPipeline(this.get_pipeline() == null ? kha_graphics4_ColoredShaderPainter.shaderPipeline : this.get_pipeline());
this.g.setMatrix(this.projectionLocation,this.projectionMatrix);
this.g.drawIndexedVertices(0,this.triangleBufferIndex * 3);
this.triangleBufferIndex = 0;
this.triangleVertices = this.triangleVertexBuffer.lock();
}
,fillRect: function(opacity,color,bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) {
if(this.triangleBufferIndex > 0) {
this.drawTriBuffer(true);
}
if(this.bufferIndex + 1 >= kha_graphics4_ColoredShaderPainter.bufferSize) {
this.drawBuffer(false);
}
this.setRectColors(opacity,color);
this.setRectVertices(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty);
++this.bufferIndex;
}
,fillTriangle: function(opacity,color,x1,y1,x2,y2,x3,y3) {
if(this.bufferIndex > 0) {
this.drawBuffer(true);
}
if(this.triangleBufferIndex + 1 >= kha_graphics4_ColoredShaderPainter.triangleBufferSize) {
this.drawTriBuffer(false);
}
this.setTriColors(opacity,color);
this.setTriVertices(x1,y1,x2,y2,x3,y3);
++this.triangleBufferIndex;
}
,endTris: function(rectsDone) {
if(this.triangleBufferIndex > 0) {
this.drawTriBuffer(rectsDone);
}
}
,endRects: function(trisDone) {
if(this.bufferIndex > 0) {
this.drawBuffer(trisDone);
}
}
,end: function() {
if(this.triangleBufferIndex > 0) {
this.drawTriBuffer(false);
}
if(this.bufferIndex > 0) {
this.drawBuffer(false);
}
}
,__class__: kha_graphics4_ColoredShaderPainter
};
var kha_graphics4_TextShaderPainter = function(g4) {
this.destinationBlend = kha_graphics4_BlendingFactor.Undefined;
this.sourceBlend = kha_graphics4_BlendingFactor.Undefined;
this.bilinear = false;
this.myPipeline = null;
this.g = g4;
this.bufferIndex = 0;
kha_graphics4_TextShaderPainter.initShaders();
this.initBuffers();
this.projectionLocation = kha_graphics4_TextShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix");
this.textureLocation = kha_graphics4_TextShaderPainter.shaderPipeline.getTextureUnit("tex");
};
$hxClasses["kha.graphics4.TextShaderPainter"] = kha_graphics4_TextShaderPainter;
kha_graphics4_TextShaderPainter.__name__ = true;
kha_graphics4_TextShaderPainter.initShaders = function() {
if(kha_graphics4_TextShaderPainter.shaderPipeline != null) {
return;
}
kha_graphics4_TextShaderPainter.shaderPipeline = new kha_graphics4_PipelineState();
kha_graphics4_TextShaderPainter.shaderPipeline.fragmentShader = kha_Shaders.painter_text_frag;
kha_graphics4_TextShaderPainter.shaderPipeline.vertexShader = kha_Shaders.painter_text_vert;
kha_graphics4_TextShaderPainter.structure = new kha_graphics4_VertexStructure();
kha_graphics4_TextShaderPainter.structure.add("vertexPosition",kha_graphics4_VertexData.Float3);
kha_graphics4_TextShaderPainter.structure.add("texPosition",kha_graphics4_VertexData.Float2);
kha_graphics4_TextShaderPainter.structure.add("vertexColor",kha_graphics4_VertexData.Float4);
kha_graphics4_TextShaderPainter.shaderPipeline.inputLayout = [kha_graphics4_TextShaderPainter.structure];
kha_graphics4_TextShaderPainter.shaderPipeline.blendSource = kha_graphics4_BlendingFactor.SourceAlpha;
kha_graphics4_TextShaderPainter.shaderPipeline.blendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha;
kha_graphics4_TextShaderPainter.shaderPipeline.alphaBlendSource = kha_graphics4_BlendingFactor.SourceAlpha;
kha_graphics4_TextShaderPainter.shaderPipeline.alphaBlendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha;
kha_graphics4_TextShaderPainter.shaderPipeline.compile();
};
kha_graphics4_TextShaderPainter.findIndex = function(charcode,fontGlyphs) {
var _g1 = 0;
var _g = fontGlyphs.length;
while(_g1 < _g) {
var i = _g1++;
if(fontGlyphs[i] == charcode) {
return i;
}
}
return 0;
};
kha_graphics4_TextShaderPainter.prototype = {
projectionMatrix: null
,projectionLocation: null
,textureLocation: null
,bufferIndex: null
,rectVertexBuffer: null
,rectVertices: null
,indexBuffer: null
,font: null
,lastTexture: null
,g: null
,myPipeline: null
,fontSize: null
,bilinear: null
,sourceBlend: null
,destinationBlend: null
,get_pipeline: function() {
return this.myPipeline;
}
,set_pipeline: function(pipe) {
if(pipe == null) {
this.projectionLocation = kha_graphics4_TextShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix");
this.textureLocation = kha_graphics4_TextShaderPainter.shaderPipeline.getTextureUnit("tex");
} else {
this.projectionLocation = pipe.getConstantLocation("projectionMatrix");
this.textureLocation = pipe.getTextureUnit("tex");
}
return this.myPipeline = pipe;
}
,setProjection: function(projectionMatrix) {
this.projectionMatrix = projectionMatrix;
}
,initBuffers: function() {
this.rectVertexBuffer = new kha_graphics4_VertexBuffer(kha_graphics4_TextShaderPainter.bufferSize * 4,kha_graphics4_TextShaderPainter.structure,kha_graphics4_Usage.DynamicUsage);
this.rectVertices = this.rectVertexBuffer.lock();
this.indexBuffer = new kha_graphics4_IndexBuffer(kha_graphics4_TextShaderPainter.bufferSize * 3 * 2,kha_graphics4_Usage.StaticUsage);
var indices = this.indexBuffer.lock();
var _g1 = 0;
var _g = kha_graphics4_TextShaderPainter.bufferSize;
while(_g1 < _g) {
var i = _g1++;
indices[i * 3 * 2] = i * 4;
indices[i * 3 * 2 + 1] = i * 4 + 1;
indices[i * 3 * 2 + 2] = i * 4 + 2;
indices[i * 3 * 2 + 3] = i * 4;
indices[i * 3 * 2 + 4] = i * 4 + 2;
indices[i * 3 * 2 + 5] = i * 4 + 3;
}
this.indexBuffer.unlock();
}
,setRectVertices: function(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) {
var baseIndex = this.bufferIndex * 9 * 4;
this.rectVertices[baseIndex] = bottomleftx;
this.rectVertices[baseIndex + 1] = bottomlefty;
this.rectVertices[baseIndex + 2] = -5.0;
this.rectVertices[baseIndex + 9] = topleftx;
this.rectVertices[baseIndex + 10] = toplefty;
this.rectVertices[baseIndex + 11] = -5.0;
this.rectVertices[baseIndex + 18] = toprightx;
this.rectVertices[baseIndex + 19] = toprighty;
this.rectVertices[baseIndex + 20] = -5.0;
this.rectVertices[baseIndex + 27] = bottomrightx;
this.rectVertices[baseIndex + 28] = bottomrighty;
this.rectVertices[baseIndex + 29] = -5.0;
}
,setRectTexCoords: function(left,top,right,bottom) {
var baseIndex = this.bufferIndex * 9 * 4;
this.rectVertices[baseIndex + 3] = left;
this.rectVertices[baseIndex + 4] = bottom;
this.rectVertices[baseIndex + 12] = left;
this.rectVertices[baseIndex + 13] = top;
this.rectVertices[baseIndex + 21] = right;
this.rectVertices[baseIndex + 22] = top;
this.rectVertices[baseIndex + 30] = right;
this.rectVertices[baseIndex + 31] = bottom;
}
,setRectColors: function(opacity,color) {
var baseIndex = this.bufferIndex * 9 * 4;
var a = opacity * ((color >>> 24) * 0.00392156862745098);
this.rectVertices[baseIndex + 5] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.rectVertices[baseIndex + 6] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.rectVertices[baseIndex + 7] = (color & 255) * 0.00392156862745098;
this.rectVertices[baseIndex + 8] = a;
this.rectVertices[baseIndex + 14] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.rectVertices[baseIndex + 15] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.rectVertices[baseIndex + 16] = (color & 255) * 0.00392156862745098;
this.rectVertices[baseIndex + 17] = a;
this.rectVertices[baseIndex + 23] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.rectVertices[baseIndex + 24] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.rectVertices[baseIndex + 25] = (color & 255) * 0.00392156862745098;
this.rectVertices[baseIndex + 26] = a;
this.rectVertices[baseIndex + 32] = ((color & 16711680) >>> 16) * 0.00392156862745098;
this.rectVertices[baseIndex + 33] = ((color & 65280) >>> 8) * 0.00392156862745098;
this.rectVertices[baseIndex + 34] = (color & 255) * 0.00392156862745098;
this.rectVertices[baseIndex + 35] = a;
}
,drawBuffer: function() {
this.rectVertexBuffer.unlock();
this.g.setVertexBuffer(this.rectVertexBuffer);
this.g.setIndexBuffer(this.indexBuffer);
this.g.setPipeline(this.get_pipeline() == null ? kha_graphics4_TextShaderPainter.shaderPipeline : this.get_pipeline());
this.g.setTexture(this.textureLocation,this.lastTexture);
this.g.setMatrix(this.projectionLocation,this.projectionMatrix);
this.g.setTextureParameters(this.textureLocation,kha_graphics4_TextureAddressing.Clamp,kha_graphics4_TextureAddressing.Clamp,this.bilinear ? kha_graphics4_TextureFilter.LinearFilter : kha_graphics4_TextureFilter.PointFilter,this.bilinear ? kha_graphics4_TextureFilter.LinearFilter : kha_graphics4_TextureFilter.PointFilter,kha_graphics4_MipMapFilter.NoMipFilter);
this.g.drawIndexedVertices(0,this.bufferIndex * 2 * 3);
this.g.setTexture(this.textureLocation,null);
this.bufferIndex = 0;
this.rectVertices = this.rectVertexBuffer.lock();
}
,setBilinearFilter: function(bilinear) {
this.end();
this.bilinear = bilinear;
}
,setFont: function(font) {
this.font = js_Boot.__cast(font , kha_Kravur);
}
,text: null
,startString: function(text) {
this.text = text;
}
,charCodeAt: function(position) {
return HxOverrides.cca(this.text,position);
}
,stringLength: function() {
return this.text.length;
}
,endString: function() {
this.text = null;
}
,drawString: function(text,opacity,color,x,y,transformation,fontGlyphs) {
var font = this.font._get(this.fontSize,fontGlyphs);
var tex = font.getTexture();
if(this.lastTexture != null && tex != this.lastTexture) {
this.drawBuffer();
}
this.lastTexture = tex;
var xpos = x;
var ypos = y;
this.startString(text);
var _g1 = 0;
var _g = this.stringLength();
while(_g1 < _g) {
var i = _g1++;
var q = font.getBakedQuad(kha_graphics4_TextShaderPainter.findIndex(this.charCodeAt(i),fontGlyphs),xpos,ypos);
if(q != null) {
if(this.bufferIndex + 1 >= kha_graphics4_TextShaderPainter.bufferSize) {
this.drawBuffer();
}
this.setRectColors(opacity,color);
this.setRectTexCoords(q.s0 * tex.get_width() / tex.get_realWidth(),q.t0 * tex.get_height() / tex.get_realHeight(),q.s1 * tex.get_width() / tex.get_realWidth(),q.t1 * tex.get_height() / tex.get_realHeight());
var p0_y;
var p0_x;
var value_y;
var value_x = q.x0;
value_y = q.y1;
var w = transformation._02 * value_x + transformation._12 * value_y + transformation._22;
var x1 = (transformation._00 * value_x + transformation._10 * value_y + transformation._20) / w;
var y1 = (transformation._01 * value_x + transformation._11 * value_y + transformation._21) / w;
p0_x = x1;
p0_y = y1;
var p1_y;
var p1_x;
var value_y1;
var value_x1 = q.x0;
value_y1 = q.y0;
var w1 = transformation._02 * value_x1 + transformation._12 * value_y1 + transformation._22;
var x2 = (transformation._00 * value_x1 + transformation._10 * value_y1 + transformation._20) / w1;
var y2 = (transformation._01 * value_x1 + transformation._11 * value_y1 + transformation._21) / w1;
p1_x = x2;
p1_y = y2;
var p2_y;
var p2_x;
var value_y2;
var value_x2 = q.x1;
value_y2 = q.y0;
var w2 = transformation._02 * value_x2 + transformation._12 * value_y2 + transformation._22;
var x3 = (transformation._00 * value_x2 + transformation._10 * value_y2 + transformation._20) / w2;
var y3 = (transformation._01 * value_x2 + transformation._11 * value_y2 + transformation._21) / w2;
p2_x = x3;
p2_y = y3;
var p3_y;
var p3_x;
var value_y3;
var value_x3 = q.x1;
value_y3 = q.y1;
var w3 = transformation._02 * value_x3 + transformation._12 * value_y3 + transformation._22;
var x4 = (transformation._00 * value_x3 + transformation._10 * value_y3 + transformation._20) / w3;
var y4 = (transformation._01 * value_x3 + transformation._11 * value_y3 + transformation._21) / w3;
p3_x = x4;
p3_y = y4;
this.setRectVertices(p0_x,p0_y,p1_x,p1_y,p2_x,p2_y,p3_x,p3_y);
xpos += q.xadvance;
++this.bufferIndex;
}
}
this.endString();
}
,end: function() {
if(this.bufferIndex > 0) {
this.drawBuffer();
}
this.lastTexture = null;
}
,__class__: kha_graphics4_TextShaderPainter
};
var kha_graphics4_Graphics2 = function(canvas) {
this.myMipmapScaleQuality = kha_graphics2_ImageScaleQuality.High;
this.myImageScaleQuality = kha_graphics2_ImageScaleQuality.High;
kha_graphics2_Graphics.call(this);
this.set_color(-1);
this.canvas = canvas;
this.g = canvas.get_g4();
this.imagePainter = new kha_graphics4_ImageShaderPainter(this.g);
this.coloredPainter = new kha_graphics4_ColoredShaderPainter(this.g);
this.textPainter = new kha_graphics4_TextShaderPainter(this.g);
this.textPainter.fontSize = this.get_fontSize();
this.setProjection();
if(kha_graphics4_Graphics2.videoPipeline == null) {
kha_graphics4_Graphics2.videoPipeline = new kha_graphics4_PipelineState();
kha_graphics4_Graphics2.videoPipeline.fragmentShader = kha_Shaders.painter_video_frag;
kha_graphics4_Graphics2.videoPipeline.vertexShader = kha_Shaders.painter_video_vert;
var structure = new kha_graphics4_VertexStructure();
structure.add("vertexPosition",kha_graphics4_VertexData.Float3);
structure.add("texPosition",kha_graphics4_VertexData.Float2);
structure.add("vertexColor",kha_graphics4_VertexData.Float4);
kha_graphics4_Graphics2.videoPipeline.inputLayout = [structure];
kha_graphics4_Graphics2.videoPipeline.compile();
}
};
$hxClasses["kha.graphics4.Graphics2"] = kha_graphics4_Graphics2;
kha_graphics4_Graphics2.__name__ = true;
kha_graphics4_Graphics2.upperPowerOfTwo = function(v) {
--v;
v |= v >>> 1;
v |= v >>> 2;
v |= v >>> 4;
v |= v >>> 8;
v |= v >>> 16;
return ++v;
};
kha_graphics4_Graphics2.__super__ = kha_graphics2_Graphics;
kha_graphics4_Graphics2.prototype = $extend(kha_graphics2_Graphics.prototype,{
myColor: null
,myFont: null
,projectionMatrix: null
,imagePainter: null
,coloredPainter: null
,textPainter: null
,canvas: null
,g: null
,setProjection: function() {
var width = this.canvas.get_width();
var height = this.canvas.get_height();
if(js_Boot.__instanceof(this.canvas,kha_Framebuffer)) {
this.projectionMatrix = kha_math_FastMatrix4.orthogonalProjection(0,width,height,0,0.1,1000);
} else {
if(!kha_Image.get_nonPow2Supported()) {
width = kha_graphics4_Graphics2.upperPowerOfTwo(width);
height = kha_graphics4_Graphics2.upperPowerOfTwo(height);
}
if(this.g.renderTargetsInvertedY()) {
this.projectionMatrix = kha_math_FastMatrix4.orthogonalProjection(0,width,0,height,0.1,1000);
} else {
this.projectionMatrix = kha_math_FastMatrix4.orthogonalProjection(0,width,height,0,0.1,1000);
}
}
this.imagePainter.setProjection(this.projectionMatrix);
this.coloredPainter.setProjection(this.projectionMatrix);
this.textPainter.setProjection(this.projectionMatrix);
}
,drawImage: function(img,x,y) {
var _this = this.coloredPainter;
if(_this.triangleBufferIndex > 0) {
_this.drawTriBuffer(false);
}
if(_this.bufferIndex > 0) {
_this.drawBuffer(false);
}
this.textPainter.end();
var xw = x + img.get_width();
var yh = y + img.get_height();
var p1_y;
var p1_x;
var _this1 = this.transformations[this.transformations.length - 1];
var value_y;
var value_x = x;
value_y = yh;
var w = _this1._02 * value_x + _this1._12 * value_y + _this1._22;
var x1 = (_this1._00 * value_x + _this1._10 * value_y + _this1._20) / w;
var y1 = (_this1._01 * value_x + _this1._11 * value_y + _this1._21) / w;
p1_x = x1;
p1_y = y1;
var p2_y;
var p2_x;
var _this2 = this.transformations[this.transformations.length - 1];
var value_y1;
var value_x1 = x;
value_y1 = y;
var w1 = _this2._02 * value_x1 + _this2._12 * value_y1 + _this2._22;
var x2 = (_this2._00 * value_x1 + _this2._10 * value_y1 + _this2._20) / w1;
var y2 = (_this2._01 * value_x1 + _this2._11 * value_y1 + _this2._21) / w1;
p2_x = x2;
p2_y = y2;
var p3_y;
var p3_x;
var _this3 = this.transformations[this.transformations.length - 1];
var value_y2;
var value_x2 = xw;
value_y2 = y;
var w2 = _this3._02 * value_x2 + _this3._12 * value_y2 + _this3._22;
var x3 = (_this3._00 * value_x2 + _this3._10 * value_y2 + _this3._20) / w2;
var y3 = (_this3._01 * value_x2 + _this3._11 * value_y2 + _this3._21) / w2;
p3_x = x3;
p3_y = y3;
var p4_y;
var p4_x;
var _this4 = this.transformations[this.transformations.length - 1];
var value_y3;
var value_x3 = xw;
value_y3 = yh;
var w3 = _this4._02 * value_x3 + _this4._12 * value_y3 + _this4._22;
var x4 = (_this4._00 * value_x3 + _this4._10 * value_y3 + _this4._20) / w3;
var y4 = (_this4._01 * value_x3 + _this4._11 * value_y3 + _this4._21) / w3;
p4_x = x4;
p4_y = y4;
var _this5 = this.imagePainter;
var opacity = this.get_opacity();
var color = this.get_color();
var tex = img;
if(_this5.bufferIndex + 1 >= kha_graphics4_ImageShaderPainter.bufferSize || _this5.lastTexture != null && tex != _this5.lastTexture) {
_this5.drawBuffer();
}
var r = ((color & 16711680) >>> 16) * 0.00392156862745098;
var g = ((color & 65280) >>> 8) * 0.00392156862745098;
var b = (color & 255) * 0.00392156862745098;
var a = (color >>> 24) * 0.00392156862745098 * opacity;
var baseIndex = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
_this5.rectVertices[baseIndex + 5] = r;
_this5.rectVertices[baseIndex + 6] = g;
_this5.rectVertices[baseIndex + 7] = b;
_this5.rectVertices[baseIndex + 8] = a;
_this5.rectVertices[baseIndex + 14] = r;
_this5.rectVertices[baseIndex + 15] = g;
_this5.rectVertices[baseIndex + 16] = b;
_this5.rectVertices[baseIndex + 17] = a;
_this5.rectVertices[baseIndex + 23] = r;
_this5.rectVertices[baseIndex + 24] = g;
_this5.rectVertices[baseIndex + 25] = b;
_this5.rectVertices[baseIndex + 26] = a;
_this5.rectVertices[baseIndex + 32] = r;
_this5.rectVertices[baseIndex + 33] = g;
_this5.rectVertices[baseIndex + 34] = b;
_this5.rectVertices[baseIndex + 35] = a;
var right = tex.get_width() / tex.get_realWidth();
var bottom = tex.get_height() / tex.get_realHeight();
var baseIndex1 = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
_this5.rectVertices[baseIndex1 + 3] = 0;
_this5.rectVertices[baseIndex1 + 4] = bottom;
_this5.rectVertices[baseIndex1 + 12] = 0;
_this5.rectVertices[baseIndex1 + 13] = 0;
_this5.rectVertices[baseIndex1 + 21] = right;
_this5.rectVertices[baseIndex1 + 22] = 0;
_this5.rectVertices[baseIndex1 + 30] = right;
_this5.rectVertices[baseIndex1 + 31] = bottom;
var baseIndex2 = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
_this5.rectVertices[baseIndex2] = p1_x;
_this5.rectVertices[baseIndex2 + 1] = p1_y;
_this5.rectVertices[baseIndex2 + 2] = -5.0;
_this5.rectVertices[baseIndex2 + 9] = p2_x;
_this5.rectVertices[baseIndex2 + 10] = p2_y;
_this5.rectVertices[baseIndex2 + 11] = -5.0;
_this5.rectVertices[baseIndex2 + 18] = p3_x;
_this5.rectVertices[baseIndex2 + 19] = p3_y;
_this5.rectVertices[baseIndex2 + 20] = -5.0;
_this5.rectVertices[baseIndex2 + 27] = p4_x;
_this5.rectVertices[baseIndex2 + 28] = p4_y;
_this5.rectVertices[baseIndex2 + 29] = -5.0;
++_this5.bufferIndex;
_this5.lastTexture = tex;
}
,drawScaledSubImage: function(img,sx,sy,sw,sh,dx,dy,dw,dh) {
var _this = this.coloredPainter;
if(_this.triangleBufferIndex > 0) {
_this.drawTriBuffer(false);
}
if(_this.bufferIndex > 0) {
_this.drawBuffer(false);
}
this.textPainter.end();
var p1_y;
var p1_x;
var _this1 = this.transformations[this.transformations.length - 1];
var value_y;
var value_x = dx;
value_y = dy + dh;
var w = _this1._02 * value_x + _this1._12 * value_y + _this1._22;
var x = (_this1._00 * value_x + _this1._10 * value_y + _this1._20) / w;
var y = (_this1._01 * value_x + _this1._11 * value_y + _this1._21) / w;
p1_x = x;
p1_y = y;
var p2_y;
var p2_x;
var _this2 = this.transformations[this.transformations.length - 1];
var value_y1;
var value_x1 = dx;
value_y1 = dy;
var w1 = _this2._02 * value_x1 + _this2._12 * value_y1 + _this2._22;
var x1 = (_this2._00 * value_x1 + _this2._10 * value_y1 + _this2._20) / w1;
var y1 = (_this2._01 * value_x1 + _this2._11 * value_y1 + _this2._21) / w1;
p2_x = x1;
p2_y = y1;
var p3_y;
var p3_x;
var _this3 = this.transformations[this.transformations.length - 1];
var value_y2;
var value_x2 = dx + dw;
value_y2 = dy;
var w2 = _this3._02 * value_x2 + _this3._12 * value_y2 + _this3._22;
var x2 = (_this3._00 * value_x2 + _this3._10 * value_y2 + _this3._20) / w2;
var y2 = (_this3._01 * value_x2 + _this3._11 * value_y2 + _this3._21) / w2;
p3_x = x2;
p3_y = y2;
var p4_y;
var p4_x;
var _this4 = this.transformations[this.transformations.length - 1];
var value_y3;
var value_x3 = dx + dw;
value_y3 = dy + dh;
var w3 = _this4._02 * value_x3 + _this4._12 * value_y3 + _this4._22;
var x3 = (_this4._00 * value_x3 + _this4._10 * value_y3 + _this4._20) / w3;
var y3 = (_this4._01 * value_x3 + _this4._11 * value_y3 + _this4._21) / w3;
p4_x = x3;
p4_y = y3;
var _this5 = this.imagePainter;
var opacity = this.get_opacity();
var color = this.get_color();
var tex = img;
if(_this5.bufferIndex + 1 >= kha_graphics4_ImageShaderPainter.bufferSize || _this5.lastTexture != null && tex != _this5.lastTexture) {
_this5.drawBuffer();
}
var left = sx / tex.get_realWidth();
var top = sy / tex.get_realHeight();
var right = (sx + sw) / tex.get_realWidth();
var bottom = (sy + sh) / tex.get_realHeight();
var baseIndex = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
_this5.rectVertices[baseIndex + 3] = left;
_this5.rectVertices[baseIndex + 4] = bottom;
_this5.rectVertices[baseIndex + 12] = left;
_this5.rectVertices[baseIndex + 13] = top;
_this5.rectVertices[baseIndex + 21] = right;
_this5.rectVertices[baseIndex + 22] = top;
_this5.rectVertices[baseIndex + 30] = right;
_this5.rectVertices[baseIndex + 31] = bottom;
var r = ((color & 16711680) >>> 16) * 0.00392156862745098;
var g = ((color & 65280) >>> 8) * 0.00392156862745098;
var b = (color & 255) * 0.00392156862745098;
var a = (color >>> 24) * 0.00392156862745098 * opacity;
var baseIndex1 = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
_this5.rectVertices[baseIndex1 + 5] = r;
_this5.rectVertices[baseIndex1 + 6] = g;
_this5.rectVertices[baseIndex1 + 7] = b;
_this5.rectVertices[baseIndex1 + 8] = a;
_this5.rectVertices[baseIndex1 + 14] = r;
_this5.rectVertices[baseIndex1 + 15] = g;
_this5.rectVertices[baseIndex1 + 16] = b;
_this5.rectVertices[baseIndex1 + 17] = a;
_this5.rectVertices[baseIndex1 + 23] = r;
_this5.rectVertices[baseIndex1 + 24] = g;
_this5.rectVertices[baseIndex1 + 25] = b;
_this5.rectVertices[baseIndex1 + 26] = a;
_this5.rectVertices[baseIndex1 + 32] = r;
_this5.rectVertices[baseIndex1 + 33] = g;
_this5.rectVertices[baseIndex1 + 34] = b;
_this5.rectVertices[baseIndex1 + 35] = a;
var baseIndex2 = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4;
_this5.rectVertices[baseIndex2] = p1_x;
_this5.rectVertices[baseIndex2 + 1] = p1_y;
_this5.rectVertices[baseIndex2 + 2] = -5.0;
_this5.rectVertices[baseIndex2 + 9] = p2_x;
_this5.rectVertices[baseIndex2 + 10] = p2_y;
_this5.rectVertices[baseIndex2 + 11] = -5.0;
_this5.rectVertices[baseIndex2 + 18] = p3_x;
_this5.rectVertices[baseIndex2 + 19] = p3_y;
_this5.rectVertices[baseIndex2 + 20] = -5.0;
_this5.rectVertices[baseIndex2 + 27] = p4_x;
_this5.rectVertices[baseIndex2 + 28] = p4_y;
_this5.rectVertices[baseIndex2 + 29] = -5.0;
++_this5.bufferIndex;
_this5.lastTexture = tex;
}
,get_color: function() {
return this.myColor;
}
,set_color: function(color) {
return this.myColor = color;
}
,drawRect: function(x,y,width,height,strength) {
if(strength == null) {
strength = 1.0;
}
this.imagePainter.end();
this.textPainter.end();
var _this = this.transformations[this.transformations.length - 1];
var value_y;
var value_x = x - strength / 2;
value_y = y + strength / 2;
var w = _this._02 * value_x + _this._12 * value_y + _this._22;
var x1 = (_this._00 * value_x + _this._10 * value_y + _this._20) / w;
var y1 = (_this._01 * value_x + _this._11 * value_y + _this._21) / w;
var p1 = new kha_math_FastVector2(x1,y1);
var _this1 = this.transformations[this.transformations.length - 1];
var value_y1;
var value_x1 = x - strength / 2;
value_y1 = y - strength / 2;
var w1 = _this1._02 * value_x1 + _this1._12 * value_y1 + _this1._22;
var x2 = (_this1._00 * value_x1 + _this1._10 * value_y1 + _this1._20) / w1;
var y2 = (_this1._01 * value_x1 + _this1._11 * value_y1 + _this1._21) / w1;
var p2 = new kha_math_FastVector2(x2,y2);
var _this2 = this.transformations[this.transformations.length - 1];
var value_y2;
var value_x2 = x + width + strength / 2;
value_y2 = y - strength / 2;
var w2 = _this2._02 * value_x2 + _this2._12 * value_y2 + _this2._22;
var x3 = (_this2._00 * value_x2 + _this2._10 * value_y2 + _this2._20) / w2;
var y3 = (_this2._01 * value_x2 + _this2._11 * value_y2 + _this2._21) / w2;
var p3 = new kha_math_FastVector2(x3,y3);
var _this3 = this.transformations[this.transformations.length - 1];
var value_y3;
var value_x3 = x + width + strength / 2;
value_y3 = y + strength / 2;
var w3 = _this3._02 * value_x3 + _this3._12 * value_y3 + _this3._22;
var x4 = (_this3._00 * value_x3 + _this3._10 * value_y3 + _this3._20) / w3;
var y4 = (_this3._01 * value_x3 + _this3._11 * value_y3 + _this3._21) / w3;
var p4 = new kha_math_FastVector2(x4,y4);
this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),p1.x,p1.y,p2.x,p2.y,p3.x,p3.y,p4.x,p4.y);
var _this4 = this.transformations[this.transformations.length - 1];
var value_y4;
var value_x4 = x - strength / 2;
value_y4 = y + height + strength / 2;
var w4 = _this4._02 * value_x4 + _this4._12 * value_y4 + _this4._22;
var x5 = (_this4._00 * value_x4 + _this4._10 * value_y4 + _this4._20) / w4;
var y5 = (_this4._01 * value_x4 + _this4._11 * value_y4 + _this4._21) / w4;
p1 = new kha_math_FastVector2(x5,y5);
var _this5 = this.transformations[this.transformations.length - 1];
var value_y5;
var value_x5 = x + strength / 2;
value_y5 = y - strength / 2;
var w5 = _this5._02 * value_x5 + _this5._12 * value_y5 + _this5._22;
var x6 = (_this5._00 * value_x5 + _this5._10 * value_y5 + _this5._20) / w5;
var y6 = (_this5._01 * value_x5 + _this5._11 * value_y5 + _this5._21) / w5;
p3 = new kha_math_FastVector2(x6,y6);
var _this6 = this.transformations[this.transformations.length - 1];
var value_y6;
var value_x6 = x + strength / 2;
value_y6 = y + height + strength / 2;
var w6 = _this6._02 * value_x6 + _this6._12 * value_y6 + _this6._22;
var x7 = (_this6._00 * value_x6 + _this6._10 * value_y6 + _this6._20) / w6;
var y7 = (_this6._01 * value_x6 + _this6._11 * value_y6 + _this6._21) / w6;
p4 = new kha_math_FastVector2(x7,y7);
this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),p1.x,p1.y,p2.x,p2.y,p3.x,p3.y,p4.x,p4.y);
var _this7 = this.transformations[this.transformations.length - 1];
var value_y7;
var value_x7 = x - strength / 2;
value_y7 = y + height - strength / 2;
var w7 = _this7._02 * value_x7 + _this7._12 * value_y7 + _this7._22;
var x8 = (_this7._00 * value_x7 + _this7._10 * value_y7 + _this7._20) / w7;
var y8 = (_this7._01 * value_x7 + _this7._11 * value_y7 + _this7._21) / w7;
p2 = new kha_math_FastVector2(x8,y8);
var _this8 = this.transformations[this.transformations.length - 1];
var value_y8;
var value_x8 = x + width + strength / 2;
value_y8 = y + height - strength / 2;
var w8 = _this8._02 * value_x8 + _this8._12 * value_y8 + _this8._22;
var x9 = (_this8._00 * value_x8 + _this8._10 * value_y8 + _this8._20) / w8;
var y9 = (_this8._01 * value_x8 + _this8._11 * value_y8 + _this8._21) / w8;
p3 = new kha_math_FastVector2(x9,y9);
var _this9 = this.transformations[this.transformations.length - 1];
var value_y9;
var value_x9 = x + width + strength / 2;
value_y9 = y + height + strength / 2;
var w9 = _this9._02 * value_x9 + _this9._12 * value_y9 + _this9._22;
var x10 = (_this9._00 * value_x9 + _this9._10 * value_y9 + _this9._20) / w9;
var y10 = (_this9._01 * value_x9 + _this9._11 * value_y9 + _this9._21) / w9;
p4 = new kha_math_FastVector2(x10,y10);
this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),p1.x,p1.y,p2.x,p2.y,p3.x,p3.y,p4.x,p4.y);
var _this10 = this.transformations[this.transformations.length - 1];
var value_y10;
var value_x10 = x + width - strength / 2;
value_y10 = y + height + strength / 2;
var w10 = _this10._02 * value_x10 + _this10._12 * value_y10 + _this10._22;
var x11 = (_this10._00 * value_x10 + _this10._10 * value_y10 + _this10._20) / w10;
var y11 = (_this10._01 * value_x10 + _this10._11 * value_y10 + _this10._21) / w10;
p1 = new kha_math_FastVector2(x11,y11);
var _this11 = this.transformations[this.transformations.length - 1];
var value_y11;
var value_x11 = x + width - strength / 2;
value_y11 = y - strength / 2;
var w11 = _this11._02 * value_x11 + _this11._12 * value_y11 + _this11._22;
var x12 = (_this11._00 * value_x11 + _this11._10 * value_y11 + _this11._20) / w11;
var y12 = (_this11._01 * value_x11 + _this11._11 * value_y11 + _this11._21) / w11;
p2 = new kha_math_FastVector2(x12,y12);
var _this12 = this.transformations[this.transformations.length - 1];
var value_y12;
var value_x12 = x + width + strength / 2;
value_y12 = y - strength / 2;
var w12 = _this12._02 * value_x12 + _this12._12 * value_y12 + _this12._22;
var x13 = (_this12._00 * value_x12 + _this12._10 * value_y12 + _this12._20) / w12;
var y13 = (_this12._01 * value_x12 + _this12._11 * value_y12 + _this12._21) / w12;
p3 = new kha_math_FastVector2(x13,y13);
var _this13 = this.transformations[this.transformations.length - 1];
var value_y13;
var value_x13 = x + width + strength / 2;
value_y13 = y + height + strength / 2;
var w13 = _this13._02 * value_x13 + _this13._12 * value_y13 + _this13._22;
var x14 = (_this13._00 * value_x13 + _this13._10 * value_y13 + _this13._20) / w13;
var y14 = (_this13._01 * value_x13 + _this13._11 * value_y13 + _this13._21) / w13;
p4 = new kha_math_FastVector2(x14,y14);
this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),p1.x,p1.y,p2.x,p2.y,p3.x,p3.y,p4.x,p4.y);
}
,fillRect: function(x,y,width,height) {
this.imagePainter.end();
this.textPainter.end();
var p1_y;
var p1_x;
var _this = this.transformations[this.transformations.length - 1];
var value_y;
var value_x = x;
value_y = y + height;
var w = _this._02 * value_x + _this._12 * value_y + _this._22;
var x1 = (_this._00 * value_x + _this._10 * value_y + _this._20) / w;
var y1 = (_this._01 * value_x + _this._11 * value_y + _this._21) / w;
p1_x = x1;
p1_y = y1;
var p2_y;
var p2_x;
var _this1 = this.transformations[this.transformations.length - 1];
var value_y1;
var value_x1 = x;
value_y1 = y;
var w1 = _this1._02 * value_x1 + _this1._12 * value_y1 + _this1._22;
var x2 = (_this1._00 * value_x1 + _this1._10 * value_y1 + _this1._20) / w1;
var y2 = (_this1._01 * value_x1 + _this1._11 * value_y1 + _this1._21) / w1;
p2_x = x2;
p2_y = y2;
var p3_y;
var p3_x;
var _this2 = this.transformations[this.transformations.length - 1];
var value_y2;
var value_x2 = x + width;
value_y2 = y;
var w2 = _this2._02 * value_x2 + _this2._12 * value_y2 + _this2._22;
var x3 = (_this2._00 * value_x2 + _this2._10 * value_y2 + _this2._20) / w2;
var y3 = (_this2._01 * value_x2 + _this2._11 * value_y2 + _this2._21) / w2;
p3_x = x3;
p3_y = y3;
var p4_y;
var p4_x;
var _this3 = this.transformations[this.transformations.length - 1];
var value_y3;
var value_x3 = x + width;
value_y3 = y + height;
var w3 = _this3._02 * value_x3 + _this3._12 * value_y3 + _this3._22;
var x4 = (_this3._00 * value_x3 + _this3._10 * value_y3 + _this3._20) / w3;
var y4 = (_this3._01 * value_x3 + _this3._11 * value_y3 + _this3._21) / w3;
p4_x = x4;
p4_y = y4;
this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),p1_x,p1_y,p2_x,p2_y,p3_x,p3_y,p4_x,p4_y);
}
,drawString: function(text,x,y) {
this.imagePainter.end();
var _this = this.coloredPainter;
if(_this.triangleBufferIndex > 0) {
_this.drawTriBuffer(false);
}
if(_this.bufferIndex > 0) {
_this.drawBuffer(false);
}
this.textPainter.drawString(text,this.get_opacity(),this.get_color(),x,y,this.transformations[this.transformations.length - 1],this.get_fontGlyphs());
}
,get_font: function() {
return this.myFont;
}
,set_font: function(font) {
this.textPainter.setFont(font);
return this.myFont = font;
}
,set_fontSize: function(value) {
return kha_graphics2_Graphics.prototype.set_fontSize.call(this,this.textPainter.fontSize = value);
}
,drawLine: function(x1,y1,x2,y2,strength) {
if(strength == null) {
strength = 1.0;
}
this.imagePainter.end();
this.textPainter.end();
var vec;
if(y2 == y1) {
vec = new kha_math_FastVector2(0,-1);
} else {
vec = new kha_math_FastVector2(1,-(x2 - x1) / (y2 - y1));
}
vec.set_length(strength);
var p1 = new kha_math_FastVector2(x1 + 0.5 * vec.x,y1 + 0.5 * vec.y);
var p2 = new kha_math_FastVector2(x2 + 0.5 * vec.x,y2 + 0.5 * vec.y);
var p3 = new kha_math_FastVector2(p1.x - vec.x,p1.y - vec.y);
var p4 = new kha_math_FastVector2(p2.x - vec.x,p2.y - vec.y);
var _this = this.transformations[this.transformations.length - 1];
var w = _this._02 * p1.x + _this._12 * p1.y + _this._22;
var x = (_this._00 * p1.x + _this._10 * p1.y + _this._20) / w;
var y = (_this._01 * p1.x + _this._11 * p1.y + _this._21) / w;
p1 = new kha_math_FastVector2(x,y);
var _this1 = this.transformations[this.transformations.length - 1];
var w1 = _this1._02 * p2.x + _this1._12 * p2.y + _this1._22;
var x3 = (_this1._00 * p2.x + _this1._10 * p2.y + _this1._20) / w1;
var y3 = (_this1._01 * p2.x + _this1._11 * p2.y + _this1._21) / w1;
p2 = new kha_math_FastVector2(x3,y3);
var _this2 = this.transformations[this.transformations.length - 1];
var w2 = _this2._02 * p3.x + _this2._12 * p3.y + _this2._22;
var x4 = (_this2._00 * p3.x + _this2._10 * p3.y + _this2._20) / w2;
var y4 = (_this2._01 * p3.x + _this2._11 * p3.y + _this2._21) / w2;
p3 = new kha_math_FastVector2(x4,y4);
var _this3 = this.transformations[this.transformations.length - 1];
var w3 = _this3._02 * p4.x + _this3._12 * p4.y + _this3._22;
var x5 = (_this3._00 * p4.x + _this3._10 * p4.y + _this3._20) / w3;
var y5 = (_this3._01 * p4.x + _this3._11 * p4.y + _this3._21) / w3;
p4 = new kha_math_FastVector2(x5,y5);
this.coloredPainter.fillTriangle(this.get_opacity(),this.get_color(),p1.x,p1.y,p2.x,p2.y,p3.x,p3.y);
this.coloredPainter.fillTriangle(this.get_opacity(),this.get_color(),p3.x,p3.y,p2.x,p2.y,p4.x,p4.y);
}
,fillTriangle: function(x1,y1,x2,y2,x3,y3) {
this.imagePainter.end();
this.textPainter.end();
var p1_y;
var p1_x;
var _this = this.transformations[this.transformations.length - 1];
var value_y;
var value_x = x1;
value_y = y1;
var w = _this._02 * value_x + _this._12 * value_y + _this._22;
var x = (_this._00 * value_x + _this._10 * value_y + _this._20) / w;
var y = (_this._01 * value_x + _this._11 * value_y + _this._21) / w;
p1_x = x;
p1_y = y;
var p2_y;
var p2_x;
var _this1 = this.transformations[this.transformations.length - 1];
var value_y1;
var value_x1 = x2;
value_y1 = y2;
var w1 = _this1._02 * value_x1 + _this1._12 * value_y1 + _this1._22;
var x4 = (_this1._00 * value_x1 + _this1._10 * value_y1 + _this1._20) / w1;
var y4 = (_this1._01 * value_x1 + _this1._11 * value_y1 + _this1._21) / w1;
p2_x = x4;
p2_y = y4;
var p3_y;
var p3_x;
var _this2 = this.transformations[this.transformations.length - 1];
var value_y2;
var value_x2 = x3;
value_y2 = y3;
var w2 = _this2._02 * value_x2 + _this2._12 * value_y2 + _this2._22;
var x5 = (_this2._00 * value_x2 + _this2._10 * value_y2 + _this2._20) / w2;
var y5 = (_this2._01 * value_x2 + _this2._11 * value_y2 + _this2._21) / w2;
p3_x = x5;
p3_y = y5;
this.coloredPainter.fillTriangle(this.get_opacity(),this.get_color(),p1_x,p1_y,p2_x,p2_y,p3_x,p3_y);
}
,myImageScaleQuality: null
,get_imageScaleQuality: function() {
return this.myImageScaleQuality;
}
,set_imageScaleQuality: function(value) {
this.imagePainter.setBilinearFilter(value == kha_graphics2_ImageScaleQuality.High);
this.textPainter.setBilinearFilter(value == kha_graphics2_ImageScaleQuality.High);
return this.myImageScaleQuality = value;
}
,myMipmapScaleQuality: null
,get_mipmapScaleQuality: function() {
return this.myMipmapScaleQuality;
}
,set_mipmapScaleQuality: function(value) {
this.imagePainter.setBilinearMipmapFilter(value == kha_graphics2_ImageScaleQuality.High);
return this.myMipmapScaleQuality = value;
}
,setPipeline: function(pipeline) {
this.flush();
this.imagePainter.set_pipeline(pipeline);
this.coloredPainter.set_pipeline(pipeline);
this.textPainter.set_pipeline(pipeline);
if(pipeline != null) {
this.g.setPipeline(pipeline);
}
}
,scissor: function(x,y,width,height) {
this.flush();
this.g.scissor(x,y,width,height);
}
,disableScissor: function() {
this.flush();
this.g.disableScissor();
}
,begin: function(clear,clearColor) {
if(clear == null) {
clear = true;
}
this.g.begin();
if(clear) {
this.clear(clearColor);
}
this.setProjection();
}
,clear: function(color) {
this.flush();
this.g.clear(color == null ? -16777216 : color);
}
,flush: function() {
this.imagePainter.end();
this.textPainter.end();
var _this = this.coloredPainter;
if(_this.triangleBufferIndex > 0) {
_this.drawTriBuffer(false);
}
if(_this.bufferIndex > 0) {
_this.drawBuffer(false);
}
}
,end: function() {
this.flush();
this.g.end();
}
,drawVideoInternal: function(video,x,y,width,height) {
}
,drawVideo: function(video,x,y,width,height) {
this.setPipeline(kha_graphics4_Graphics2.videoPipeline);
this.drawVideoInternal(video,x,y,width,height);
this.setPipeline(null);
}
,__class__: kha_graphics4_Graphics2
});
var kha_graphics4_IndexBuffer = function(indexCount,usage,canRead) {
if(canRead == null) {
canRead = false;
}
this.usage = usage;
this.mySize = indexCount;
this.buffer = kha_SystemImpl.gl.createBuffer();
var this1 = new Uint32Array(indexCount);
this._data = this1;
};
$hxClasses["kha.graphics4.IndexBuffer"] = kha_graphics4_IndexBuffer;
kha_graphics4_IndexBuffer.__name__ = true;
kha_graphics4_IndexBuffer.prototype = {
buffer: null
,_data: null
,mySize: null
,usage: null
,'delete': function() {
this._data = null;
kha_SystemImpl.gl.deleteBuffer(this.buffer);
}
,lock: function(start,count) {
if(start == null) {
start = 0;
}
if(count == null) {
count = this.mySize;
}
return this._data.subarray(start,start + count);
}
,unlock: function() {
kha_SystemImpl.gl.bindBuffer(34963,this.buffer);
var glData = kha_SystemImpl.elementIndexUint == null ? new Uint16Array(this._data) : this._data;
kha_SystemImpl.gl.bufferData(34963,glData,this.usage == kha_graphics4_Usage.DynamicUsage ? 35048 : 35044);
}
,set: function() {
kha_SystemImpl.gl.bindBuffer(34963,this.buffer);
}
,count: function() {
return this.mySize;
}
,__class__: kha_graphics4_IndexBuffer
};
var kha_graphics4_MipMapFilter = $hxClasses["kha.graphics4.MipMapFilter"] = { __ename__ : true, __constructs__ : ["NoMipFilter","PointMipFilter","LinearMipFilter"] };
kha_graphics4_MipMapFilter.NoMipFilter = ["NoMipFilter",0];
kha_graphics4_MipMapFilter.NoMipFilter.toString = $estr;
kha_graphics4_MipMapFilter.NoMipFilter.__enum__ = kha_graphics4_MipMapFilter;
kha_graphics4_MipMapFilter.PointMipFilter = ["PointMipFilter",1];
kha_graphics4_MipMapFilter.PointMipFilter.toString = $estr;
kha_graphics4_MipMapFilter.PointMipFilter.__enum__ = kha_graphics4_MipMapFilter;
kha_graphics4_MipMapFilter.LinearMipFilter = ["LinearMipFilter",2];
kha_graphics4_MipMapFilter.LinearMipFilter.toString = $estr;
kha_graphics4_MipMapFilter.LinearMipFilter.__enum__ = kha_graphics4_MipMapFilter;
var kha_graphics4_PipelineStateBase = function() {
this.inputLayout = null;
this.vertexShader = null;
this.fragmentShader = null;
this.geometryShader = null;
this.tessellationControlShader = null;
this.tessellationEvaluationShader = null;
this.cullMode = kha_graphics4_CullMode.None;
this.depthWrite = false;
this.depthMode = kha_graphics4_CompareMode.Always;
this.stencilMode = kha_graphics4_CompareMode.Always;
this.stencilBothPass = kha_graphics4_StencilAction.Keep;
this.stencilDepthFail = kha_graphics4_StencilAction.Keep;
this.stencilFail = kha_graphics4_StencilAction.Keep;
this.stencilReferenceValue = 0;
this.stencilReadMask = 255;
this.stencilWriteMask = 255;
this.blendSource = kha_graphics4_BlendingFactor.BlendOne;
this.blendDestination = kha_graphics4_BlendingFactor.BlendZero;
this.blendOperation = kha_graphics4_BlendingOperation.Add;
this.alphaBlendSource = kha_graphics4_BlendingFactor.BlendOne;
this.alphaBlendDestination = kha_graphics4_BlendingFactor.BlendZero;
this.alphaBlendOperation = kha_graphics4_BlendingOperation.Add;
this.colorWriteMaskRed = this.colorWriteMaskBlue = this.colorWriteMaskGreen = this.colorWriteMaskAlpha = true;
this.conservativeRasterization = false;
};
$hxClasses["kha.graphics4.PipelineStateBase"] = kha_graphics4_PipelineStateBase;
kha_graphics4_PipelineStateBase.__name__ = true;
kha_graphics4_PipelineStateBase.prototype = {
inputLayout: null
,vertexShader: null
,fragmentShader: null
,geometryShader: null
,tessellationControlShader: null
,tessellationEvaluationShader: null
,cullMode: null
,depthWrite: null
,depthMode: null
,stencilMode: null
,stencilBothPass: null
,stencilDepthFail: null
,stencilFail: null
,stencilReferenceValue: null
,stencilReadMask: null
,stencilWriteMask: null
,blendSource: null
,blendDestination: null
,blendOperation: null
,alphaBlendSource: null
,alphaBlendDestination: null
,alphaBlendOperation: null
,colorWriteMaskRed: null
,colorWriteMaskGreen: null
,colorWriteMaskBlue: null
,colorWriteMaskAlpha: null
,set_colorWriteMask: function(value) {
return this.colorWriteMaskRed = this.colorWriteMaskBlue = this.colorWriteMaskGreen = this.colorWriteMaskAlpha = value;
}
,conservativeRasterization: null
,__class__: kha_graphics4_PipelineStateBase
};
var kha_graphics4_PipelineState = function() {
kha_graphics4_PipelineStateBase.call(this);
this.program = kha_SystemImpl.gl.createProgram();
this.textures = [];
this.textureValues = [];
};
$hxClasses["kha.graphics4.PipelineState"] = kha_graphics4_PipelineState;
kha_graphics4_PipelineState.__name__ = true;
kha_graphics4_PipelineState.__super__ = kha_graphics4_PipelineStateBase;
kha_graphics4_PipelineState.prototype = $extend(kha_graphics4_PipelineStateBase.prototype,{
program: null
,textures: null
,textureValues: null
,'delete': function() {
kha_SystemImpl.gl.deleteProgram(this.program);
}
,compile: function() {
this.compileShader(this.vertexShader);
this.compileShader(this.fragmentShader);
kha_SystemImpl.gl.attachShader(this.program,this.vertexShader.shader);
kha_SystemImpl.gl.attachShader(this.program,this.fragmentShader.shader);
var index = 0;
var _g = 0;
var _g1 = this.inputLayout;
while(_g < _g1.length) {
var structure = _g1[_g];
++_g;
var _g2 = 0;
var _g3 = structure.elements;
while(_g2 < _g3.length) {
var element = _g3[_g2];
++_g2;
kha_SystemImpl.gl.bindAttribLocation(this.program,index,element.name);
if(element.data == kha_graphics4_VertexData.Float4x4) {
index += 4;
} else {
++index;
}
}
}
kha_SystemImpl.gl.linkProgram(this.program);
if(!kha_SystemImpl.gl.getProgramParameter(this.program,35714)) {
throw new js__$Boot_HaxeError("Could not link the shader program:\n" + kha_SystemImpl.gl.getProgramInfoLog(this.program));
}
}
,set: function() {
kha_SystemImpl.gl.useProgram(this.program);
var _g1 = 0;
var _g = this.textureValues.length;
while(_g1 < _g) {
var index = _g1++;
kha_SystemImpl.gl.uniform1i(this.textureValues[index],index);
}
kha_SystemImpl.gl.colorMask(this.colorWriteMaskRed,this.colorWriteMaskGreen,this.colorWriteMaskBlue,this.colorWriteMaskAlpha);
}
,compileShader: function(shader) {
if(shader.shader != null) {
return;
}
var s = kha_SystemImpl.gl.createShader(shader.type);
var highp = kha_SystemImpl.gl.getShaderPrecisionFormat(35632,36338);
var highpSupported = highp.precision != 0;
var files = shader.files;
var _g1 = 0;
var _g = files.length;
while(_g1 < _g) {
var i = _g1++;
if(kha_SystemImpl.gl2) {
if(files[i].indexOf("-webgl2") >= 0 || files[i].indexOf("runtime-string") >= 0) {
kha_SystemImpl.gl.shaderSource(s,shader.sources[i]);
break;
}
} else {
if(!highpSupported && files[i].indexOf("-relaxed") >= 0) {
kha_SystemImpl.gl.shaderSource(s,shader.sources[i]);
break;
}
if(highpSupported && files[i].indexOf("-relaxed") < 0) {
kha_SystemImpl.gl.shaderSource(s,shader.sources[i]);
break;
}
}
}
kha_SystemImpl.gl.compileShader(s);
if(!kha_SystemImpl.gl.getShaderParameter(s,35713)) {
throw new js__$Boot_HaxeError("Could not compile shader:\n" + kha_SystemImpl.gl.getShaderInfoLog(s));
}
shader.shader = s;
}
,getConstantLocation: function(name) {
var location = kha_SystemImpl.gl.getUniformLocation(this.program,name);
var type = 5126;
var count = kha_SystemImpl.gl.getProgramParameter(this.program,35718);
var _g1 = 0;
var _g = count;
while(_g1 < _g) {
var i = _g1++;
var info = kha_SystemImpl.gl.getActiveUniform(this.program,i);
if(info.name == name || info.name == name + "[0]") {
type = info.type;
break;
}
}
return new kha_js_graphics4_ConstantLocation(location,type);
}
,getTextureUnit: function(name) {
var index = this.findTexture(name);
if(index < 0) {
var location = kha_SystemImpl.gl.getUniformLocation(this.program,name);
index = this.textures.length;
this.textureValues.push(location);
this.textures.push(name);
}
return new kha_js_graphics4_TextureUnit(index);
}
,findTexture: function(name) {
var _g1 = 0;
var _g = this.textures.length;
while(_g1 < _g) {
var index = _g1++;
if(this.textures[index] == name) {
return index;
}
}
return -1;
}
,__class__: kha_graphics4_PipelineState
});
var kha_graphics4_StencilAction = $hxClasses["kha.graphics4.StencilAction"] = { __ename__ : true, __constructs__ : ["Keep","Zero","Replace","Increment","IncrementWrap","Decrement","DecrementWrap","Invert"] };
kha_graphics4_StencilAction.Keep = ["Keep",0];
kha_graphics4_StencilAction.Keep.toString = $estr;
kha_graphics4_StencilAction.Keep.__enum__ = kha_graphics4_StencilAction;
kha_graphics4_StencilAction.Zero = ["Zero",1];
kha_graphics4_StencilAction.Zero.toString = $estr;
kha_graphics4_StencilAction.Zero.__enum__ = kha_graphics4_StencilAction;
kha_graphics4_StencilAction.Replace = ["Replace",2];
kha_graphics4_StencilAction.Replace.toString = $estr;
kha_graphics4_StencilAction.Replace.__enum__ = kha_graphics4_StencilAction;
kha_graphics4_StencilAction.Increment = ["Increment",3];
kha_graphics4_StencilAction.Increment.toString = $estr;
kha_graphics4_StencilAction.Increment.__enum__ = kha_graphics4_StencilAction;
kha_graphics4_StencilAction.IncrementWrap = ["IncrementWrap",4];
kha_graphics4_StencilAction.IncrementWrap.toString = $estr;
kha_graphics4_StencilAction.IncrementWrap.__enum__ = kha_graphics4_StencilAction;
kha_graphics4_StencilAction.Decrement = ["Decrement",5];
kha_graphics4_StencilAction.Decrement.toString = $estr;
kha_graphics4_StencilAction.Decrement.__enum__ = kha_graphics4_StencilAction;
kha_graphics4_StencilAction.DecrementWrap = ["DecrementWrap",6];
kha_graphics4_StencilAction.DecrementWrap.toString = $estr;
kha_graphics4_StencilAction.DecrementWrap.__enum__ = kha_graphics4_StencilAction;
kha_graphics4_StencilAction.Invert = ["Invert",7];
kha_graphics4_StencilAction.Invert.toString = $estr;
kha_graphics4_StencilAction.Invert.__enum__ = kha_graphics4_StencilAction;
var kha_graphics4_TessellationControlShader = function(source,file) {
};
$hxClasses["kha.graphics4.TessellationControlShader"] = kha_graphics4_TessellationControlShader;
kha_graphics4_TessellationControlShader.__name__ = true;
kha_graphics4_TessellationControlShader.prototype = {
'delete': function() {
}
,__class__: kha_graphics4_TessellationControlShader
};
var kha_graphics4_TessellationEvaluationShader = function(source,file) {
};
$hxClasses["kha.graphics4.TessellationEvaluationShader"] = kha_graphics4_TessellationEvaluationShader;
kha_graphics4_TessellationEvaluationShader.__name__ = true;
kha_graphics4_TessellationEvaluationShader.prototype = {
'delete': function() {
}
,__class__: kha_graphics4_TessellationEvaluationShader
};
var kha_graphics4_TexDir = $hxClasses["kha.graphics4.TexDir"] = { __ename__ : true, __constructs__ : ["U","V"] };
kha_graphics4_TexDir.U = ["U",0];
kha_graphics4_TexDir.U.toString = $estr;
kha_graphics4_TexDir.U.__enum__ = kha_graphics4_TexDir;
kha_graphics4_TexDir.V = ["V",1];
kha_graphics4_TexDir.V.toString = $estr;
kha_graphics4_TexDir.V.__enum__ = kha_graphics4_TexDir;
var kha_graphics4_TextureAddressing = $hxClasses["kha.graphics4.TextureAddressing"] = { __ename__ : true, __constructs__ : ["Repeat","Mirror","Clamp"] };
kha_graphics4_TextureAddressing.Repeat = ["Repeat",0];
kha_graphics4_TextureAddressing.Repeat.toString = $estr;
kha_graphics4_TextureAddressing.Repeat.__enum__ = kha_graphics4_TextureAddressing;
kha_graphics4_TextureAddressing.Mirror = ["Mirror",1];
kha_graphics4_TextureAddressing.Mirror.toString = $estr;
kha_graphics4_TextureAddressing.Mirror.__enum__ = kha_graphics4_TextureAddressing;
kha_graphics4_TextureAddressing.Clamp = ["Clamp",2];
kha_graphics4_TextureAddressing.Clamp.toString = $estr;
kha_graphics4_TextureAddressing.Clamp.__enum__ = kha_graphics4_TextureAddressing;
var kha_graphics4_TextureFilter = $hxClasses["kha.graphics4.TextureFilter"] = { __ename__ : true, __constructs__ : ["PointFilter","LinearFilter","AnisotropicFilter"] };
kha_graphics4_TextureFilter.PointFilter = ["PointFilter",0];
kha_graphics4_TextureFilter.PointFilter.toString = $estr;
kha_graphics4_TextureFilter.PointFilter.__enum__ = kha_graphics4_TextureFilter;
kha_graphics4_TextureFilter.LinearFilter = ["LinearFilter",1];
kha_graphics4_TextureFilter.LinearFilter.toString = $estr;
kha_graphics4_TextureFilter.LinearFilter.__enum__ = kha_graphics4_TextureFilter;
kha_graphics4_TextureFilter.AnisotropicFilter = ["AnisotropicFilter",2];
kha_graphics4_TextureFilter.AnisotropicFilter.toString = $estr;
kha_graphics4_TextureFilter.AnisotropicFilter.__enum__ = kha_graphics4_TextureFilter;
var kha_graphics4_TextureFormat = $hxClasses["kha.graphics4.TextureFormat"] = { __ename__ : true, __constructs__ : ["RGBA32","L8","RGBA128","DEPTH16","RGBA64","A32","A16"] };
kha_graphics4_TextureFormat.RGBA32 = ["RGBA32",0];
kha_graphics4_TextureFormat.RGBA32.toString = $estr;
kha_graphics4_TextureFormat.RGBA32.__enum__ = kha_graphics4_TextureFormat;
kha_graphics4_TextureFormat.L8 = ["L8",1];
kha_graphics4_TextureFormat.L8.toString = $estr;
kha_graphics4_TextureFormat.L8.__enum__ = kha_graphics4_TextureFormat;
kha_graphics4_TextureFormat.RGBA128 = ["RGBA128",2];
kha_graphics4_TextureFormat.RGBA128.toString = $estr;
kha_graphics4_TextureFormat.RGBA128.__enum__ = kha_graphics4_TextureFormat;
kha_graphics4_TextureFormat.DEPTH16 = ["DEPTH16",3];
kha_graphics4_TextureFormat.DEPTH16.toString = $estr;
kha_graphics4_TextureFormat.DEPTH16.__enum__ = kha_graphics4_TextureFormat;
kha_graphics4_TextureFormat.RGBA64 = ["RGBA64",4];
kha_graphics4_TextureFormat.RGBA64.toString = $estr;
kha_graphics4_TextureFormat.RGBA64.__enum__ = kha_graphics4_TextureFormat;
kha_graphics4_TextureFormat.A32 = ["A32",5];
kha_graphics4_TextureFormat.A32.toString = $estr;
kha_graphics4_TextureFormat.A32.__enum__ = kha_graphics4_TextureFormat;
kha_graphics4_TextureFormat.A16 = ["A16",6];
kha_graphics4_TextureFormat.A16.toString = $estr;
kha_graphics4_TextureFormat.A16.__enum__ = kha_graphics4_TextureFormat;
var kha_graphics4_TextureUnit = function() { };
$hxClasses["kha.graphics4.TextureUnit"] = kha_graphics4_TextureUnit;
kha_graphics4_TextureUnit.__name__ = true;
var kha_graphics4_Usage = $hxClasses["kha.graphics4.Usage"] = { __ename__ : true, __constructs__ : ["StaticUsage","DynamicUsage","ReadableUsage"] };
kha_graphics4_Usage.StaticUsage = ["StaticUsage",0];
kha_graphics4_Usage.StaticUsage.toString = $estr;
kha_graphics4_Usage.StaticUsage.__enum__ = kha_graphics4_Usage;
kha_graphics4_Usage.DynamicUsage = ["DynamicUsage",1];
kha_graphics4_Usage.DynamicUsage.toString = $estr;
kha_graphics4_Usage.DynamicUsage.__enum__ = kha_graphics4_Usage;
kha_graphics4_Usage.ReadableUsage = ["ReadableUsage",2];
kha_graphics4_Usage.ReadableUsage.toString = $estr;
kha_graphics4_Usage.ReadableUsage.__enum__ = kha_graphics4_Usage;
var kha_graphics4_VertexBuffer = function(vertexCount,structure,usage,instanceDataStepRate,canRead) {
if(canRead == null) {
canRead = false;
}
if(instanceDataStepRate == null) {
instanceDataStepRate = 0;
}
this.usage = usage;
this.instanceDataStepRate = instanceDataStepRate;
this.mySize = vertexCount;
this.myStride = 0;
var _g = 0;
var _g1 = structure.elements;
while(_g < _g1.length) {
var element = _g1[_g];
++_g;
var _g2 = element.data;
switch(_g2[1]) {
case 0:
this.myStride += 4;
break;
case 1:
this.myStride += 8;
break;
case 2:
this.myStride += 12;
break;
case 3:
this.myStride += 16;
break;
case 4:
this.myStride += 64;
break;
}
}
this.buffer = kha_SystemImpl.gl.createBuffer();
var this1 = new Float32Array(vertexCount * this.myStride / 4 | 0);
this._data = this1;
this.sizes = [];
this.offsets = [];
this.sizes[structure.elements.length - 1] = 0;
this.offsets[structure.elements.length - 1] = 0;
var offset = 0;
var index = 0;
var _g3 = 0;
var _g11 = structure.elements;
while(_g3 < _g11.length) {
var element1 = _g11[_g3];
++_g3;
var size;
var _g21 = element1.data;
switch(_g21[1]) {
case 0:
size = 1;
break;
case 1:
size = 2;
break;
case 2:
size = 3;
break;
case 3:
size = 4;
break;
case 4:
size = 16;
break;
}
this.sizes[index] = size;
this.offsets[index] = offset;
var _g31 = element1.data;
switch(_g31[1]) {
case 0:
offset += 4;
break;
case 1:
offset += 8;
break;
case 2:
offset += 12;
break;
case 3:
offset += 16;
break;
case 4:
offset += 64;
break;
}
++index;
}
};
$hxClasses["kha.graphics4.VertexBuffer"] = kha_graphics4_VertexBuffer;
kha_graphics4_VertexBuffer.__name__ = true;
kha_graphics4_VertexBuffer.prototype = {
buffer: null
,_data: null
,mySize: null
,myStride: null
,sizes: null
,offsets: null
,usage: null
,instanceDataStepRate: null
,'delete': function() {
this._data = null;
kha_SystemImpl.gl.deleteBuffer(this.buffer);
}
,lock: function(start,count) {
if(start == null) {
start = 0;
}
if(count == null) {
count = this.mySize;
}
return this._data.subarray(start * this.stride(),(start + count) * this.stride());
}
,unlock: function() {
kha_SystemImpl.gl.bindBuffer(34962,this.buffer);
kha_SystemImpl.gl.bufferData(34962,this._data,this.usage == kha_graphics4_Usage.DynamicUsage ? 35048 : 35044);
}
,stride: function() {
return this.myStride;
}
,count: function() {
return this.mySize;
}
,set: function(offset) {
var ext = kha_SystemImpl.gl2 ? true : kha_SystemImpl.gl.getExtension("ANGLE_instanced_arrays");
kha_SystemImpl.gl.bindBuffer(34962,this.buffer);
var attributesOffset = 0;
var _g1 = 0;
var _g = this.sizes.length;
while(_g1 < _g) {
var i = _g1++;
if(this.sizes[i] > 4) {
var size = this.sizes[i];
var addonOffset = 0;
while(size > 0) {
kha_SystemImpl.gl.enableVertexAttribArray(offset + attributesOffset);
kha_SystemImpl.gl.vertexAttribPointer(offset + attributesOffset,4,5126,false,this.myStride,this.offsets[i] + addonOffset);
if(ext) {
if(kha_SystemImpl.gl2) {
kha_SystemImpl.gl.vertexAttribDivisor(offset + attributesOffset,this.instanceDataStepRate);
} else {
ext.vertexAttribDivisorANGLE(offset + attributesOffset,this.instanceDataStepRate);
}
}
size -= 4;
addonOffset += 16;
++attributesOffset;
}
} else {
kha_SystemImpl.gl.enableVertexAttribArray(offset + attributesOffset);
kha_SystemImpl.gl.vertexAttribPointer(offset + attributesOffset,this.sizes[i],5126,false,this.myStride,this.offsets[i]);
if(ext) {
if(kha_SystemImpl.gl2) {
kha_SystemImpl.gl.vertexAttribDivisor(offset + attributesOffset,this.instanceDataStepRate);
} else {
ext.vertexAttribDivisorANGLE(offset + attributesOffset,this.instanceDataStepRate);
}
}
++attributesOffset;
}
}
return attributesOffset;
}
,__class__: kha_graphics4_VertexBuffer
};
var kha_graphics4_VertexData = $hxClasses["kha.graphics4.VertexData"] = { __ename__ : true, __constructs__ : ["Float1","Float2","Float3","Float4","Float4x4"] };
kha_graphics4_VertexData.Float1 = ["Float1",0];
kha_graphics4_VertexData.Float1.toString = $estr;
kha_graphics4_VertexData.Float1.__enum__ = kha_graphics4_VertexData;
kha_graphics4_VertexData.Float2 = ["Float2",1];
kha_graphics4_VertexData.Float2.toString = $estr;
kha_graphics4_VertexData.Float2.__enum__ = kha_graphics4_VertexData;
kha_graphics4_VertexData.Float3 = ["Float3",2];
kha_graphics4_VertexData.Float3.toString = $estr;
kha_graphics4_VertexData.Float3.__enum__ = kha_graphics4_VertexData;
kha_graphics4_VertexData.Float4 = ["Float4",3];
kha_graphics4_VertexData.Float4.toString = $estr;
kha_graphics4_VertexData.Float4.__enum__ = kha_graphics4_VertexData;
kha_graphics4_VertexData.Float4x4 = ["Float4x4",4];
kha_graphics4_VertexData.Float4x4.toString = $estr;
kha_graphics4_VertexData.Float4x4.__enum__ = kha_graphics4_VertexData;
var kha_graphics4_VertexElement = function(name,data) {
this.name = name;
this.data = data;
};
$hxClasses["kha.graphics4.VertexElement"] = kha_graphics4_VertexElement;
kha_graphics4_VertexElement.__name__ = true;
kha_graphics4_VertexElement.prototype = {
name: null
,data: null
,__class__: kha_graphics4_VertexElement
};
var kha_graphics4_VertexShader = function(sources,files) {
this.sources = [];
var _g = 0;
while(_g < sources.length) {
var source = sources[_g];
++_g;
this.sources.push(source.toString());
}
this.type = 35633;
this.shader = null;
this.files = files;
};
$hxClasses["kha.graphics4.VertexShader"] = kha_graphics4_VertexShader;
kha_graphics4_VertexShader.__name__ = true;
kha_graphics4_VertexShader.fromSource = function(source) {
var shader = new kha_graphics4_VertexShader([],["runtime-string"]);
shader.sources.push(source);
return shader;
};
kha_graphics4_VertexShader.prototype = {
sources: null
,type: null
,shader: null
,files: null
,'delete': function() {
kha_SystemImpl.gl.deleteShader(this.shader);
this.shader = null;
this.sources = null;
}
,__class__: kha_graphics4_VertexShader
};
var kha_graphics4_VertexStructure = function() {
this.elements = [];
};
$hxClasses["kha.graphics4.VertexStructure"] = kha_graphics4_VertexStructure;
kha_graphics4_VertexStructure.__name__ = true;
kha_graphics4_VertexStructure.prototype = {
elements: null
,add: function(name,data) {
this.elements.push(new kha_graphics4_VertexElement(name,data));
}
,size: function() {
return this.elements.length;
}
,byteSize: function() {
var byteSize = 0;
var _g1 = 0;
var _g = this.elements.length;
while(_g1 < _g) {
var i = _g1++;
byteSize += this.dataByteSize(this.elements[i].data);
}
return byteSize;
}
,dataByteSize: function(data) {
switch(data[1]) {
case 0:
return 4;
case 1:
return 8;
case 2:
return 12;
case 3:
return 16;
case 4:
return 64;
}
}
,get: function(index) {
return this.elements[index];
}
,__class__: kha_graphics4_VertexStructure
};
var kha_input_Gamepad = $hx_exports["kha"]["input"]["Gamepad"] = function(index,id) {
if(id == null) {
id = "unknown";
}
if(index == null) {
index = 0;
}
this.index = index;
this.axisListeners = [];
this.buttonListeners = [];
kha_input_Gamepad.instances[index] = this;
};
$hxClasses["kha.input.Gamepad"] = kha_input_Gamepad;
kha_input_Gamepad.__name__ = true;
kha_input_Gamepad.get = function(index) {
if(index == null) {
index = 0;
}
if(index >= kha_input_Gamepad.instances.length) {
return null;
}
return kha_input_Gamepad.instances[index];
};
kha_input_Gamepad.prototype = {
index: null
,notify: function(axisListener,buttonListener) {
if(axisListener != null) {
this.axisListeners.push(axisListener);
}
if(buttonListener != null) {
this.buttonListeners.push(buttonListener);
}
}
,remove: function(axisListener,buttonListener) {
if(axisListener != null) {
HxOverrides.remove(this.axisListeners,axisListener);
}
if(buttonListener != null) {
HxOverrides.remove(this.buttonListeners,buttonListener);
}
}
,axisListeners: null
,buttonListeners: null
,id: null
,get_id: function() {
return kha_SystemImpl.getGamepadId(this.index);
}
,sendAxisEvent: function(axis,value) {
var _g = 0;
var _g1 = this.axisListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(axis,value);
}
}
,sendButtonEvent: function(button,value) {
var _g = 0;
var _g1 = this.buttonListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(button,value);
}
}
,__class__: kha_input_Gamepad
};
var kha_network_Controller = function() {
this.__id = kha_network_ControllerBuilder.nextId++;
this._inputBuffer = new haxe_io_Bytes(new ArrayBuffer(1));
};
$hxClasses["kha.network.Controller"] = kha_network_Controller;
kha_network_Controller.__name__ = true;
kha_network_Controller.prototype = {
__id: null
,_inputBufferIndex: null
,_inputBuffer: null
,_id: function() {
return this.__id;
}
,_receive: function(bytes) {
}
,__class__: kha_network_Controller
};
var kha_input_Keyboard = $hx_exports["kha"]["input"]["Keyboard"] = function() {
kha_network_Controller.call(this);
this.downListeners = [];
this.upListeners = [];
kha_input_Keyboard.instance = this;
};
$hxClasses["kha.input.Keyboard"] = kha_input_Keyboard;
kha_input_Keyboard.__name__ = true;
kha_input_Keyboard.get = function(num) {
if(num == null) {
num = 0;
}
return kha_SystemImpl.getKeyboard(num);
};
kha_input_Keyboard.__super__ = kha_network_Controller;
kha_input_Keyboard.prototype = $extend(kha_network_Controller.prototype,{
notify: function(downListener,upListener) {
if(downListener != null) {
this.downListeners.push(downListener);
}
if(upListener != null) {
this.upListeners.push(upListener);
}
}
,remove: function(downListener,upListener) {
if(downListener != null) {
HxOverrides.remove(this.downListeners,downListener);
}
if(upListener != null) {
HxOverrides.remove(this.upListeners,upListener);
}
}
,show: function() {
}
,hide: function() {
}
,downListeners: null
,upListeners: null
,sendDownEvent: function(key,$char) {
if(kha_network_Session.the() != null) {
var bytes = new haxe_io_Bytes(new ArrayBuffer(6));
bytes.setInt32(0,0);
bytes.b[4] = key[1] & 255;
var v = HxOverrides.cca($char,0);
bytes.b[5] = v & 255;
kha_network_Session.the().sendControllerUpdate(this._id(),bytes);
}
var _g = 0;
var _g1 = this.downListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(key,$char);
}
}
,sendUpEvent: function(key,$char) {
if(kha_network_Session.the() != null) {
var bytes = new haxe_io_Bytes(new ArrayBuffer(6));
bytes.setInt32(0,1);
bytes.b[4] = key[1] & 255;
var v = HxOverrides.cca($char,0);
bytes.b[5] = v & 255;
kha_network_Session.the().sendControllerUpdate(this._id(),bytes);
}
var _g = 0;
var _g1 = this.upListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(key,$char);
}
}
,_receive: function(bytes) {
var funcindex = bytes.getInt32(0);
if(funcindex == 0) {
var input0 = Type.createEnumIndex(kha_Key,bytes.b[4],null);
var input1 = String.fromCharCode(bytes.b[5]);
this.sendDownEvent(input0,input1);
return;
}
if(funcindex == 1) {
var input01 = Type.createEnumIndex(kha_Key,bytes.b[4],null);
var input11 = String.fromCharCode(bytes.b[5]);
this.sendUpEvent(input01,input11);
return;
}
}
,__class__: kha_input_Keyboard
});
var kha_input_Mouse = $hx_exports["kha"]["input"]["Mouse"] = function() {
kha_network_Controller.call(this);
kha_input_Mouse.instance = this;
};
$hxClasses["kha.input.Mouse"] = kha_input_Mouse;
kha_input_Mouse.__name__ = true;
kha_input_Mouse.get = function(num) {
if(num == null) {
num = 0;
}
return kha_SystemImpl.getMouse(num);
};
kha_input_Mouse.__super__ = kha_network_Controller;
kha_input_Mouse.prototype = $extend(kha_network_Controller.prototype,{
notify: function(downListener,upListener,moveListener,wheelListener,leaveListener) {
this.notifyWindowed(0,downListener,upListener,moveListener,wheelListener,leaveListener);
}
,remove: function(downListener,upListener,moveListener,wheelListener,leaveListener) {
this.removeWindowed(0,downListener,upListener,moveListener,wheelListener,leaveListener);
}
,notifyWindowed: function(windowId,downListener,upListener,moveListener,wheelListener,leaveListener) {
if(downListener != null) {
if(this.windowDownListeners == null) {
this.windowDownListeners = [];
}
while(this.windowDownListeners.length <= windowId) this.windowDownListeners.push([]);
this.windowDownListeners[windowId].push(downListener);
}
if(upListener != null) {
if(this.windowUpListeners == null) {
this.windowUpListeners = [];
}
while(this.windowUpListeners.length <= windowId) this.windowUpListeners.push([]);
this.windowUpListeners[windowId].push(upListener);
}
if(moveListener != null) {
if(this.windowMoveListeners == null) {
this.windowMoveListeners = [];
}
while(this.windowMoveListeners.length <= windowId) this.windowMoveListeners.push([]);
this.windowMoveListeners[windowId].push(moveListener);
}
if(wheelListener != null) {
if(this.windowWheelListeners == null) {
this.windowWheelListeners = [];
}
while(this.windowWheelListeners.length <= windowId) this.windowWheelListeners.push([]);
this.windowWheelListeners[windowId].push(wheelListener);
}
if(leaveListener != null) {
if(this.windowLeaveListeners == null) {
this.windowLeaveListeners = [];
}
while(this.windowLeaveListeners.length <= windowId) this.windowLeaveListeners.push([]);
this.windowLeaveListeners[windowId].push(leaveListener);
}
}
,removeWindowed: function(windowId,downListener,upListener,moveListener,wheelListener,leaveListener) {
if(downListener != null) {
if(this.windowDownListeners != null) {
if(windowId < this.windowDownListeners.length) {
HxOverrides.remove(this.windowDownListeners[windowId],downListener);
} else {
haxe_Log.trace("no downListeners for window \"" + windowId + "\" are registered",{ fileName : "Mouse.hx", lineNumber : 88, className : "kha.input.Mouse", methodName : "removeWindowed"});
}
} else {
haxe_Log.trace("no downListeners were ever registered",{ fileName : "Mouse.hx", lineNumber : 91, className : "kha.input.Mouse", methodName : "removeWindowed"});
}
}
if(upListener != null) {
if(this.windowUpListeners != null) {
if(windowId < this.windowUpListeners.length) {
HxOverrides.remove(this.windowUpListeners[windowId],upListener);
} else {
haxe_Log.trace("no upListeners for window \"" + windowId + "\" are registered",{ fileName : "Mouse.hx", lineNumber : 100, className : "kha.input.Mouse", methodName : "removeWindowed"});
}
} else {
haxe_Log.trace("no upListeners were ever registered",{ fileName : "Mouse.hx", lineNumber : 103, className : "kha.input.Mouse", methodName : "removeWindowed"});
}
}
if(moveListener != null) {
if(this.windowMoveListeners != null) {
if(windowId < this.windowMoveListeners.length) {
HxOverrides.remove(this.windowMoveListeners[windowId],moveListener);
} else {
haxe_Log.trace("no moveListeners for window \"" + windowId + "\" are registered",{ fileName : "Mouse.hx", lineNumber : 112, className : "kha.input.Mouse", methodName : "removeWindowed"});
}
} else {
haxe_Log.trace("no moveListeners were ever registered",{ fileName : "Mouse.hx", lineNumber : 115, className : "kha.input.Mouse", methodName : "removeWindowed"});
}
}
if(wheelListener != null) {
if(this.windowWheelListeners != null) {
if(windowId < this.windowWheelListeners.length) {
HxOverrides.remove(this.windowWheelListeners[windowId],wheelListener);
} else {
haxe_Log.trace("no wheelListeners for window \"" + windowId + "\" are registered",{ fileName : "Mouse.hx", lineNumber : 124, className : "kha.input.Mouse", methodName : "removeWindowed"});
}
} else {
haxe_Log.trace("no wheelListeners were ever registered",{ fileName : "Mouse.hx", lineNumber : 127, className : "kha.input.Mouse", methodName : "removeWindowed"});
}
}
if(leaveListener != null) {
if(this.windowLeaveListeners != null) {
if(windowId < this.windowLeaveListeners.length) {
HxOverrides.remove(this.windowLeaveListeners[windowId],leaveListener);
} else {
haxe_Log.trace("no leaveListeners for window \"" + windowId + "\" are registered",{ fileName : "Mouse.hx", lineNumber : 136, className : "kha.input.Mouse", methodName : "removeWindowed"});
}
} else {
haxe_Log.trace("no leaveListeners were ever registered",{ fileName : "Mouse.hx", lineNumber : 139, className : "kha.input.Mouse", methodName : "removeWindowed"});
}
}
}
,lock: function() {
}
,unlock: function() {
}
,canLock: function() {
return false;
}
,isLocked: function() {
return false;
}
,notifyOnLockChange: function(func,error) {
}
,removeFromLockChange: function(func,error) {
}
,hideSystemCursor: function() {
}
,showSystemCursor: function() {
}
,windowDownListeners: null
,windowUpListeners: null
,windowMoveListeners: null
,windowWheelListeners: null
,windowLeaveListeners: null
,sendLeaveEvent: function(windowId) {
if(kha_network_Session.the() != null) {
var bytes = new haxe_io_Bytes(new ArrayBuffer(8));
bytes.setInt32(0,0);
bytes.setInt32(4,windowId);
kha_network_Session.the().sendControllerUpdate(this._id(),bytes);
}
if(this.windowLeaveListeners != null) {
var _g = 0;
var _g1 = this.windowLeaveListeners[windowId];
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener();
}
}
}
,sendDownEvent: function(windowId,button,x,y) {
if(kha_network_Session.the() != null) {
var bytes = new haxe_io_Bytes(new ArrayBuffer(20));
bytes.setInt32(0,1);
bytes.setInt32(4,windowId);
bytes.setInt32(8,button);
bytes.setInt32(12,x);
bytes.setInt32(16,y);
kha_network_Session.the().sendControllerUpdate(this._id(),bytes);
}
if(this.windowDownListeners != null) {
var _g = 0;
var _g1 = this.windowDownListeners[windowId];
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(button,x,y);
}
}
}
,sendUpEvent: function(windowId,button,x,y) {
if(kha_network_Session.the() != null) {
var bytes = new haxe_io_Bytes(new ArrayBuffer(20));
bytes.setInt32(0,2);
bytes.setInt32(4,windowId);
bytes.setInt32(8,button);
bytes.setInt32(12,x);
bytes.setInt32(16,y);
kha_network_Session.the().sendControllerUpdate(this._id(),bytes);
}
if(this.windowUpListeners != null) {
var _g = 0;
var _g1 = this.windowUpListeners[windowId];
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(button,x,y);
}
}
}
,sendMoveEvent: function(windowId,x,y,movementX,movementY) {
if(kha_network_Session.the() != null) {
var bytes = new haxe_io_Bytes(new ArrayBuffer(24));
bytes.setInt32(0,3);
bytes.setInt32(4,windowId);
bytes.setInt32(8,x);
bytes.setInt32(12,y);
bytes.setInt32(16,movementX);
bytes.setInt32(20,movementY);
kha_network_Session.the().sendControllerUpdate(this._id(),bytes);
}
if(this.windowMoveListeners != null) {
var _g = 0;
var _g1 = this.windowMoveListeners[windowId];
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(x,y,movementX,movementY);
}
}
}
,sendWheelEvent: function(windowId,delta) {
if(kha_network_Session.the() != null) {
var bytes = new haxe_io_Bytes(new ArrayBuffer(12));
bytes.setInt32(0,4);
bytes.setInt32(4,windowId);
bytes.setInt32(8,delta);
kha_network_Session.the().sendControllerUpdate(this._id(),bytes);
}
if(this.windowWheelListeners != null) {
var _g = 0;
var _g1 = this.windowWheelListeners[windowId];
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(delta);
}
}
}
,_receive: function(bytes) {
var funcindex = bytes.getInt32(0);
if(funcindex == 0) {
var input0 = bytes.getInt32(4);
this.sendLeaveEvent(input0);
return;
}
if(funcindex == 1) {
var input01 = bytes.getInt32(4);
var input1 = bytes.getInt32(8);
var input2 = bytes.getInt32(12);
var input3 = bytes.getInt32(16);
this.sendDownEvent(input01,input1,input2,input3);
return;
}
if(funcindex == 2) {
var input02 = bytes.getInt32(4);
var input11 = bytes.getInt32(8);
var input21 = bytes.getInt32(12);
var input31 = bytes.getInt32(16);
this.sendUpEvent(input02,input11,input21,input31);
return;
}
if(funcindex == 3) {
var input03 = bytes.getInt32(4);
var input12 = bytes.getInt32(8);
var input22 = bytes.getInt32(12);
var input32 = bytes.getInt32(16);
var input4 = bytes.getInt32(20);
this.sendMoveEvent(input03,input12,input22,input32,input4);
return;
}
if(funcindex == 4) {
var input04 = bytes.getInt32(4);
var input13 = bytes.getInt32(8);
this.sendWheelEvent(input04,input13);
return;
}
}
,__class__: kha_input_Mouse
});
var kha_input_MouseImpl = function() {
kha_input_Mouse.call(this);
};
$hxClasses["kha.input.MouseImpl"] = kha_input_MouseImpl;
kha_input_MouseImpl.__name__ = true;
kha_input_MouseImpl.__super__ = kha_input_Mouse;
kha_input_MouseImpl.prototype = $extend(kha_input_Mouse.prototype,{
hideSystemCursor: function() {
kha_SystemImpl.khanvas.style.cursor = "none";
}
,showSystemCursor: function() {
kha_SystemImpl.khanvas.style.cursor = "default";
}
,_receive: function(bytes) {
var funcindex = bytes.getInt32(0);
}
,__class__: kha_input_MouseImpl
});
var kha_input_Surface = $hx_exports["kha"]["input"]["Surface"] = function() {
this.touchStartListeners = [];
this.touchEndListeners = [];
this.moveListeners = [];
kha_input_Surface.instance = this;
};
$hxClasses["kha.input.Surface"] = kha_input_Surface;
kha_input_Surface.__name__ = true;
kha_input_Surface.get = function(num) {
if(num == null) {
num = 0;
}
if(num != 0) {
return null;
}
return kha_input_Surface.instance;
};
kha_input_Surface.prototype = {
notify: function(touchStartListener,touchEndListener,moveListener) {
if(touchStartListener != null) {
this.touchStartListeners.push(touchStartListener);
}
if(touchEndListener != null) {
this.touchEndListeners.push(touchEndListener);
}
if(moveListener != null) {
this.moveListeners.push(moveListener);
}
}
,remove: function(touchStartListener,touchEndListener,moveListener) {
if(touchStartListener != null) {
HxOverrides.remove(this.touchStartListeners,touchStartListener);
}
if(touchEndListener != null) {
HxOverrides.remove(this.touchEndListeners,touchEndListener);
}
if(moveListener != null) {
this.moveListeners.push(moveListener);
}
}
,touchStartListeners: null
,touchEndListeners: null
,moveListeners: null
,sendTouchStartEvent: function(index,x,y) {
var _g = 0;
var _g1 = this.touchStartListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(index,x,y);
}
}
,sendTouchEndEvent: function(index,x,y) {
var _g = 0;
var _g1 = this.touchEndListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(index,x,y);
}
}
,sendMoveEvent: function(index,x,y) {
var _g = 0;
var _g1 = this.moveListeners;
while(_g < _g1.length) {
var listener = _g1[_g];
++_g;
listener(index,x,y);
}
}
,__class__: kha_input_Surface
};
var kha_internal_BytesBlob = function(bytes) {
this.myFirstLine = true;
this.bytes = bytes;
this.buffer = [];
};
$hxClasses["kha.internal.BytesBlob"] = kha_internal_BytesBlob;
kha_internal_BytesBlob.__name__ = true;
kha_internal_BytesBlob.__interfaces__ = [kha_Resource];
kha_internal_BytesBlob.fromBytes = function(bytes) {
return new kha_internal_BytesBlob(bytes);
};
kha_internal_BytesBlob.alloc = function(size) {
return new kha_internal_BytesBlob(new haxe_io_Bytes(new ArrayBuffer(size)));
};
kha_internal_BytesBlob.readF32 = function(i) {
var sign = (i & -2147483648) == 0 ? 1 : -1;
var exp = i >> 23 & 255;
var man = i & 8388607;
switch(exp) {
case 0:
return 0.0;
case 255:
if(man != 0) {
return NaN;
} else if(sign > 0) {
return Infinity;
} else {
return -Infinity;
}
break;
default:
return sign * ((man + 8388608) / 8388608.0) * Math.pow(2,exp - 127);
}
};
kha_internal_BytesBlob.bit = function(value,position) {
var b = (value >>> position & 1) == 1;
if(b) {
var a = 3;
++a;
return true;
} else {
var c = 4;
--c;
return false;
}
};
kha_internal_BytesBlob.prototype = {
bytes: null
,buffer: null
,myFirstLine: null
,sub: function(start,length) {
return new kha_internal_BytesBlob(this.bytes.sub(start,length));
}
,length: null
,get_length: function() {
return this.bytes.length;
}
,writeU8: function(position,value) {
this.bytes.b[position] = value & 255;
}
,readU8: function(position) {
var $byte = this.bytes.b[position];
++position;
return $byte;
}
,readS8: function(position) {
var $byte = this.bytes.b[position];
++position;
var sign = ($byte & 128) == 0 ? 1 : -1;
$byte &= 127;
return sign * $byte;
}
,readU16BE: function(position) {
var first = this.bytes.b[position];
var second = this.bytes.b[position + 1];
position += 2;
return first * 256 + second;
}
,readU16LE: function(position) {
var first = this.bytes.b[position];
var second = this.bytes.b[position + 1];
position += 2;
return second * 256 + first;
}
,readU32LE: function(position) {
var fourth = this.bytes.b[position];
var third = this.bytes.b[position + 1];
var second = this.bytes.b[position + 2];
var first = this.bytes.b[position + 3];
position += 4;
return fourth + third * 256 + second * 256 * 256 + first * 256 * 256 * 256;
}
,readU32BE: function(position) {
var fourth = this.bytes.b[position];
var third = this.bytes.b[position + 1];
var second = this.bytes.b[position + 2];
var first = this.bytes.b[position + 3];
position += 4;
return first + second * 256 + third * 256 * 256 + fourth * 256 * 256 * 256;
}
,readS16BE: function(position) {
var first = this.bytes.b[position];
var second = this.bytes.b[position + 1];
position += 2;
var sign = (first & 128) == 0 ? 1 : -1;
first &= 127;
if(sign == -1) {
return -32767 + first * 256 + second;
} else {
return first * 256 + second;
}
}
,readS16LE: function(position) {
var first = this.bytes.b[position];
var second = this.bytes.b[position + 1];
var sign = (second & 128) == 0 ? 1 : -1;
second &= 127;
position += 2;
if(sign == -1) {
return -32767 + second * 256 + first;
} else {
return second * 256 + first;
}
}
,readS32LE: function(position) {
var fourth = this.bytes.b[position];
var third = this.bytes.b[position + 1];
var second = this.bytes.b[position + 2];
var first = this.bytes.b[position + 3];
var sign = (first & 128) == 0 ? 1 : -1;
first &= 127;
position += 4;
if(sign == -1) {
return -2147483647 + fourth + third * 256 + second * 256 * 256 + first * 256 * 256 * 256;
} else {
return fourth + third * 256 + second * 256 * 256 + first * 256 * 256 * 256;
}
}
,readS32BE: function(position) {
var fourth = this.bytes.b[position];
var third = this.bytes.b[position + 1];
var second = this.bytes.b[position + 2];
var first = this.bytes.b[position + 3];
var sign = (fourth & 128) == 0 ? 1 : -1;
fourth &= 127;
position += 4;
if(sign == -1) {
return -2147483647 + first + second * 256 + third * 256 * 256 + fourth * 256 * 256 * 256;
}
return first + second * 256 + third * 256 * 256 + fourth * 256 * 256 * 256;
}
,readF32LE: function(position) {
return kha_internal_BytesBlob.readF32(this.readS32LE(position));
}
,readF32BE: function(position) {
return kha_internal_BytesBlob.readF32(this.readS32BE(position));
}
,toString: function() {
return this.bytes.toString();
}
,readUtf8Char: function(position) {
if(position.value >= this.get_length()) {
return -1;
}
var c = this.readU8(position.value);
++position.value;
var value = 0;
if(!kha_internal_BytesBlob.bit(c,7)) {
value = c;
} else if(kha_internal_BytesBlob.bit(c,7) && kha_internal_BytesBlob.bit(c,6) && !kha_internal_BytesBlob.bit(c,5)) {
var a = c & 31;
var c2 = this.readU8(position.value);
++position.value;
var b = c2 & 63;
value = a << 6 | b;
} else if(kha_internal_BytesBlob.bit(c,7) && kha_internal_BytesBlob.bit(c,6) && kha_internal_BytesBlob.bit(c,5) && !kha_internal_BytesBlob.bit(c,4)) {
position.value += 2;
} else if(kha_internal_BytesBlob.bit(c,7) && kha_internal_BytesBlob.bit(c,6) && kha_internal_BytesBlob.bit(c,5) && kha_internal_BytesBlob.bit(c,4) && !kha_internal_BytesBlob.bit(c,3)) {
position.value += 3;
}
return value;
}
,readUtf8Block: function(position) {
var bufferindex = 0;
if(position.value >= this.get_length()) {
return "";
}
while(bufferindex < 2000) {
var c = this.readUtf8Char(position);
if(c < 0) {
break;
}
this.buffer[bufferindex] = c;
++bufferindex;
}
if(this.myFirstLine) {
this.myFirstLine = false;
if(bufferindex > 2 && this.buffer[0] == 239 && this.buffer[1] == 187 && this.buffer[2] == 191) {
var chars = [];
var _g1 = 3;
var _g = bufferindex - 3;
while(_g1 < _g) {
var i = _g1++;
chars[i - 3] = this.buffer[i];
}
return this.toText(chars,bufferindex - 3);
}
}
var chars1 = [];
var _g11 = 0;
var _g2 = bufferindex;
while(_g11 < _g2) {
var i1 = _g11++;
chars1[i1] = this.buffer[i1];
}
return this.toText(chars1,bufferindex);
}
,toText: function(chars,length) {
var value = "";
var _g1 = 0;
var _g = length;
while(_g1 < _g) {
var i = _g1++;
value += String.fromCharCode(chars[i]);
}
return value;
}
,readUtf8String: function() {
var text = "";
var position = { value : 0};
while(position.value < this.get_length()) text += this.readUtf8Block(position);
return text;
}
,toBytes: function() {
return this.bytes;
}
,unload: function() {
this.bytes = null;
}
,__class__: kha_internal_BytesBlob
};
var kha_internal_HdrFormat = function() {
};
$hxClasses["kha.internal.HdrFormat"] = kha_internal_HdrFormat;
kha_internal_HdrFormat.__name__ = true;
kha_internal_HdrFormat.readBuf = function(buf) {
var bytesRead = 0;
while(true) {
buf[bytesRead++] = kha_internal_HdrFormat.buffer[kha_internal_HdrFormat.fileOffset] & 255;
if(!(++kha_internal_HdrFormat.fileOffset < kha_internal_HdrFormat.bufferLength && bytesRead < buf.length)) {
break;
}
}
return bytesRead;
};
kha_internal_HdrFormat.readBufOffset = function(buf,offset,length) {
var bytesRead = 0;
while(true) {
buf[offset + bytesRead++] = kha_internal_HdrFormat.buffer[kha_internal_HdrFormat.fileOffset] & 255;
if(!(++kha_internal_HdrFormat.fileOffset < kha_internal_HdrFormat.bufferLength && bytesRead < length)) {
break;
}
}
return bytesRead;
};
kha_internal_HdrFormat.readPixelsRaw = function(buffer,data,offset,numpixels) {
var numExpected = 4 * numpixels;
var numRead = kha_internal_HdrFormat.readBufOffset(data,offset,numExpected);
if(numRead < numExpected) {
haxe_Log.trace("Error reading raw pixels: got " + numRead + " bytes, expected " + numExpected,{ fileName : "HdrFormat.hx", lineNumber : 43, className : "kha.internal.HdrFormat", methodName : "readPixelsRaw"});
return;
}
};
kha_internal_HdrFormat.readPixelsRawRLE = function(buffer,data,offset,scanline_width,num_scanlines) {
var this1 = new Uint8Array(4);
var rgbe = this1;
var scanline_buffer = null;
var ptr;
var ptr_end;
var count;
var this2 = new Uint8Array(2);
var buf = this2;
var bufferLength = buffer.length;
while(num_scanlines > 0) {
if(kha_internal_HdrFormat.readBuf(rgbe) < rgbe.length) {
haxe_Log.trace("Error reading bytes: expected " + rgbe.length,{ fileName : "HdrFormat.hx", lineNumber : 59, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"});
return;
}
if(rgbe[0] != 2 || rgbe[1] != 2 || (rgbe[2] & 128) != 0) {
data[offset++] = rgbe[0] & 255;
data[offset++] = rgbe[1] & 255;
data[offset++] = rgbe[2] & 255;
data[offset++] = rgbe[3] & 255;
kha_internal_HdrFormat.readPixelsRaw(buffer,data,offset,scanline_width * num_scanlines - 1);
return;
}
if(((rgbe[2] & 255) << 8 | rgbe[3] & 255) != scanline_width) {
haxe_Log.trace("Wrong scanline width " + ((rgbe[2] & 255) << 8 | rgbe[3] & 255) + ", expected " + scanline_width,{ fileName : "HdrFormat.hx", lineNumber : 74, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"});
return;
}
if(scanline_buffer == null) {
var this3 = new Uint8Array(4 * scanline_width);
scanline_buffer = this3;
}
ptr = 0;
var _g = 0;
while(_g < 4) {
var i = _g++;
ptr_end = (i + 1) * scanline_width;
while(ptr < ptr_end) {
if(kha_internal_HdrFormat.readBuf(buf) < buf.length) {
haxe_Log.trace("Error reading 2-byte buffer",{ fileName : "HdrFormat.hx", lineNumber : 88, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"});
return;
}
if((buf[0] & 255) > 128) {
count = (buf[0] & 255) - 128;
if(count == 0 || count > ptr_end - ptr) {
haxe_Log.trace("Bad scanline data",{ fileName : "HdrFormat.hx", lineNumber : 95, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"});
return;
}
while(count-- > 0) scanline_buffer[ptr++] = buf[1] & 255;
} else {
count = buf[0] & 255;
if(count == 0 || count > ptr_end - ptr) {
haxe_Log.trace("Bad scanline data",{ fileName : "HdrFormat.hx", lineNumber : 106, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"});
return;
}
scanline_buffer[ptr++] = buf[1] & 255;
if(--count > 0) {
if(kha_internal_HdrFormat.readBufOffset(scanline_buffer,ptr,count) < count) {
haxe_Log.trace("Error reading non-run data",{ fileName : "HdrFormat.hx", lineNumber : 112, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"});
return;
}
ptr += count;
}
}
}
}
var _g1 = 0;
var _g2 = scanline_width;
while(_g1 < _g2) {
var i1 = _g1++;
data[offset] = scanline_buffer[i1] & 255;
data[offset + 1] = scanline_buffer[i1 + scanline_width] & 255;
data[offset + 2] = scanline_buffer[i1 + 2 * scanline_width] & 255;
data[offset + 3] = scanline_buffer[i1 + 3 * scanline_width] & 255;
offset += 4;
}
--num_scanlines;
}
};
kha_internal_HdrFormat.readLine = function() {
var buf = "";
while(true) {
var b = kha_internal_HdrFormat.buffer[kha_internal_HdrFormat.fileOffset];
if(b == 10) {
++kha_internal_HdrFormat.fileOffset;
break;
}
buf += String.fromCharCode(b);
if(!(++kha_internal_HdrFormat.fileOffset < kha_internal_HdrFormat.bufferLength)) {
break;
}
}
return buf;
};
kha_internal_HdrFormat.parse = function(bytes) {
kha_internal_HdrFormat.buffer = haxe_io__$UInt8Array_UInt8Array_$Impl_$.fromBytes(bytes);
kha_internal_HdrFormat.bufferLength = kha_internal_HdrFormat.buffer.length;
kha_internal_HdrFormat.fileOffset = 0;
var width = 0;
var height = 0;
var exposure = 1.0;
var gamma = 1.0;
var rle = false;
var _g = 0;
while(_g < 20) {
var i = _g++;
var line = kha_internal_HdrFormat.readLine();
if(kha_internal_HdrFormat.formatPattern.match(line)) {
rle = true;
} else if(kha_internal_HdrFormat.exposurePattern.match(line)) {
exposure = parseFloat(kha_internal_HdrFormat.exposurePattern.matched(1));
} else if(kha_internal_HdrFormat.widthHeightPattern.match(line)) {
height = Std.parseInt(kha_internal_HdrFormat.widthHeightPattern.matched(1));
width = Std.parseInt(kha_internal_HdrFormat.widthHeightPattern.matched(2));
break;
}
}
if(!rle) {
haxe_Log.trace("File is not run length encoded!",{ fileName : "HdrFormat.hx", lineNumber : 175, className : "kha.internal.HdrFormat", methodName : "parse"});
return null;
}
var this1 = new Uint8Array(width * height * 4);
var data = this1;
var scanline_width = width;
var num_scanlines = height;
kha_internal_HdrFormat.readPixelsRawRLE(kha_internal_HdrFormat.buffer,data,0,scanline_width,num_scanlines);
var this2 = new Float32Array(width * height * 4);
var floatData = this2;
var offset = 0;
while(offset < data.length) {
var r = data[offset] / 255;
var g = data[offset + 1] / 255;
var b = data[offset + 2] / 255;
var e = data[offset + 3];
var f = Math.pow(2.0,e - 128.0);
r *= f;
g *= f;
b *= f;
floatData[offset] = r;
floatData[offset + 1] = g;
floatData[offset + 2] = b;
floatData[offset + 3] = 1.0;
offset += 4;
}
return { width : width, height : height, data : floatData};
};
kha_internal_HdrFormat.prototype = {
__class__: kha_internal_HdrFormat
};
var kha_js_AEAudioChannel = function(element) {
this.stopped = false;
this.element = element;
};
$hxClasses["kha.js.AEAudioChannel"] = kha_js_AEAudioChannel;
kha_js_AEAudioChannel.__name__ = true;
kha_js_AEAudioChannel.__interfaces__ = [kha_audio1_AudioChannel];
kha_js_AEAudioChannel.prototype = {
element: null
,stopped: null
,play: function() {
this.stopped = false;
if(kha_SystemImpl.mobile) {
if(kha_SystemImpl.insideInputEvent) {
this.element.play();
kha_SystemImpl.mobileAudioPlaying = true;
} else if(kha_SystemImpl.mobileAudioPlaying) {
this.element.play();
} else {
kha_js_AEAudioChannel.todo.push(this);
}
} else {
this.element.play();
}
}
,pause: function() {
try {
this.element.pause();
} catch( e ) {
if (e instanceof js__$Boot_HaxeError) e = e.val;
haxe_Log.trace(e,{ fileName : "AEAudioChannel.hx", lineNumber : 39, className : "kha.js.AEAudioChannel", methodName : "pause"});
}
}
,stop: function() {
try {
this.element.pause();
this.element.currentTime = 0;
this.stopped = true;
} catch( e ) {
if (e instanceof js__$Boot_HaxeError) e = e.val;
haxe_Log.trace(e,{ fileName : "AEAudioChannel.hx", lineNumber : 50, className : "kha.js.AEAudioChannel", methodName : "stop"});
}
}
,length: null
,get_length: function() {
if(isFinite(this.element.duration)) {
return this.element.duration;
} else {
return Infinity;
}
}
,position: null
,get_position: function() {
return this.element.currentTime;
}
,get_volume: function() {
return this.element.volume;
}
,set_volume: function(value) {
return this.element.volume = value;
}
,finished: null
,get_finished: function() {
if(!this.stopped) {
return this.get_position() >= this.get_length();
} else {
return true;
}
}
,__class__: kha_js_AEAudioChannel
};
var kha_js_AudioElementAudio = function() { };
$hxClasses["kha.js.AudioElementAudio"] = kha_js_AudioElementAudio;
kha_js_AudioElementAudio.__name__ = true;
kha_js_AudioElementAudio._compile = function() {
};
kha_js_AudioElementAudio.play = function(sound,loop) {
if(loop == null) {
loop = false;
}
return kha_js_AudioElementAudio.stream(sound,loop);
};
kha_js_AudioElementAudio.stream = function(sound,loop) {
if(loop == null) {
loop = false;
}
sound.element.loop = loop;
var channel = new kha_js_AEAudioChannel(sound.element);
channel.play();
return channel;
};
var kha_js_CanvasGraphics = function(canvas) {
kha_graphics2_Graphics.call(this);
this.canvas = canvas;
kha_js_CanvasGraphics.instance = this;
this.myColor = kha__$Color_Color_$Impl_$.fromBytes(0,0,0);
canvas.save();
};
$hxClasses["kha.js.CanvasGraphics"] = kha_js_CanvasGraphics;
kha_js_CanvasGraphics.__name__ = true;
kha_js_CanvasGraphics.stringWidth = function(font,text) {
if(kha_js_CanvasGraphics.instance == null) {
return 5 * text.length;
} else {
kha_js_CanvasGraphics.instance.set_font(font);
return kha_js_CanvasGraphics.instance.canvas.measureText(text).width;
}
};
kha_js_CanvasGraphics.__super__ = kha_graphics2_Graphics;
kha_js_CanvasGraphics.prototype = $extend(kha_graphics2_Graphics.prototype,{
canvas: null
,webfont: null
,myColor: null
,scaleQuality: null
,begin: function(clear,clearColor) {
if(clear == null) {
clear = true;
}
if(clear) {
this.clear(clearColor);
}
}
,clear: function(color) {
if(color == null) {
color = 0;
}
this.canvas.strokeStyle = "rgba(" + ((color & 16711680) >>> 16) + "," + ((color & 65280) >>> 8) + "," + (color & 255) + "," + (color >>> 24) * 0.00392156862745098 + ")";
this.canvas.fillStyle = "rgba(" + ((color & 16711680) >>> 16) + "," + ((color & 65280) >>> 8) + "," + (color & 255) + "," + (color >>> 24) * 0.00392156862745098 + ")";
if((color >>> 24) * 0.00392156862745098 == 0) {
this.canvas.clearRect(0,0,this.canvas.canvas.width,this.canvas.canvas.height);
} else {
this.canvas.fillRect(0,0,this.canvas.canvas.width,this.canvas.canvas.height);
}
this.set_color(this.myColor);
}
,end: function() {
}
,drawImage: function(img,x,y) {
this.canvas.globalAlpha = this.get_opacity();
this.canvas.drawImage((js_Boot.__cast(img , kha_CanvasImage)).image,x,y);
this.canvas.globalAlpha = 1;
}
,drawScaledSubImage: function(image,sx,sy,sw,sh,dx,dy,dw,dh) {
this.canvas.globalAlpha = this.get_opacity();
try {
if(dw < 0 || dh < 0) {
this.canvas.save();
this.canvas.translate(dx,dy);
var x = 0.0;
var y = 0.0;
if(dw < 0) {
this.canvas.scale(-1,1);
x = -dw;
}
if(dh < 0) {
this.canvas.scale(1,-1);
y = -dh;
}
this.canvas.drawImage((js_Boot.__cast(image , kha_CanvasImage)).image,sx,sy,sw,sh,x,y,dw,dh);
this.canvas.restore();
} else {
this.canvas.drawImage((js_Boot.__cast(image , kha_CanvasImage)).image,sx,sy,sw,sh,dx,dy,dw,dh);
}
} catch( ex ) {
}
this.canvas.globalAlpha = 1;
}
,set_color: function(color) {
this.myColor = color;
this.canvas.strokeStyle = "rgba(" + ((color & 16711680) >>> 16) + "," + ((color & 65280) >>> 8) + "," + (color & 255) + "," + (color >>> 24) * 0.00392156862745098 + ")";
this.canvas.fillStyle = "rgba(" + ((color & 16711680) >>> 16) + "," + ((color & 65280) >>> 8) + "," + (color & 255) + "," + (color >>> 24) * 0.00392156862745098 + ")";
return color;
}
,get_color: function() {
return this.myColor;
}
,get_imageScaleQuality: function() {
return this.scaleQuality;
}
,set_imageScaleQuality: function(value) {
if(value == kha_graphics2_ImageScaleQuality.Low) {
this.canvas.mozImageSmoothingEnabled = false;
this.canvas.webkitImageSmoothingEnabled = false;
this.canvas.msImageSmoothingEnabled = false;
this.canvas.imageSmoothingEnabled = false;
} else {
this.canvas.mozImageSmoothingEnabled = true;
this.canvas.webkitImageSmoothingEnabled = true;
this.canvas.msImageSmoothingEnabled = true;
this.canvas.imageSmoothingEnabled = true;
}
return this.scaleQuality = value;
}
,drawRect: function(x,y,width,height,strength) {
if(strength == null) {
strength = 1.0;
}
this.canvas.beginPath();
var oldStrength = this.canvas.lineWidth;
this.canvas.lineWidth = Math.round(strength);
this.canvas.rect(x,y,width,height);
this.canvas.stroke();
this.canvas.lineWidth = oldStrength;
}
,fillRect: function(x,y,width,height) {
var tmp = this.get_opacity();
this.canvas.globalAlpha = tmp * ((this.myColor >>> 24) * 0.00392156862745098);
this.canvas.fillRect(x,y,width,height);
this.canvas.globalAlpha = this.get_opacity();
}
,drawCircle: function(cx,cy,radius,strength) {
if(strength == null) {
strength = 1.0;
}
this.canvas.beginPath();
var oldStrength = this.canvas.lineWidth;
this.canvas.lineWidth = Math.round(strength);
this.canvas.arc(cx,cy,radius,0,2 * Math.PI,false);
this.canvas.stroke();
this.canvas.lineWidth = oldStrength;
}
,fillCircle: function(cx,cy,radius) {
this.canvas.beginPath();
this.canvas.arc(cx,cy,radius,0,2 * Math.PI,false);
this.canvas.fill();
}
,drawString: function(text,x,y) {
var image = this.webfont.getImage(this.get_fontSize(),this.myColor);
if(image.width > 0) {
var xpos = x;
var ypos = y;
var _g1 = 0;
var _g = text.length;
while(_g1 < _g) {
var i = _g1++;
var q = this.webfont.kravur._get(this.get_fontSize()).getBakedQuad(HxOverrides.cca(text,i) - 32,xpos,ypos);
if(q != null) {
if(q.s1 - q.s0 > 0 && q.t1 - q.t0 > 0 && q.x1 - q.x0 > 0 && q.y1 - q.y0 > 0) {
this.canvas.drawImage(image,q.s0 * image.width,q.t0 * image.height,(q.s1 - q.s0) * image.width,(q.t1 - q.t0) * image.height,q.x0,q.y0,q.x1 - q.x0,q.y1 - q.y0);
}
xpos += q.xadvance;
}
}
}
}
,set_font: function(font) {
this.webfont = js_Boot.__cast(font , kha_js_Font);
return this.webfont;
}
,get_font: function() {
return this.webfont;
}
,drawLine: function(x1,y1,x2,y2,strength) {
if(strength == null) {
strength = 1.0;
}
this.canvas.beginPath();
var oldWith = this.canvas.lineWidth;
this.canvas.lineWidth = Math.round(strength);
this.canvas.moveTo(x1,y1);
this.canvas.lineTo(x2,y2);
this.canvas.moveTo(0,0);
this.canvas.stroke();
this.canvas.lineWidth = oldWith;
}
,fillTriangle: function(x1,y1,x2,y2,x3,y3) {
this.canvas.beginPath();
this.canvas.closePath();
this.canvas.fill();
}
,scissor: function(x,y,width,height) {
this.canvas.beginPath();
this.canvas.rect(x,y,width,height);
this.canvas.clip();
}
,disableScissor: function() {
this.canvas.restore();
}
,drawVideo: function(video,x,y,width,height) {
this.canvas.drawImage((js_Boot.__cast(video , kha_js_Video)).element,x,y,width,height);
}
,setTransformation: function(transformation) {
this.canvas.setTransform(transformation._00,transformation._01,transformation._10,transformation._11,transformation._20,transformation._21);
}
,__class__: kha_js_CanvasGraphics
});
var kha_js_URLParser = function(url) {
this._parts = null;
this._parts = ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];
this.url = url;
var r = new EReg("^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?://)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)","");
r.match(url);
var _g1 = 0;
var _g = this._parts.length;
while(_g1 < _g) {
var i = _g1++;
this[this._parts[i]] = r.matched(i);
}
};
$hxClasses["kha.js.URLParser"] = kha_js_URLParser;
kha_js_URLParser.__name__ = true;
kha_js_URLParser.parse = function(url) {
return new kha_js_URLParser(url);
};
kha_js_URLParser.prototype = {
url: null
,source: null
,protocol: null
,authority: null
,userInfo: null
,user: null
,password: null
,host: null
,port: null
,relative: null
,path: null
,directory: null
,file: null
,query: null
,anchor: null
,_parts: null
,toString: function() {
var s = "For Url -> " + this.url + "\n";
var _g1 = 0;
var _g = this._parts.length;
while(_g1 < _g) {
var i = _g1++;
s += this._parts[i] + ": " + Std.string(Reflect.field(this,this._parts[i])) + (i == this._parts.length - 1 ? "" : "\n");
}
return s;
}
,__class__: kha_js_URLParser
};
var kha_js_EnvironmentVariables = function() {
kha_EnvironmentVariables.call(this);
};
$hxClasses["kha.js.EnvironmentVariables"] = kha_js_EnvironmentVariables;
kha_js_EnvironmentVariables.__name__ = true;
kha_js_EnvironmentVariables.__super__ = kha_EnvironmentVariables;
kha_js_EnvironmentVariables.prototype = $extend(kha_EnvironmentVariables.prototype,{
getVariable: function(name) {
var parser = new kha_js_URLParser(window.location.href);
var query = parser.query;
var parts = query.split("&");
var _g = 0;
while(_g < parts.length) {
var part = parts[_g];
++_g;
var subparts = part.split("=");
if(subparts[0] == name) {
return subparts[1];
}
}
haxe_Log.trace("Environment variables requested.",{ fileName : "EnvironmentVariables.hx", lineNumber : 90, className : "kha.js.EnvironmentVariables", methodName : "getVariable"});
return "";
}
,__class__: kha_js_EnvironmentVariables
});
var kha_js_Font = function(kravur) {
this.images = new haxe_ds_IntMap();
this.kravur = kravur;
};
$hxClasses["kha.js.Font"] = kha_js_Font;
kha_js_Font.__name__ = true;
kha_js_Font.__interfaces__ = [kha_Font];
kha_js_Font.prototype = {
kravur: null
,images: null
,height: function(fontSize) {
return this.kravur._get(fontSize).getHeight();
}
,width: function(fontSize,str) {
return this.kravur._get(fontSize).stringWidth(str);
}
,baseline: function(fontSize) {
return this.kravur._get(fontSize).getBaselinePosition();
}
,getImage: function(fontSize,color) {
if(!this.images.h.hasOwnProperty(fontSize)) {
var this1 = this.images;
var v = new haxe_ds_IntMap();
this1.h[fontSize] = v;
}
if(!this.images.h[fontSize].h.hasOwnProperty(color)) {
var kravur = this.kravur._get(fontSize);
var canvas = window.document.createElement("canvas");
canvas.width = kravur.width;
canvas.height = kravur.height;
var ctx = canvas.getContext("2d");
ctx.fillStyle = "black";
ctx.fillRect(0,0,kravur.width,kravur.height);
var imageData = ctx.getImageData(0,0,kravur.width,kravur.height);
var bytes = (js_Boot.__cast(kravur.getTexture() , kha_CanvasImage)).bytes;
var _g1 = 0;
var _g = bytes.length;
while(_g1 < _g) {
var i = _g1++;
imageData.data[i * 4] = (color & 16711680) >>> 16;
imageData.data[i * 4 + 1] = (color & 65280) >>> 8;
imageData.data[i * 4 + 2] = color & 255;
imageData.data[i * 4 + 3] = bytes.b[i];
}
ctx.putImageData(imageData,0,0);
var img = window.document.createElement("img");
img.src = canvas.toDataURL("image/png");
this.images.h[fontSize].h[color] = img;
return img;
}
return this.images.h[fontSize].h[color];
}
,unload: function() {
this.kravur = null;
this.images = null;
}
,__class__: kha_js_Font
};
var kha_js_MobileWebAudio = function() { };
$hxClasses["kha.js.MobileWebAudio"] = kha_js_MobileWebAudio;
kha_js_MobileWebAudio.__name__ = true;
kha_js_MobileWebAudio._init = function() {
try {
kha_js_MobileWebAudio._context = new AudioContext();
return;
} catch( e ) {
}
try {
this._context = new webkitAudioContext();
return;
} catch( e1 ) {
}
};
kha_js_MobileWebAudio.play = function(sound,loop) {
if(loop == null) {
loop = false;
}
var channel = new kha_js_MobileWebAudioChannel(sound,loop);
channel.play();
return channel;
};
kha_js_MobileWebAudio.stream = function(sound,loop) {
if(loop == null) {
loop = false;
}
return kha_js_MobileWebAudio.play(sound,loop);
};
var kha_js_MobileWebAudioChannel = function(sound,loop) {
this.stopped = false;
this.paused = false;
this.buffer = sound._buffer;
this.loop = loop;
this.createSource();
};
$hxClasses["kha.js.MobileWebAudioChannel"] = kha_js_MobileWebAudioChannel;
kha_js_MobileWebAudioChannel.__name__ = true;
kha_js_MobileWebAudioChannel.__interfaces__ = [kha_audio1_AudioChannel];
kha_js_MobileWebAudioChannel.prototype = {
buffer: null
,loop: null
,source: null
,gain: null
,startTime: null
,pauseTime: null
,paused: null
,stopped: null
,createSource: function() {
var _gthis = this;
this.source = kha_js_MobileWebAudio._context.createBufferSource();
this.source.loop = this.loop;
this.source.buffer = this.buffer;
this.source.onended = function() {
_gthis.stopped = true;
};
this.gain = kha_js_MobileWebAudio._context.createGain();
this.source.connect(this.gain);
this.gain.connect(kha_js_MobileWebAudio._context.destination);
}
,play: function() {
if(this.paused || this.stopped) {
this.createSource();
}
this.stopped = false;
if(this.paused) {
this.paused = false;
this.startTime = kha_js_MobileWebAudio._context.currentTime - this.pauseTime;
this.source.start(0,this.pauseTime);
} else {
this.startTime = kha_js_MobileWebAudio._context.currentTime;
this.source.start();
}
}
,pause: function() {
this.pauseTime = kha_js_MobileWebAudio._context.currentTime - this.startTime;
this.paused = true;
this.source.stop();
}
,stop: function() {
this.paused = false;
this.stopped = true;
this.source.stop();
}
,length: null
,get_length: function() {
return this.source.buffer.duration;
}
,position: null
,get_position: function() {
if(this.stopped) {
return this.get_length();
}
if(this.paused) {
return this.pauseTime;
} else {
return kha_js_MobileWebAudio._context.currentTime - this.startTime;
}
}
,get_volume: function() {
return this.gain.gain.value;
}
,set_volume: function(value) {
return this.gain.gain.value = value;
}
,finished: null
,get_finished: function() {
return this.stopped;
}
,__class__: kha_js_MobileWebAudioChannel
};
var kha_js_MobileWebAudioSound = function(filename,done) {
var _gthis = this;
kha_Sound.call(this);
var request = new XMLHttpRequest();
request.open("GET",filename,true);
request.responseType = "arraybuffer";
request.onerror = function() {
haxe_Log.trace("Error loading " + filename,{ fileName : "MobileWebAudioSound.hx", lineNumber : 25, className : "kha.js.MobileWebAudioSound", methodName : "new"});
};
request.onload = function() {
_gthis.compressedData = haxe_io_Bytes.ofData(request.response);
_gthis.uncompressedData = null;
kha_js_MobileWebAudio._context.decodeAudioData(_gthis.compressedData.b.bufferValue,function(buffer) {
_gthis._buffer = buffer;
done(_gthis);
},function() {
throw new js__$Boot_HaxeError("Audio format not supported");
});
};
request.send(null);
};
$hxClasses["kha.js.MobileWebAudioSound"] = kha_js_MobileWebAudioSound;
kha_js_MobileWebAudioSound.__name__ = true;
kha_js_MobileWebAudioSound.__super__ = kha_Sound;
kha_js_MobileWebAudioSound.prototype = $extend(kha_Sound.prototype,{
_buffer: null
,uncompress: function(done) {
done();
}
,__class__: kha_js_MobileWebAudioSound
});
var kha_js_Sound = function(filenames,done) {
kha_Sound.call(this);
this.done = done;
kha_js_Sound.loading.push(this);
this.element = window.document.createElement("audio");
this.filenames = [];
var _g = 0;
while(_g < filenames.length) {
var filename = filenames[_g];
++_g;
if(this.element.canPlayType("audio/ogg") != "" && StringTools.endsWith(filename,".ogg")) {
this.filenames.push(filename);
}
if(this.element.canPlayType("audio/mp4") != "" && StringTools.endsWith(filename,".mp4")) {
this.filenames.push(filename);
}
}
this.element.addEventListener("error",$bind(this,this.errorListener),false);
this.element.addEventListener("canplay",$bind(this,this.canPlayThroughListener),false);
this.element.src = this.filenames[0];
this.element.preload = "auto";
this.element.load();
};
$hxClasses["kha.js.Sound"] = kha_js_Sound;
kha_js_Sound.__name__ = true;
kha_js_Sound.__super__ = kha_Sound;
kha_js_Sound.prototype = $extend(kha_Sound.prototype,{
filenames: null
,done: null
,element: null
,errorListener: function(eventInfo) {
if(this.element.error.code == 4) {
var _g1 = 0;
var _g = this.filenames.length - 1;
while(_g1 < _g) {
var i = _g1++;
if(this.element.src == this.filenames[i]) {
this.element.src = this.filenames[i + 1];
return;
}
}
}
haxe_Log.trace("Error loading " + this.element.src,{ fileName : "Sound.hx", lineNumber : 108, className : "kha.js.Sound", methodName : "errorListener"});
window.console.log("loadSound failed");
this.finishAsset();
}
,canPlayThroughListener: function(eventInfo) {
this.finishAsset();
}
,finishAsset: function() {
this.element.removeEventListener("error",$bind(this,this.errorListener),false);
this.element.removeEventListener("canplaythrough",$bind(this,this.canPlayThroughListener),false);
this.done(this);
HxOverrides.remove(kha_js_Sound.loading,this);
}
,uncompress: function(done) {
done();
}
,__class__: kha_js_Sound
});
var kha_js_Video = function(filenames,done) {
kha_Video.call(this);
this.done = done;
kha_js_Video.loading.add(this);
this.element = window.document.createElement("video");
this.filenames = [];
var _g = 0;
while(_g < filenames.length) {
var filename = filenames[_g];
++_g;
if(this.element.canPlayType("video/webm") != "" && StringTools.endsWith(filename,".webm")) {
this.filenames.push(filename);
}
if(this.element.canPlayType("video/mp4") != "" && StringTools.endsWith(filename,".mp4")) {
this.filenames.push(filename);
}
}
this.element.addEventListener("error",$bind(this,this.errorListener),false);
this.element.addEventListener("canplaythrough",$bind(this,this.canPlayThroughListener),false);
this.element.preload = "auto";
this.element.src = this.filenames[0];
};
$hxClasses["kha.js.Video"] = kha_js_Video;
kha_js_Video.__name__ = true;
kha_js_Video.__super__ = kha_Video;
kha_js_Video.prototype = $extend(kha_Video.prototype,{
filenames: null
,element: null
,done: null
,texture: null
,width: function() {
return this.element.videoWidth;
}
,height: function() {
return this.element.videoHeight;
}
,play: function(loop) {
if(loop == null) {
loop = false;
}
try {
this.element.loop = loop;
this.element.play();
} catch( e ) {
if (e instanceof js__$Boot_HaxeError) e = e.val;
haxe_Log.trace(e,{ fileName : "Video.hx", lineNumber : 55, className : "kha.js.Video", methodName : "play"});
}
}
,pause: function() {
try {
this.element.pause();
} catch( e ) {
if (e instanceof js__$Boot_HaxeError) e = e.val;
haxe_Log.trace(e,{ fileName : "Video.hx", lineNumber : 64, className : "kha.js.Video", methodName : "pause"});
}
}
,stop: function() {
try {
this.element.pause();
this.element.currentTime = 0;
} catch( e ) {
if (e instanceof js__$Boot_HaxeError) e = e.val;
haxe_Log.trace(e,{ fileName : "Video.hx", lineNumber : 74, className : "kha.js.Video", methodName : "stop"});
}
}
,getCurrentPos: function() {
return Math.ceil(this.element.currentTime * 1000);
}
,get_position: function() {
return Math.ceil(this.element.currentTime * 1000);
}
,set_position: function(value) {
this.element.currentTime = value / 1000;
return value;
}
,getLength: function() {
if(isFinite(this.element.duration)) {
return Math.floor(this.element.duration * 1000);
} else {
return -1;
}
}
,errorListener: function(eventInfo) {
if(this.element.error.code == 4) {
var _g1 = 0;
var _g = this.filenames.length - 1;
while(_g1 < _g) {
var i = _g1++;
if(this.element.src == this.filenames[i]) {
this.element.src = this.filenames[i + 1];
return;
}
}
}
haxe_Log.trace("Error loading " + this.element.src,{ fileName : "Video.hx", lineNumber : 111, className : "kha.js.Video", methodName : "errorListener"});
this.finishAsset();
}
,canPlayThroughListener: function(eventInfo) {
this.finishAsset();
}
,finishAsset: function() {
this.element.removeEventListener("error",$bind(this,this.errorListener),false);
this.element.removeEventListener("canplaythrough",$bind(this,this.canPlayThroughListener),false);
if(kha_SystemImpl.gl != null) {
this.texture = kha_Image.fromVideo(this);
}
this.done(this);
kha_js_Video.loading.remove(this);
}
,__class__: kha_js_Video
});
var kha_js_WebAudioSound = function(filename,done) {
var _gthis = this;
kha_Sound.call(this);
var request = new XMLHttpRequest();
request.open("GET",filename,true);
request.responseType = "arraybuffer";
request.onerror = function() {
haxe_Log.trace("Error loading " + filename,{ fileName : "WebAudioSound.hx", lineNumber : 76, className : "kha.js.WebAudioSound", methodName : "new"});
};
request.onload = function() {
_gthis.compressedData = haxe_io_Bytes.ofData(request.response);
_gthis.uncompressedData = null;
done(_gthis);
};
request.send(null);
};
$hxClasses["kha.js.WebAudioSound"] = kha_js_WebAudioSound;
kha_js_WebAudioSound.__name__ = true;
kha_js_WebAudioSound.__super__ = kha_Sound;
kha_js_WebAudioSound.prototype = $extend(kha_Sound.prototype,{
superUncompress: function(done) {
kha_Sound.prototype.uncompress.call(this,done);
}
,uncompress: function(done) {
var _gthis = this;
kha_audio2_Audio._context.decodeAudioData(this.compressedData.b.bufferValue,function(buffer) {
var length = buffer.getChannelData(0).length * 2;
var this1 = new Array(length);
_gthis.uncompressedData = this1;
if(buffer.numberOfChannels == 1) {
var _g1 = 0;
var _g = buffer.getChannelData(0).length;
while(_g1 < _g) {
var i = _g1++;
_gthis.uncompressedData[i * 2] = buffer.getChannelData(0)[i];
_gthis.uncompressedData[i * 2 + 1] = buffer.getChannelData(0)[i];
}
} else {
var _g11 = 0;
var _g2 = buffer.getChannelData(0).length;
while(_g11 < _g2) {
var i1 = _g11++;
_gthis.uncompressedData[i1 * 2] = buffer.getChannelData(0)[i1];
_gthis.uncompressedData[i1 * 2 + 1] = buffer.getChannelData(1)[i1];
}
}
_gthis.compressedData = null;
done();
},function() {
_gthis.superUncompress(done);
});
}
,__class__: kha_js_WebAudioSound
});
var kha_js_graphics4_ConstantLocation = function(value,type) {
this.value = value;
this.type = type;
};
$hxClasses["kha.js.graphics4.ConstantLocation"] = kha_js_graphics4_ConstantLocation;
kha_js_graphics4_ConstantLocation.__name__ = true;
kha_js_graphics4_ConstantLocation.__interfaces__ = [kha_graphics4_ConstantLocation];
kha_js_graphics4_ConstantLocation.prototype = {
value: null
,type: null
,__class__: kha_js_graphics4_ConstantLocation
};
var kha_js_graphics4_Graphics = function(renderTarget) {
var this1 = new Array(9);
this.matrix3Cache = this1;
var this11 = new Array(16);
this.matrixCache = this11;
this.isDepthAttachment = false;
this.isCubeMap = false;
this.colorMaskAlpha = true;
this.colorMaskBlue = true;
this.colorMaskGreen = true;
this.colorMaskRed = true;
this.depthMask = false;
this.depthTest = false;
this.renderTarget = renderTarget;
this.init();
if(kha_SystemImpl.gl2) {
this.instancedExtension = true;
} else {
this.instancedExtension = kha_SystemImpl.gl.getExtension("ANGLE_instanced_arrays");
this.blendMinMaxExtension = kha_SystemImpl.gl.getExtension("EXT_blend_minmax");
}
};
$hxClasses["kha.js.graphics4.Graphics"] = kha_js_graphics4_Graphics;
kha_js_graphics4_Graphics.__name__ = true;
kha_js_graphics4_Graphics.__interfaces__ = [kha_graphics4_Graphics];
kha_js_graphics4_Graphics.getBlendFunc = function(factor) {
switch(factor[1]) {
case 0:case 2:
return 0;
case 1:
return 1;
case 3:
return 770;
case 4:
return 772;
case 5:
return 771;
case 6:
return 773;
case 7:
return 768;
case 8:
return 774;
case 9:
return 769;
case 10:
return 775;
}
};
kha_js_graphics4_Graphics.getBlendOp = function(op) {
switch(op[1]) {
case 0:
return 32774;
case 1:
return 32778;
case 2:
return 32779;
case 3:
return 32775;
case 4:
return 32776;
}
};
kha_js_graphics4_Graphics.prototype = {
depthTest: null
,depthMask: null
,colorMaskRed: null
,colorMaskGreen: null
,colorMaskBlue: null
,colorMaskAlpha: null
,indicesCount: null
,renderTarget: null
,renderTargetFrameBuffer: null
,renderTargetTexture: null
,isCubeMap: null
,isDepthAttachment: null
,instancedExtension: null
,blendMinMaxExtension: null
,init: function() {
if(this.renderTarget == null) {
return;
}
this.isCubeMap = js_Boot.__instanceof(this.renderTarget,kha_graphics4_CubeMap);
if(this.isCubeMap) {
var cubeMap = js_Boot.__cast(this.renderTarget , kha_graphics4_CubeMap);
this.renderTargetFrameBuffer = cubeMap.frameBuffer;
this.renderTargetTexture = cubeMap.texture;
this.isDepthAttachment = cubeMap.isDepthAttachment;
} else {
var image = js_Boot.__cast(this.renderTarget , kha_WebGLImage);
this.renderTargetFrameBuffer = image.frameBuffer;
this.renderTargetTexture = image.texture;
}
}
,begin: function(additionalRenderTargets) {
kha_SystemImpl.gl.enable(3042);
kha_SystemImpl.gl.blendFunc(770,771);
if(this.renderTarget == null) {
kha_SystemImpl.gl.bindFramebuffer(36160,null);
kha_SystemImpl.gl.viewport(0,0,kha_System.windowWidth(),kha_System.windowHeight());
} else {
kha_SystemImpl.gl.bindFramebuffer(36160,this.renderTargetFrameBuffer);
kha_SystemImpl.gl.viewport(0,0,this.renderTarget.get_width(),this.renderTarget.get_height());
if(additionalRenderTargets != null) {
kha_SystemImpl.gl.framebufferTexture2D(36160,kha_SystemImpl.drawBuffers.COLOR_ATTACHMENT0_WEBGL,3553,this.renderTargetTexture,0);
var _g1 = 0;
var _g = additionalRenderTargets.length;
while(_g1 < _g) {
var i = _g1++;
kha_SystemImpl.gl.framebufferTexture2D(36160,kha_SystemImpl.drawBuffers.COLOR_ATTACHMENT0_WEBGL + i + 1,3553,(js_Boot.__cast(additionalRenderTargets[i] , kha_WebGLImage)).texture,0);
}
var attachments = [kha_SystemImpl.drawBuffers.COLOR_ATTACHMENT0_WEBGL];
var _g11 = 0;
var _g2 = additionalRenderTargets.length;
while(_g11 < _g2) {
var i1 = _g11++;
attachments.push(kha_SystemImpl.drawBuffers.COLOR_ATTACHMENT0_WEBGL + i1 + 1);
}
if(kha_SystemImpl.gl2) {
kha_SystemImpl.gl.drawBuffers(attachments);
} else {
kha_SystemImpl.drawBuffers.drawBuffersWEBGL(attachments);
}
}
}
}
,beginFace: function(face) {
kha_SystemImpl.gl.enable(3042);
kha_SystemImpl.gl.blendFunc(770,771);
kha_SystemImpl.gl.bindFramebuffer(36160,this.renderTargetFrameBuffer);
kha_SystemImpl.gl.framebufferTexture2D(36160,this.isDepthAttachment ? 36096 : 36064,34069 + face,this.renderTargetTexture,0);
kha_SystemImpl.gl.viewport(0,0,this.renderTarget.get_width(),this.renderTarget.get_height());
}
,beginEye: function(eye) {
kha_SystemImpl.gl.enable(3042);
kha_SystemImpl.gl.blendFunc(770,771);
kha_SystemImpl.gl.bindFramebuffer(36160,null);
if(eye == 0) {
kha_SystemImpl.gl.viewport(0,0,kha_System.windowWidth() * 0.5 | 0,kha_System.windowHeight());
} else {
kha_SystemImpl.gl.viewport(kha_System.windowWidth() * 0.5 | 0,0,kha_System.windowWidth() * 0.5 | 0,kha_System.windowHeight());
}
}
,end: function() {
var error = kha_SystemImpl.gl.getError();
switch(error) {
case 0:
break;
case 1280:
haxe_Log.trace("WebGL error: Invalid enum",{ fileName : "Graphics.hx", lineNumber : 130, className : "kha.js.graphics4.Graphics", methodName : "end"});
break;
case 1281:
haxe_Log.trace("WebGL error: Invalid value",{ fileName : "Graphics.hx", lineNumber : 132, className : "kha.js.graphics4.Graphics", methodName : "end"});
break;
case 1282:
haxe_Log.trace("WebGL error: Invalid operation",{ fileName : "Graphics.hx", lineNumber : 134, className : "kha.js.graphics4.Graphics", methodName : "end"});
break;
case 1285:
haxe_Log.trace("WebGL error: Out of memory",{ fileName : "Graphics.hx", lineNumber : 138, className : "kha.js.graphics4.Graphics", methodName : "end"});
break;
case 1286:
haxe_Log.trace("WebGL error: Invalid framebuffer operation",{ fileName : "Graphics.hx", lineNumber : 136, className : "kha.js.graphics4.Graphics", methodName : "end"});
break;
case 37442:
haxe_Log.trace("WebGL error: Context lost",{ fileName : "Graphics.hx", lineNumber : 140, className : "kha.js.graphics4.Graphics", methodName : "end"});
break;
default:
haxe_Log.trace("Unknown WebGL error",{ fileName : "Graphics.hx", lineNumber : 142, className : "kha.js.graphics4.Graphics", methodName : "end"});
}
}
,flush: function() {
}
,vsynced: function() {
return true;
}
,refreshRate: function() {
return 60;
}
,clear: function(color,depth,stencil) {
var clearMask = 0;
if(color != null) {
clearMask |= 16384;
kha_SystemImpl.gl.colorMask(true,true,true,true);
kha_SystemImpl.gl.clearColor(((color & 16711680) >>> 16) * 0.00392156862745098,((color & 65280) >>> 8) * 0.00392156862745098,(color & 255) * 0.00392156862745098,(color >>> 24) * 0.00392156862745098);
}
if(depth != null) {
clearMask |= 256;
kha_SystemImpl.gl.enable(2929);
kha_SystemImpl.gl.depthMask(true);
kha_SystemImpl.gl.clearDepth(depth);
}
if(stencil != null) {
clearMask |= 1024;
kha_SystemImpl.gl.enable(2960);
kha_SystemImpl.gl.stencilMask(255);
kha_SystemImpl.gl.clearStencil(stencil);
}
kha_SystemImpl.gl.clear(clearMask);
kha_SystemImpl.gl.colorMask(this.colorMaskRed,this.colorMaskGreen,this.colorMaskBlue,this.colorMaskAlpha);
if(this.depthTest) {
kha_SystemImpl.gl.enable(2929);
} else {
kha_SystemImpl.gl.disable(2929);
}
kha_SystemImpl.gl.depthMask(this.depthMask);
}
,viewport: function(x,y,width,height) {
var h = this.renderTarget == null ? kha_System.windowHeight(0) : this.renderTarget.get_height();
kha_SystemImpl.gl.viewport(x,h - y - height,width,height);
}
,setDepthMode: function(write,mode) {
switch(mode[1]) {
case 0:
if(write) {
kha_SystemImpl.gl.enable(2929);
} else {
kha_SystemImpl.gl.disable(2929);
}
this.depthTest = write;
kha_SystemImpl.gl.depthFunc(519);
break;
case 1:
kha_SystemImpl.gl.enable(2929);
this.depthTest = true;
kha_SystemImpl.gl.depthFunc(512);
break;
case 2:
kha_SystemImpl.gl.enable(2929);
this.depthTest = true;
kha_SystemImpl.gl.depthFunc(514);
break;
case 3:
kha_SystemImpl.gl.enable(2929);
this.depthTest = true;
kha_SystemImpl.gl.depthFunc(517);
break;
case 4:
kha_SystemImpl.gl.enable(2929);
this.depthTest = true;
kha_SystemImpl.gl.depthFunc(513);
break;
case 5:
kha_SystemImpl.gl.enable(2929);
this.depthTest = true;
kha_SystemImpl.gl.depthFunc(515);
break;
case 6:
kha_SystemImpl.gl.enable(2929);
this.depthTest = true;
kha_SystemImpl.gl.depthFunc(516);
break;
case 7:
kha_SystemImpl.gl.enable(2929);
this.depthTest = true;
kha_SystemImpl.gl.depthFunc(518);
break;
}
kha_SystemImpl.gl.depthMask(write);
this.depthMask = write;
}
,setBlendingMode: function(source,destination,operation,alphaSource,alphaDestination,alphaOperation) {
if(source == kha_graphics4_BlendingFactor.BlendOne && destination == kha_graphics4_BlendingFactor.BlendZero) {
kha_SystemImpl.gl.disable(3042);
} else {
kha_SystemImpl.gl.enable(3042);
kha_SystemImpl.gl.blendFuncSeparate(kha_js_graphics4_Graphics.getBlendFunc(source),kha_js_graphics4_Graphics.getBlendFunc(destination),kha_js_graphics4_Graphics.getBlendFunc(alphaSource),kha_js_graphics4_Graphics.getBlendFunc(alphaDestination));
kha_SystemImpl.gl.blendEquationSeparate(kha_js_graphics4_Graphics.getBlendOp(operation),kha_js_graphics4_Graphics.getBlendOp(alphaOperation));
}
}
,createVertexBuffer: function(vertexCount,structure,usage,canRead) {
if(canRead == null) {
canRead = false;
}
return new kha_graphics4_VertexBuffer(vertexCount,structure,usage);
}
,setVertexBuffer: function(vertexBuffer) {
(js_Boot.__cast(vertexBuffer , kha_graphics4_VertexBuffer)).set(0);
}
,setVertexBuffers: function(vertexBuffers) {
var offset = 0;
var _g = 0;
while(_g < vertexBuffers.length) {
var vertexBuffer = vertexBuffers[_g];
++_g;
offset += (js_Boot.__cast(vertexBuffer , kha_graphics4_VertexBuffer)).set(offset);
}
}
,createIndexBuffer: function(indexCount,usage,canRead) {
if(canRead == null) {
canRead = false;
}
return new kha_graphics4_IndexBuffer(indexCount,usage);
}
,setIndexBuffer: function(indexBuffer) {
this.indicesCount = indexBuffer.count();
(js_Boot.__cast(indexBuffer , kha_graphics4_IndexBuffer)).set();
}
,setTexture: function(stage,texture) {
if(texture == null) {
kha_SystemImpl.gl.activeTexture(33984 + (js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value);
kha_SystemImpl.gl.bindTexture(3553,null);
} else {
(js_Boot.__cast(texture , kha_WebGLImage)).set((js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value);
}
}
,setTextureDepth: function(stage,texture) {
(js_Boot.__cast(texture , kha_WebGLImage)).setDepth((js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value);
}
,setVideoTexture: function(unit,texture) {
if(texture == null) {
kha_SystemImpl.gl.activeTexture(33984 + (js_Boot.__cast(unit , kha_js_graphics4_TextureUnit)).value);
kha_SystemImpl.gl.bindTexture(3553,null);
} else {
(js_Boot.__cast((js_Boot.__cast(texture , kha_js_Video)).texture , kha_WebGLImage)).set((js_Boot.__cast(unit , kha_js_graphics4_TextureUnit)).value);
}
}
,setImageTexture: function(unit,texture) {
}
,setTextureParameters: function(texunit,uAddressing,vAddressing,minificationFilter,magnificationFilter,mipmapFilter) {
kha_SystemImpl.gl.activeTexture(33984 + (js_Boot.__cast(texunit , kha_js_graphics4_TextureUnit)).value);
switch(uAddressing[1]) {
case 0:
kha_SystemImpl.gl.texParameteri(3553,10242,10497);
break;
case 1:
kha_SystemImpl.gl.texParameteri(3553,10242,33648);
break;
case 2:
kha_SystemImpl.gl.texParameteri(3553,10242,33071);
break;
}
switch(vAddressing[1]) {
case 0:
kha_SystemImpl.gl.texParameteri(3553,10243,10497);
break;
case 1:
kha_SystemImpl.gl.texParameteri(3553,10243,33648);
break;
case 2:
kha_SystemImpl.gl.texParameteri(3553,10243,33071);
break;
}
switch(minificationFilter[1]) {
case 0:
switch(mipmapFilter[1]) {
case 0:
kha_SystemImpl.gl.texParameteri(3553,10241,9728);
break;
case 1:
kha_SystemImpl.gl.texParameteri(3553,10241,9984);
break;
case 2:
kha_SystemImpl.gl.texParameteri(3553,10241,9986);
break;
}
break;
case 1:case 2:
switch(mipmapFilter[1]) {
case 0:
kha_SystemImpl.gl.texParameteri(3553,10241,9729);
break;
case 1:
kha_SystemImpl.gl.texParameteri(3553,10241,9985);
break;
case 2:
kha_SystemImpl.gl.texParameteri(3553,10241,9987);
break;
}
if(minificationFilter == kha_graphics4_TextureFilter.AnisotropicFilter) {
kha_SystemImpl.gl.texParameteri(3553,kha_SystemImpl.anisotropicFilter.TEXTURE_MAX_ANISOTROPY_EXT,4);
}
break;
}
switch(magnificationFilter[1]) {
case 0:
kha_SystemImpl.gl.texParameteri(3553,10240,9728);
break;
case 1:case 2:
kha_SystemImpl.gl.texParameteri(3553,10240,9729);
break;
}
}
,setTexture3DParameters: function(texunit,uAddressing,vAddressing,wAddressing,minificationFilter,magnificationFilter,mipmapFilter) {
}
,setCubeMap: function(stage,cubeMap) {
if(cubeMap == null) {
kha_SystemImpl.gl.activeTexture(33984 + (js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value);
kha_SystemImpl.gl.bindTexture(34067,null);
} else {
cubeMap.set((js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value);
}
}
,setCubeMapDepth: function(stage,cubeMap) {
cubeMap.setDepth((js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value);
}
,setCullMode: function(mode) {
switch(mode[1]) {
case 0:
kha_SystemImpl.gl.enable(2884);
kha_SystemImpl.gl.cullFace(1029);
break;
case 1:
kha_SystemImpl.gl.enable(2884);
kha_SystemImpl.gl.cullFace(1028);
break;
case 2:
kha_SystemImpl.gl.disable(2884);
break;
}
}
,setPipeline: function(pipe) {
this.setCullMode(pipe.cullMode);
this.setDepthMode(pipe.depthWrite,pipe.depthMode);
this.setStencilParameters(pipe.stencilMode,pipe.stencilBothPass,pipe.stencilDepthFail,pipe.stencilFail,pipe.stencilReferenceValue,pipe.stencilReadMask,pipe.stencilWriteMask);
this.setBlendingMode(pipe.blendSource,pipe.blendDestination,pipe.blendOperation,pipe.alphaBlendSource,pipe.alphaBlendDestination,pipe.alphaBlendOperation);
pipe.set();
this.colorMaskRed = pipe.colorWriteMaskRed;
this.colorMaskGreen = pipe.colorWriteMaskGreen;
this.colorMaskBlue = pipe.colorWriteMaskBlue;
this.colorMaskAlpha = pipe.colorWriteMaskAlpha;
}
,setBool: function(location,value) {
kha_SystemImpl.gl.uniform1i((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value ? 1 : 0);
}
,setInt: function(location,value) {
kha_SystemImpl.gl.uniform1i((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value);
}
,setFloat: function(location,value) {
kha_SystemImpl.gl.uniform1f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value);
}
,setFloat2: function(location,value1,value2) {
kha_SystemImpl.gl.uniform2f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value1,value2);
}
,setFloat3: function(location,value1,value2,value3) {
kha_SystemImpl.gl.uniform3f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value1,value2,value3);
}
,setFloat4: function(location,value1,value2,value3,value4) {
kha_SystemImpl.gl.uniform4f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value1,value2,value3,value4);
}
,setFloats: function(location,values) {
var webglLocation = js_Boot.__cast(location , kha_js_graphics4_ConstantLocation);
var _g = webglLocation.type;
switch(_g) {
case 35664:
kha_SystemImpl.gl.uniform2fv(webglLocation.value,values);
break;
case 35665:
kha_SystemImpl.gl.uniform3fv(webglLocation.value,values);
break;
case 35666:
kha_SystemImpl.gl.uniform4fv(webglLocation.value,values);
break;
default:
kha_SystemImpl.gl.uniform1fv(webglLocation.value,values);
}
}
,setVector2: function(location,value) {
kha_SystemImpl.gl.uniform2f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value.x,value.y);
}
,setVector3: function(location,value) {
kha_SystemImpl.gl.uniform3f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value.x,value.y,value.z);
}
,setVector4: function(location,value) {
kha_SystemImpl.gl.uniform4f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value.x,value.y,value.z,value.w);
}
,matrixCache: null
,setMatrix: function(location,matrix) {
this.matrixCache[0] = matrix._00;
this.matrixCache[1] = matrix._01;
this.matrixCache[2] = matrix._02;
this.matrixCache[3] = matrix._03;
this.matrixCache[4] = matrix._10;
this.matrixCache[5] = matrix._11;
this.matrixCache[6] = matrix._12;
this.matrixCache[7] = matrix._13;
this.matrixCache[8] = matrix._20;
this.matrixCache[9] = matrix._21;
this.matrixCache[10] = matrix._22;
this.matrixCache[11] = matrix._23;
this.matrixCache[12] = matrix._30;
this.matrixCache[13] = matrix._31;
this.matrixCache[14] = matrix._32;
this.matrixCache[15] = matrix._33;
kha_SystemImpl.gl.uniformMatrix4fv((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,false,this.matrixCache);
}
,matrix3Cache: null
,setMatrix3: function(location,matrix) {
this.matrix3Cache[0] = matrix._00;
this.matrix3Cache[1] = matrix._01;
this.matrix3Cache[2] = matrix._02;
this.matrix3Cache[3] = matrix._10;
this.matrix3Cache[4] = matrix._11;
this.matrix3Cache[5] = matrix._12;
this.matrix3Cache[6] = matrix._20;
this.matrix3Cache[7] = matrix._21;
this.matrix3Cache[8] = matrix._22;
kha_SystemImpl.gl.uniformMatrix3fv((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,false,this.matrix3Cache);
}
,drawIndexedVertices: function(start,count) {
if(count == null) {
count = -1;
}
if(start == null) {
start = 0;
}
var type = kha_SystemImpl.elementIndexUint == null ? 5123 : 5125;
var size = type == 5123 ? 2 : 4;
kha_SystemImpl.gl.drawElements(4,count == -1 ? this.indicesCount : count,type,start * size);
}
,convertStencilAction: function(action) {
switch(action[1]) {
case 0:
return 7680;
case 1:
return 0;
case 2:
return 7681;
case 3:
return 7682;
case 4:
return 34055;
case 5:
return 7683;
case 6:
return 34056;
case 7:
return 5386;
}
}
,setStencilParameters: function(compareMode,bothPass,depthFail,stencilFail,referenceValue,readMask,writeMask) {
if(writeMask == null) {
writeMask = 255;
}
if(readMask == null) {
readMask = 255;
}
if(compareMode == kha_graphics4_CompareMode.Always && bothPass == kha_graphics4_StencilAction.Keep && depthFail == kha_graphics4_StencilAction.Keep && stencilFail == kha_graphics4_StencilAction.Keep) {
kha_SystemImpl.gl.disable(2960);
} else {
kha_SystemImpl.gl.enable(2960);
var stencilFunc = 0;
switch(compareMode[1]) {
case 0:
stencilFunc = 519;
break;
case 1:
stencilFunc = 512;
break;
case 2:
stencilFunc = 514;
break;
case 3:
stencilFunc = 517;
break;
case 4:
stencilFunc = 513;
break;
case 5:
stencilFunc = 515;
break;
case 6:
stencilFunc = 516;
break;
case 7:
stencilFunc = 518;
break;
}
kha_SystemImpl.gl.stencilMask(writeMask);
kha_SystemImpl.gl.stencilOp(this.convertStencilAction(stencilFail),this.convertStencilAction(depthFail),this.convertStencilAction(bothPass));
kha_SystemImpl.gl.stencilFunc(stencilFunc,referenceValue,readMask);
}
}
,scissor: function(x,y,width,height) {
kha_SystemImpl.gl.enable(3089);
if(this.renderTarget == null) {
kha_SystemImpl.gl.scissor(x,kha_System.windowHeight(0) - y - height,width,height);
} else {
kha_SystemImpl.gl.scissor(x,y,width,height);
}
}
,disableScissor: function() {
kha_SystemImpl.gl.disable(3089);
}
,renderTargetsInvertedY: function() {
return true;
}
,drawIndexedVerticesInstanced: function(instanceCount,start,count) {
if(count == null) {
count = -1;
}
if(start == null) {
start = 0;
}
if(this.instancedRenderingAvailable()) {
var type = kha_SystemImpl.elementIndexUint == null ? 5123 : 5125;
var typeSize = kha_SystemImpl.elementIndexUint == null ? 2 : 4;
if(kha_SystemImpl.gl2) {
kha_SystemImpl.gl.drawElementsInstanced(4,count == -1 ? this.indicesCount : count,type,start * typeSize,instanceCount);
} else {
this.instancedExtension.drawElementsInstancedANGLE(4,count == -1 ? this.indicesCount : count,type,start * typeSize,instanceCount);
}
}
}
,instancedRenderingAvailable: function() {
return this.instancedExtension;
}
,__class__: kha_js_graphics4_Graphics
};
var kha_js_graphics4_Graphics2 = function(canvas) {
kha_graphics4_Graphics2.call(this,canvas);
};
$hxClasses["kha.js.graphics4.Graphics2"] = kha_js_graphics4_Graphics2;
kha_js_graphics4_Graphics2.__name__ = true;
kha_js_graphics4_Graphics2.__super__ = kha_graphics4_Graphics2;
kha_js_graphics4_Graphics2.prototype = $extend(kha_graphics4_Graphics2.prototype,{
drawVideoInternal: function(video,x,y,width,height) {
var v = js_Boot.__cast(video , kha_js_Video);
this.drawScaledSubImage(v.texture,0,0,v.texture.get_width(),v.texture.get_height(),x,y,width,height);
}
,begin: function(clear,clearColor) {
if(clear == null) {
clear = true;
}
kha_SystemImpl.gl.colorMask(true,true,true,true);
kha_SystemImpl.gl.disable(2929);
kha_SystemImpl.gl.depthFunc(519);
kha_graphics4_Graphics2.prototype.begin.call(this,clear,clearColor);
}
,__class__: kha_js_graphics4_Graphics2
});
var kha_js_graphics4_TextureUnit = function(value) {
this.value = value;
};
$hxClasses["kha.js.graphics4.TextureUnit"] = kha_js_graphics4_TextureUnit;
kha_js_graphics4_TextureUnit.__name__ = true;
kha_js_graphics4_TextureUnit.__interfaces__ = [kha_graphics4_TextureUnit];
kha_js_graphics4_TextureUnit.prototype = {
value: null
,__class__: kha_js_graphics4_TextureUnit
};
var kha_vr_VrInterface = function() {
};
$hxClasses["kha.vr.VrInterface"] = kha_vr_VrInterface;
kha_vr_VrInterface.__name__ = true;
kha_vr_VrInterface.prototype = {
GetSensorState: function() {
return null;
}
,GetPredictedSensorState: function(time) {
return null;
}
,WarpSwapBlack: function() {
return;
}
,WarpSwapLoadingIcon: function() {
return;
}
,WarpSwap: function(parms) {
return;
}
,IsPresenting: function() {
return false;
}
,IsVrEnabled: function() {
return false;
}
,GetTimeInSeconds: function() {
return 0.0;
}
,GetProjectionMatrix: function(eye) {
return null;
}
,GetViewMatrix: function(eye) {
return null;
}
,onVRRequestPresent: function() {
return;
}
,onVRExitPresent: function() {
return;
}
,onResetPose: function() {
return;
}
,__class__: kha_vr_VrInterface
};
var kha_js_vr_VrInterface = function() {
this.vrHeight = 0;
this.vrWidth = 0;
this.height = 0;
this.width = 0;
this.rightViewMatrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);
this.leftViewMatrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);
this.rightProjectionMatrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);
this.leftProjectionMatrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);
this.vrEnabled = false;
kha_vr_VrInterface.call(this);
var displayEnabled = navigator.getVRDisplays;
if(displayEnabled) {
this.vrEnabled = true;
this.getVRDisplays();
haxe_Log.trace("Display enabled.",{ fileName : "VrInterface.hx", lineNumber : 36, className : "kha.js.vr.VrInterface", methodName : "new"});
}
};
$hxClasses["kha.js.vr.VrInterface"] = kha_js_vr_VrInterface;
kha_js_vr_VrInterface.__name__ = true;
kha_js_vr_VrInterface.__super__ = kha_vr_VrInterface;
kha_js_vr_VrInterface.prototype = $extend(kha_vr_VrInterface.prototype,{
vrEnabled: null
,vrDisplay: null
,frameData: null
,leftProjectionMatrix: null
,rightProjectionMatrix: null
,leftViewMatrix: null
,rightViewMatrix: null
,width: null
,height: null
,vrWidth: null
,vrHeight: null
,getVRDisplays: function() {
var _gthis = this;
var vrDisplayInstance = navigator.getVRDisplays();
vrDisplayInstance.then(function(displays) {
if(displays.length > 0) {
_gthis.frameData = new VRFrameData();
_gthis.vrDisplay = displays[0];
_gthis.vrDisplay.depthNear = 0.1;
_gthis.vrDisplay.depthFar = 1024.0;
var leftEye = _gthis.vrDisplay.getEyeParameters("left");
var rightEye = _gthis.vrDisplay.getEyeParameters("right");
_gthis.width = kha_SystemImpl.khanvas.width;
_gthis.height = kha_SystemImpl.khanvas.height;
_gthis.vrWidth = Math.max(leftEye.renderWidth,rightEye.renderWidth) * 2 | 0;
_gthis.vrHeight = Math.max(leftEye.renderHeight,rightEye.renderHeight) | 0;
} else {
haxe_Log.trace("There are no VR displays connected.",{ fileName : "VrInterface.hx", lineNumber : 56, className : "kha.js.vr.VrInterface", methodName : "getVRDisplays"});
}
});
}
,onVRRequestPresent: function() {
var _gthis = this;
try {
this.vrDisplay.requestPresent([{ source : kha_SystemImpl.khanvas}]).then(function() {
_gthis.onResize();
_gthis.vrDisplay.requestAnimationFrame($bind(_gthis,_gthis.onAnimationFrame));
});
} catch( err ) {
if (err instanceof js__$Boot_HaxeError) err = err.val;
haxe_Log.trace("Failed to requestPresent.",{ fileName : "VrInterface.hx", lineNumber : 68, className : "kha.js.vr.VrInterface", methodName : "onVRRequestPresent"});
haxe_Log.trace(err,{ fileName : "VrInterface.hx", lineNumber : 69, className : "kha.js.vr.VrInterface", methodName : "onVRRequestPresent"});
}
}
,onVRExitPresent: function() {
var _gthis = this;
try {
this.vrDisplay.exitPresent([{ source : kha_SystemImpl.khanvas}]).then(function() {
_gthis.onResize();
});
} catch( err ) {
if (err instanceof js__$Boot_HaxeError) err = err.val;
haxe_Log.trace("Failed to exitPresent.",{ fileName : "VrInterface.hx", lineNumber : 79, className : "kha.js.vr.VrInterface", methodName : "onVRExitPresent"});
haxe_Log.trace(err,{ fileName : "VrInterface.hx", lineNumber : 80, className : "kha.js.vr.VrInterface", methodName : "onVRExitPresent"});
}
}
,onResetPose: function() {
try {
this.vrDisplay.resetPose();
} catch( err ) {
if (err instanceof js__$Boot_HaxeError) err = err.val;
haxe_Log.trace("Failed to resetPose",{ fileName : "VrInterface.hx", lineNumber : 88, className : "kha.js.vr.VrInterface", methodName : "onResetPose"});
haxe_Log.trace(err,{ fileName : "VrInterface.hx", lineNumber : 89, className : "kha.js.vr.VrInterface", methodName : "onResetPose"});
}
}
,onAnimationFrame: function(timestamp) {
if(this.vrDisplay != null && this.vrDisplay.isPresenting) {
this.vrDisplay.requestAnimationFrame($bind(this,this.onAnimationFrame));
this.vrDisplay.getFrameData(this.frameData);
this.leftProjectionMatrix = this.createMatrixFromArray(this.frameData.leftProjectionMatrix);
this.leftViewMatrix = this.createMatrixFromArray(this.frameData.leftViewMatrix);
this.rightProjectionMatrix = this.createMatrixFromArray(this.frameData.rightProjectionMatrix);
this.rightViewMatrix = this.createMatrixFromArray(this.frameData.rightViewMatrix);
this.vrDisplay.submitFrame();
}
}
,onResize: function() {
if(this.vrDisplay != null && this.vrDisplay.isPresenting) {
kha_SystemImpl.khanvas.width = this.vrWidth;
kha_SystemImpl.khanvas.height = this.vrHeight;
} else {
kha_SystemImpl.khanvas.width = this.width;
kha_SystemImpl.khanvas.height = this.height;
}
}
,GetSensorState: function() {
return this.GetPredictedSensorState(0.0);
}
,GetPredictedSensorState: function(time) {
var result = new kha_vr_SensorState();
result.Predicted = new kha_vr_PoseState();
result.Recorded = result.Predicted;
result.Predicted.AngularAcceleration = new kha_math_Vector3();
result.Predicted.AngularVelocity = new kha_math_Vector3();
result.Predicted.LinearAcceleration = new kha_math_Vector3();
result.Predicted.LinearVelocity = new kha_math_Vector3();
result.Predicted.TimeInSeconds = time;
result.Predicted.Pose = new kha_vr_Pose();
result.Predicted.Pose.Orientation = new kha_math_Quaternion();
result.Predicted.Pose.Position = new kha_math_Vector3();
var mPose = this.frameData.pose;
if(mPose != null) {
result.Predicted.AngularVelocity = this.createVectorFromArray(mPose.angularVelocity);
result.Predicted.AngularAcceleration = this.createVectorFromArray(mPose.angularAcceleration);
result.Predicted.LinearVelocity = this.createVectorFromArray(mPose.linearVelocity);
result.Predicted.LinearAcceleration = this.createVectorFromArray(mPose.linearAcceleration);
result.Predicted.Pose.Orientation = this.createQuaternion(mPose.orientation);
result.Predicted.Pose.Position = this.createVectorFromArray(mPose.position);
}
return result;
}
,WarpSwapBlack: function() {
}
,WarpSwapLoadingIcon: function() {
}
,WarpSwap: function(parms) {
}
,IsPresenting: function() {
if(this.vrDisplay != null) {
return this.vrDisplay.isPresenting;
}
return false;
}
,IsVrEnabled: function() {
return this.vrEnabled;
}
,GetTimeInSeconds: function() {
return kha_Scheduler.time();
}
,GetProjectionMatrix: function(eye) {
if(eye == 0) {
return this.leftProjectionMatrix;
} else {
return this.rightProjectionMatrix;
}
}
,GetViewMatrix: function(eye) {
if(eye == 0) {
return this.leftViewMatrix;
} else {
return this.rightViewMatrix;
}
}
,createMatrixFromArray: function(array) {
var matrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);
matrix._00 = array[0];
matrix._01 = array[1];
matrix._02 = array[2];
matrix._03 = array[3];
matrix._10 = array[4];
matrix._11 = array[5];
matrix._12 = array[6];
matrix._13 = array[7];
matrix._20 = array[8];
matrix._21 = array[9];
matrix._22 = array[10];
matrix._23 = array[11];
matrix._30 = array[12];
matrix._31 = array[13];
matrix._32 = array[14];
matrix._33 = array[15];
return matrix;
}
,createVectorFromArray: function(array) {
var vector = new kha_math_Vector3(0,0,0);
if(array != null) {
vector.x = array[0];
vector.y = array[1];
vector.z = array[2];
}
return vector;
}
,createQuaternion: function(array) {
var quaternion = new kha_math_Quaternion(0,0,0,0);
if(array != null) {
quaternion.set_x(array[0]);
quaternion.set_y(array[1]);
quaternion.set_z(array[2]);
quaternion.set_w(array[3]);
}
return quaternion;
}
,__class__: kha_js_vr_VrInterface
});
var kha_math_FastMatrix3 = function(_00,_10,_20,_01,_11,_21,_02,_12,_22) {
this._00 = _00;
this._10 = _10;
this._20 = _20;
this._01 = _01;
this._11 = _11;
this._21 = _21;
this._02 = _02;
this._12 = _12;
this._22 = _22;
};
$hxClasses["kha.math.FastMatrix3"] = kha_math_FastMatrix3;
kha_math_FastMatrix3.__name__ = true;
kha_math_FastMatrix3.fromMatrix3 = function(m) {
return new kha_math_FastMatrix3(m._00,m._10,m._20,m._01,m._11,m._21,m._02,m._12,m._22);
};
kha_math_FastMatrix3.prototype = {
_00: null
,_10: null
,_20: null
,_01: null
,_11: null
,_21: null
,_02: null
,_12: null
,_22: null
,__class__: kha_math_FastMatrix3
};
var kha_math_FastMatrix4 = function(_00,_10,_20,_30,_01,_11,_21,_31,_02,_12,_22,_32,_03,_13,_23,_33) {
this._00 = _00;
this._10 = _10;
this._20 = _20;
this._30 = _30;
this._01 = _01;
this._11 = _11;
this._21 = _21;
this._31 = _31;
this._02 = _02;
this._12 = _12;
this._22 = _22;
this._32 = _32;
this._03 = _03;
this._13 = _13;
this._23 = _23;
this._33 = _33;
};
$hxClasses["kha.math.FastMatrix4"] = kha_math_FastMatrix4;
kha_math_FastMatrix4.__name__ = true;
kha_math_FastMatrix4.fromMatrix4 = function(m) {
return new kha_math_FastMatrix4(m._00,m._10,m._20,m._30,m._01,m._11,m._21,m._31,m._02,m._12,m._22,m._32,m._03,m._13,m._23,m._33);
};
kha_math_FastMatrix4.orthogonalProjection = function(left,right,bottom,top,zn,zf) {
var tx = -(right + left) / (right - left);
var ty = -(top + bottom) / (top - bottom);
var tz = -(zf + zn) / (zf - zn);
return new kha_math_FastMatrix4(2 / (right - left),0,0,tx,0,2 / (top - bottom),0,ty,0,0,-2 / (zf - zn),tz,0,0,0,1);
};
kha_math_FastMatrix4.perspectiveProjection = function(fovY,aspect,zn,zf) {
var uh = 1.0 / Math.tan(fovY / 2);
var uw = uh / aspect;
return new kha_math_FastMatrix4(uw,0,0,0,0,uh,0,0,0,0,(zf + zn) / (zn - zf),2 * zf * zn / (zn - zf),0,0,-1,0);
};
kha_math_FastMatrix4.lookAt = function(eye,at,up) {
var zaxis = new kha_math_FastVector3(at.x - eye.x,at.y - eye.y,at.z - eye.z);
zaxis.set_length(1);
var _x = zaxis.y * up.z - zaxis.z * up.y;
var _y = zaxis.z * up.x - zaxis.x * up.z;
var _z = zaxis.x * up.y - zaxis.y * up.x;
var xaxis = new kha_math_FastVector3(_x,_y,_z);
xaxis.set_length(1);
var yaxis_z;
var yaxis_y;
var yaxis_x;
var _x1 = xaxis.y * zaxis.z - xaxis.z * zaxis.y;
var _y1 = xaxis.z * zaxis.x - xaxis.x * zaxis.z;
var _z1 = xaxis.x * zaxis.y - xaxis.y * zaxis.x;
yaxis_x = _x1;
yaxis_y = _y1;
yaxis_z = _z1;
return new kha_math_FastMatrix4(xaxis.x,xaxis.y,xaxis.z,-(xaxis.x * eye.x + xaxis.y * eye.y + xaxis.z * eye.z),yaxis_x,yaxis_y,yaxis_z,-(yaxis_x * eye.x + yaxis_y * eye.y + yaxis_z * eye.z),-zaxis.x,-zaxis.y,-zaxis.z,zaxis.x * eye.x + zaxis.y * eye.y + zaxis.z * eye.z,0,0,0,1);
};
kha_math_FastMatrix4.prototype = {
_00: null
,_10: null
,_20: null
,_30: null
,_01: null
,_11: null
,_21: null
,_31: null
,_02: null
,_12: null
,_22: null
,_32: null
,_03: null
,_13: null
,_23: null
,_33: null
,__class__: kha_math_FastMatrix4
};
var kha_math_FastVector2 = function(x,y) {
if(y == null) {
y = 0;
}
if(x == null) {
x = 0;
}
this.x = x;
this.y = y;
};
$hxClasses["kha.math.FastVector2"] = kha_math_FastVector2;
kha_math_FastVector2.__name__ = true;
kha_math_FastVector2.fromVector2 = function(v) {
return new kha_math_FastVector2(v.x,v.y);
};
kha_math_FastVector2.prototype = {
x: null
,y: null
,get_length: function() {
return Math.sqrt(this.x * this.x + this.y * this.y);
}
,set_length: function(length) {
var currentLength = this.get_length();
if(currentLength == 0) {
return 0;
}
var mul = length / currentLength;
this.x *= mul;
this.y *= mul;
return length;
}
,toString: function() {
return "FastVector2(" + this.x + ", " + this.y + ")";
}
,__class__: kha_math_FastVector2
};
var kha_math_FastVector3 = function(x,y,z) {
if(z == null) {
z = 0;
}
if(y == null) {
y = 0;
}
if(x == null) {
x = 0;
}
this.x = x;
this.y = y;
this.z = z;
};
$hxClasses["kha.math.FastVector3"] = kha_math_FastVector3;
kha_math_FastVector3.__name__ = true;
kha_math_FastVector3.fromVector3 = function(v) {
return new kha_math_FastVector3(v.x,v.y,v.z);
};
kha_math_FastVector3.prototype = {
x: null
,y: null
,z: null
,get_length: function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
}
,set_length: function(length) {
var currentLength = this.get_length();
if(currentLength == 0) {
return 0;
}
var mul = length / currentLength;
this.x *= mul;
this.y *= mul;
this.z *= mul;
return length;
}
,toString: function() {
return "FastVector3(" + this.x + ", " + this.y + ", " + this.z + ")";
}
,__class__: kha_math_FastVector3
};
var kha_math_FastVector4 = function(x,y,z,w) {
if(w == null) {
w = 1;
}
if(z == null) {
z = 0;
}
if(y == null) {
y = 0;
}
if(x == null) {
x = 0;
}
this.x = x;
this.y = y;
this.z = z;
this.w = w;
};
$hxClasses["kha.math.FastVector4"] = kha_math_FastVector4;
kha_math_FastVector4.__name__ = true;
kha_math_FastVector4.fromVector4 = function(v) {
return new kha_math_FastVector4(v.x,v.y,v.z,v.w);
};
kha_math_FastVector4.prototype = {
x: null
,y: null
,z: null
,w: null
,get_length: function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
}
,set_length: function(length) {
var currentLength = this.get_length();
if(currentLength == 0) {
return 0;
}
var mul = length / currentLength;
this.x *= mul;
this.y *= mul;
this.z *= mul;
this.w *= mul;
return length;
}
,toString: function() {
return "FastVector4(" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + ")";
}
,__class__: kha_math_FastVector4
};
var kha_math_Matrix3 = function(_00,_10,_20,_01,_11,_21,_02,_12,_22) {
this._00 = _00;
this._10 = _10;
this._20 = _20;
this._01 = _01;
this._11 = _11;
this._21 = _21;
this._02 = _02;
this._12 = _12;
this._22 = _22;
};
$hxClasses["kha.math.Matrix3"] = kha_math_Matrix3;
kha_math_Matrix3.__name__ = true;
kha_math_Matrix3.prototype = {
_00: null
,_10: null
,_20: null
,_01: null
,_11: null
,_21: null
,_02: null
,_12: null
,_22: null
,__class__: kha_math_Matrix3
};
var kha_math_Matrix4 = function(_00,_10,_20,_30,_01,_11,_21,_31,_02,_12,_22,_32,_03,_13,_23,_33) {
this._00 = _00;
this._10 = _10;
this._20 = _20;
this._30 = _30;
this._01 = _01;
this._11 = _11;
this._21 = _21;
this._31 = _31;
this._02 = _02;
this._12 = _12;
this._22 = _22;
this._32 = _32;
this._03 = _03;
this._13 = _13;
this._23 = _23;
this._33 = _33;
};
$hxClasses["kha.math.Matrix4"] = kha_math_Matrix4;
kha_math_Matrix4.__name__ = true;
kha_math_Matrix4.orthogonalProjection = function(left,right,bottom,top,zn,zf) {
var tx = -(right + left) / (right - left);
var ty = -(top + bottom) / (top - bottom);
var tz = -(zf + zn) / (zf - zn);
return new kha_math_Matrix4(2 / (right - left),0,0,tx,0,2 / (top - bottom),0,ty,0,0,-2 / (zf - zn),tz,0,0,0,1);
};
kha_math_Matrix4.perspectiveProjection = function(fovY,aspect,zn,zf) {
var uh = 1.0 / Math.tan(fovY / 2);
var uw = uh / aspect;
return new kha_math_Matrix4(uw,0,0,0,0,uh,0,0,0,0,(zf + zn) / (zn - zf),2 * zf * zn / (zn - zf),0,0,-1,0);
};
kha_math_Matrix4.lookAt = function(eye,at,up) {
var zaxis = new kha_math_Vector3(at.x - eye.x,at.y - eye.y,at.z - eye.z);
zaxis.set_length(1);
var _x = zaxis.y * up.z - zaxis.z * up.y;
var _y = zaxis.z * up.x - zaxis.x * up.z;
var _z = zaxis.x * up.y - zaxis.y * up.x;
var xaxis = new kha_math_Vector3(_x,_y,_z);
xaxis.set_length(1);
var yaxis_z;
var yaxis_y;
var yaxis_x;
var _x1 = xaxis.y * zaxis.z - xaxis.z * zaxis.y;
var _y1 = xaxis.z * zaxis.x - xaxis.x * zaxis.z;
var _z1 = xaxis.x * zaxis.y - xaxis.y * zaxis.x;
yaxis_x = _x1;
yaxis_y = _y1;
yaxis_z = _z1;
return new kha_math_Matrix4(xaxis.x,xaxis.y,xaxis.z,-(xaxis.x * eye.x + xaxis.y * eye.y + xaxis.z * eye.z),yaxis_x,yaxis_y,yaxis_z,-(yaxis_x * eye.x + yaxis_y * eye.y + yaxis_z * eye.z),-zaxis.x,-zaxis.y,-zaxis.z,zaxis.x * eye.x + zaxis.y * eye.y + zaxis.z * eye.z,0,0,0,1);
};
kha_math_Matrix4.prototype = {
_00: null
,_10: null
,_20: null
,_30: null
,_01: null
,_11: null
,_21: null
,_31: null
,_02: null
,_12: null
,_22: null
,_32: null
,_03: null
,_13: null
,_23: null
,_33: null
,__class__: kha_math_Matrix4
};
var kha_math_Quaternion = function(x,y,z,w) {
if(w == null) {
w = 1;
}
if(z == null) {
z = 0;
}
if(y == null) {
y = 0;
}
if(x == null) {
x = 0;
}
this.values = [];
this.values.push(x);
this.values.push(y);
this.values.push(z);
this.values.push(w);
};
$hxClasses["kha.math.Quaternion"] = kha_math_Quaternion;
kha_math_Quaternion.__name__ = true;
kha_math_Quaternion.fromAxisAngle = function(axis,radians) {
var q = new kha_math_Quaternion();
q.set_w(Math.cos(radians / 2.0));
q.set_x(q.set_y(q.set_z(Math.sin(radians / 2.0))));
var _g = q;
_g.set_x(_g.get_x() * axis.x);
var _g1 = q;
_g1.set_y(_g1.get_y() * axis.y);
var _g2 = q;
_g2.set_z(_g2.get_z() * axis.z);
return q;
};
kha_math_Quaternion.prototype = {
values: null
,slerp: function(t,q) {
var epsilon = 0.0005;
var dot = this.dot(q);
if(dot > 1 - epsilon) {
var result = q.add(this.sub(q).scaled(t));
result.normalize();
return result;
}
if(dot < 0) {
dot = 0;
}
if(dot > 1) {
dot = 1;
}
var theta0 = Math.acos(dot);
var theta = theta0 * t;
var q2 = q.sub(this.scaled(dot));
q2.normalize();
var result1 = this.scaled(Math.cos(theta)).add(q2.scaled(Math.sin(theta)));
result1.normalize();
return result1;
}
,rotated: function(b) {
var q = new kha_math_Quaternion();
q.set_w(this.get_w() * b.get_w() - this.get_x() * b.get_x() - this.get_y() * b.get_y() - this.get_z() * b.get_z());
q.set_x(this.get_w() * b.get_x() + this.get_x() * b.get_w() + this.get_y() * b.get_z() - this.get_z() * b.get_y());
q.set_y(this.get_w() * b.get_y() + this.get_y() * b.get_w() + this.get_z() * b.get_x() - this.get_x() * b.get_z());
q.set_z(this.get_w() * b.get_z() + this.get_z() * b.get_w() + this.get_x() * b.get_y() - this.get_y() * b.get_x());
q.normalize();
return q;
}
,scaled: function(scale) {
return new kha_math_Quaternion(this.get_x() * scale,this.get_y() * scale,this.get_z() * scale,this.get_w() * scale);
}
,scale: function(scale) {
this.set_x(this.get_x() * scale);
this.set_y(this.get_y() * scale);
this.set_z(this.get_z() * scale);
this.set_w(this.get_w() * scale);
}
,matrix: function() {
var s = 2.0;
var xs = this.get_x() * s;
var ys = this.get_y() * s;
var zs = this.get_z() * s;
var wx = this.get_w() * xs;
var wy = this.get_w() * ys;
var wz = this.get_w() * zs;
var xx = this.get_x() * xs;
var xy = this.get_x() * ys;
var xz = this.get_x() * zs;
var yy = this.get_y() * ys;
var yz = this.get_y() * zs;
var zz = this.get_z() * zs;
return new kha_math_Matrix4(1 - (yy + zz),xy - wz,xz + wy,0,xy + wz,1 - (xx + zz),yz - wx,0,xz - wy,yz + wx,1 - (xx + yy),0,0,0,0,1);
}
,get: function(index) {
return this.values[index];
}
,set: function(index,value) {
this.values[index] = value;
}
,get_x: function() {
return this.values[0];
}
,set_x: function(value) {
return this.values[0] = value;
}
,get_y: function() {
return this.values[1];
}
,set_y: function(value) {
return this.values[1] = value;
}
,get_z: function() {
return this.values[2];
}
,set_z: function(value) {
return this.values[2] = value;
}
,get_w: function() {
return this.values[3];
}
,set_w: function(value) {
return this.values[3] = value;
}
,get_length: function() {
return Math.sqrt(this.get_x() * this.get_x() + this.get_y() * this.get_y() + this.get_z() * this.get_z() + this.get_w() * this.get_w());
}
,set_length: function(length) {
if(this.get_length() == 0) {
return 0;
}
var mul = length / this.get_length();
var _g = this;
_g.set_x(_g.get_x() * mul);
var _g1 = this;
_g1.set_y(_g1.get_y() * mul);
var _g2 = this;
_g2.set_z(_g2.get_z() * mul);
return length;
}
,addVector: function(vec) {
var result = new kha_math_Quaternion(this.get_x(),this.get_y(),this.get_z(),this.get_w());
var q1 = new kha_math_Quaternion(0,vec.x,vec.y,vec.z);
q1 = q1.mult(result);
var _g = result;
_g.set_x(_g.get_x() + q1.get_x() * 0.5);
var _g1 = result;
_g1.set_y(_g1.get_y() + q1.get_y() * 0.5);
var _g2 = result;
_g2.set_z(_g2.get_z() + q1.get_z() * 0.5);
var _g3 = result;
_g3.set_w(_g3.get_w() + q1.get_w() * 0.5);
return result;
}
,add: function(q) {
return new kha_math_Quaternion(this.get_x() + q.get_x(),this.get_y() + q.get_y(),this.get_z() + q.get_z(),this.get_w() + q.get_w());
}
,sub: function(q) {
return new kha_math_Quaternion(this.get_x() - q.get_x(),this.get_y() - q.get_y(),this.get_z() - q.get_z(),this.get_w() - q.get_w());
}
,mult: function(r) {
var q = new kha_math_Quaternion();
q.set_x(this.get_w() * r.get_x() + this.get_x() * r.get_w() + this.get_y() * r.get_z() - this.get_z() * r.get_y());
q.set_y(this.get_w() * r.get_y() - this.get_x() * r.get_z() + this.get_y() * r.get_w() + this.get_z() * r.get_x());
q.set_z(this.get_w() * r.get_z() + this.get_x() * r.get_y() - this.get_y() * r.get_x() + this.get_z() * r.get_w());
q.set_w(this.get_w() * r.get_w() - this.get_x() * r.get_x() - this.get_y() * r.get_y() - this.get_z() * r.get_z());
return q;
}
,normalize: function() {
this.scale(1.0 / this.get_length());
}
,dot: function(q) {
return this.get_x() * q.get_x() + this.get_y() * q.get_y() + this.get_z() * q.get_z() + this.get_w() * q.get_w();
}
,getEulerAngles: function(A1,A2,A3,S,D) {
if(D == null) {
D = 1;
}
if(S == null) {
S = 1;
}
var result = new kha_math_Vector3();
var Q = [];
Q[0] = this.get_x();
Q[1] = this.get_y();
Q[2] = this.get_z();
var ww = this.get_w() * this.get_w();
var Q11 = Q[A1] * Q[A1];
var Q22 = Q[A2] * Q[A2];
var Q33 = Q[A3] * Q[A3];
var psign = -1;
var SingularityRadius = 0.0000001;
var PiOver2 = Math.PI / 2.0;
if((A1 + 1) % 3 == A2 && (A2 + 1) % 3 == A3) {
psign = 1;
}
var s2 = psign * 2.0 * (psign * this.get_w() * Q[A2] + Q[A1] * Q[A3]);
if(s2 < -1 + SingularityRadius) {
result.x = 0;
result.y = -S * D * PiOver2;
result.z = S * D * Math.atan2(2 * (psign * Q[A1] * Q[A2] + this.get_w() * Q[A3]),ww + Q22 - Q11 - Q33);
} else if(s2 > 1 - SingularityRadius) {
result.x = 0;
result.y = S * D * PiOver2;
result.z = S * D * Math.atan2(2 * (psign * Q[A1] * Q[A2] + this.get_w() * Q[A3]),ww + Q22 - Q11 - Q33);
} else {
result.x = -S * D * Math.atan2(-2 * (this.get_w() * Q[A1] - psign * Q[A2] * Q[A3]),ww + Q33 - Q11 - Q22);
result.y = S * D * Math.asin(s2);
result.z = S * D * Math.atan2(2 * (this.get_w() * Q[A3] - psign * Q[A1] * Q[A2]),ww + Q11 - Q22 - Q33);
}
return result;
}
,__class__: kha_math_Quaternion
};
var kha_math_Vector2 = function(x,y) {
if(y == null) {
y = 0;
}
if(x == null) {
x = 0;
}
this.x = x;
this.y = y;
};
$hxClasses["kha.math.Vector2"] = kha_math_Vector2;
kha_math_Vector2.__name__ = true;
kha_math_Vector2.prototype = {
x: null
,y: null
,get_length: function() {
return Math.sqrt(this.x * this.x + this.y * this.y);
}
,set_length: function(length) {
var currentLength = this.get_length();
if(currentLength == 0) {
return 0;
}
var mul = length / currentLength;
this.x *= mul;
this.y *= mul;
return length;
}
,__class__: kha_math_Vector2
};
var kha_math_Vector3 = function(x,y,z) {
if(z == null) {
z = 0;
}
if(y == null) {
y = 0;
}
if(x == null) {
x = 0;
}
this.x = x;
this.y = y;
this.z = z;
};
$hxClasses["kha.math.Vector3"] = kha_math_Vector3;
kha_math_Vector3.__name__ = true;
kha_math_Vector3.prototype = {
x: null
,y: null
,z: null
,get_length: function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
}
,set_length: function(length) {
var currentLength = this.get_length();
if(currentLength == 0) {
return 0;
}
var mul = length / currentLength;
this.x *= mul;
this.y *= mul;
this.z *= mul;
return length;
}
,__class__: kha_math_Vector3
};
var kha_math_Vector4 = function(x,y,z,w) {
if(w == null) {
w = 1;
}
if(z == null) {
z = 0;
}
if(y == null) {
y = 0;
}
if(x == null) {
x = 0;
}
this.x = x;
this.y = y;
this.z = z;
this.w = w;
};
$hxClasses["kha.math.Vector4"] = kha_math_Vector4;
kha_math_Vector4.__name__ = true;
kha_math_Vector4.prototype = {
x: null
,y: null
,z: null
,w: null
,get_length: function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
}
,set_length: function(length) {
var currentLength = this.get_length();
if(currentLength == 0) {
return 0;
}
var mul = length / currentLength;
this.x *= mul;
this.y *= mul;
this.z *= mul;
this.w *= mul;
return length;
}
,__class__: kha_math_Vector4
};
var kha_network_Client = function() { };
$hxClasses["kha.network.Client"] = kha_network_Client;
kha_network_Client.__name__ = true;
kha_network_Client.prototype = {
get_id: null
,id: null
,send: null
,receive: null
,onClose: null
,__class__: kha_network_Client
};
var kha_network_ControllerBuilder = function() { };
$hxClasses["kha.network.ControllerBuilder"] = kha_network_ControllerBuilder;
kha_network_ControllerBuilder.__name__ = true;
var kha_network_Entity = function() { };
$hxClasses["kha.network.Entity"] = kha_network_Entity;
kha_network_Entity.__name__ = true;
kha_network_Entity.prototype = {
_id: null
,_size: null
,_send: null
,_receive: null
,__class__: kha_network_Entity
};
var kha_network_LocalClient = function(id) {
this.myId = id;
};
$hxClasses["kha.network.LocalClient"] = kha_network_LocalClient;
kha_network_LocalClient.__name__ = true;
kha_network_LocalClient.__interfaces__ = [kha_network_Client];
kha_network_LocalClient.prototype = {
myId: null
,send: function(bytes,mandatory) {
}
,receive: function(receiver) {
}
,onClose: function(close) {
}
,controllers: null
,get_controllers: function() {
return null;
}
,id: null
,get_id: function() {
return this.myId;
}
,__class__: kha_network_LocalClient
};
var kha_network_Network = function(url,port,errorCallback,closeCallback) {
this.open = false;
var _gthis = this;
this.socket = new WebSocket("ws://" + url + ":" + port);
this.socket.onerror = function(error) {
haxe_Log.trace("Network error: " + error,{ fileName : "Network.hx", lineNumber : 14, className : "kha.network.Network", methodName : "new"});
errorCallback();
};
this.socket.binaryType = "arraybuffer";
this.socket.onopen = function() {
_gthis.open = true;
};
this.socket.onclose = function(event) {
haxe_Log.trace("Network connection closed",{ fileName : "Network.hx", lineNumber : 22, className : "kha.network.Network", methodName : "new"});
closeCallback();
};
};
$hxClasses["kha.network.Network"] = kha_network_Network;
kha_network_Network.__name__ = true;
kha_network_Network.prototype = {
socket: null
,open: null
,send: function(bytes,mandatory) {
if(this.open) {
this.socket.send(bytes.b.bufferValue);
}
}
,listen: function(listener) {
this.socket.onmessage = function(message) {
var tmp = haxe_io_Bytes.ofData(message.data);
listener(tmp);
};
}
,__class__: kha_network_Network
};
var kha_network_State = function(time,data) {
this.time = time;
this.data = data;
};
$hxClasses["kha.network.State"] = kha_network_State;
kha_network_State.__name__ = true;
kha_network_State.prototype = {
time: null
,data: null
,__class__: kha_network_State
};
var kha_network_Session = function(maxPlayers,address,port) {
this.ping = 1;
this.currentPlayers = 0;
this.controllers = new haxe_ds_IntMap();
this.entities = new haxe_ds_IntMap();
kha_network_Session.instance = this;
this.maxPlayers = maxPlayers;
this.address = address;
this.port = port;
};
$hxClasses["kha.network.Session"] = kha_network_Session;
kha_network_Session.__name__ = true;
kha_network_Session.the = function() {
return kha_network_Session.instance;
};
kha_network_Session.prototype = {
entities: null
,controllers: null
,maxPlayers: null
,currentPlayers: null
,ping: null
,address: null
,port: null
,startCallback: null
,refusedCallback: null
,resetCallback: null
,localClient: null
,network: null
,updateTaskId: null
,pingTaskId: null
,me: null
,get_me: function() {
return this.localClient;
}
,addEntity: function(entity) {
var this1 = this.entities;
var key = entity._id();
this1.h[key] = entity;
}
,addController: function(controller) {
haxe_Log.trace("Adding controller id " + controller._id(),{ fileName : "Session.hx", lineNumber : 88, className : "kha.network.Session", methodName : "addController"});
controller._inputBufferIndex = 0;
var this1 = this.controllers;
var key = controller._id();
this1.h[key] = controller;
}
,sendControllerUpdate: function(id,bytes) {
if(this.controllers.h.hasOwnProperty(id)) {
if(this.controllers.h[id]._inputBuffer.length < this.controllers.h[id]._inputBufferIndex + 4 + bytes.length) {
var newBuffer = new haxe_io_Bytes(new ArrayBuffer(this.controllers.h[id]._inputBufferIndex + 4 + bytes.length));
newBuffer.blit(0,this.controllers.h[id]._inputBuffer,0,this.controllers.h[id]._inputBufferIndex);
this.controllers.h[id]._inputBuffer = newBuffer;
}
this.controllers.h[id]._inputBuffer.setInt32(this.controllers.h[id]._inputBufferIndex,bytes.length);
this.controllers.h[id]._inputBuffer.blit(this.controllers.h[id]._inputBufferIndex + 4,bytes,0,bytes.length);
this.controllers.h[id]._inputBufferIndex += 4 + bytes.length;
}
}
,sendPing: function() {
var bytes = new haxe_io_Bytes(new ArrayBuffer(5));
bytes.b[0] = 4;
bytes.setFloat(1,kha_Scheduler.realTime());
this.sendToServer(bytes);
}
,sendPlayerUpdate: function() {
}
,receive: function(bytes,client) {
var _g = bytes.b[0];
switch(_g) {
case 0:
var index = bytes.b[1];
this.localClient = new kha_network_LocalClient(index);
kha_Scheduler.resetTime();
this.startCallback();
break;
case 1:
var time = bytes.getDouble(1);
var offset = 9;
var entity = this.entities.iterator();
while(entity.hasNext()) {
var entity1 = entity.next();
entity1._receive(offset,bytes);
offset += entity1._size();
}
kha_Scheduler.back(time);
break;
case 3:
var _g1 = bytes.b[1];
switch(_g1) {
case 0:
break;
case 1:
this.executeRPC(bytes);
break;
}
break;
case 4:
var sendTime = bytes.getFloat(1);
this.ping = kha_Scheduler.realTime() - sendTime;
break;
case 5:
this.refusedCallback();
break;
case 6:
this.currentPlayers = bytes.getInt32(1);
break;
}
}
,executeRPC: function(bytes) {
var args = [];
var syncId = bytes.getInt32(2);
var index = 6;
var classnamelength = bytes.getUInt16(index);
index += 2;
var classname = "";
var _g1 = 0;
var _g = classnamelength;
while(_g1 < _g) {
var i = _g1++;
classname += String.fromCharCode(bytes.b[index]);
++index;
}
var methodnamelength = bytes.getUInt16(index);
index += 2;
var methodname = "";
var _g11 = 0;
var _g2 = methodnamelength;
while(_g11 < _g2) {
var i1 = _g11++;
methodname += String.fromCharCode(bytes.b[index]);
++index;
}
while(index < bytes.length) {
var type = bytes.b[index];
++index;
switch(type) {
case 66:
var value = bytes.b[index] == 1;
++index;
haxe_Log.trace("Bool: " + (value == null ? "null" : "" + value),{ fileName : "Session.hx", lineNumber : 288, className : "kha.network.Session", methodName : "executeRPC"});
args.push(value);
break;
case 70:
var value1 = bytes.getDouble(index);
index += 8;
haxe_Log.trace("Float: " + value1,{ fileName : "Session.hx", lineNumber : 293, className : "kha.network.Session", methodName : "executeRPC"});
args.push(value1);
break;
case 73:
var value2 = bytes.getInt32(index);
index += 4;
haxe_Log.trace("Int: " + value2,{ fileName : "Session.hx", lineNumber : 298, className : "kha.network.Session", methodName : "executeRPC"});
args.push(value2);
break;
case 83:
var length = bytes.getUInt16(index);
index += 2;
var str = "";
var _g12 = 0;
var _g3 = length;
while(_g12 < _g3) {
var i2 = _g12++;
str += String.fromCharCode(bytes.b[index]);
++index;
}
haxe_Log.trace("String: " + str,{ fileName : "Session.hx", lineNumber : 308, className : "kha.network.Session", methodName : "executeRPC"});
args.push(str);
break;
default:
haxe_Log.trace("Unknown argument type.",{ fileName : "Session.hx", lineNumber : 311, className : "kha.network.Session", methodName : "executeRPC"});
}
}
if(syncId == -1) {
Reflect.field(Type.resolveClass(classname),methodname + "_remotely").apply(null,args);
} else {
var o = kha_network_SyncBuilder.objects[syncId];
Reflect.field(kha_network_SyncBuilder.objects[syncId],methodname + "_remotely").apply(o,args);
}
}
,waitForStart: function(callback,refuseCallback,errorCallback,closeCallback,resCallback) {
var _gthis = this;
this.startCallback = callback;
this.refusedCallback = refuseCallback;
this.resetCallback = resCallback;
this.network = new kha_network_Network(this.address,this.port,errorCallback,function() {
closeCallback();
_gthis.reset();
});
this.network.listen(function(bytes) {
_gthis.receive(bytes);
});
this.updateTaskId = kha_Scheduler.addFrameTask($bind(this,this.update),0);
this.ping = 1;
this.pingTaskId = kha_Scheduler.addTimeTask($bind(this,this.sendPing),0,1);
}
,reset: function() {
kha_Scheduler.removeFrameTask(this.updateTaskId);
kha_Scheduler.removeTimeTask(this.pingTaskId);
this.currentPlayers = 0;
this.ping = 1;
this.controllers = new haxe_ds_IntMap();
this.entities = new haxe_ds_IntMap();
this.resetCallback();
}
,update: function() {
var controller = this.controllers.iterator();
while(controller.hasNext()) {
var controller1 = controller.next();
if(controller1._inputBufferIndex > 0) {
var bytes = new haxe_io_Bytes(new ArrayBuffer(22 + controller1._inputBufferIndex));
bytes.b[0] = 2;
bytes.setInt32(1,controller1._id());
bytes.setDouble(5,kha_Scheduler.realTime());
bytes.setInt32(13,kha_System.windowWidth(0));
bytes.setInt32(17,kha_System.windowHeight(0));
var v = kha_System.get_screenRotation()[1];
bytes.b[21] = v & 255;
bytes.blit(22,controller1._inputBuffer,0,controller1._inputBufferIndex);
this.sendToServer(bytes);
controller1._inputBufferIndex = 0;
}
}
}
,sendToServer: function(bytes) {
this.network.send(bytes,false);
}
,__class__: kha_network_Session
};
var kha_network_SyncBuilder = function() { };
$hxClasses["kha.network.SyncBuilder"] = kha_network_SyncBuilder;
kha_network_SyncBuilder.__name__ = true;
var kha_simd_Float32x4 = function(_0,_1,_2,_3) {
this._0 = _0;
this._1 = _1;
this._2 = _2;
this._3 = _3;
};
$hxClasses["kha.simd.Float32x4"] = kha_simd_Float32x4;
kha_simd_Float32x4.__name__ = true;
kha_simd_Float32x4.create = function() {
return new kha_simd_Float32x4(0,0,0,0);
};
kha_simd_Float32x4.loadAllFast = function(t) {
return new kha_simd_Float32x4(t,t,t,t);
};
kha_simd_Float32x4.load = function(a,b,c,d) {
return new kha_simd_Float32x4(a,b,c,d);
};
kha_simd_Float32x4.loadFast = function(a,b,c,d) {
return new kha_simd_Float32x4(a,b,c,d);
};
kha_simd_Float32x4.get = function(t,index) {
var value = 0;
switch(index) {
case 0:
value = t._0;
break;
case 1:
value = t._1;
break;
case 2:
value = t._2;
break;
case 3:
value = t._3;
break;
}
return value;
};
kha_simd_Float32x4.getFast = function(t,index) {
switch(index) {
case 0:
return t._0;
case 1:
return t._1;
case 2:
return t._2;
case 3:
return t._3;
}
return 0;
};
kha_simd_Float32x4.abs = function(t) {
return new kha_simd_Float32x4(Math.abs(t._0),Math.abs(t._1),Math.abs(t._2),Math.abs(t._3));
};
kha_simd_Float32x4.add = function(a,b) {
return new kha_simd_Float32x4(a._0 + b._0,a._1 + b._1,a._2 + b._2,a._3 + b._3);
};
kha_simd_Float32x4.div = function(a,b) {
return new kha_simd_Float32x4(a._0 / b._0,a._1 / b._1,a._2 / b._2,a._3 / b._3);
};
kha_simd_Float32x4.mul = function(a,b) {
return new kha_simd_Float32x4(a._0 * b._0,a._1 * b._1,a._2 * b._2,a._3 * b._3);
};
kha_simd_Float32x4.neg = function(t) {
return new kha_simd_Float32x4(-t._0,-t._1,-t._2,-t._3);
};
kha_simd_Float32x4.reciprocalApproximation = function(t) {
return new kha_simd_Float32x4(0,0,0,0);
};
kha_simd_Float32x4.reciprocalSqrtApproximation = function(t) {
return new kha_simd_Float32x4(0,0,0,0);
};
kha_simd_Float32x4.sub = function(a,b) {
return new kha_simd_Float32x4(a._0 - b._0,a._1 - b._1,a._2 - b._2,a._3 - b._3);
};
kha_simd_Float32x4.sqrt = function(t) {
return new kha_simd_Float32x4(Math.sqrt(t._0),Math.sqrt(t._1),Math.sqrt(t._2),Math.sqrt(t._3));
};
kha_simd_Float32x4.prototype = {
_0: null
,_1: null
,_2: null
,_3: null
,__class__: kha_simd_Float32x4
};
var kha_vr_Pose = function() {
this.Orientation = new kha_math_Quaternion();
this.Position = new kha_math_Vector3();
};
$hxClasses["kha.vr.Pose"] = kha_vr_Pose;
kha_vr_Pose.__name__ = true;
kha_vr_Pose.prototype = {
Orientation: null
,Position: null
,__class__: kha_vr_Pose
};
var kha_vr_PoseState = function() {
};
$hxClasses["kha.vr.PoseState"] = kha_vr_PoseState;
kha_vr_PoseState.__name__ = true;
kha_vr_PoseState.prototype = {
Pose: null
,AngularVelocity: null
,LinearVelocity: null
,AngularAcceleration: null
,LinearAcceleration: null
,TimeInSeconds: null
,__class__: kha_vr_PoseState
};
var kha_vr_SensorState = function() {
};
$hxClasses["kha.vr.SensorState"] = kha_vr_SensorState;
kha_vr_SensorState.__name__ = true;
kha_vr_SensorState.prototype = {
Predicted: null
,Recorded: null
,Temperature: null
,Status: null
,__class__: kha_vr_SensorState
};
var kha_vr_TimeWarpImage = function() {
};
$hxClasses["kha.vr.TimeWarpImage"] = kha_vr_TimeWarpImage;
kha_vr_TimeWarpImage.__name__ = true;
kha_vr_TimeWarpImage.prototype = {
Image: null
,TexCoordsFromTanAngles: null
,Pose: null
,__class__: kha_vr_TimeWarpImage
};
var kha_vr_TimeWarpParms = function() {
};
$hxClasses["kha.vr.TimeWarpParms"] = kha_vr_TimeWarpParms;
kha_vr_TimeWarpParms.__name__ = true;
kha_vr_TimeWarpParms.prototype = {
LeftImage: null
,RightImage: null
,LeftOverlay: null
,RightOverlay: null
,__class__: kha_vr_TimeWarpParms
};
var zui_Canvas = function() { };
$hxClasses["zui.Canvas"] = zui_Canvas;
zui_Canvas.__name__ = true;
zui_Canvas.draw = function(ui,canvas,g) {
ui.begin(g);
ui.g = g;
var _g = 0;
var _g1 = canvas.elements;
while(_g < _g1.length) {
var elem = _g1[_g];
++_g;
zui_Canvas.drawElement(ui,canvas,elem);
}
ui.end();
};
zui_Canvas.getAsset = function(canvas,asset) {
var _g = 0;
var _g1 = canvas.assets;
while(_g < _g1.length) {
var a = _g1[_g];
++_g;
if(a.name == asset) {
return a.image;
}
}
return null;
};
zui_Canvas.drawElement = function(ui,canvas,element) {
ui._x = canvas.x + element.x;
ui._y = canvas.y + element.y;
ui._w = element.width;
var _g = element.type;
switch(_g) {
case 0:
var size = ui.fontSmallSize;
ui.fontSmallSize = element.height;
ui.text(element.text);
ui.fontSmallSize = size;
break;
case 1:
if(element.image == null) {
element.image = zui_Canvas.getAsset(canvas,element.asset);
}
if(element.image != null) {
ui.image(element.image);
}
break;
case 2:
ui.button(element.text);
break;
}
if(element.children != null) {
var _g1 = 0;
var _g2 = element.children;
while(_g1 < _g2.length) {
var c = _g2[_g1];
++_g1;
zui_Canvas.drawElement(ui,canvas,c);
}
}
};
var zui_Id = function() { };
$hxClasses["zui.Id"] = zui_Id;
zui_Id.__name__ = true;
var zui_Themes = function() { };
$hxClasses["zui.Themes"] = zui_Themes;
zui_Themes.__name__ = true;
var zui_Zui = function(ops) {
this.textToSubmit = "";
this.submitTextHandle = null;
this.textSelectedHandle = null;
this.scrollEnabled = true;
this.scrollingHandle = null;
this.windowEnded = true;
this.curRatio = -1;
this.cursorY = 0;
this.cursorX = 0;
this.isKeyDown = false;
this.isTyping = false;
this.isScrolling = false;
if(ops.theme == null) {
ops.theme = zui_Themes.dark;
}
this.t = ops.theme;
if(ops.khaWindowId == null) {
ops.khaWindowId = 0;
}
if(ops.scaleFactor == null) {
ops.scaleFactor = 1.0;
}
if(ops.scaleTexture == null) {
ops.scaleTexture = 1.0;
}
if(ops.autoNotifyInput == null) {
ops.autoNotifyInput = true;
}
this.ops = ops;
this.setScaleFactor(ops.scaleFactor);
if(ops.autoNotifyInput) {
kha_input_Mouse.get().notifyWindowed(ops.khaWindowId,$bind(this,this.onMouseDown),$bind(this,this.onMouseUp),$bind(this,this.onMouseMove),$bind(this,this.onMouseWheel));
kha_input_Keyboard.get().notify($bind(this,this.onKeyDown),$bind(this,this.onKeyUp));
}
};
$hxClasses["zui.Zui"] = zui_Zui;
zui_Zui.__name__ = true;
zui_Zui.prototype = {
t: null
,SCALE: null
,isScrolling: null
,isTyping: null
,inputX: null
,inputY: null
,inputInitialX: null
,inputInitialY: null
,inputDX: null
,inputDY: null
,inputWheelDelta: null
,inputStarted: null
,inputReleased: null
,inputDown: null
,inputDownR: null
,isKeyDown: null
,key: null
,'char': null
,cursorX: null
,cursorY: null
,ratios: null
,curRatio: null
,xBeforeSplit: null
,wBeforeSplit: null
,globalG: null
,g: null
,ops: null
,fontSize: null
,fontSmallSize: null
,fontOffsetY: null
,fontSmallOffsetY: null
,arrowOffsetX: null
,arrowOffsetY: null
,titleOffsetX: null
,buttonOffsetY: null
,checkOffsetX: null
,checkOffsetY: null
,checkSelectOffsetX: null
,checkSelectOffsetY: null
,radioOffsetX: null
,radioOffsetY: null
,radioSelectOffsetX: null
,radioSelectOffsetY: null
,scrollAlign: null
,_x: null
,_y: null
,_w: null
,_h: null
,_windowX: null
,_windowY: null
,_windowW: null
,_windowH: null
,currentWindow: null
,windowEnded: null
,scrollingHandle: null
,scrollEnabled: null
,textSelectedHandle: null
,textSelectedCurrentText: null
,submitTextHandle: null
,textToSubmit: null
,setScaleFactor: function(scaleFactor) {
this.SCALE = this.ops.scaleFactor = scaleFactor * this.ops.scaleTexture;
this.fontSize = this.t._FONT_SIZE * this.ops.scaleFactor | 0;
this.fontSmallSize = this.t._FONT_SMALL_SIZE * this.ops.scaleFactor | 0;
var fontHeight = this.ops.font.height(this.fontSize);
var fontSmallHeight = this.ops.font.height(this.fontSmallSize);
this.fontOffsetY = (this.t._ELEMENT_H * this.SCALE - fontHeight) / 2;
this.fontSmallOffsetY = (this.t._ELEMENT_H * this.SCALE - fontSmallHeight) / 2;
this.arrowOffsetY = (this.t._ELEMENT_H * this.SCALE - this.t._ARROW_H * this.SCALE) / 2;
this.arrowOffsetX = this.arrowOffsetY;
this.titleOffsetX = (this.arrowOffsetX * 2 + this.t._ARROW_W * this.SCALE) / this.SCALE;
this.buttonOffsetY = (this.t._ELEMENT_H * this.SCALE - this.t._BUTTON_H * this.SCALE) / 2;
this.checkOffsetY = (this.t._ELEMENT_H * this.SCALE - this.t._CHECK_H * this.SCALE) / 2;
this.checkOffsetX = this.checkOffsetY;
this.checkSelectOffsetY = (this.t._CHECK_H * this.SCALE - this.t._CHECK_SELECT_H * this.SCALE) / 2;
this.checkSelectOffsetX = this.checkSelectOffsetY;
this.radioOffsetY = (this.t._ELEMENT_H * this.SCALE - this.t._RADIO_H * this.SCALE) / 2;
this.radioOffsetX = this.radioOffsetY;
this.radioSelectOffsetY = (this.t._RADIO_H * this.SCALE - this.t._RADIO_SELECT_H * this.SCALE) / 2;
this.radioSelectOffsetX = this.radioSelectOffsetY;
this.scrollAlign = 0;
}
,bakeElements: function() {
zui_Zui.elementsBaked = true;
zui_Zui.checkSelectImage = kha_Image.createRenderTarget(this.t._CHECK_SELECT_W * this.SCALE | 0,this.t._CHECK_SELECT_H * this.SCALE | 0,null,0,1,this.ops.khaWindowId);
var g = zui_Zui.checkSelectImage.get_g2();
g.begin(true,0);
g.set_color(this.t.CHECK_SELECT_COL);
g.drawLine(0,0,this.t._CHECK_SELECT_W * this.SCALE,this.t._CHECK_SELECT_H * this.SCALE,2);
g.drawLine(this.t._CHECK_SELECT_W * this.SCALE,0,0,this.t._CHECK_SELECT_H * this.SCALE,2);
g.end();
}
,remove: function() {
if(this.ops.autoNotifyInput) {
kha_input_Mouse.get().removeWindowed(this.ops.khaWindowId,$bind(this,this.onMouseDown),$bind(this,this.onMouseUp),$bind(this,this.onMouseMove),$bind(this,this.onMouseWheel));
kha_input_Keyboard.get().remove($bind(this,this.onKeyDown),$bind(this,this.onKeyUp));
}
}
,begin: function(g) {
if(!zui_Zui.elementsBaked) {
this.bakeElements();
}
this.SCALE = this.ops.scaleFactor;
this.globalG = g;
this._x = 0;
this._y = 0;
this._w = 0;
this._h = 0;
}
,end: function() {
if(!this.windowEnded) {
this.endWindow();
}
this.isKeyDown = false;
this.inputStarted = false;
this.inputReleased = false;
this.inputDX = 0;
this.inputDY = 0;
this.inputWheelDelta = 0;
}
,beginLayout: function(g,x,y,w) {
this.currentWindow = null;
this.g = g;
this.SCALE = 1.0;
this._windowX = 0;
this._windowY = 0;
this._windowW = w;
this._x = x;
this._y = y;
this._w = w;
}
,endLayout: function() {
}
,window: function(handle,x,y,w,h,drag) {
if(drag == null) {
drag = false;
}
w = w | 0;
h = h | 0;
if(handle.texture == null || w != handle.texture.get_width() || h != handle.texture.get_height()) {
this.resize(handle,w,h,this.ops.khaWindowId);
}
if(!this.windowEnded) {
this.endWindow();
}
this.windowEnded = false;
this.g = handle.texture.get_g2();
this.currentWindow = handle;
this._windowX = x + handle.dragX;
this._windowY = y + handle.dragY;
this._windowW = w;
this._windowH = h;
if(this.getInputInRect(this._windowX,this._windowY,this._windowW,this._windowH)) {
handle.redraws = 2;
}
this._x = 0;
this._y = handle.scrollOffset;
if(handle.layout == 1) {
w = this.t._ELEMENT_W * this.SCALE | 0;
}
this._w = !handle.scrollEnabled ? w : w - (this.t._SCROLL_W * this.SCALE | 0);
this._h = h;
if(handle.redraws == 0 && !this.isScrolling && !this.isTyping) {
return false;
}
if(this.t.FILL_WINDOW_BG) {
this.g.begin(true,this.t.WINDOW_BG_COL);
} else {
this.g.begin(true,0);
this.g.set_color(this.t.WINDOW_BG_COL);
this.g.fillRect(this._x,this._y - handle.scrollOffset,handle.lastMaxX,handle.lastMaxY);
}
handle.dragEnabled = drag;
if(drag) {
if(this.inputStarted && this.getInputInRect(this._windowX,this._windowY,this._windowW,15)) {
handle.dragging = true;
} else if(this.inputReleased) {
handle.dragging = false;
}
if(handle.dragging) {
handle.redraws = 2;
handle.dragX += this.inputDX | 0;
handle.dragY += this.inputDY | 0;
}
this._y += 15;
}
return true;
}
,endWindow: function() {
var handle = this.currentWindow;
if(handle.redraws > 0 || this.isScrolling || this.isTyping) {
if(handle.dragEnabled) {
this.g.set_color(this.t.SEPARATOR_COL);
this.g.fillRect(0,0,this._windowW,15);
}
var fullHeight = this._y - handle.scrollOffset;
if(fullHeight < this._windowH || handle.layout == 1 || !this.scrollEnabled) {
handle.scrollEnabled = false;
handle.scrollOffset = 0;
} else {
handle.scrollEnabled = true;
var amountToScroll = fullHeight - this._windowH;
var amountScrolled = -handle.scrollOffset;
var ratio = amountScrolled / amountToScroll;
var barH = this._windowH * Math.abs(this._windowH / fullHeight);
barH = Math.max(barH,this.t._ELEMENT_H * this.SCALE);
var totalScrollableArea = this._windowH - barH;
var e = amountToScroll / totalScrollableArea;
var barY = totalScrollableArea * ratio;
if(this.inputStarted && this.getInputInRect(this._windowX + this._windowW - this.t._SCROLL_BAR_W * this.SCALE,barY + this._windowY,this.t._SCROLL_BAR_W * this.SCALE,barH)) {
handle.scrolling = true;
this.scrollingHandle = handle;
this.isScrolling = true;
}
if(handle.scrolling) {
this.scroll(this.inputDY * e,fullHeight);
} else if(this.inputWheelDelta != 0) {
this.scroll(this.inputWheelDelta * (this.t._ELEMENT_H * this.SCALE),fullHeight);
}
if(handle.scrollOffset > 0) {
handle.scrollOffset = 0;
} else if(fullHeight + handle.scrollOffset < this._windowH) {
handle.scrollOffset = this._windowH - fullHeight;
}
this.g.set_color(this.t.SCROLL_BG_COL);
this.g.fillRect(this._windowW - (this.t._SCROLL_W * this.SCALE | 0),this._windowY,this.t._SCROLL_W * this.SCALE | 0,this._windowH);
this.g.set_color(this.t.SCROLL_COL);
this.g.drawRect(this._windowW - this.t._SCROLL_BAR_W * this.SCALE - this.scrollAlign,barY,this.t._SCROLL_BAR_W * this.SCALE,barH);
}
handle.lastMaxX = this._x;
handle.lastMaxY = this._y;
if(handle.layout == 0) {
handle.lastMaxX += this._windowW;
} else {
handle.lastMaxY += this._windowH;
}
handle.redraws--;
this.g.end();
}
this.windowEnded = true;
this.globalG.begin(false);
this.globalG.set_color(this.t.WINDOW_TINT_COL);
this.globalG.drawScaledImage(handle.texture,this._windowX,this._windowY,handle.texture.get_width() / this.ops.scaleTexture,handle.texture.get_height() / this.ops.scaleTexture);
this.globalG.end();
}
,scroll: function(delta,fullHeight) {
this.currentWindow.scrollOffset -= delta;
}
,panel: function(handle,text,accent) {
if(accent == null) {
accent = 0;
}
if(!this.isVisible()) {
this.endElement();
return handle.selected;
}
if(this.getReleased()) {
handle.selected = !handle.selected;
}
var hover = this.getHover();
if(accent > 0) {
this.g.set_color(accent == 1 ? this.t.PANEL_BG1_COL : this.t.PANEL_BG2_COL);
this.g.fillRect(this._x,this._y,this._w,this.t._ELEMENT_H * this.SCALE);
}
this.drawArrow(handle.selected,hover);
this.g.set_color(hover ? this.t.PANEL_TEXT_COL_HOVER : this.t.PANEL_TEXT_COL);
this.g.set_opacity(1.0);
if(accent > 0) {
this.drawString(this.g,text,this.titleOffsetX,0);
} else {
this.drawStringSmall(this.g,text,this.titleOffsetX,0);
}
this.endElement();
return handle.selected;
}
,image: function(image) {
var w = this._w - this.buttonOffsetY * 2;
var ratio = w / image.get_width();
var h = image.get_height() * ratio;
if(!this.isVisible()) {
this.endElement(h);
return;
}
this.g.set_color(this.t.WINDOW_TINT_COL);
this.g.drawScaledImage(image,this._x + this.buttonOffsetY,this._y,w,h);
this.endElement(h);
}
,text: function(text,align,bg) {
if(bg == null) {
bg = 0;
}
if(align == null) {
align = 0;
}
if(!this.isVisible()) {
this.endElement();
return;
}
if(bg != 0) {
this.g.set_color(bg);
this.g.fillRect(this._x + this.buttonOffsetY,this._y + this.buttonOffsetY,this._w - this.buttonOffsetY * 2,this.t._BUTTON_H * this.SCALE);
}
this.g.set_color(this.t.TEXT_COL);
this.drawStringSmall(this.g,text,this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE,0,align);
this.endElement();
}
,textInput: function(handle,label,align) {
if(align == null) {
align = 0;
}
if(label == null) {
label = "";
}
if(!this.isVisible()) {
this.endElement();
return handle.text;
}
if(this.submitTextHandle == handle) {
handle.text = this.textToSubmit;
this.textToSubmit = "";
this.submitTextHandle = null;
this.textSelectedCurrentText = "";
}
var hover = this.getHover();
this.g.set_color(hover ? this.t.TEXT_INPUT_BG_COL_HOVER : this.t.TEXT_INPUT_BG_COL);
var g = this.g;
var x = this._x + this.buttonOffsetY;
var y = this._y + this.buttonOffsetY;
var w = this._w - this.buttonOffsetY * 2;
var h = this.t._BUTTON_H * this.SCALE;
if(this.t.FILL_TEXT_INPUT_BG) {
g.fillRect(x,y,w,h);
} else {
g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE);
}
if(this.textSelectedHandle != handle && this.getReleased()) {
this.isTyping = true;
this.submitTextHandle = this.textSelectedHandle;
this.textToSubmit = this.textSelectedCurrentText;
this.textSelectedHandle = handle;
this.textSelectedCurrentText = handle.text;
this.cursorX = handle.text.length;
this.cursorY = 0;
if(kha_input_Keyboard.get() != null) {
kha_input_Keyboard.get().show();
}
}
if(this.textSelectedHandle == handle) {
var text = this.textSelectedCurrentText;
if(this.isKeyDown) {
if(this.key == kha_Key.LEFT) {
if(this.cursorX > 0) {
this.cursorX--;
}
} else if(this.key == kha_Key.RIGHT) {
if(this.cursorX < text.length) {
this.cursorX++;
}
} else if(this.key == kha_Key.BACKSPACE) {
if(this.cursorX > 0) {
text = HxOverrides.substr(text,0,this.cursorX - 1) + HxOverrides.substr(text,this.cursorX,null);
this.cursorX--;
}
} else if(this.key == kha_Key.ENTER) {
this.deselectText();
} else if(this.key == kha_Key.CHAR) {
text = HxOverrides.substr(text,0,this.cursorX) + this["char"] + HxOverrides.substr(text,this.cursorX,null);
this.cursorX++;
}
}
var time = kha_Scheduler.time();
if(time % (this.t.TEXT_CURSOR_FLASH_SPEED * 2.0) < this.t.TEXT_CURSOR_FLASH_SPEED) {
this.g.set_color(this.t.TEXT_CURSOR_COL);
var cursorHeight = this.t._ELEMENT_H * this.SCALE - this.buttonOffsetY * 3.0;
var lineHeight = this.t._ELEMENT_H * this.SCALE;
var str = align == 0 ? HxOverrides.substr(text,0,this.cursorX) : text.substring(this.cursorX,text.length);
var strw = this.g.get_font().width(this.g.get_fontSize(),str);
var off = this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE;
var cursorX = align == 0 ? this._x + strw + off : this._x + this._w - strw - off;
this.g.fillRect(cursorX,this._y + this.cursorY * lineHeight + this.buttonOffsetY * 1.5,this.SCALE,cursorHeight);
}
this.textSelectedCurrentText = text;
}
if(label != "") {
this.g.set_color(this.t.DEFAULT_LABEL_COL);
var labelAlign = align == 2 ? 0 : 2;
var xOffset = labelAlign == 0 ? 7 : 0;
this.drawStringSmall(this.g,label,xOffset,0,labelAlign);
}
this.g.set_color(this.t.TEXT_COL);
if(this.textSelectedHandle != handle) {
this.drawStringSmall(this.g,handle.text,null,0,align);
} else {
this.drawStringSmall(this.g,this.textSelectedCurrentText,null,0,align);
}
this.endElement();
return handle.text;
}
,deselectText: function() {
this.submitTextHandle = this.textSelectedHandle;
this.textToSubmit = this.textSelectedCurrentText;
this.textSelectedHandle = null;
this.isTyping = false;
if(this.currentWindow != null) {
this.currentWindow.redraws = 2;
}
if(kha_input_Keyboard.get() != null) {
kha_input_Keyboard.get().hide();
}
}
,button: function(text) {
if(!this.isVisible()) {
this.endElement();
return false;
}
var wasPressed = this.getReleased();
var pushed = this.getPushed();
var hover = this.getHover();
this.g.set_color(pushed ? this.t.BUTTON_BG_COL_PRESSED : hover ? this.t.BUTTON_BG_COL_HOVER : this.t.BUTTON_BG_COL);
var g = this.g;
var x = this._x + this.buttonOffsetY;
var y = this._y + this.buttonOffsetY;
var w = this._w - this.buttonOffsetY * 2;
var h = this.t._BUTTON_H * this.SCALE;
if(this.t.FILL_BUTTON_BG) {
g.fillRect(x,y,w,h);
} else {
g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE);
}
this.g.set_color(this.t.BUTTON_TEXT_COL);
this.drawStringSmall(this.g,text,0,0,1);
this.endElement();
return wasPressed;
}
,check: function(handle,text) {
if(!this.isVisible()) {
this.endElement();
return handle.selected;
}
if(this.getReleased()) {
handle.selected = !handle.selected;
}
var hover = this.getHover();
this.drawCheck(handle.selected,hover);
this.g.set_color(hover ? this.t.TEXT_COL_HOVER : this.t.TEXT_COL);
this.drawStringSmall(this.g,text,this.titleOffsetX,0,0);
this.endElement();
return handle.selected;
}
,radio: function(handle,position,text) {
if(!this.isVisible()) {
this.endElement();
return handle.position == position;
}
if(this.getReleased()) {
handle.position = position;
}
var hover = this.getHover();
this.drawRadio(handle.position == position,hover);
this.g.set_color(hover ? this.t.TEXT_COL_HOVER : this.t.TEXT_COL);
this.drawStringSmall(this.g,text,this.titleOffsetX,0);
this.endElement();
return handle.position == position;
}
,inlineRadio: function(handle,texts) {
if(!this.isVisible()) {
this.endElement();
return handle.position;
}
if(this.getReleased()) {
if(++handle.position >= texts.length) {
handle.position = 0;
}
}
var hover = this.getHover();
this.drawInlineRadio(texts[handle.position],hover);
this.endElement();
return handle.position;
}
,slider: function(handle,text,from,to,filled,precision,displayValue) {
if(displayValue == null) {
displayValue = true;
}
if(precision == null) {
precision = 100;
}
if(filled == null) {
filled = false;
}
if(to == null) {
to = 1.0;
}
if(from == null) {
from = 0.0;
}
if(!this.isVisible()) {
this.endElement();
return handle.value;
}
if(this.getStarted()) {
handle.scrolling = true;
this.scrollingHandle = handle;
this.isScrolling = true;
}
if(handle.scrolling) {
var range = to - from;
var sliderX = this._x + this._windowX + this.buttonOffsetY;
var sliderW = this._w - this.buttonOffsetY * 2;
var step = range / sliderW;
var value = from + (this.inputX - sliderX) * step;
handle.value = (value * precision | 0) / precision;
if(handle.value < from) {
handle.value = from;
} else if(handle.value > to) {
handle.value = to;
}
}
var hover = this.getHover();
this.drawSlider(handle.value,from,to,filled,hover);
this.g.set_color(this.t.DEFAULT_LABEL_COL);
this.drawStringSmall(this.g,text,0,0,2);
if(displayValue) {
this.g.set_color(this.t.TEXT_COL);
this.drawStringSmall(this.g,handle.value + "");
}
this.endElement();
return handle.value;
}
,separator: function() {
if(!this.isVisible()) {
this._y += 2;
return;
}
this.g.set_color(this.t.SEPARATOR_COL);
this.g.fillRect(this._x,this._y,this._w - this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE,this.t._LINE_STRENGTH * this.SCALE);
this._y += 2;
}
,drawArrow: function(selected,hover) {
var x = this._x + this.arrowOffsetX;
var y = this._y + this.arrowOffsetY;
this.g.set_color(hover ? this.t.ARROW_COL_HOVER : this.t.ARROW_COL);
if(selected) {
this.g.fillTriangle(x,y,x + this.t._ARROW_W * this.SCALE,y,x + this.t._ARROW_W * this.SCALE / 2,y + this.t._ARROW_H * this.SCALE);
} else {
this.g.fillTriangle(x,y,x,y + this.t._ARROW_H * this.SCALE,x + this.t._ARROW_W * this.SCALE,y + this.t._ARROW_H * this.SCALE / 2);
}
}
,drawCheck: function(selected,hover) {
var x = this._x + this.checkOffsetX;
var y = this._y + this.checkOffsetY;
this.g.set_color(hover ? this.t.CHECK_COL_HOVER : this.t.CHECK_COL);
var g = this.g;
var w = this.t._CHECK_W * this.SCALE;
var h = this.t._CHECK_H * this.SCALE;
if(this.t.FILL_CHECK_BG) {
g.fillRect(x,y,w,h);
} else {
g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE);
}
if(selected) {
this.g.set_color(-1);
this.g.drawImage(zui_Zui.checkSelectImage,x + this.checkSelectOffsetX,y + this.checkSelectOffsetY);
}
}
,drawRadio: function(selected,hover) {
var x = this._x + this.radioOffsetX;
var y = this._y + this.radioOffsetY;
this.g.set_color(hover ? this.t.RADIO_COL_HOVER : this.t.RADIO_COL);
var g = this.g;
var w = this.t._RADIO_W * this.SCALE;
var h = this.t._RADIO_H * this.SCALE;
if(this.t.FILL_RADIO_BG) {
g.fillRect(x,y,w,h);
} else {
g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE);
}
if(selected) {
this.g.set_color(this.t.RADIO_SELECT_COL);
this.g.fillRect(x + this.radioSelectOffsetX,y + this.radioSelectOffsetY,this.t._RADIO_SELECT_W * this.SCALE,this.t._RADIO_SELECT_H * this.SCALE);
}
}
,drawInlineRadio: function(text,hover) {
if(hover) {
this.g.set_color(this.t.RADIO_COL_HOVER);
this.g.fillRect(this._x + 5,this._y + 5,this._w - 10,this.t._ELEMENT_H * this.SCALE - 10);
}
var x = this._x + this.arrowOffsetX;
var y = this._y + this.arrowOffsetY;
this.g.set_color(hover ? this.t.ARROW_COL_HOVER : this.t.ARROW_COL);
this.g.fillTriangle(x,y,x,y + this.t._ARROW_H * this.SCALE,x - this.t._ARROW_W * this.SCALE / 2,y + this.t._ARROW_H * this.SCALE / 2);
var x1 = this._x + this._w - this.arrowOffsetX - 5;
this.g.fillTriangle(x1,y,x1,y + this.t._ARROW_H * this.SCALE,x1 + this.t._ARROW_W * this.SCALE / 2,y + this.t._ARROW_H * this.SCALE / 2);
this.g.set_color(hover ? this.t.TEXT_COL_HOVER : this.t.TEXT_COL);
this.drawStringSmall(this.g,text,this.titleOffsetX,0,1);
}
,drawSlider: function(value,from,to,filled,hover) {
var x = this._x + this.buttonOffsetY;
var y = this._y + this.buttonOffsetY;
var w = this._w - this.buttonOffsetY * 2;
this.g.set_color(hover ? this.t.CHECK_COL_HOVER : this.t.CHECK_COL);
var g = this.g;
var h = this.t._BUTTON_H * this.SCALE;
if(this.t.FILL_SLIDER_BG) {
g.fillRect(x,y,w,h);
} else {
g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE);
}
this.g.set_color(hover ? this.t.SLIDER_COL_HOVER : this.t.SLIDER_COL);
var offset = (value - from) / (to - from);
var barW = 8 * this.SCALE;
var sliderX = filled ? x : x + (w - barW) * offset;
var sliderW = filled ? w * offset : barW;
this.g.fillRect(sliderX,y,sliderW,this.t._BUTTON_H * this.SCALE);
}
,drawString: function(g,text,xOffset,yOffset,align) {
if(align == null) {
align = 0;
}
if(yOffset == null) {
yOffset = 0;
}
if(xOffset == null) {
xOffset = this.t._DEFAULT_TEXT_OFFSET_X;
}
xOffset *= this.SCALE;
g.set_font(this.ops.font);
g.set_fontSize(this.fontSize);
if(align == 1) {
xOffset = this._w / 2 - this.ops.font.width(this.fontSize,text) / 2;
} else if(align == 2) {
xOffset = this._w - this.ops.font.width(this.fontSize,text) - this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE;
}
g.drawString(text,this._x + xOffset,this._y + this.fontOffsetY + yOffset);
}
,drawStringSmall: function(g,text,xOffset,yOffset,align) {
if(align == null) {
align = 0;
}
if(yOffset == null) {
yOffset = 0;
}
if(xOffset == null) {
xOffset = this.t._DEFAULT_TEXT_OFFSET_X;
}
xOffset *= this.SCALE;
g.set_font(this.ops.font);
g.set_fontSize(this.fontSmallSize);
if(align == 1) {
xOffset = this._w / 2 - this.ops.font.width(this.fontSmallSize,text) / 2;
} else if(align == 2) {
xOffset = this._w - this.ops.font.width(this.fontSmallSize,text) - this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE;
}
g.drawString(text,this._x + xOffset,this._y + this.fontSmallOffsetY + yOffset);
}
,endElement: function(elementSize) {
if(this.currentWindow == null) {
this._y += this.t._ELEMENT_H * this.SCALE + this.t._ELEMENT_SEPARATOR_SIZE * this.SCALE;
return;
}
if(this.currentWindow.layout == 0) {
if(this.curRatio == -1 || this.ratios != null && this.curRatio == this.ratios.length - 1) {
if(elementSize == null) {
elementSize = this.t._ELEMENT_H * this.SCALE + this.t._ELEMENT_SEPARATOR_SIZE * this.SCALE;
}
this._y += elementSize;
if(this.ratios != null && this.curRatio == this.ratios.length - 1) {
this.curRatio = -1;
this.ratios = null;
this._x = this.xBeforeSplit;
this._w = this.wBeforeSplit;
}
} else {
this.curRatio++;
this._x += this._w;
this._w = this.wBeforeSplit * this.ratios[this.curRatio] | 0;
}
} else {
this._x += this._w + this.t._ELEMENT_SEPARATOR_SIZE * this.SCALE;
}
}
,row: function(ratios) {
this.ratios = ratios;
this.curRatio = 0;
this.xBeforeSplit = this._x;
this.wBeforeSplit = this._w;
this._w = this._w * ratios[this.curRatio] | 0;
}
,indent: function() {
this._x += this.t._TAB_W * this.SCALE | 0;
this._w -= this.t._TAB_W * this.SCALE | 0;
}
,unindent: function() {
this._x -= this.t._TAB_W * this.SCALE | 0;
this._w += this.t._TAB_W * this.SCALE | 0;
}
,drawRect: function(g,fill,x,y,w,h,strength) {
if(strength == null) {
strength = 1.0;
}
if(fill) {
g.fillRect(x,y,w,h);
} else {
g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE);
}
}
,isVisible: function() {
if(this.currentWindow == null) {
return true;
}
if(this._y + this.t._ELEMENT_H * this.SCALE > 0) {
return this._y < this.currentWindow.texture.get_height();
} else {
return false;
}
}
,getReleased: function() {
if(this.inputReleased && this.getHover()) {
return this.getInitialHover();
} else {
return false;
}
}
,getPushed: function() {
if(this.inputDown && this.getHover()) {
return this.getInitialHover();
} else {
return false;
}
}
,getStarted: function() {
if(this.inputStarted) {
return this.getHover();
} else {
return false;
}
}
,getInitialHover: function() {
if(this.inputInitialX >= this._windowX + this._x && this.inputInitialX < this._windowX + this._x + this._w && this.inputInitialY >= this._windowY + this._y) {
return this.inputInitialY < this._windowY + this._y + this.t._ELEMENT_H * this.SCALE;
} else {
return false;
}
}
,getHover: function() {
if(this.inputX >= this._windowX + this._x && this.inputX < this._windowX + this._x + this._w && this.inputY >= this._windowY + this._y) {
return this.inputY < this._windowY + this._y + this.t._ELEMENT_H * this.SCALE;
} else {
return false;
}
}
,getInputInRect: function(x,y,w,h,scale) {
if(scale == null) {
scale = 1.0;
}
if(this.inputX >= x * scale && this.inputX < (x + w) * scale && this.inputY >= y * scale) {
return this.inputY < (y + h) * scale;
} else {
return false;
}
}
,onMouseDown: function(button,x,y) {
this.inputStarted = true;
if(button == 0) {
this.inputDown = true;
} else {
this.inputDownR = true;
}
this.setInitialInputPosition(x * this.ops.scaleTexture | 0,y * this.ops.scaleTexture | 0);
}
,onMouseUp: function(button,x,y) {
if(this.isScrolling) {
this.isScrolling = false;
if(this.scrollingHandle != null) {
this.scrollingHandle.scrolling = false;
}
} else {
this.inputReleased = true;
}
if(button == 0) {
this.inputDown = false;
} else {
this.inputDownR = false;
}
this.setInputPosition(x * this.ops.scaleTexture | 0,y * this.ops.scaleTexture | 0);
this.deselectText();
}
,onMouseMove: function(x,y,movementX,movementY) {
this.setInputPosition(x * this.ops.scaleTexture | 0,y * this.ops.scaleTexture | 0);
}
,onMouseWheel: function(delta) {
this.inputWheelDelta = delta;
}
,setInitialInputPosition: function(inputX,inputY) {
this.setInputPosition(inputX,inputY);
this.inputInitialX = inputX;
this.inputInitialY = inputY;
}
,setInputPosition: function(inputX,inputY) {
this.inputDX += inputX - this.inputX;
this.inputDY += inputY - this.inputY;
this.inputX = inputX;
this.inputY = inputY;
}
,onKeyDown: function(key,$char) {
this.isKeyDown = true;
this.key = key;
this["char"] = $char;
}
,onKeyUp: function(key,$char) {
}
,ELEMENT_W: function() {
return this.t._ELEMENT_W * this.SCALE;
}
,ELEMENT_H: function() {
return this.t._ELEMENT_H * this.SCALE;
}
,ELEMENT_SEPARATOR_SIZE: function() {
return this.t._ELEMENT_SEPARATOR_SIZE * this.SCALE;
}
,ARROW_W: function() {
return this.t._ARROW_W * this.SCALE;
}
,ARROW_H: function() {
return this.t._ARROW_H * this.SCALE;
}
,BUTTON_H: function() {
return this.t._BUTTON_H * this.SCALE;
}
,CHECK_W: function() {
return this.t._CHECK_W * this.SCALE;
}
,CHECK_H: function() {
return this.t._CHECK_H * this.SCALE;
}
,CHECK_SELECT_W: function() {
return this.t._CHECK_SELECT_W * this.SCALE;
}
,CHECK_SELECT_H: function() {
return this.t._CHECK_SELECT_H * this.SCALE;
}
,RADIO_W: function() {
return this.t._RADIO_W * this.SCALE;
}
,RADIO_H: function() {
return this.t._RADIO_H * this.SCALE;
}
,RADIO_SELECT_W: function() {
return this.t._RADIO_SELECT_W * this.SCALE;
}
,RADIO_SELECT_H: function() {
return this.t._RADIO_SELECT_H * this.SCALE;
}
,SCROLL_W: function() {
return this.t._SCROLL_W * this.SCALE | 0;
}
,SCROLL_BAR_W: function() {
return this.t._SCROLL_BAR_W * this.SCALE;
}
,DEFAULT_TEXT_OFFSET_X: function() {
return this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE;
}
,TAB_W: function() {
return this.t._TAB_W * this.SCALE | 0;
}
,LINE_STRENGTH: function() {
return this.t._LINE_STRENGTH * this.SCALE;
}
,resize: function(handle,w,h,khaWindowId) {
if(khaWindowId == null) {
khaWindowId = 0;
}
handle.redraws = 2;
if(handle.texture != null) {
handle.texture.unload();
}
handle.texture = kha_Image.createRenderTarget(w,h,kha_graphics4_TextureFormat.RGBA32,0,1,khaWindowId);
handle.texture.get_g2().set_imageScaleQuality(kha_graphics2_ImageScaleQuality.High);
}
,__class__: zui_Zui
};
var zui_Handle = function(ops) {
this.dragY = 0;
this.dragX = 0;
this.dragEnabled = false;
this.dragging = false;
this.lastMaxY = 0.0;
this.lastMaxX = 0.0;
this.layout = 0;
this.scrollEnabled = false;
this.scrollOffset = 0.0;
this.scrolling = false;
this.redraws = 2;
this.texture = null;
this.text = "";
this.value = 0.0;
this.color = -1;
this.position = 0;
this.selected = false;
if(ops != null) {
if(ops.selected != null) {
this.selected = ops.selected;
}
if(ops.position != null) {
this.position = ops.position;
}
if(ops.value != null) {
this.value = ops.value;
}
if(ops.text != null) {
this.text = ops.text;
}
if(ops.color != null) {
this.color = ops.color;
}
if(ops.layout != null) {
this.layout = ops.layout;
}
}
};
$hxClasses["zui.Handle"] = zui_Handle;
zui_Handle.__name__ = true;
zui_Handle.prototype = {
selected: null
,position: null
,color: null
,value: null
,text: null
,texture: null
,redraws: null
,scrolling: null
,scrollOffset: null
,scrollEnabled: null
,layout: null
,lastMaxX: null
,lastMaxY: null
,dragging: null
,dragEnabled: null
,dragX: null
,dragY: null
,children: null
,nest: function(i,ops) {
if(this.children == null) {
this.children = [];
}
while(this.children.length <= i) this.children.push(null);
if(this.children[i] == null) {
this.children[i] = new zui_Handle(ops);
}
return this.children[i];
}
,__class__: zui_Handle
};
function $iterator(o) { if( o instanceof Array ) return function() { return HxOverrides.iter(o); }; return typeof(o.iterator) == 'function' ? $bind(o,o.iterator) : o.iterator; }
var $_, $fid = 0;
function $bind(o,m) { if( m == null ) return null; if( m.__id__ == null ) m.__id__ = $fid++; var f; if( o.hx__closures__ == null ) o.hx__closures__ = {}; else f = o.hx__closures__[m.__id__]; if( f == null ) { f = function(){ return f.method.apply(f.scope, arguments); }; f.scope = o; f.method = m; o.hx__closures__[m.__id__] = f; } return f; }
$hxClasses["Math"] = Math;
String.prototype.__class__ = $hxClasses["String"] = String;
String.__name__ = true;
$hxClasses["Array"] = Array;
Array.__name__ = true;
Date.prototype.__class__ = $hxClasses["Date"] = Date;
Date.__name__ = ["Date"];
var Int = $hxClasses["Int"] = { __name__ : ["Int"]};
var Dynamic = $hxClasses["Dynamic"] = { __name__ : ["Dynamic"]};
var Float = $hxClasses["Float"] = Number;
Float.__name__ = ["Float"];
var Bool = $hxClasses["Bool"] = Boolean;
Bool.__ename__ = ["Bool"];
var Class = $hxClasses["Class"] = { __name__ : ["Class"]};
var Enum = { };
var __map_reserved = {}
var ArrayBuffer = $global.ArrayBuffer || js_html_compat_ArrayBuffer;
if(ArrayBuffer.prototype.slice == null) {
ArrayBuffer.prototype.slice = js_html_compat_ArrayBuffer.sliceImpl;
}
var DataView = $global.DataView || js_html_compat_DataView;
var Float32Array = $global.Float32Array || js_html_compat_Float32Array._new;
var Uint8Array = $global.Uint8Array || js_html_compat_Uint8Array._new;
haxe_Unserializer.DEFAULT_RESOLVER = new haxe__$Unserializer_DefaultResolver();
haxe_Unserializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:";
haxe_crypto_Base64.CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
haxe_crypto_Base64.BYTES = haxe_io_Bytes.ofString(haxe_crypto_Base64.CHARS);
haxe_ds_ObjectMap.count = 0;
haxe_io_FPHelper.i64tmp = (function($this) {
var $r;
var this1 = new haxe__$Int64__$_$_$Int64(0,0);
$r = this1;
return $r;
}(this));
js_Boot.__toStr = ({ }).toString;
js_html_compat_Float32Array.BYTES_PER_ELEMENT = 4;
js_html_compat_Uint8Array.BYTES_PER_ELEMENT = 1;
kha_Assets.images = new kha__$Assets_ImageList();
kha_Assets.sounds = new kha__$Assets_SoundList();
kha_Assets.blobs = new kha__$Assets_BlobList();
kha_Assets.fonts = new kha__$Assets_FontList();
kha_Assets.videos = new kha__$Assets_VideoList();
kha__$Color_Color_$Impl_$.Black = -16777216;
kha__$Color_Color_$Impl_$.White = -1;
kha__$Color_Color_$Impl_$.Red = -65536;
kha__$Color_Color_$Impl_$.Blue = -16776961;
kha__$Color_Color_$Impl_$.Green = -16711936;
kha__$Color_Color_$Impl_$.Magenta = -65281;
kha__$Color_Color_$Impl_$.Yellow = -256;
kha__$Color_Color_$Impl_$.Cyan = -16711681;
kha__$Color_Color_$Impl_$.Purple = -8388480;
kha__$Color_Color_$Impl_$.Pink = -16181;
kha__$Color_Color_$Impl_$.Orange = -23296;
kha__$Color_Color_$Impl_$.Transparent = 0;
kha__$Color_Color_$Impl_$.invMaxChannelValue = 0.00392156862745098;
kha_CompilerDefines.js = "1";
kha_CompilerDefines.kha_a1 = "1";
kha_CompilerDefines.kha_g3 = "1";
kha_CompilerDefines.kha_g4 = "1";
kha_CompilerDefines.kha_html5_js = "1";
kha_CompilerDefines["source-header"] = "Generated by Haxe 3.4.2";
kha_CompilerDefines.sys_g3 = "1";
kha_CompilerDefines.kha_g1 = "1";
kha_CompilerDefines.sys_a1 = "1";
kha_CompilerDefines.haxe_ver = "3.402";
kha_CompilerDefines.jquery_ver = "11204";
kha_CompilerDefines.kha_js = "1";
kha_CompilerDefines.sys_html5 = "1";
kha_CompilerDefines.canvas_id = "khanvas";
kha_CompilerDefines.kha_version = "1611";
kha_CompilerDefines.sys_g4 = "1";
kha_CompilerDefines.js_es = "5";
kha_CompilerDefines.kha_html5 = "1";
kha_CompilerDefines.zui = "1";
kha_CompilerDefines["js-es5"] = "1";
kha_CompilerDefines.js_es5 = "1";
kha_CompilerDefines.sys_a2 = "1";
kha_CompilerDefines.dce = "std";
kha_CompilerDefines.sys_g1 = "1";
kha_CompilerDefines["true"] = "1";
kha_CompilerDefines.sys_g2 = "1";
kha_CompilerDefines.kha_webgl = "1";
kha_CompilerDefines.kha = "1";
kha_CompilerDefines.kha_g2 = "1";
kha_CompilerDefines.haxe3 = "1";
kha_CompilerDefines.kha_a2 = "1";
kha_CompilerDefines.script_name = "kha";
kha_FontStyle.Default = new kha_FontStyle(false,false,false);
kha_Scheduler.timeWarpSaveTime = 1.0;
kha_Scheduler.DIF_COUNT = 3;
kha_Scheduler.maxframetime = 0.5;
kha_Scheduler.startTime = 0;
kha_Shaders.painter_colored_fragData0 = "s198:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gaGlnaHAgaW50OwoKdmFyeWluZyBoaWdocCB2ZWM0IGZyYWdtZW50Q29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9GcmFnRGF0YVswXSA9IGZyYWdtZW50Q29sb3I7Cn0KCg";
kha_Shaders.painter_colored_fragData1 = "s192:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp2YXJ5aW5nIHZlYzQgZnJhZ21lbnRDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX0ZyYWdEYXRhWzBdID0gZnJhZ21lbnRDb2xvcjsKfQoK";
kha_Shaders.painter_colored_fragData2 = "s210:I3ZlcnNpb24gMzAwIGVzCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CgpvdXQgdmVjNCBGcmFnQ29sb3I7CmluIHZlYzQgZnJhZ21lbnRDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIEZyYWdDb2xvciA9IGZyYWdtZW50Q29sb3I7Cn0KCg";
kha_Shaders.painter_colored_vertData0 = "s331:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmF0dHJpYnV0ZSB2ZWMzIHZlcnRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzQgZnJhZ21lbnRDb2xvcjsKYXR0cmlidXRlIHZlYzQgdmVydGV4Q29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2ZWM0KHZlcnRleFBvc2l0aW9uLCAxLjApOwogICAgZnJhZ21lbnRDb2xvciA9IHZlcnRleENvbG9yOwp9Cgo";
kha_Shaders.painter_colored_vertData1 = "s374:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKYXR0cmlidXRlIG1lZGl1bXAgdmVjMyB2ZXJ0ZXhQb3NpdGlvbjsKdmFyeWluZyBtZWRpdW1wIHZlYzQgZnJhZ21lbnRDb2xvcjsKYXR0cmlidXRlIG1lZGl1bXAgdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICBmcmFnbWVudENvbG9yID0gdmVydGV4Q29sb3I7Cn0KCg";
kha_Shaders.painter_colored_vertData2 = "s354:I3ZlcnNpb24gMzAwIGVzCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKaW4gbWVkaXVtcCB2ZWMzIHZlcnRleFBvc2l0aW9uOwpvdXQgbWVkaXVtcCB2ZWM0IGZyYWdtZW50Q29sb3I7CmluIG1lZGl1bXAgdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICBmcmFnbWVudENvbG9yID0gdmVydGV4Q29sb3I7Cn0KCg";
kha_Shaders.painter_image_fragData0 = "s471:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gaGlnaHAgaW50OwoKdW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgdGV4OwoKdmFyeWluZyBoaWdocCB2ZWMyIHRleENvb3JkOwp2YXJ5aW5nIGhpZ2hwIHZlYzQgY29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBoaWdocCB2ZWM0IHRleGNvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpICogY29sb3I7CiAgICBoaWdocCB2ZWMzIF8zMiA9IHRleGNvbG9yLnh5eiAqIGNvbG9yLnc7CiAgICB0ZXhjb2xvciA9IHZlYzQoXzMyLngsIF8zMi55LCBfMzIueiwgdGV4Y29sb3Iudyk7CiAgICBnbF9GcmFnRGF0YVswXSA9IHRleGNvbG9yOwp9Cgo";
kha_Shaders.painter_image_fragData1 = "s444:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCnZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKdmFyeWluZyB2ZWM0IGNvbG9yOwoKdm9pZCBtYWluKCkKewogICAgdmVjNCB0ZXhjb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKSAqIGNvbG9yOwogICAgdmVjMyBfMzIgPSB0ZXhjb2xvci54eXogKiBjb2xvci53OwogICAgdGV4Y29sb3IgPSB2ZWM0KF8zMi54LCBfMzIueSwgXzMyLnosIHRleGNvbG9yLncpOwogICAgZ2xfRnJhZ0RhdGFbMF0gPSB0ZXhjb2xvcjsKfQoK";
kha_Shaders.painter_image_fragData2 = "s452:I3ZlcnNpb24gMzAwIGVzCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCmluIHZlYzIgdGV4Q29vcmQ7CmluIHZlYzQgY29sb3I7Cm91dCB2ZWM0IEZyYWdDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIHZlYzQgdGV4Y29sb3IgPSB0ZXh0dXJlKHRleCwgdGV4Q29vcmQpICogY29sb3I7CiAgICB2ZWMzIF8zMiA9IHRleGNvbG9yLnh5eiAqIGNvbG9yLnc7CiAgICB0ZXhjb2xvciA9IHZlYzQoXzMyLngsIF8zMi55LCBfMzIueiwgdGV4Y29sb3Iudyk7CiAgICBGcmFnQ29sb3IgPSB0ZXhjb2xvcjsKfQoK";
kha_Shaders.painter_image_vertData0 = "s415:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmF0dHJpYnV0ZSB2ZWMzIHZlcnRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSB2ZWMyIHRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzQgY29sb3I7CmF0dHJpYnV0ZSB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBjb2xvciA9IHZlcnRleENvbG9yOwp9Cgo";
kha_Shaders.painter_image_vertData1 = "s479:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKYXR0cmlidXRlIG1lZGl1bXAgdmVjMyB2ZXJ0ZXhQb3NpdGlvbjsKdmFyeWluZyBtZWRpdW1wIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247CnZhcnlpbmcgbWVkaXVtcCB2ZWM0IGNvbG9yOwphdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBjb2xvciA9IHZlcnRleENvbG9yOwp9Cgo";
kha_Shaders.painter_image_vertData2 = "s444:I3ZlcnNpb24gMzAwIGVzCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKaW4gbWVkaXVtcCB2ZWMzIHZlcnRleFBvc2l0aW9uOwpvdXQgbWVkaXVtcCB2ZWMyIHRleENvb3JkOwppbiBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247Cm91dCBtZWRpdW1wIHZlYzQgY29sb3I7CmluIG1lZGl1bXAgdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICB0ZXhDb29yZCA9IHRleFBvc2l0aW9uOwogICAgY29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK";
kha_Shaders.painter_text_fragData0 = "s351:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gaGlnaHAgaW50OwoKdW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgdGV4OwoKdmFyeWluZyBoaWdocCB2ZWM0IGZyYWdtZW50Q29sb3I7CnZhcnlpbmcgaGlnaHAgdmVjMiB0ZXhDb29yZDsKCnZvaWQgbWFpbigpCnsKICAgIGdsX0ZyYWdEYXRhWzBdID0gdmVjNChmcmFnbWVudENvbG9yLnh5eiwgdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpLnggKiBmcmFnbWVudENvbG9yLncpOwp9Cgo";
kha_Shaders.painter_text_fragData1 = "s340:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCnZhcnlpbmcgdmVjNCBmcmFnbWVudENvbG9yOwp2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9GcmFnRGF0YVswXSA9IHZlYzQoZnJhZ21lbnRDb2xvci54eXosIHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKS54ICogZnJhZ21lbnRDb2xvci53KTsKfQoK";
kha_Shaders.painter_text_fragData2 = "s348:I3ZlcnNpb24gMzAwIGVzCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCm91dCB2ZWM0IEZyYWdDb2xvcjsKaW4gdmVjNCBmcmFnbWVudENvbG9yOwppbiB2ZWMyIHRleENvb3JkOwoKdm9pZCBtYWluKCkKewogICAgRnJhZ0NvbG9yID0gdmVjNChmcmFnbWVudENvbG9yLnh5eiwgdGV4dHVyZSh0ZXgsIHRleENvb3JkKS54ICogZnJhZ21lbnRDb2xvci53KTsKfQoK";
kha_Shaders.painter_text_vertData0 = "s436:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmF0dHJpYnV0ZSB2ZWMzIHZlcnRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSB2ZWMyIHRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzQgZnJhZ21lbnRDb2xvcjsKYXR0cmlidXRlIHZlYzQgdmVydGV4Q29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2ZWM0KHZlcnRleFBvc2l0aW9uLCAxLjApOwogICAgdGV4Q29vcmQgPSB0ZXhQb3NpdGlvbjsKICAgIGZyYWdtZW50Q29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK";
kha_Shaders.painter_text_vertData1 = "s500:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKYXR0cmlidXRlIG1lZGl1bXAgdmVjMyB2ZXJ0ZXhQb3NpdGlvbjsKdmFyeWluZyBtZWRpdW1wIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247CnZhcnlpbmcgbWVkaXVtcCB2ZWM0IGZyYWdtZW50Q29sb3I7CmF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgdmVydGV4Q29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2ZWM0KHZlcnRleFBvc2l0aW9uLCAxLjApOwogICAgdGV4Q29vcmQgPSB0ZXhQb3NpdGlvbjsKICAgIGZyYWdtZW50Q29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK";
kha_Shaders.painter_text_vertData2 = "s466:I3ZlcnNpb24gMzAwIGVzCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKaW4gbWVkaXVtcCB2ZWMzIHZlcnRleFBvc2l0aW9uOwpvdXQgbWVkaXVtcCB2ZWMyIHRleENvb3JkOwppbiBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247Cm91dCBtZWRpdW1wIHZlYzQgZnJhZ21lbnRDb2xvcjsKaW4gbWVkaXVtcCB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBmcmFnbWVudENvbG9yID0gdmVydGV4Q29sb3I7Cn0KCg";
kha_Shaders.painter_video_fragData0 = "s471:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gaGlnaHAgaW50OwoKdW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgdGV4OwoKdmFyeWluZyBoaWdocCB2ZWMyIHRleENvb3JkOwp2YXJ5aW5nIGhpZ2hwIHZlYzQgY29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBoaWdocCB2ZWM0IHRleGNvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpICogY29sb3I7CiAgICBoaWdocCB2ZWMzIF8zMiA9IHRleGNvbG9yLnh5eiAqIGNvbG9yLnc7CiAgICB0ZXhjb2xvciA9IHZlYzQoXzMyLngsIF8zMi55LCBfMzIueiwgdGV4Y29sb3Iudyk7CiAgICBnbF9GcmFnRGF0YVswXSA9IHRleGNvbG9yOwp9Cgo";
kha_Shaders.painter_video_fragData1 = "s444:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCnZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKdmFyeWluZyB2ZWM0IGNvbG9yOwoKdm9pZCBtYWluKCkKewogICAgdmVjNCB0ZXhjb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKSAqIGNvbG9yOwogICAgdmVjMyBfMzIgPSB0ZXhjb2xvci54eXogKiBjb2xvci53OwogICAgdGV4Y29sb3IgPSB2ZWM0KF8zMi54LCBfMzIueSwgXzMyLnosIHRleGNvbG9yLncpOwogICAgZ2xfRnJhZ0RhdGFbMF0gPSB0ZXhjb2xvcjsKfQoK";
kha_Shaders.painter_video_fragData2 = "s452:I3ZlcnNpb24gMzAwIGVzCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCmluIHZlYzIgdGV4Q29vcmQ7CmluIHZlYzQgY29sb3I7Cm91dCB2ZWM0IEZyYWdDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIHZlYzQgdGV4Y29sb3IgPSB0ZXh0dXJlKHRleCwgdGV4Q29vcmQpICogY29sb3I7CiAgICB2ZWMzIF8zMiA9IHRleGNvbG9yLnh5eiAqIGNvbG9yLnc7CiAgICB0ZXhjb2xvciA9IHZlYzQoXzMyLngsIF8zMi55LCBfMzIueiwgdGV4Y29sb3Iudyk7CiAgICBGcmFnQ29sb3IgPSB0ZXhjb2xvcjsKfQoK";
kha_Shaders.painter_video_vertData0 = "s415:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmF0dHJpYnV0ZSB2ZWMzIHZlcnRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSB2ZWMyIHRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzQgY29sb3I7CmF0dHJpYnV0ZSB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBjb2xvciA9IHZlcnRleENvbG9yOwp9Cgo";
kha_Shaders.painter_video_vertData1 = "s479:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKYXR0cmlidXRlIG1lZGl1bXAgdmVjMyB2ZXJ0ZXhQb3NpdGlvbjsKdmFyeWluZyBtZWRpdW1wIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247CnZhcnlpbmcgbWVkaXVtcCB2ZWM0IGNvbG9yOwphdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBjb2xvciA9IHZlcnRleENvbG9yOwp9Cgo";
kha_Shaders.painter_video_vertData2 = "s444:I3ZlcnNpb24gMzAwIGVzCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKaW4gbWVkaXVtcCB2ZWMzIHZlcnRleFBvc2l0aW9uOwpvdXQgbWVkaXVtcCB2ZWMyIHRleENvb3JkOwppbiBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247Cm91dCBtZWRpdW1wIHZlYzQgY29sb3I7CmluIG1lZGl1bXAgdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICB0ZXhDb29yZCA9IHRleFBvc2l0aW9uOwogICAgY29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK";
kha_System.renderListeners = [];
kha_System.foregroundListeners = [];
kha_System.resumeListeners = [];
kha_System.pauseListeners = [];
kha_System.backgroundListeners = [];
kha_System.shutdownListeners = [];
kha_SystemImpl.mobile = false;
kha_SystemImpl.mobileAudioPlaying = false;
kha_SystemImpl.chrome = false;
kha_SystemImpl.insideInputEvent = false;
kha_SystemImpl.maxGamepads = 4;
kha_SystemImpl.leftMouseCtrlDown = false;
kha_SystemImpl.minimumScroll = 999;
kha_SystemImpl.lastFirstTouchX = 0;
kha_SystemImpl.lastFirstTouchY = 0;
kha_SystemImpl.iosSoundEnabled = false;
kha_WebGLImage.GL_RGBA16F = 34842;
kha_WebGLImage.GL_RGBA32F = 34836;
kha_WebGLImage.GL_R16F = 33325;
kha_WebGLImage.GL_R32F = 33326;
kha_WebGLImage.GL_DEPTH_COMPONENT24 = 33190;
kha_WebGLImage.GL_DEPTH24_STENCIL8 = 35056;
kha_WebGLImage.GL_DEPTH32F_STENCIL8 = 36013;
kha_audio2_Audio1.channelCount = 16;
kha_audio2_ogg_tools_Crc32.POLY = 79764919;
kha_audio2_ogg_vorbis_VorbisDecodeState.INVALID_BITS = -1;
kha_audio2_ogg_vorbis_VorbisTools.EOP = -1;
kha_audio2_ogg_vorbis_VorbisTools.M__PI = 3.14159265358979323846264;
kha_audio2_ogg_vorbis_VorbisTools.DIVTAB_NUMER = 32;
kha_audio2_ogg_vorbis_VorbisTools.DIVTAB_DENOM = 64;
kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE = [1.0649863e-07,1.1341951e-07,1.2079015e-07,1.2863978e-07,1.3699951e-07,1.4590251e-07,1.5538408e-07,1.6548181e-07,1.7623575e-07,1.8768855e-07,1.9988561e-07,2.1287530e-07,2.2670913e-07,2.4144197e-07,2.5713223e-07,2.7384213e-07,2.9163793e-07,3.1059021e-07,3.3077411e-07,3.5226968e-07,3.7516214e-07,3.9954229e-07,4.2550680e-07,4.5315863e-07,4.8260743e-07,5.1396998e-07,5.4737065e-07,5.8294187e-07,6.2082472e-07,6.6116941e-07,7.0413592e-07,7.4989464e-07,7.9862701e-07,8.5052630e-07,9.0579828e-07,9.6466216e-07,1.0273513e-06,1.0941144e-06,1.1652161e-06,1.2409384e-06,1.3215816e-06,1.4074654e-06,1.4989305e-06,1.5963394e-06,1.7000785e-06,1.8105592e-06,1.9282195e-06,2.0535261e-06,2.1869758e-06,2.3290978e-06,2.4804557e-06,2.6416497e-06,2.8133190e-06,2.9961443e-06,3.1908506e-06,3.3982101e-06,3.6190449e-06,3.8542308e-06,4.1047004e-06,4.3714470e-06,4.6555282e-06,4.9580707e-06,5.2802740e-06,5.6234160e-06,5.9888572e-06,6.3780469e-06,6.7925283e-06,7.2339451e-06,7.7040476e-06,8.2047000e-06,8.7378876e-06,9.3057248e-06,9.9104632e-06,1.0554501e-05,1.1240392e-05,1.1970856e-05,1.2748789e-05,1.3577278e-05,1.4459606e-05,1.5399272e-05,1.6400004e-05,1.7465768e-05,1.8600792e-05,1.9809576e-05,2.1096914e-05,2.2467911e-05,2.3928002e-05,2.5482978e-05,2.7139006e-05,2.8902651e-05,3.0780908e-05,3.2781225e-05,3.4911534e-05,3.7180282e-05,3.9596466e-05,4.2169667e-05,4.4910090e-05,4.7828601e-05,5.0936773e-05,5.4246931e-05,5.7772202e-05,6.1526565e-05,6.5524908e-05,6.9783085e-05,7.4317983e-05,7.9147585e-05,8.4291040e-05,8.9768747e-05,9.5602426e-05,0.00010181521,0.00010843174,0.00011547824,0.00012298267,0.00013097477,0.00013948625,0.00014855085,0.00015820453,0.00016848555,0.00017943469,0.00019109536,0.00020351382,0.00021673929,0.00023082423,0.00024582449,0.00026179955,0.00027881276,0.00029693158,0.00031622787,0.00033677814,0.00035866388,0.00038197188,0.00040679456,0.00043323036,0.00046138411,0.00049136745,0.00052329927,0.00055730621,0.00059352311,0.00063209358,0.00067317058,0.00071691700,0.00076350630,0.00081312324,0.00086596457,0.00092223983,0.00098217216,0.0010459992,0.0011139742,0.0011863665,0.0012634633,0.0013455702,0.0014330129,0.0015261382,0.0016253153,0.0017309374,0.0018434235,0.0019632195,0.0020908006,0.0022266726,0.0023713743,0.0025254795,0.0026895994,0.0028643847,0.0030505286,0.0032487691,0.0034598925,0.0036847358,0.0039241906,0.0041792066,0.0044507950,0.0047400328,0.0050480668,0.0053761186,0.0057254891,0.0060975636,0.0064938176,0.0069158225,0.0073652516,0.0078438871,0.0083536271,0.0088964928,0.009474637,0.010090352,0.010746080,0.011444421,0.012188144,0.012980198,0.013823725,0.014722068,0.015678791,0.016697687,0.017782797,0.018938423,0.020169149,0.021479854,0.022875735,0.024362330,0.025945531,0.027631618,0.029427276,0.031339626,0.033376252,0.035545228,0.037855157,0.040315199,0.042935108,0.045725273,0.048696758,0.051861348,0.055231591,0.058820850,0.062643361,0.066714279,0.071049749,0.075666962,0.080584227,0.085821044,0.091398179,0.097337747,0.10366330,0.11039993,0.11757434,0.12521498,0.13335215,0.14201813,0.15124727,0.16107617,0.17154380,0.18269168,0.19456402,0.20720788,0.22067342,0.23501402,0.25028656,0.26655159,0.28387361,0.30232132,0.32196786,0.34289114,0.36517414,0.38890521,0.41417847,0.44109412,0.46975890,0.50028648,0.53279791,0.56742212,0.60429640,0.64356699,0.68538959,0.72993007,0.77736504,0.82788260,0.88168307,0.9389798,1.0];
kha_audio2_ogg_vorbis_data_Codebook.NO_CODE = 255;
kha_audio2_ogg_vorbis_data_Codebook.delay = 0;
kha_audio2_ogg_vorbis_data_Header.PACKET_ID = 1;
kha_audio2_ogg_vorbis_data_Header.PACKET_COMMENT = 3;
kha_audio2_ogg_vorbis_data_Header.PACKET_SETUP = 5;
kha_audio2_ogg_vorbis_data_PageFlag.CONTINUED_PACKET = 1;
kha_audio2_ogg_vorbis_data_PageFlag.FIRST_PAGE = 2;
kha_audio2_ogg_vorbis_data_PageFlag.LAST_PAGE = 4;
kha_audio2_ogg_vorbis_data_Setting.MAX_CHANNELS = 16;
kha_audio2_ogg_vorbis_data_Setting.PUSHDATA_CRC_COUNT = 4;
kha_audio2_ogg_vorbis_data_Setting.FAST_HUFFMAN_LENGTH = 10;
kha_audio2_ogg_vorbis_data_Setting.FAST_HUFFMAN_TABLE_SIZE = 1024;
kha_audio2_ogg_vorbis_data_Setting.FAST_HUFFMAN_TABLE_MASK = 1023;
kha_graphics2_truetype_StbTruetype.STBTT_vmove = 1;
kha_graphics2_truetype_StbTruetype.STBTT_vline = 2;
kha_graphics2_truetype_StbTruetype.STBTT_vcurve = 3;
kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_DONTCARE = 0;
kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_BOLD = 1;
kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_ITALIC = 2;
kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_UNDERSCORE = 4;
kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_NONE = 8;
kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_UNICODE = 0;
kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_MAC = 1;
kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_ISO = 2;
kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_MICROSOFT = 3;
kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_1_0 = 0;
kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_1_1 = 1;
kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_ISO_10646 = 2;
kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_2_0_BMP = 3;
kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_2_0_FULL = 4;
kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_SYMBOL = 0;
kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_UNICODE_BMP = 1;
kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_SHIFTJIS = 2;
kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_UNICODE_FULL = 10;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_ROMAN = 0;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_ARABIC = 4;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_JAPANESE = 1;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_HEBREW = 5;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_CHINESE_TRAD = 2;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_GREEK = 6;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_KOREAN = 3;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_RUSSIAN = 7;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_ENGLISH = 1033;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_ITALIAN = 1040;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_CHINESE = 2052;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_JAPANESE = 1041;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_DUTCH = 1043;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_KOREAN = 1042;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_FRENCH = 1036;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_RUSSIAN = 1049;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_GERMAN = 1031;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_SPANISH = 1033;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_HEBREW = 1037;
kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_SWEDISH = 1053;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_ENGLISH = 0;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_JAPANESE = 11;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_ARABIC = 12;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_KOREAN = 23;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_DUTCH = 4;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_RUSSIAN = 32;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_FRENCH = 1;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_SPANISH = 6;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_GERMAN = 2;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_SWEDISH = 5;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_HEBREW = 10;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_CHINESE_SIMPLIFIED = 33;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_ITALIAN = 3;
kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_CHINESE_TRAD = 19;
kha_graphics2_truetype_StbTruetype.STBTT_MAX_OVERSAMPLE = 8;
kha_graphics2_truetype_StbTruetype.STBTT_RASTERIZER_VERSION = 2;
kha_graphics4_CubeMap.GL_RGBA16F = 34842;
kha_graphics4_CubeMap.GL_RGBA32F = 34836;
kha_graphics4_CubeMap.GL_R16F = 33325;
kha_graphics4_CubeMap.GL_R32F = 33326;
kha_graphics4_CubeMap.GL_DEPTH_COMPONENT24 = 33190;
kha_graphics4_CubeMap.GL_DEPTH24_STENCIL8 = 35056;
kha_graphics4_CubeMap.GL_DEPTH32F_STENCIL8 = 36013;
kha_graphics4_ImageShaderPainter.bufferSize = 1500;
kha_graphics4_ImageShaderPainter.vertexSize = 9;
kha_graphics4_ColoredShaderPainter.bufferSize = 100;
kha_graphics4_ColoredShaderPainter.triangleBufferSize = 100;
kha_graphics4_TextShaderPainter.bufferSize = 100;
kha_input_Gamepad.__meta__ = { fields : { sendAxisEvent : { input : null}, sendButtonEvent : { input : null}}};
kha_input_Gamepad.instances = [];
kha_input_Keyboard.__meta__ = { fields : { sendDownEvent : { input : null}, sendUpEvent : { input : null}}};
kha_input_Mouse.__meta__ = { fields : { sendLeaveEvent : { input : null}, sendDownEvent : { input : null}, sendUpEvent : { input : null}, sendMoveEvent : { input : null}, sendWheelEvent : { input : null}}};
kha_internal_HdrFormat.radiancePattern = new EReg("#\\?RADIANCE","i");
kha_internal_HdrFormat.commentPattern = new EReg("#.*","i");
kha_internal_HdrFormat.gammaPattern = new EReg("GAMMA=","i");
kha_internal_HdrFormat.exposurePattern = new EReg("EXPOSURE=\\s*([0-9]*[.][0-9]*)","i");
kha_internal_HdrFormat.formatPattern = new EReg("FORMAT=32-bit_rle_rgbe","i");
kha_internal_HdrFormat.widthHeightPattern = new EReg("-Y ([0-9]+) \\+X ([0-9]+)","i");
kha_js_AEAudioChannel.todo = [];
kha_js_Sound.loading = [];
kha_js_Video.loading = new List();
kha_math_FastMatrix3.width = 3;
kha_math_FastMatrix3.height = 3;
kha_math_FastMatrix4.width = 4;
kha_math_FastMatrix4.height = 4;
kha_math_Matrix3.width = 3;
kha_math_Matrix3.height = 3;
kha_math_Matrix4.width = 4;
kha_math_Matrix4.height = 4;
kha_math_Quaternion.AXIS_X = 0;
kha_math_Quaternion.AXIS_Y = 1;
kha_math_Quaternion.AXIS_Z = 2;
kha_network_ControllerBuilder.nextId = 0;
kha_network_Session.START = 0;
kha_network_Session.ENTITY_UPDATES = 1;
kha_network_Session.CONTROLLER_UPDATES = 2;
kha_network_Session.REMOTE_CALL = 3;
kha_network_Session.PING = 4;
kha_network_Session.ERROR = 5;
kha_network_Session.PLAYER_UPDATES = 6;
kha_network_Session.RPC_SERVER = 0;
kha_network_Session.RPC_ALL = 1;
kha_network_SyncBuilder.nextId = 0;
kha_network_SyncBuilder.objects = [];
zui_Id.i = 0;
zui_Themes.light = { _FONT_SIZE : 15, _FONT_SMALL_SIZE : 15, _ELEMENT_W : 100, _ELEMENT_H : 26, _ELEMENT_SEPARATOR_SIZE : 2, _ARROW_W : 9, _ARROW_H : 9, _BUTTON_H : 19, _CHECK_W : 15, _CHECK_H : 15, _CHECK_SELECT_W : 8, _CHECK_SELECT_H : 8, _RADIO_W : 15, _RADIO_H : 15, _RADIO_SELECT_W : 8, _RADIO_SELECT_H : 8, _SCROLL_W : 12, _SCROLL_BAR_W : 8, _DEFAULT_TEXT_OFFSET_X : 8, _TAB_W : 12, _LINE_STRENGTH : 1, WINDOW_BG_COL : -1776412, WINDOW_TINT_COL : -1, SCROLL_BG_COL : -1776412, SCROLL_COL : -15658735, SCROLL_HOVER_COL : -10055985, PANEL_BG1_COL : -16777216, PANEL_BG2_COL : -16777216, PANEL_TEXT_COL : -13421773, PANEL_TEXT_COL_HOVER : -13421773, BUTTON_BG_COL : -11175241, BUTTON_TEXT_COL : -15658735, BUTTON_BG_COL_HOVER : -10055985, BUTTON_BG_COL_PRESSED : -3299061, TEXT_INPUT_BG_COL : -13355978, TEXT_INPUT_BG_COL_HOVER : -12303290, TEXT_CURSOR_COL : -15658735, TEXT_CURSOR_FLASH_SPEED : 0.5, CHECK_COL : -13355978, CHECK_COL_HOVER : -7829368, CHECK_SELECT_COL : -13355978, RADIO_COL : -13355978, RADIO_COL_HOVER : -7829368, RADIO_SELECT_COL : -13355978, SLIDER_COL : -9069865, SLIDER_COL_HOVER : -10055985, TEXT_COL : -15658735, TEXT_COL_HOVER : -15658735, DEFAULT_LABEL_COL : -14540254, ARROW_COL : -4539977, ARROW_COL_HOVER : -3487289, SEPARATOR_COL : -5592406, FILL_WINDOW_BG : true, FILL_TEXT_INPUT_BG : false, FILL_BUTTON_BG : false, FILL_CHECK_BG : false, FILL_RADIO_BG : false, FILL_SLIDER_BG : false};
zui_Themes.dark = { _FONT_SIZE : 15, _FONT_SMALL_SIZE : 15, _ELEMENT_W : 100, _ELEMENT_H : 26, _ELEMENT_SEPARATOR_SIZE : 2, _ARROW_W : 9, _ARROW_H : 9, _BUTTON_H : 19, _CHECK_W : 15, _CHECK_H : 15, _CHECK_SELECT_W : 8, _CHECK_SELECT_H : 8, _RADIO_W : 15, _RADIO_H : 15, _RADIO_SELECT_W : 8, _RADIO_SELECT_H : 8, _SCROLL_W : 12, _SCROLL_BAR_W : 8, _DEFAULT_TEXT_OFFSET_X : 8, _TAB_W : 12, _LINE_STRENGTH : 1, WINDOW_BG_COL : -15658735, WINDOW_TINT_COL : -1, SCROLL_BG_COL : -15724528, SCROLL_COL : -11974327, SCROLL_HOVER_COL : -2894893, PANEL_BG1_COL : -16777216, PANEL_BG2_COL : -16777216, PANEL_TEXT_COL : -1118482, PANEL_TEXT_COL_HOVER : -1118482, BUTTON_BG_COL : -11175241, BUTTON_TEXT_COL : -3487289, BUTTON_BG_COL_HOVER : -10055985, BUTTON_BG_COL_PRESSED : -3299061, TEXT_INPUT_BG_COL : -13355978, TEXT_INPUT_BG_COL_HOVER : -12303290, TEXT_CURSOR_COL : -3487289, TEXT_CURSOR_FLASH_SPEED : 0.5, CHECK_COL : -13355978, CHECK_COL_HOVER : -12303290, CHECK_SELECT_COL : -2697514, RADIO_COL : -13355978, RADIO_COL_HOVER : -12303290, RADIO_SELECT_COL : -2697514, SLIDER_COL : -13355978, SLIDER_COL_HOVER : -12303290, TEXT_COL : -3487289, TEXT_COL_HOVER : -3487289, DEFAULT_LABEL_COL : -5592406, ARROW_COL : -3487289, ARROW_COL_HOVER : -3487289, SEPARATOR_COL : -14540513, FILL_WINDOW_BG : false, FILL_TEXT_INPUT_BG : false, FILL_BUTTON_BG : false, FILL_CHECK_BG : false, FILL_RADIO_BG : false, FILL_SLIDER_BG : false};
zui_Zui.elementsBaked = false;
zui_Handle.global = new zui_Handle();
Main.main();
})(typeof exports != "undefined" ? exports : typeof window != "undefined" ? window : typeof self != "undefined" ? self : this, typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this);