armory/tools/armorui/kha.js
2017-05-26 16:05:14 +02:00

24477 lines
773 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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("&amp;").split("<").join("&lt;").split(">").join("&gt;");
};
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) + "<br/>";
} 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 "<function>";
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);