(function ($hx_exports, $global) { "use strict"; $hx_exports["kha"] = $hx_exports["kha"] || {}; $hx_exports["kha"]["input"] = $hx_exports["kha"]["input"] || {}; var $hxClasses = {},$estr = function() { return js_Boot.__string_rec(this,''); },$hxEnums = $hxEnums || {},$_; function $extend(from, fields) { var proto = Object.create(from); for (var name in fields) proto[name] = fields[name]; if( fields.toString !== Object.prototype.toString ) proto.toString = fields.toString; return proto; } var HxOverrides = function() { }; $hxClasses["HxOverrides"] = HxOverrides; HxOverrides.__name__ = true; HxOverrides.strDate = function(s) { switch(s.length) { 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 k = s.split("-"); return new Date(k[0],k[1] - 1,k[2],0,0,0); case 19: var k = s.split(" "); var y = k[0].split("-"); var t = k[1].split(":"); return new Date(y[0],y[1] - 1,y[2],t[0],t[1],t[2]); default: throw haxe_Exception.thrown("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.now = function() { return Date.now(); }; var Lambda = function() { }; $hxClasses["Lambda"] = Lambda; Lambda.__name__ = true; Lambda.array = function(it) { var a = []; var i = $getIterator(it); while(i.hasNext()) { var i1 = i.next(); a.push(i1); } return a; }; var Main = function() { }; $hxClasses["Main"] = Main; Main.__name__ = true; Main.main = function() { var w = 1600; var h = 900; if(kha_Display.get_primary() != null) { if(w > kha_Display.get_primary().get_width()) { w = kha_Display.get_primary().get_width(); } if(h > kha_Display.get_primary().get_height() - 30) { h = kha_Display.get_primary().get_height() - 30; } } kha_System.start(new kha_SystemOptions("Leenkx2D",w,h,null,new kha_FramebufferOptions(60,true,32,16,8,2)),Main.initialized); }; Main.initialized = function($window) { Main.prefs = { path : "", scaleFactor : 1.0, keyMap : { selectMouseButton : "Left", grabKey : 71, rotateKey : 82, sizeKey : 83, slowMovement : 16, gridInvert : 17, gridInvertRelative : 18}}; var c = Krom.getArgCount(); if(c > 4) { Main.prefs.path = Krom.getArg(3); } if(c > 5) { var tmp = parseFloat(Krom.getArg(4)); Main.prefs.scaleFactor = tmp; } var ar = Main.prefs.path.split("/"); ar.pop(); Main.cwd = ar.join("/"); if(Main.cwd != "") { var path = kha_System.get_systemId() == "Windows" ? StringTools.replace(Main.prefs.path,"/","\\") : Main.prefs.path; kha_Assets.loadBlobFromPath(path,function(cblob) { Main.inst = new lnx2d_Editor(leenkx_ui_Canvas.parseCanvasFromBlob(cblob)); },null,{ fileName : "Main.hx", lineNumber : 58, className : "Main", methodName : "initialized"}); } else { Main.prefs.path = Krom.getFilesLocation(); var raw = { name : "untitled", x : 0, y : 0, width : 1280, height : 720, theme : "Default Light", visible : true, elements : [], assets : []}; Main.inst = new lnx2d_Editor(raw); } }; Main.loadDefaultKeyMap = function() { Main.prefs.keyMap.grabKey = 71; Main.prefs.keyMap.rotateKey = 82; Main.prefs.keyMap.sizeKey = 83; Main.prefs.keyMap.slowMovement = 16; Main.prefs.keyMap.gridInvert = 17; Main.prefs.keyMap.gridInvertRelative = 18; }; Math.__name__ = true; var Reflect = function() { }; $hxClasses["Reflect"] = Reflect; Reflect.__name__ = true; Reflect.field = function(o,field) { try { return o[field]; } catch( _g ) { return null; } }; Reflect.getProperty = function(o,field) { var tmp; if(o == null) { return null; } else { var tmp1; if(o.__properties__) { tmp = o.__properties__["get_" + field]; tmp1 = tmp; } else { tmp1 = false; } if(tmp1) { return o[tmp](); } else { return o[field]; } } }; Reflect.setProperty = function(o,field,value) { var tmp; var tmp1; if(o.__properties__) { tmp = o.__properties__["set_" + field]; tmp1 = tmp; } else { tmp1 = false; } if(tmp1) { o[tmp](value); } else { o[field] = value; } }; 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) { if(o == null) { return null; } 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) { if(x != null) { var _g = 0; var _g1 = x.length; while(_g < _g1) { var i = _g++; var c = x.charCodeAt(i); if(c <= 8 || c >= 14 && c != 32 && c != 45) { var nc = x.charCodeAt(i + 1); var v = parseInt(x,nc == 120 || nc == 88 ? 16 : 10); if(isNaN(v)) { return null; } else { return v; } } } } return null; }; 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 s.indexOf(end,slen - elen) == slen - elen; } else { return false; } }; StringTools.isSpace = function(s,pos) { var c = HxOverrides.cca(s,pos); if(!(c > 8 && c < 14)) { return c == 32; } else { return true; } }; StringTools.rtrim = function(s) { var l = s.length; var r = 0; while(r < l && StringTools.isSpace(s,l - r - 1)) ++r; if(r > 0) { return HxOverrides.substr(s,0,l - r); } else { return s; } }; StringTools.replace = function(s,sub,by) { return s.split(sub).join(by); }; var Type = function() { }; $hxClasses["Type"] = Type; Type.__name__ = true; Type.createEnum = function(e,constr,params) { var f = Reflect.field(e,constr); if(f == null) { throw haxe_Exception.thrown("No such constructor " + constr); } if(Reflect.isFunction(f)) { if(params == null) { throw haxe_Exception.thrown("Constructor " + constr + " need parameters"); } return f.apply(e,params); } if(params != null && params.length != 0) { throw haxe_Exception.thrown("Constructor " + constr + " does not need parameters"); } return f; }; 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.gt = function(a,b) { var aNeg = a < 0; var bNeg = b < 0; if(aNeg != bNeg) { return aNeg; } else { return a > b; } }; UInt.gte = function(a,b) { var aNeg = a < 0; var bNeg = b < 0; if(aNeg != bNeg) { return aNeg; } else { return a >= b; } }; UInt.toFloat = function(this1) { var int = this1; if(int < 0) { return 4294967296.0 + int; } else { return int + 0.0; } }; var lnx2d_Assets = function() { }; $hxClasses["lnx2d.Assets"] = lnx2d_Assets; lnx2d_Assets.__name__ = true; lnx2d_Assets.getImage = function(asset) { return leenkx_ui_Canvas.assetMap.h[asset.id]; }; lnx2d_Assets.getFont = function(asset) { return leenkx_ui_Canvas.assetMap.h[asset.id]; }; lnx2d_Assets.importAsset = function(canvas,path) { var abspath = lnx2d_Path.toAbsolute(path,Main.cwd); if(kha_System.get_systemId() == "Windows") { abspath = StringTools.replace(abspath,"/","\\"); } if(lnx2d_Assets.isPathImage(path)) { kha_Assets.loadImageFromPath(abspath,false,function(image) { var ar = path.split("/"); var name = ar[ar.length - 1]; var asset = { name : name, file : path, id : leenkx_ui_Canvas.getAssetId(canvas)}; canvas.assets.push(asset); leenkx_ui_Canvas.assetMap.h[asset.id] = image; lnx2d_Editor.assetNames.push(name); lnx2d_ui_UIProperties.hwin.redraws = 2; },null,{ fileName : "lnx2d/Assets.hx", lineNumber : 25, className : "lnx2d.Assets", methodName : "importAsset"}); } else if(haxe_io_Path.extension(path).toLowerCase() == "ttf") { kha_Assets.loadFontFromPath(abspath,function(font) { var ar = path.split("/"); var name = ar[ar.length - 1]; var asset = { name : name, file : path, id : leenkx_ui_Canvas.getAssetId(canvas)}; canvas.assets.push(asset); leenkx_ui_Canvas.assetMap.h[asset.id] = font; lnx2d_Editor.assetNames.push(name); lnx2d_ui_UIProperties.hwin.redraws = 2; },null,{ fileName : "lnx2d/Assets.hx", lineNumber : 37, className : "lnx2d.Assets", methodName : "importAsset"}); } }; lnx2d_Assets.importThemes = function() { var themesDir = haxe_io_Path.directory(Main.prefs.path); var themesPath = haxe_io_Path.join([themesDir,"_themes.json"]); if(kha_System.get_systemId() == "Windows") { themesPath = StringTools.replace(themesPath,"/","\\"); } try { kha_Assets.loadBlobFromPath(themesPath,function(b) { leenkx_ui_Canvas.themes = JSON.parse(b.toString()); if(leenkx_ui_Canvas.themes.length == 0) { leenkx_ui_Canvas.themes.push(Reflect.copy(leenkx_ui_Themes.light)); } if(Main.inst != null) { lnx2d_Editor.selectedTheme = leenkx_ui_Canvas.themes[0]; } },function(a) { leenkx_ui_Canvas.themes.push(Reflect.copy(leenkx_ui_Themes.light)); if(Main.inst != null) { lnx2d_Editor.selectedTheme = leenkx_ui_Canvas.themes[0]; } },{ fileName : "lnx2d/Assets.hx", lineNumber : 60, className : "lnx2d.Assets", methodName : "importThemes"}); } catch( _g ) { leenkx_ui_Canvas.themes.push(Reflect.copy(leenkx_ui_Themes.light)); if(Main.inst != null) { lnx2d_Editor.selectedTheme = leenkx_ui_Canvas.themes[0]; } } }; lnx2d_Assets.save = function(canvas) { canvas.x = 0; canvas.y = 0; lnx2d_Assets.saveCanvas(canvas); lnx2d_Assets.saveAssets(canvas); lnx2d_Assets.saveThemes(); canvas.x = lnx2d_Editor.coffX; canvas.y = lnx2d_Editor.coffY; }; lnx2d_Assets.load = function(done) { kha_Assets.loadBlobFromPath(Main.prefs.path,function(b) { done(leenkx_ui_Canvas.parseCanvasFromBlob(b)); },null,{ fileName : "lnx2d/Assets.hx", lineNumber : 96, className : "lnx2d.Assets", methodName : "load"}); }; lnx2d_Assets.saveCanvas = function(canvas) { Krom.fileSaveBytes(Main.prefs.path,haxe_io_Bytes.ofString(JSON.stringify(canvas)).b.bufferValue); }; lnx2d_Assets.saveAssets = function(canvas) { var filesPath = HxOverrides.substr(Main.prefs.path,0,Main.prefs.path.length - 5); filesPath += ".files"; var filesList = ""; var _g = 0; var _g1 = canvas.assets; while(_g < _g1.length) { var a = _g1[_g]; ++_g; filesList += a.file + "\n"; } Krom.fileSaveBytes(filesPath,haxe_io_Bytes.ofString(filesList).b.bufferValue); }; lnx2d_Assets.saveThemes = function() { var themesPath = haxe_io_Path.join([haxe_io_Path.directory(Main.prefs.path),"_themes.json"]); Krom.fileSaveBytes(themesPath,haxe_io_Bytes.ofString(JSON.stringify(leenkx_ui_Canvas.themes)).b.bufferValue); }; lnx2d_Assets.getEnumTexts = function() { if(Main.inst == null) { return [""]; } if(lnx2d_Editor.assetNames.length > 0) { return lnx2d_Editor.assetNames; } else { return [""]; } }; lnx2d_Assets.getAssetIndex = function(canvas,asset) { var _g = 0; var _g1 = canvas.assets.length; while(_g < _g1) { var i = _g++; if(asset == canvas.assets[i].name) { return i + 1; } } return 0; }; lnx2d_Assets.isPathImage = function(path) { var extension = haxe_io_Path.extension(path).toLowerCase(); if(!(extension == "jpg" || extension == "png" || extension == "k")) { return extension == "hdr"; } else { return true; } }; lnx2d_Assets.isPathFont = function(path) { return haxe_io_Path.extension(path).toLowerCase() == "ttf"; }; var lnx2d_Editor = function(canvas) { this.lastCanvasH = 0; this.lastCanvasW = 0; this.lastH = 0; this.lastW = 0; this.selectedFrame = 0; this.zoom = 1.0; this.resizeCanvas = false; this.dropPath = ""; this.canvas = canvas; if(canvas.assets.length > 0) { var assets = canvas.assets; canvas.assets = []; var _g = 0; while(_g < assets.length) { var a = assets[_g]; ++_g; lnx2d_Assets.importAsset(canvas,a.file); } } lnx2d_Assets.importThemes(); kha_Assets.loadEverything($bind(this,this.loaded)); }; $hxClasses["lnx2d.Editor"] = lnx2d_Editor; lnx2d_Editor.__name__ = true; lnx2d_Editor.__properties__ = {get_uiw:"get_uiw"}; lnx2d_Editor.get_uiw = function() { return lnx2d_Editor.windowW * Main.prefs.scaleFactor | 0; }; lnx2d_Editor.prototype = { ui: null ,cui: null ,canvas: null ,toolbarw: null ,get_toolbarw: function() { return 140 * this.ui.ops.scaleFactor | 0; } ,dropPath: null ,resizeCanvas: null ,zoom: null ,uimodal: null ,selectedFrame: null ,lastW: null ,lastH: null ,lastCanvasW: null ,lastCanvasH: null ,loaded: function() { var _gthis = this; var t = Reflect.copy(zui_Themes.dark); t.FILL_WINDOW_BG = true; this.ui = new zui_Zui({ scaleFactor : Main.prefs.scaleFactor, font : kha_Assets.fonts.font_default, theme : t, color_wheel : kha_Assets.images.color_wheel, black_white_gradient : kha_Assets.images.black_white_gradient}); this.cui = new zui_Zui({ scaleFactor : 1.0, font : kha_Assets.fonts.font_default, autoNotifyInput : true, theme : Reflect.copy(leenkx_ui_Canvas.getTheme(this.canvas.theme))}); this.uimodal = new zui_Zui({ font : kha_Assets.fonts.font_default, scaleFactor : Main.prefs.scaleFactor}); lnx2d_ElementController.initialize(this.ui,this.cui); if(leenkx_ui_Canvas.getTheme(this.canvas.theme) == null) { leenkx_ui_Popup.showMessage(new zui_Zui(this.ui.ops),"Warning!","Theme \"" + this.canvas.theme + "\" was not found!" + ("\nUsing first theme in list instead: \"" + leenkx_ui_Canvas.themes[0].NAME + "\"")); this.canvas.theme = leenkx_ui_Canvas.themes[0].NAME; } kha_System.notifyOnDropFiles(function(path) { _gthis.dropPath = StringTools.rtrim(path); _gthis.dropPath = lnx2d_Path.toRelative(_gthis.dropPath,Main.cwd); }); kha_System.notifyOnFrames($bind(this,this.onFrames)); kha_Scheduler.addTimeTask($bind(this,this.update),0,0.016666666666666666); } ,resize: function() { if(lnx2d_Editor.grid != null) { lnx2d_Editor.grid.unload(); lnx2d_Editor.grid = null; } if(lnx2d_Editor.timeline != null) { lnx2d_Editor.timeline.unload(); lnx2d_Editor.timeline = null; } } ,drawGrid: function() { lnx2d_Editor.redrawGrid = false; var scaledGridSize = lnx2d_Editor.gridSize * this.cui.ops.scaleFactor | 0; var doubleGridSize = lnx2d_Editor.gridSize * 2 * this.cui.ops.scaleFactor | 0; var ww = kha_System.windowWidth(); var wh = kha_System.windowHeight(); var w = ww + doubleGridSize * 2; var h = wh + doubleGridSize * 2; if(lnx2d_Editor.grid == null) { lnx2d_Editor.grid = kha_Image.createRenderTarget(w,h); } lnx2d_Editor.grid.get_g2().begin(true,-14408668); var _g = 0; var _g1 = (h / doubleGridSize | 0) + 1; while(_g < _g1) { var i = _g++; lnx2d_Editor.grid.get_g2().set_color(-14145496); lnx2d_Editor.grid.get_g2().drawLine(0,i * doubleGridSize + scaledGridSize,w,i * doubleGridSize + scaledGridSize); lnx2d_Editor.grid.get_g2().set_color(-13487566); lnx2d_Editor.grid.get_g2().drawLine(0,i * doubleGridSize,w,i * doubleGridSize); } var _g = 0; var _g1 = (w / doubleGridSize | 0) + 1; while(_g < _g1) { var i = _g++; lnx2d_Editor.grid.get_g2().set_color(-14145496); lnx2d_Editor.grid.get_g2().drawLine(i * doubleGridSize + scaledGridSize,0,i * doubleGridSize + scaledGridSize,h); lnx2d_Editor.grid.get_g2().set_color(-13487566); lnx2d_Editor.grid.get_g2().drawLine(i * doubleGridSize,0,i * doubleGridSize,h); } lnx2d_Editor.grid.get_g2().end(); } ,drawTimeline: function(timelineLabelsHeight,timelineFramesHeight) { var sc = this.ui.ops.scaleFactor; var timelineHeight = timelineLabelsHeight + timelineFramesHeight; lnx2d_Editor.timeline = kha_Image.createRenderTarget(kha_System.windowWidth() - lnx2d_Editor.get_uiw() - this.get_toolbarw(),timelineHeight); var g = lnx2d_Editor.timeline.get_g2(); g.begin(true,-14540254); g.set_font(kha_Assets.fonts.font_default); g.set_fontSize(16 * sc | 0); var frames = lnx2d_Editor.timeline.get_width() / (11 * sc) | 0; var _g = 0; var _g1 = (frames / 5 | 0) + 1; while(_g < _g1) { var i = _g++; var frame = i * 5; var frameTextWidth = kha_Assets.fonts.font_default.width(g.get_fontSize(),frame + ""); g.drawString(frame + "",i * 55 * sc + 5 * sc - frameTextWidth / 2,timelineLabelsHeight / 2 - g.get_fontSize() / 2); } var _g = 0; var _g1 = frames; while(_g < _g1) { var i = _g++; g.set_color(i % 5 == 0 ? -12303292 : -13421773); g.fillRect(i * 11 * sc,timelineHeight - timelineFramesHeight,10 * sc,timelineFramesHeight); } g.end(); } ,onFrames: function(framebuffers) { if(kha_System.windowWidth() == 0 || kha_System.windowHeight() == 0) { return; } var framebuffer = framebuffers[0]; if(leenkx_ui_Popup.show && this.ui.inputRegistered) { this.ui.unregisterInput(); this.cui.unregisterInput(); } else if(!leenkx_ui_Popup.show && !this.ui.inputRegistered) { this.ui.registerInput(); this.cui.registerInput(); } if(leenkx_ui_Popup.show) { lnx2d_ui_UIProperties.hwin.redraws = 1; } if(this.dropPath != "") { lnx2d_Assets.importAsset(this.canvas,this.dropPath); this.dropPath = ""; } var sc = this.ui.ops.scaleFactor; var timelineLabelsHeight = 30 * sc | 0; var timelineFramesHeight = 40 * sc | 0; if(lnx2d_Editor.grid == null || lnx2d_Editor.redrawGrid) { this.drawGrid(); } if(lnx2d_Editor.timeline == null || lnx2d_Editor.timeline.get_height() != timelineLabelsHeight + timelineFramesHeight) { this.drawTimeline(timelineLabelsHeight,timelineFramesHeight); } var g = framebuffer.get_g2(); g.begin(); g.set_color(-1); var doubleGridSize = lnx2d_Editor.gridSize * 2 * this.cui.ops.scaleFactor | 0; g.drawImage(lnx2d_Editor.grid,lnx2d_Editor.coffX % doubleGridSize - doubleGridSize,lnx2d_Editor.coffY % doubleGridSize - doubleGridSize); this.canvas.x = lnx2d_Editor.coffX; this.canvas.y = lnx2d_Editor.coffY; g.drawRect(this.canvas.x,this.canvas.y,this.canvas.width * this.cui.ops.scaleFactor | 0,this.canvas.height * this.cui.ops.scaleFactor | 0,1.0); var handleSize = 8 * lnx2d_ElementController.ui.ops.scaleFactor | 0; if(lnx2d_tools_Math.hitbox(this.cui,this.canvas.x + (this.canvas.width * this.cui.ops.scaleFactor | 0) - handleSize / 2,this.canvas.y + (this.canvas.height * this.cui.ops.scaleFactor | 0) - handleSize / 2,handleSize,handleSize)) { g.set_color(-14656100); g.fillRect(this.canvas.x + (this.canvas.width * this.cui.ops.scaleFactor | 0) - handleSize / 2,this.canvas.y + (this.canvas.height * this.cui.ops.scaleFactor | 0) - handleSize / 2,handleSize,handleSize); g.set_color(-1); } g.drawRect(this.canvas.x + (this.canvas.width * this.cui.ops.scaleFactor | 0) - handleSize / 2,this.canvas.y + (this.canvas.height * this.cui.ops.scaleFactor | 0) - handleSize / 2,handleSize,handleSize,1); leenkx_ui_Canvas.screenW = this.canvas.width; leenkx_ui_Canvas.screenH = this.canvas.height; leenkx_ui_Canvas.draw(this.cui,this.canvas,g); lnx2d_ElementController.render(g,this.canvas); if(lnx2d_Editor.currentOperation != "") { g.set_fontSize(14 * this.ui.ops.scaleFactor | 0); g.set_color(-5592406); g.drawString(lnx2d_Editor.currentOperation,this.get_toolbarw(),kha_System.windowHeight() - lnx2d_Editor.timeline.get_height() - g.get_fontSize()); } var showTimeline = true; if(showTimeline) { g.set_color(-1); var ty = kha_System.windowHeight() - lnx2d_Editor.timeline.get_height(); g.drawImage(lnx2d_Editor.timeline,this.get_toolbarw(),ty); g.set_color(-14656100); g.fillRect(this.get_toolbarw() + this.selectedFrame * 11 * sc,ty + timelineLabelsHeight,10 * sc,timelineFramesHeight); g.set_font(kha_Assets.fonts.font_default); g.set_fontSize(16 * sc | 0); var frameIndicatorMargin = 4 * sc; var frameIndicatorPadding = 4 * sc; var frameIndicatorWidth = 30 * sc; var frameIndicatorHeight = timelineLabelsHeight - frameIndicatorMargin * 2; var frameTextWidth = kha_Assets.fonts.font_default.width(g.get_fontSize(),"" + this.selectedFrame); if(frameTextWidth > frameIndicatorWidth + frameIndicatorPadding) { frameIndicatorWidth = frameTextWidth + frameIndicatorPadding; } g.fillRect(this.get_toolbarw() + this.selectedFrame * 11 * sc + 5 * sc - frameIndicatorWidth / 2,ty + frameIndicatorMargin,frameIndicatorWidth,frameIndicatorHeight); g.set_color(-1); g.drawString("" + this.selectedFrame,this.get_toolbarw() + this.selectedFrame * 11 * sc + 5 * sc - frameTextWidth / 2,ty + timelineLabelsHeight / 2 - g.get_fontSize() / 2); } g.end(); this.ui.begin(g); lnx2d_ui_UIToolBar.renderToolbar(this.ui,this.cui,this.canvas,this.get_toolbarw()); if(this.ui.window(zui_Handle.global.nest(64,null),this.get_toolbarw(),0,kha_System.windowWidth() - lnx2d_Editor.get_uiw() - this.get_toolbarw(),(this.ui.t.ELEMENT_H + 2) * this.ui.ops.scaleFactor | 0)) { this.ui.tab(zui_Handle.global.nest(65,null),this.canvas.name); } lnx2d_ui_UIProperties.renderProperties(this.ui,lnx2d_Editor.get_uiw(),this.canvas); this.ui.end(); if(this.ui.changed && !this.ui.inputDown) { this.drawGrid(); } g.begin(false); if(lnx2d_Editor.dragAsset != null) { var w = Math.min(128,lnx2d_Assets.getImage(lnx2d_Editor.dragAsset).get_width()); var ratio = w / lnx2d_Assets.getImage(lnx2d_Editor.dragAsset).get_width(); var h = lnx2d_Assets.getImage(lnx2d_Editor.dragAsset).get_height() * ratio; g.drawScaledImage(lnx2d_Assets.getImage(lnx2d_Editor.dragAsset),this.ui.inputX,this.ui.inputY,w,h); } g.end(); if(this.lastW > 0 && (this.lastW != kha_System.windowWidth() || this.lastH != kha_System.windowHeight())) { this.resize(); } else if(this.lastCanvasW > 0 && (this.lastCanvasW != this.canvas.width || this.lastCanvasH != this.canvas.height)) { this.resize(); } this.lastW = kha_System.windowWidth(); this.lastH = kha_System.windowHeight(); this.lastCanvasW = this.canvas.width; this.lastCanvasH = this.canvas.height; if(lnx2d_Editor.showFiles) { this.renderFiles(g); } if(leenkx_ui_Popup.show) { leenkx_ui_Popup.render(g); } } ,acceptDrag: function(index) { var elem = lnx2d_tools_CanvasTools.makeElem(this.cui,this.canvas,1); elem.asset = lnx2d_Editor.assetNames[index + 1]; elem.x = this.ui.inputX - this.canvas.x; elem.y = this.ui.inputY - this.canvas.y; elem.width = lnx2d_Assets.getImage(this.canvas.assets[index]).get_width(); elem.height = lnx2d_Assets.getImage(this.canvas.assets[index]).get_height(); lnx2d_Editor.selectedElem = elem; } ,update: function() { if(this.ui.inputReleased && lnx2d_Editor.dragAsset != null) { if(this.ui.inputX < kha_System.windowWidth() - lnx2d_Editor.get_uiw()) { var index = 0; var _g = 0; var _g1 = this.canvas.assets.length; while(_g < _g1) { var i = _g++; if(this.canvas.assets[i] == lnx2d_Editor.dragAsset) { index = i; break; } } this.acceptDrag(index); } lnx2d_Editor.dragAsset = null; } if(lnx2d_Editor.dragAsset != null) { return; } this.updateCanvas(); if(lnx2d_Editor.timeline != null) { var ty = kha_System.windowHeight() - lnx2d_Editor.timeline.get_height(); if(this.ui.inputDown && this.ui.inputY > ty && this.ui.inputX < kha_System.windowWidth() - lnx2d_Editor.get_uiw() && this.ui.inputX > this.get_toolbarw()) { this.selectedFrame = (this.ui.inputX - this.get_toolbarw()) / 11 / this.ui.ops.scaleFactor | 0; } } lnx2d_ElementController.update(this.ui,this.cui,this.canvas); if(leenkx_ui_Popup.show) { leenkx_ui_Popup.update(); } this.updateFiles(); } ,updateCanvas: function() { if(lnx2d_Editor.showFiles || this.ui.inputX > kha_System.windowWidth() - lnx2d_Editor.get_uiw()) { return; } lnx2d_ElementController.selectElement(this.canvas); if(!lnx2d_ElementController.isManipulating) { if(this.ui.inputDownR) { lnx2d_Editor.coffX += this.ui.inputDX | 0; lnx2d_Editor.coffY += this.ui.inputDY | 0; } if(this.ui.inputWheelDelta != 0) { var prevZoom = this.zoom; this.zoom += -this.ui.inputWheelDelta / 10; if(this.zoom < 0.4) { this.zoom = 0.4; } else if(this.zoom > 1.0) { this.zoom = 1.0; } this.zoom = Math.round(this.zoom * 10) / 10; this.cui.setScale(this.zoom); if(prevZoom != this.zoom) { this.drawGrid(); } } } var handleSize = 8 * lnx2d_ElementController.ui.ops.scaleFactor | 0; if(this.ui.inputStarted && lnx2d_tools_Math.hitbox(this.cui,this.canvas.x + (this.canvas.width * this.cui.ops.scaleFactor | 0) - handleSize / 2,this.canvas.y + (this.canvas.height * this.cui.ops.scaleFactor | 0) - handleSize / 2,handleSize,handleSize)) { this.resizeCanvas = true; } if(this.ui.inputReleased && this.resizeCanvas) { this.resizeCanvas = false; } if(this.resizeCanvas) { this.canvas.width += this.ui.inputDX | 0; this.canvas.height += this.ui.inputDY | 0; if(this.canvas.width < 1) { this.canvas.width = 1; } if(this.canvas.height < 1) { this.canvas.height = 1; } } } ,updateFiles: function() { if(!lnx2d_Editor.showFiles) { return; } if(this.ui.inputReleased) { var appw = kha_System.windowWidth(); var apph = kha_System.windowHeight(); var left = appw / 2 - lnx2d_Editor.modalRectW / 2; var right = appw / 2 + lnx2d_Editor.modalRectW / 2; var top = apph / 2 - lnx2d_Editor.modalRectH / 2; var bottom = apph / 2 + lnx2d_Editor.modalRectH / 2; if(this.ui.inputX < left || this.ui.inputX > right || this.ui.inputY < top + lnx2d_Editor.modalHeaderH || this.ui.inputY > bottom) { lnx2d_Editor.showFiles = false; } } } ,renderFiles: function(g) { var appw = kha_System.windowWidth(); var apph = kha_System.windowHeight(); var left = appw / 2 - lnx2d_Editor.modalW / 2; var top = apph / 2 - lnx2d_Editor.modalH / 2; g.begin(false); g.set_color(-14671840); g.fillRect(left,top,lnx2d_Editor.modalW,lnx2d_Editor.modalH); g.end(); var leftRect = appw / 2 - lnx2d_Editor.modalRectW / 2 | 0; var rightRect = appw / 2 + lnx2d_Editor.modalRectW / 2 | 0; var topRect = apph / 2 - lnx2d_Editor.modalRectH / 2 | 0; var bottomRect = apph / 2 + lnx2d_Editor.modalRectH / 2 | 0; topRect += lnx2d_Editor.modalHeaderH; this.uimodal.begin(g); if(this.uimodal.window(zui_Handle.global.nest(66,null),leftRect,topRect,lnx2d_Editor.modalRectW,lnx2d_Editor.modalRectH - 100)) { var pathHandle = zui_Handle.global.nest(67,null); pathHandle.text = this.uimodal.textInput(pathHandle); lnx2d_Editor.path = zui_Ext.fileBrowser(this.uimodal,pathHandle,lnx2d_Editor.foldersOnly); } this.uimodal.end(false); g.begin(false); this.uimodal.beginRegion(g,rightRect - 100,bottomRect - 30,100); if(this.uimodal.button("OK")) { lnx2d_Editor.showFiles = false; lnx2d_Editor.filesDone(lnx2d_Editor.path); } this.uimodal.endRegion(false); this.uimodal.beginRegion(g,rightRect - 200,bottomRect - 30,100); if(this.uimodal.button("Cancel")) { lnx2d_Editor.showFiles = false; } this.uimodal.endRegion(); g.end(); } ,scaled: function(f) { return f * this.cui.ops.scaleFactor | 0; } ,__class__: lnx2d_Editor ,__properties__: {get_toolbarw:"get_toolbarw"} }; var lnx2d_ElementController = function() { }; $hxClasses["lnx2d.ElementController"] = lnx2d_ElementController; lnx2d_ElementController.__name__ = true; lnx2d_ElementController.__properties__ = {get_handleSize:"get_handleSize"}; lnx2d_ElementController.get_handleSize = function() { return 8 * lnx2d_ElementController.ui.ops.scaleFactor | 0; }; lnx2d_ElementController.initialize = function(ui,cui) { lnx2d_ElementController.ui = ui; lnx2d_ElementController.cui = cui; }; lnx2d_ElementController.selectElement = function(canvas) { if(lnx2d_ElementController.ui == null) { return; } var selectButton = Main.prefs.keyMap.selectMouseButton; if(selectButton == "Left" && lnx2d_ElementController.ui.inputStarted && lnx2d_ElementController.ui.inputDown || selectButton == "Right" && lnx2d_ElementController.ui.inputStartedR && lnx2d_ElementController.ui.inputDownR) { var lastSelected = lnx2d_Editor.selectedElem; lnx2d_Editor.selectedElem = null; lnx2d_ElementController.newElementSelected = false; var sorted_elements = canvas.elements.slice(); sorted_elements.reverse(); var _g = 0; while(_g < sorted_elements.length) { var elem = sorted_elements[_g]; ++_g; var anchorOffset = leenkx_ui_Canvas.getAnchorOffset(canvas,elem); var ex = (lnx2d_tools_Math.absx(canvas,elem) * lnx2d_ElementController.cui.ops.scaleFactor | 0) + anchorOffset[0]; var ey = (lnx2d_tools_Math.absy(canvas,elem) * lnx2d_ElementController.cui.ops.scaleFactor | 0) + anchorOffset[1]; var ew = elem.width * lnx2d_ElementController.cui.ops.scaleFactor | 0; var eh = elem.height * lnx2d_ElementController.cui.ops.scaleFactor | 0; var cx = canvas.x + ex + ew / 2; var cy = canvas.y + ey + eh / 2; var rotHandleX = cx - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2; var rotHandleY = canvas.y + ey - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) * 2 - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2; var rotHandleH = (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) * 2 + (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2; if(lnx2d_tools_Math.hitbox(lnx2d_ElementController.cui,canvas.x + ex - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2,canvas.y + ey - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2,ew + (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0),eh + (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0),elem.rotation) || lnx2d_tools_Math.hitbox(lnx2d_ElementController.cui,rotHandleX,rotHandleY,8 * lnx2d_ElementController.ui.ops.scaleFactor | 0,rotHandleH,elem.rotation,[cx,cy]) && lastSelected == elem) { lnx2d_Editor.selectedElem = elem; if(lastSelected != elem) { lnx2d_ElementController.newElementSelected = true; } break; } } lnx2d_ui_UIProperties.hwin.redraws = 2; } }; lnx2d_ElementController.render = function(g,canvas) { if(lnx2d_Editor.selectedElem != null) { var anchorOffset = leenkx_ui_Canvas.getAnchorOffset(canvas,lnx2d_Editor.selectedElem); var ex = (lnx2d_tools_Math.absx(canvas,lnx2d_Editor.selectedElem) * lnx2d_ElementController.cui.ops.scaleFactor | 0) + anchorOffset[0]; var ey = (lnx2d_tools_Math.absy(canvas,lnx2d_Editor.selectedElem) * lnx2d_ElementController.cui.ops.scaleFactor | 0) + anchorOffset[1]; var ew = lnx2d_Editor.selectedElem.width * lnx2d_ElementController.cui.ops.scaleFactor | 0; var eh = lnx2d_Editor.selectedElem.height * lnx2d_ElementController.cui.ops.scaleFactor | 0; var cx = canvas.x + ex + ew / 2; var cy = canvas.y + ey + eh / 2; g.pushRotation(lnx2d_Editor.selectedElem.rotation,cx,cy); g.set_color(-1); g.drawRect(canvas.x + ex,canvas.y + ey,ew,eh); g.set_color(-16777216); g.drawRect(canvas.x + ex + 1,canvas.y + ey + 1,ew,eh); g.set_color(-1); var rotatedInput = lnx2d_tools_Math.rotatePoint(lnx2d_ElementController.ui.inputX,lnx2d_ElementController.ui.inputY,cx,cy,-lnx2d_Editor.selectedElem.rotation); var _g = 0; while(_g < 3) { var handlePosX = _g++; var handlePosX1 = handlePosX / 2; var _g1 = 0; while(_g1 < 3) { var handlePosY = _g1++; var handlePosY1 = handlePosY / 2; if(handlePosX1 == 0.5 && handlePosY1 == 0.5) { continue; } var hX = canvas.x + ex + ew * handlePosX1 - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2; var hY = canvas.y + ey + eh * handlePosY1 - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2; var dragged = false; if(handlePosX1 == 0 && lnx2d_ElementController.dragLeft) { if(handlePosY1 == 0 && lnx2d_ElementController.dragTop) { dragged = true; } else if(handlePosY1 == 0.5 && !(lnx2d_ElementController.dragTop || lnx2d_ElementController.dragBottom)) { dragged = true; } else if(handlePosY1 == 1 && lnx2d_ElementController.dragBottom) { dragged = true; } } else if(handlePosX1 == 0.5 && !(lnx2d_ElementController.dragLeft || lnx2d_ElementController.dragRight)) { if(handlePosY1 == 0 && lnx2d_ElementController.dragTop) { dragged = true; } else if(handlePosY1 == 1 && lnx2d_ElementController.dragBottom) { dragged = true; } } else if(handlePosX1 == 1 && lnx2d_ElementController.dragRight) { if(handlePosY1 == 0 && lnx2d_ElementController.dragTop) { dragged = true; } else if(handlePosY1 == 0.5 && !(lnx2d_ElementController.dragTop || lnx2d_ElementController.dragBottom)) { dragged = true; } else if(handlePosY1 == 1 && lnx2d_ElementController.dragBottom) { dragged = true; } } dragged = dragged && lnx2d_ElementController.drag; if(rotatedInput.x > hX && rotatedInput.x < hX + (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) || dragged) { if(rotatedInput.y > hY && rotatedInput.y < hY + (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) || dragged) { g.set_color(-14656100); g.fillRect(hX,hY,8 * lnx2d_ElementController.ui.ops.scaleFactor | 0,8 * lnx2d_ElementController.ui.ops.scaleFactor | 0); g.set_color(-1); } } g.drawRect(hX,hY,8 * lnx2d_ElementController.ui.ops.scaleFactor | 0,8 * lnx2d_ElementController.ui.ops.scaleFactor | 0); } } g.drawLine(cx,canvas.y + ey,cx,canvas.y + ey - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) * 2); var x = cx; var y = canvas.y + ey - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) * 2; if(y == null) { y = 0; } if(x == null) { x = 0; } var rotHandleCenter_x = x; var rotHandleCenter_y = y; var x = rotatedInput.x - rotHandleCenter_x; var y = rotatedInput.y - rotHandleCenter_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var _this_x = x; var _this_y = y; if(Math.sqrt(_this_x * _this_x + _this_y * _this_y) <= (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2 || lnx2d_ElementController.rotate) { g.set_color(-14656100); kha_graphics2_GraphicsExtension.fillCircle(g,rotHandleCenter_x,rotHandleCenter_y,(8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2); g.set_color(-1); } kha_graphics2_GraphicsExtension.drawCircle(g,rotHandleCenter_x,rotHandleCenter_y,(8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2); g.popTransformation(); } }; lnx2d_ElementController.update = function(ui,cui,canvas) { lnx2d_ElementController.ui = ui; lnx2d_ElementController.cui = cui; if(lnx2d_ElementController.newElementSelected) { return; } if(lnx2d_Editor.selectedElem != null) { var elem = lnx2d_Editor.selectedElem; var anchorOffset = leenkx_ui_Canvas.getAnchorOffset(canvas,elem); var ex = (lnx2d_tools_Math.absx(canvas,elem) * lnx2d_ElementController.cui.ops.scaleFactor | 0) + anchorOffset[0]; var ey = (lnx2d_tools_Math.absy(canvas,elem) * lnx2d_ElementController.cui.ops.scaleFactor | 0) + anchorOffset[1]; var ew = elem.width * lnx2d_ElementController.cui.ops.scaleFactor | 0; var eh = elem.height * lnx2d_ElementController.cui.ops.scaleFactor | 0; var rotatedInput = lnx2d_tools_Math.rotatePoint(ui.inputX,ui.inputY,canvas.x + ex + ew / 2,canvas.y + ey + eh / 2,-elem.rotation); if(ui.inputStarted && ui.inputDown) { if(lnx2d_tools_Math.hitbox(ui,canvas.x + ex - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2,canvas.y + ey - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) / 2,ew + (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0),eh + (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0),lnx2d_Editor.selectedElem.rotation)) { lnx2d_ElementController.drag = true; lnx2d_ElementController.dragLeft = lnx2d_ElementController.dragRight = lnx2d_ElementController.dragTop = lnx2d_ElementController.dragBottom = false; if(rotatedInput.x > canvas.x + ex + ew - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0)) { lnx2d_ElementController.dragRight = true; } else if(rotatedInput.x < canvas.x + ex + (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0)) { lnx2d_ElementController.dragLeft = true; } if(rotatedInput.y > canvas.y + ey + eh - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0)) { lnx2d_ElementController.dragBottom = true; } else if(rotatedInput.y < canvas.y + ey + (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0)) { lnx2d_ElementController.dragTop = true; } lnx2d_ElementController.startElementManipulation(true); } else { var x = canvas.x + ex + ew / 2; var y = canvas.y + ey - (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0) * 2; if(y == null) { y = 0; } if(x == null) { x = 0; } var rotHandleCenter_x = x; var rotHandleCenter_y = y; var x = rotatedInput.x - rotHandleCenter_x; var y = rotatedInput.y - rotHandleCenter_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var inputPos_x = x; var inputPos_y = y; if(Math.sqrt(inputPos_x * inputPos_x + inputPos_y * inputPos_y) <= (8 * lnx2d_ElementController.ui.ops.scaleFactor | 0)) { lnx2d_ElementController.rotate = true; lnx2d_ElementController.startElementManipulation(true); } } } if(lnx2d_ElementController.isManipulating) { lnx2d_ui_UIProperties.hwin.redraws = 2; if(lnx2d_ElementController.transformStartedMouse && ui.inputReleased || !lnx2d_ElementController.transformStartedMouse && ui.inputStarted) { lnx2d_ElementController.endElementManipulation(); } else if(ui.isKeyPressed && ui.isEscapeDown || ui.inputStartedR) { lnx2d_ElementController.endElementManipulation(true); } else if(lnx2d_ElementController.drag) { var x = ui.inputX; var y = ui.inputY; if(y == null) { y = 0; } if(x == null) { x = 0; } var _this_x = x; var _this_y = y; var vec = lnx2d_ElementController.transformInitInput; var x = _this_x - vec.x; var y = _this_y - vec.y; if(y == null) { y = 0; } if(x == null) { x = 0; } var transformDelta_x = x; var transformDelta_y = y; if(!lnx2d_ElementController.transformStartedMouse) { if(ui.isKeyPressed && ui.key == 88) { elem.width = lnx2d_ElementController.transformInitSize.x | 0; elem.height = lnx2d_ElementController.transformInitSize.y | 0; lnx2d_ElementController.dragRight = true; lnx2d_ElementController.dragBottom = !lnx2d_ElementController.dragBottom; } if(ui.isKeyPressed && ui.key == 89) { elem.width = lnx2d_ElementController.transformInitSize.x | 0; elem.height = lnx2d_ElementController.transformInitSize.y | 0; lnx2d_ElementController.dragBottom = true; lnx2d_ElementController.dragRight = !lnx2d_ElementController.dragRight; } } if(lnx2d_ElementController.dragRight) { transformDelta_x = lnx2d_tools_Math.calculateTransformDelta(ui,lnx2d_Editor.gridSnapPos,lnx2d_Editor.gridUseRelative,lnx2d_Editor.gridSize,transformDelta_x,lnx2d_ElementController.transformInitPos.x + lnx2d_ElementController.transformInitSize.x); elem.width = lnx2d_ElementController.transformInitSize.x + transformDelta_x | 0; } else if(lnx2d_ElementController.dragLeft) { transformDelta_x = lnx2d_tools_Math.calculateTransformDelta(ui,lnx2d_Editor.gridSnapPos,lnx2d_Editor.gridUseRelative,lnx2d_Editor.gridSize,transformDelta_x,lnx2d_ElementController.transformInitPos.x); elem.x = lnx2d_ElementController.transformInitPos.x + transformDelta_x; elem.width = lnx2d_ElementController.transformInitSize.x - transformDelta_x | 0; } if(lnx2d_ElementController.dragBottom) { transformDelta_y = lnx2d_tools_Math.calculateTransformDelta(ui,lnx2d_Editor.gridSnapPos,lnx2d_Editor.gridUseRelative,lnx2d_Editor.gridSize,transformDelta_y,lnx2d_ElementController.transformInitPos.y + lnx2d_ElementController.transformInitSize.y); elem.height = lnx2d_ElementController.transformInitSize.y + transformDelta_y | 0; } else if(lnx2d_ElementController.dragTop) { transformDelta_y = lnx2d_tools_Math.calculateTransformDelta(ui,lnx2d_Editor.gridSnapPos,lnx2d_Editor.gridUseRelative,lnx2d_Editor.gridSize,transformDelta_y,lnx2d_ElementController.transformInitPos.y); elem.y = lnx2d_ElementController.transformInitPos.y + transformDelta_y; elem.height = lnx2d_ElementController.transformInitSize.y - transformDelta_y | 0; } if(elem.type != 1) { if(elem.width < 1) { elem.width = 1; } if(elem.height < 1) { elem.height = 1; } } if(!lnx2d_ElementController.dragLeft && !lnx2d_ElementController.dragRight && !lnx2d_ElementController.dragBottom && !lnx2d_ElementController.dragTop) { lnx2d_ElementController.grab = true; lnx2d_ElementController.grabX = true; lnx2d_ElementController.grabY = true; lnx2d_ElementController.drag = false; } else { if(!lnx2d_ElementController.dragBottom && !lnx2d_ElementController.dragTop) { transformDelta_y = 0; } else if(!lnx2d_ElementController.dragLeft && !lnx2d_ElementController.dragRight) { transformDelta_y = 0; } lnx2d_Editor.currentOperation = " x: " + elem.x + " y: " + elem.y + " w: " + elem.width + " h: " + elem.height + " (dx: " + transformDelta_x + " dy: " + transformDelta_y + ")"; } } else if(lnx2d_ElementController.grab) { var x = ui.inputX; var y = ui.inputY; if(y == null) { y = 0; } if(x == null) { x = 0; } var _this_x = x; var _this_y = y; var vec = lnx2d_ElementController.transformInitInput; var x = _this_x - vec.x; var y = _this_y - vec.y; if(y == null) { y = 0; } if(x == null) { x = 0; } var transformDelta_x = x; var transformDelta_y = y; if(ui.isKeyPressed && ui.key == 88) { elem.x = lnx2d_ElementController.transformInitPos.x; elem.y = lnx2d_ElementController.transformInitPos.y; lnx2d_ElementController.grabX = true; lnx2d_ElementController.grabY = !lnx2d_ElementController.grabY; } if(ui.isKeyPressed && ui.key == 89) { elem.x = lnx2d_ElementController.transformInitPos.x; elem.y = lnx2d_ElementController.transformInitPos.y; lnx2d_ElementController.grabY = true; lnx2d_ElementController.grabX = !lnx2d_ElementController.grabX; } if(lnx2d_ElementController.grabX) { transformDelta_x = lnx2d_tools_Math.calculateTransformDelta(ui,lnx2d_Editor.gridSnapPos,lnx2d_Editor.gridUseRelative,lnx2d_Editor.gridSize,transformDelta_x,lnx2d_ElementController.transformInitPos.x); elem.x = lnx2d_ElementController.transformInitPos.x + transformDelta_x | 0; } if(lnx2d_ElementController.grabY) { transformDelta_y = lnx2d_tools_Math.calculateTransformDelta(ui,lnx2d_Editor.gridSnapPos,lnx2d_Editor.gridUseRelative,lnx2d_Editor.gridSize,transformDelta_y,lnx2d_ElementController.transformInitPos.y); elem.y = lnx2d_ElementController.transformInitPos.y + transformDelta_y | 0; } if(!lnx2d_ElementController.grabX) { transformDelta_x = 0; } else if(!lnx2d_ElementController.grabY) { transformDelta_y = 0; } lnx2d_Editor.currentOperation = " x: " + elem.x + " y: " + elem.y + " (dx: " + transformDelta_x + " dy: " + transformDelta_y + ")"; } else if(lnx2d_ElementController.rotate) { var x = canvas.x + ex + ew / 2; var y = canvas.y + ey + eh / 2; if(y == null) { y = 0; } if(x == null) { x = 0; } var elemCenter_x = x; var elemCenter_y = y; var x = ui.inputX; var y = ui.inputY; if(y == null) { y = 0; } if(x == null) { x = 0; } var _this_x = x; var _this_y = y; var x = _this_x - elemCenter_x; var y = _this_y - elemCenter_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var inputPos_x = x; var inputPos_y = y; var inputAngle = -Math.atan2(inputPos_x,inputPos_y) + Math.PI; if((ui.isKeyDown && ui.key == Main.prefs.keyMap.gridInvert) != lnx2d_Editor.useRotationSteps) { inputAngle = Math.round(inputAngle / lnx2d_Editor.rotationSteps) * lnx2d_Editor.rotationSteps; } elem.rotation = inputAngle; lnx2d_Editor.currentOperation = " Rot: " + lnx2d_tools_Math.roundPrecision(inputAngle * 57.29578,2) + "deg"; } } if(ui.isKeyPressed && !ui.isTyping) { if(!lnx2d_ElementController.grab && ui.key == Main.prefs.keyMap.grabKey) { lnx2d_ElementController.startElementManipulation(); lnx2d_ElementController.grab = true; lnx2d_ElementController.grabX = true; lnx2d_ElementController.grabY = true; } if(!lnx2d_ElementController.drag && ui.key == Main.prefs.keyMap.sizeKey) { lnx2d_ElementController.startElementManipulation(); lnx2d_ElementController.drag = true; lnx2d_ElementController.dragLeft = false; lnx2d_ElementController.dragTop = false; lnx2d_ElementController.dragRight = true; lnx2d_ElementController.dragBottom = true; } if(!lnx2d_ElementController.rotate && ui.key == Main.prefs.keyMap.rotateKey) { lnx2d_ElementController.startElementManipulation(); lnx2d_ElementController.rotate = true; } if(!lnx2d_ElementController.isManipulating) { if(ui.key == 37) { if(lnx2d_Editor.gridSnapPos) { elem.x -= lnx2d_Editor.gridSize; } else { elem.x--; } } if(ui.key == 39) { if(lnx2d_Editor.gridSnapPos) { elem.x += lnx2d_Editor.gridSize; } else { elem.x++; } } if(ui.key == 38) { if(lnx2d_Editor.gridSnapPos) { elem.y -= lnx2d_Editor.gridSize; } else { elem.y--; } } if(ui.key == 40) { if(lnx2d_Editor.gridSnapPos) { elem.y += lnx2d_Editor.gridSize; } else { elem.y++; } } if(ui.isBackspaceDown || ui.isDeleteDown) { lnx2d_tools_CanvasTools.removeElem(canvas,lnx2d_Editor.selectedElem); lnx2d_Editor.selectedElem = null; } else if(ui.key == 68) { lnx2d_Editor.selectedElem = lnx2d_tools_CanvasTools.duplicateElem(canvas,elem); } } } } else { lnx2d_ElementController.endElementManipulation(); } }; lnx2d_ElementController.startElementManipulation = function(mousePressed) { if(mousePressed == null) { mousePressed = false; } if(lnx2d_ElementController.isManipulating) { lnx2d_ElementController.endElementManipulation(true); } lnx2d_ElementController.transformInitInput = new kha_math_Vector2(lnx2d_ElementController.ui.inputX,lnx2d_ElementController.ui.inputY); lnx2d_ElementController.transformInitPos = new kha_math_Vector2(lnx2d_Editor.selectedElem.x,lnx2d_Editor.selectedElem.y); lnx2d_ElementController.transformInitSize = new kha_math_Vector2(lnx2d_Editor.selectedElem.width,lnx2d_Editor.selectedElem.height); lnx2d_ElementController.transformInitRot = lnx2d_Editor.selectedElem.rotation; lnx2d_ElementController.transformStartedMouse = mousePressed; lnx2d_ElementController.isManipulating = true; }; lnx2d_ElementController.endElementManipulation = function(reset) { if(reset == null) { reset = false; } if(reset) { lnx2d_Editor.selectedElem.x = lnx2d_ElementController.transformInitPos.x; lnx2d_Editor.selectedElem.y = lnx2d_ElementController.transformInitPos.y; lnx2d_Editor.selectedElem.width = lnx2d_ElementController.transformInitSize.x | 0; lnx2d_Editor.selectedElem.height = lnx2d_ElementController.transformInitSize.y | 0; lnx2d_Editor.selectedElem.rotation = lnx2d_ElementController.transformInitRot; } lnx2d_ElementController.isManipulating = false; lnx2d_ElementController.grab = false; lnx2d_ElementController.drag = false; lnx2d_ElementController.rotate = false; lnx2d_ElementController.transformStartedMouse = false; lnx2d_Editor.currentOperation = ""; }; lnx2d_ElementController.scaled = function(f) { return f * lnx2d_ElementController.cui.ops.scaleFactor | 0; }; var lnx2d_Path = function() { }; $hxClasses["lnx2d.Path"] = lnx2d_Path; lnx2d_Path.__name__ = true; lnx2d_Path.toRelative = function(path,cwd) { path = haxe_io_Path.normalize(path); cwd = haxe_io_Path.normalize(cwd); var ar = []; var ar1 = path.split("/"); var ar2 = cwd.split("/"); var index = 0; while(ar1[index] == ar2[index]) ++index; var _g = 0; var _g1 = ar2.length - index; while(_g < _g1) { var i = _g++; ar.push(".."); } var _g = index; var _g1 = ar1.length; while(_g < _g1) { var i = _g++; ar.push(ar1[i]); } return ar.join("/"); }; lnx2d_Path.toAbsolute = function(path,cwd) { return haxe_io_Path.normalize(cwd + "/" + path); }; var lnx2d_tools_CanvasTools = function() { }; $hxClasses["lnx2d.tools.CanvasTools"] = lnx2d_tools_CanvasTools; lnx2d_tools_CanvasTools.__name__ = true; lnx2d_tools_CanvasTools.makeElem = function(cui,canvas,type) { var name = ""; var height = cui.t.ELEMENT_H; var alignment = 0; switch(type) { case 0: name = lnx2d_tools_CanvasTools.unique("Text",canvas.elements,"name"); break; case 1: name = lnx2d_tools_CanvasTools.unique("Image",canvas.elements,"name"); height = 100; break; case 2: name = lnx2d_tools_CanvasTools.unique("Button",canvas.elements,"name"); alignment = 1; break; case 3: name = lnx2d_tools_CanvasTools.unique("Empty",canvas.elements,"name"); height = 100; break; case 6: name = lnx2d_tools_CanvasTools.unique("Check",canvas.elements,"name"); break; case 7: name = lnx2d_tools_CanvasTools.unique("Radio",canvas.elements,"name"); break; case 8: name = lnx2d_tools_CanvasTools.unique("Combo",canvas.elements,"name"); break; case 9: name = lnx2d_tools_CanvasTools.unique("Slider",canvas.elements,"name"); alignment = 2; break; case 10: name = lnx2d_tools_CanvasTools.unique("TextInput",canvas.elements,"name"); break; case 11: name = lnx2d_tools_CanvasTools.unique("KeyInput",canvas.elements,"name"); break; case 12: name = lnx2d_tools_CanvasTools.unique("Filled_Rectangle",canvas.elements,"name"); height = 100; break; case 13: name = lnx2d_tools_CanvasTools.unique("Rectangle",canvas.elements,"name"); height = 100; break; case 14: name = lnx2d_tools_CanvasTools.unique("Filled_Circle",canvas.elements,"name"); break; case 15: name = lnx2d_tools_CanvasTools.unique("Circle",canvas.elements,"name"); break; case 16: name = lnx2d_tools_CanvasTools.unique("Filled_Triangle",canvas.elements,"name"); break; case 17: name = lnx2d_tools_CanvasTools.unique("Triangle",canvas.elements,"name"); break; case 18: name = lnx2d_tools_CanvasTools.unique("Progress_bar",canvas.elements,"name"); break; case 19: name = lnx2d_tools_CanvasTools.unique("CProgress_bar",canvas.elements,"name"); break; case 20: name = lnx2d_tools_CanvasTools.unique("TextArea",canvas.elements,"name"); break; } var elem = { id : leenkx_ui_Canvas.getElementId(canvas), type : type, name : name, event : "", x : 0, y : 0, width : 150, height : height, rotation : 0, text : "My " + name, asset : "", progress_at : 0, progress_total : 100, strength : 1, alignment : js_Boot.__cast(alignment , Int), anchor : 0, parent : null, children : [], visible : true}; canvas.elements.push(elem); return elem; }; lnx2d_tools_CanvasTools.unique = function(s,data,elemAttr,counter) { if(counter == null) { counter = -1; } var originalName = s; var split = s.lastIndexOf("."); if(split != -1) { var suffix = s.substring(split); if(suffix.length == 4) { originalName = s.substring(0,split); } } var _g = 0; while(_g < data.length) { var elem = data[_g]; ++_g; if(Reflect.getProperty(elem,elemAttr) == s) { if(counter > -1) { ++counter; var counterLen = (counter == null ? "null" : "" + counter).length; if(counterLen > 3) { counterLen = 3; } var padding = "."; var _g1 = 0; var _g2 = 3 - counterLen; while(_g1 < _g2) { var i = _g1++; padding += "0"; } return lnx2d_tools_CanvasTools.unique(originalName + padding + (counter == null ? "null" : "" + counter),data,elemAttr,counter); } else { return lnx2d_tools_CanvasTools.unique(originalName,data,elemAttr,0); } } } return s; }; lnx2d_tools_CanvasTools.moveElem = function(canvas,elem,d) { var ar = canvas.elements; var i = ar.indexOf(elem); var p = elem.parent; while(true) { i += d; if(i < 0 || i >= ar.length) { break; } if(ar[i].parent == p) { HxOverrides.remove(ar,elem); ar.splice(i,0,elem); break; } } }; lnx2d_tools_CanvasTools.removeElem = function(canvas,elem) { if(elem.children != null) { var _g = 0; var _g1 = elem.children; while(_g < _g1.length) { var id = _g1[_g]; ++_g; lnx2d_tools_CanvasTools.removeElem(canvas,lnx2d_tools_CanvasTools.elemById(canvas,id)); } } HxOverrides.remove(canvas.elements,elem); if(elem.parent != null) { HxOverrides.remove(lnx2d_tools_CanvasTools.elemById(canvas,elem.parent).children,elem.id); elem.parent = null; } }; lnx2d_tools_CanvasTools.elemById = function(canvas,id) { var _g = 0; var _g1 = canvas.elements; while(_g < _g1.length) { var e = _g1[_g]; ++_g; if(e.id == id) { return e; } } return null; }; lnx2d_tools_CanvasTools.unparent = function(canvas,elem) { var parent = lnx2d_tools_CanvasTools.elemById(canvas,elem.parent); if(parent != null) { elem.x += lnx2d_tools_Math.absx(canvas,parent); elem.y += lnx2d_tools_Math.absy(canvas,parent); elem.parent = null; HxOverrides.remove(parent.children,elem.id); } }; lnx2d_tools_CanvasTools.setParent = function(canvas,elem,parent) { var oldParent = lnx2d_tools_CanvasTools.elemById(canvas,elem.parent); if(oldParent == parent) { return; } lnx2d_tools_CanvasTools.unparent(canvas,elem); if(parent != null) { if(parent.children == null) { elem.children = []; } parent.children.push(elem.id); elem.parent = parent.id; elem.x -= lnx2d_tools_Math.absx(canvas,parent); elem.y -= lnx2d_tools_Math.absy(canvas,parent); } }; lnx2d_tools_CanvasTools.duplicateElem = function(canvas,elem,parentId) { if(elem != null) { if(parentId == null) { parentId = elem.parent; } var dupe = { id : leenkx_ui_Canvas.getElementId(canvas), type : elem.type, name : elem.name, event : elem.event, x : elem.x + 10, y : elem.y + 10, width : elem.width, height : elem.height, rotation : elem.rotation, text : elem.text, asset : elem.asset, color : elem.color, color_text : elem.color_text, color_hover : elem.color_hover, color_press : elem.color_press, color_progress : elem.color_progress, progress_at : elem.progress_at, progress_total : elem.progress_total, strength : elem.strength, anchor : elem.anchor, parent : parentId, children : [], visible : elem.visible}; canvas.elements.push(dupe); if(parentId != null) { var parentElem = lnx2d_tools_CanvasTools.elemById(canvas,parentId); parentElem.children.push(dupe.id); if(elem.parent != parentId) { dupe.x = elem.x; dupe.y = elem.y; } } var _g = 0; var _g1 = elem.children; while(_g < _g1.length) { var child = _g1[_g]; ++_g; lnx2d_tools_CanvasTools.duplicateElem(canvas,lnx2d_tools_CanvasTools.elemById(canvas,child),dupe.id); } return dupe; } return null; }; var lnx2d_tools_Math = function() { }; $hxClasses["lnx2d.tools.Math"] = lnx2d_tools_Math; lnx2d_tools_Math.__name__ = true; lnx2d_tools_Math.toDegrees = function(radians) { return radians * 57.29578; }; lnx2d_tools_Math.toRadians = function(degrees) { return degrees * 0.0174532924; }; lnx2d_tools_Math.hitbox = function(ui,x,y,w,h,rotation,center) { if(rotation == null) { rotation = 0.0; } if(center != null && center.length != 2) { throw haxe_Exception.thrown("lnx2d.tools.Math.hitbox(): 'center' argument must consist of two values!"); } if(center == null) { center = [x + w / 2,y + h / 2]; } var rotatedInput = lnx2d_tools_Math.rotatePoint(ui.inputX,ui.inputY,center[0],center[1],-rotation); if(rotatedInput.x > x && rotatedInput.x < x + w && rotatedInput.y > y) { return rotatedInput.y < y + h; } else { return false; } }; lnx2d_tools_Math.absx = function(canvas,e) { if(e == null) { return 0; } return e.x + lnx2d_tools_Math.absx(canvas,lnx2d_tools_CanvasTools.elemById(canvas,e.parent)); }; lnx2d_tools_Math.absy = function(canvas,e) { if(e == null) { return 0; } return e.y + lnx2d_tools_Math.absy(canvas,lnx2d_tools_CanvasTools.elemById(canvas,e.parent)); }; lnx2d_tools_Math.roundPrecision = function(v,precision) { if(precision == null) { precision = 0; } v *= Math.pow(10,precision); v = (v | 0) * 1.0; v /= Math.pow(10,precision); return v; }; lnx2d_tools_Math.rotatePoint = function(pointX,pointY,centerX,centerY,angle) { pointX -= centerX; pointY -= centerY; var x = pointX * Math.cos(angle) - pointY * Math.sin(angle); var y = pointX * Math.sin(angle) + pointY * Math.cos(angle); return new kha_math_Vector2(centerX + x,centerY + y); }; lnx2d_tools_Math.calculateTransformDelta = function(ui,gSP,gUR,gS,value,offset) { if(offset == null) { offset = 0.0; } var precisionMode = ui.isKeyDown && ui.key == Main.prefs.keyMap.slowMovement; var enabled = gSP != (ui.isKeyDown && ui.key == Main.prefs.keyMap.gridInvert); var useOffset = gUR != (ui.isKeyDown && ui.key == Main.prefs.keyMap.gridInvertRelative); if(!enabled) { if(precisionMode) { return value / 2; } else { return value; } } value = Math.round(value / gS) * gS; if(precisionMode) { value /= 2; } if(useOffset && offset != 0) { offset %= gS; if(offset > gS / 2) { offset = -(gS - offset); } value -= offset; } return value; }; var zui_Handle = function(ops) { this.changed = false; this.dragY = 0; this.dragX = 0; this.dragEnabled = false; this.lastMaxY = 0.0; this.lastMaxX = 0.0; this.layout = 0; this.scrollEnabled = false; this.scrollOffset = 0.0; 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 ,scrollOffset: null ,scrollEnabled: null ,layout: null ,lastMaxX: null ,lastMaxY: null ,dragEnabled: null ,dragX: null ,dragY: null ,changed: null ,children: null ,nest: function(i,ops) { if(this.children == null) { this.children = new haxe_ds_IntMap(); } var c = this.children.h[i]; if(c == null) { c = new zui_Handle(ops); this.children.h[i] = c; } return c; } ,unnest: function(i) { if(this.children != null) { this.children.remove(i); } } ,__class__: zui_Handle }; var lnx2d_ui_UIProperties = function() { }; $hxClasses["lnx2d.ui.UIProperties"] = lnx2d_ui_UIProperties; lnx2d_ui_UIProperties.__name__ = true; lnx2d_ui_UIProperties.renderProperties = function(ui,width,canvas) { if(ui.window(lnx2d_ui_UIProperties.hwin,kha_System.windowWidth() - width,0,width,kha_System.windowHeight())) { var htab = zui_Handle.global.nest(3,null); if(ui.tab(htab,"Project")) { var hpath = zui_Handle.global.nest(4,{ text : ""}); ui.textInput(hpath,"Current file"); if(hpath.changed) { Main.prefs.path = hpath.text; } if(ui.button("Save")) { lnx2d_Assets.save(canvas); } if(ui.button("Load")) { lnx2d_Assets.load(function(c) { Main.inst.canvas = c; lnx2d_ui_UIProperties.hwin.redraws = 2; }); } if(ui.panel(zui_Handle.global.nest(5,{ selected : false}),"Canvas")) { ui.indent(); if(ui.button("New")) { canvas.elements = []; lnx2d_Editor.selectedElem = null; } if(ui.isHovered) { ui.tooltip("Create new canvas"); } var handleName = zui_Handle.global.nest(6,{ text : canvas.name}); handleName.text = canvas.name; ui.textInput(handleName,"Name",2); if(handleName.changed) { if(handleName.text == "_themes") { leenkx_ui_Popup.showMessage(new zui_Zui(ui.ops),"Sorry!","\"_themes\" is not a valid canvas name as it is reserved!"); handleName.text = canvas.name; } else { canvas.name = handleName.text; } } ui.row([0.5,0.5]); var handlecw = zui_Handle.global.nest(7,{ text : canvas.width + ""}); var handlech = zui_Handle.global.nest(8,{ text : canvas.height + ""}); handlecw.text = canvas.width + ""; handlech.text = canvas.height + ""; var strw = ui.textInput(handlecw,"Width",2); var strh = ui.textInput(handlech,"Height",2); canvas.width = Std.parseInt(strw); canvas.height = Std.parseInt(strh); ui.unindent(); } if(ui.panel(zui_Handle.global.nest(9,{ selected : true}),"Outliner")) { ui.indent(); var drawList = null; drawList = function(h,elem) { var b = false; if(lnx2d_Editor.selectedElem == elem) { ui.g.set_color(-14656100); ui.g.fillRect(ui._x,ui._y,ui._w,ui.t.ELEMENT_H * ui.ops.scaleFactor); ui.g.set_color(-1); } var started = ui.getStarted(); if(started && !ui.inputDownR) { lnx2d_Editor.selectedElem = elem; } if(started && ui.inputDownR) { if(elem == lnx2d_Editor.selectedElem) { lnx2d_tools_CanvasTools.unparent(canvas,elem); } else { lnx2d_tools_CanvasTools.setParent(canvas,lnx2d_Editor.selectedElem,elem); } } if(elem.children != null && elem.children.length > 0) { ui.row([0.076923076923076927,0.92307692307692313]); b = ui.panel(h.nest(elem.id,{ selected : true}),"",true,false,false); ui.text(elem.name); } else { ui._x += 18; ui.text(elem.name); ui._x -= 18; } if(b) { var i = elem.children.length; while(i > 0) { --i; var id = elem.children[elem.children.length - 1 - i]; ui.indent(); drawList(h,lnx2d_tools_CanvasTools.elemById(canvas,id)); ui.unindent(); } } }; if(canvas.elements.length > 0) { var _g = 0; var _g1 = canvas.elements.length; while(_g < _g1) { var i = _g++; var elem = canvas.elements[canvas.elements.length - 1 - i]; if(elem.parent == null) { drawList(zui_Handle.global.nest(10,null),elem); } } ui.row([0.25,0.25,0.25,0.25]); if(ui.button("Up") && lnx2d_Editor.selectedElem != null) { lnx2d_tools_CanvasTools.moveElem(canvas,lnx2d_Editor.selectedElem,1); } if(ui.isHovered) { ui.tooltip("Move element up"); } if(ui.button("Down") && lnx2d_Editor.selectedElem != null) { lnx2d_tools_CanvasTools.moveElem(canvas,lnx2d_Editor.selectedElem,-1); } if(ui.isHovered) { ui.tooltip("Move element down"); } if(ui.button("Remove") && lnx2d_Editor.selectedElem != null) { lnx2d_tools_CanvasTools.removeElem(canvas,lnx2d_Editor.selectedElem); lnx2d_Editor.selectedElem = null; } if(ui.isHovered) { ui.tooltip("Delete element"); } if(ui.button("Duplicate") && lnx2d_Editor.selectedElem != null) { lnx2d_Editor.selectedElem = lnx2d_tools_CanvasTools.duplicateElem(canvas,lnx2d_Editor.selectedElem); } if(ui.isHovered) { ui.tooltip("Create duplicate of element"); } } ui.unindent(); } if(lnx2d_Editor.selectedElem != null) { var elem = lnx2d_Editor.selectedElem; var id = elem.id; if(ui.panel(zui_Handle.global.nest(11,{ selected : true}),"Properties")) { ui.indent(); var tmp = elem.visible == null ? true : elem.visible; elem.visible = ui.check(zui_Handle.global.nest(12,null).nest(id,{ selected : tmp}),"Visible"); elem.name = ui.textInput(zui_Handle.global.nest(13,null).nest(id,{ text : elem.name}),"Name",2); elem.text = ui.textInput(zui_Handle.global.nest(14,null).nest(id,{ text : elem.text}),"Text",2); ui.row([0.25,0.25,0.25,0.25]); var handlex = elem.x + ""; var handlex1 = zui_Handle.global.nest(15,null).nest(id,{ text : handlex}); var handley = elem.y + ""; var handley1 = zui_Handle.global.nest(16,null).nest(id,{ text : handley}); handlex1.text = elem.x + ""; handley1.text = elem.y + ""; var strx = ui.textInput(handlex1,"X",2); var stry = ui.textInput(handley1,"Y",2); elem.x = parseFloat(strx); elem.y = parseFloat(stry); var handlew = elem.width + ""; var handlew1 = zui_Handle.global.nest(17,null).nest(id,{ text : handlew}); var handleh = elem.height + ""; var handleh1 = zui_Handle.global.nest(18,null).nest(id,{ text : handleh}); handlew1.text = elem.width + ""; handleh1.text = elem.height + ""; var strw = ui.textInput(handlew1,"W",2); var strh = ui.textInput(handleh1,"H",2); elem.width = parseFloat(strw) | 0; elem.height = parseFloat(strh) | 0; if(elem.type == 13 || elem.type == 15 || elem.type == 17 || elem.type == 18 || elem.type == 19) { var handles = elem.strength + ""; var handles1 = zui_Handle.global.nest(19,null).nest(id,{ text : handles}); var strs = ui.textInput(handles1,"Line Strength",2); elem.strength = parseFloat(strs) | 0; } if(elem.type == 18 || elem.type == 19) { var handlep = zui_Handle.global.nest(20,null).nest(id,{ value : elem.progress_at}); var slp = ui.slider(handlep,"Progress",0.0,elem.progress_total,true,1); var handlespt = elem.progress_total + ""; var handlespt1 = zui_Handle.global.nest(21,null).nest(id,{ text : handlespt}); var strpt = ui.textInput(handlespt1,"Total Progress",2); elem.progress_total = parseFloat(strpt) | 0; elem.progress_at = slp | 0; } var handlerot = zui_Handle.global.nest(22,null).nest(id,{ value : lnx2d_tools_Math.roundPrecision((elem.rotation == null ? 0 : elem.rotation) * 57.29578,2)}); handlerot.value = lnx2d_tools_Math.roundPrecision(elem.rotation * 57.29578,2); if(handlerot.value >= 360) { handlerot.value = 0; } elem.rotation = ui.slider(handlerot,"Rotation",0.0,360.0,true) * 0.0174532924; var assetPos = ui.combo(zui_Handle.global.nest(23,null).nest(id,{ position : lnx2d_Assets.getAssetIndex(canvas,elem.asset)}),lnx2d_Assets.getEnumTexts(),"Asset",true,2); elem.asset = lnx2d_Assets.getEnumTexts()[assetPos]; ui.unindent(); } if(ui.panel(zui_Handle.global.nest(24,{ selected : false}),"Color")) { ui.indent(); var drawColorSelection = function(idMult,color,defaultColor) { ui.row([0.5,0.5]); var handleCol = zui_Handle.global.nest(25,null).nest(id).nest(idMult,{ color : color != null ? color : defaultColor}); leenkx_ui_Ext.colorField(ui,handleCol,true); if(handleCol.changed) { color = handleCol.color; } if(ui.button("Reset") || color == null) { color = null; handleCol.color = defaultColor; handleCol.changed = false; } return color; }; var canvasTheme = leenkx_ui_Canvas.getTheme(canvas.theme); switch(elem.type) { case 0: ui.text("Text:"); elem.color_text = drawColorSelection(1,elem.color_text,canvasTheme.TEXT_COL); break; case 2: ui.text("Text:"); elem.color_text = drawColorSelection(1,elem.color_text,canvasTheme.BUTTON_TEXT_COL); ui.text("Background:"); elem.color = drawColorSelection(2,elem.color,canvasTheme.BUTTON_COL); ui.text("On Hover:"); elem.color_hover = drawColorSelection(3,elem.color_hover,canvasTheme.BUTTON_HOVER_COL); ui.text("On Pressed:"); elem.color_press = drawColorSelection(4,elem.color_press,canvasTheme.BUTTON_PRESSED_COL); break; case 6:case 8:case 9:case 10:case 11: ui.text("Text:"); elem.color_text = drawColorSelection(1,elem.color_text,canvasTheme.TEXT_COL); ui.text("Background:"); elem.color = drawColorSelection(2,elem.color,canvasTheme.BUTTON_COL); ui.text("On Hover:"); elem.color_hover = drawColorSelection(3,elem.color_hover,canvasTheme.BUTTON_HOVER_COL); break; case 12:case 13:case 14:case 15:case 16:case 17: ui.text("Color:"); elem.color = drawColorSelection(1,elem.color,canvasTheme.BUTTON_COL); break; case 18:case 19: ui.text("Progress:"); elem.color_progress = drawColorSelection(1,elem.color_progress,canvasTheme.TEXT_COL); ui.text("Background:"); elem.color = drawColorSelection(2,elem.color,canvasTheme.BUTTON_COL); break; default: ui.text("This element type has no color settings!"); } ui.unindent(); } if(ui.panel(zui_Handle.global.nest(26,{ selected : false}),"Align")) { ui.indent(); var alignmentHandle = zui_Handle.global.nest(27,null).nest(id,{ position : elem.alignment}); ui.row([0.33333333333333331,0.33333333333333331,0.33333333333333331]); ui.radio(alignmentHandle,0,"Left"); ui.radio(alignmentHandle,1,"Center"); ui.radio(alignmentHandle,2,"Right"); lnx2d_Editor.selectedElem.alignment = alignmentHandle.position; ui.unindent(); } if(ui.panel(zui_Handle.global.nest(28,{ selected : false}),"Anchor")) { ui.indent(); var hanch = zui_Handle.global.nest(29,null).nest(id,{ position : elem.anchor}); ui.row([0.36363636363636365,0.27272727272727271,0.36363636363636365]); ui.radio(hanch,0,"Top-Left"); ui.radio(hanch,1,"Top"); ui.radio(hanch,2,"Top-Right"); ui.row([0.36363636363636365,0.27272727272727271,0.36363636363636365]); ui.radio(hanch,3,"Left"); ui.radio(hanch,4,"Center"); ui.radio(hanch,5,"Right"); ui.row([0.36363636363636365,0.27272727272727271,0.36363636363636365]); ui.radio(hanch,6,"Bot-Left"); ui.radio(hanch,7,"Bottom"); ui.radio(hanch,8,"Bot-Right"); elem.anchor = hanch.position; ui.unindent(); } if(ui.panel(zui_Handle.global.nest(30,{ selected : false}),"Script")) { ui.indent(); elem.event = ui.textInput(zui_Handle.global.nest(31,null).nest(id,{ text : elem.event}),"Event",2); ui.unindent(); } var tmp = ui.panel(zui_Handle.global.nest(32,{ selected : false}),"Timeline"); } } if(ui.tab(htab,"Themes")) { var handleThemeColor = zui_Handle.global.nest(33,null); var handleThemeName = zui_Handle.global.nest(34,null); var iconSize = 16; var drawList1 = function(h,theme) { if(lnx2d_Editor.selectedTheme == theme) { ui.g.set_color(-14656100); ui.g.fillRect(0,ui._y,ui._windowW,ui.t.ELEMENT_H * ui.ops.scaleFactor); ui.g.set_color(-1); } if(theme == leenkx_ui_Canvas.getTheme(canvas.theme)) { var iconMargin = (ui.t.BUTTON_H - iconSize) / 2; ui.g.drawSubImage(kha_Assets.images.icons,ui._x + iconMargin,ui._y + iconMargin,0,0,16,16); } var started = ui.getStarted(); if(started && !ui.inputDownR) { lnx2d_Editor.selectedTheme = theme; } ui._x += iconSize; ui.text(theme.NAME); ui._x -= iconSize; }; var _g = 0; var _g1 = leenkx_ui_Canvas.themes; while(_g < _g1.length) { var theme = _g1[_g]; ++_g; drawList1(zui_Handle.global.nest(35,null),theme); } ui.row([0.25,0.25,0.25,0.25]); if(ui.button("Add")) { var newTheme = Reflect.copy(leenkx_ui_Themes.light); newTheme.NAME = lnx2d_tools_CanvasTools.unique("New Theme",leenkx_ui_Canvas.themes,"NAME"); leenkx_ui_Canvas.themes.push(newTheme); lnx2d_Editor.selectedTheme = newTheme; } if(lnx2d_Editor.selectedTheme == null) { ui.enabled = false; } if(ui.button("Copy")) { var newTheme = Reflect.copy(lnx2d_Editor.selectedTheme); newTheme.NAME = lnx2d_tools_CanvasTools.unique(newTheme.NAME,leenkx_ui_Canvas.themes,"NAME"); leenkx_ui_Canvas.themes.push(newTheme); lnx2d_Editor.selectedTheme = newTheme; } ui.enabled = true; if(lnx2d_Editor.selectedTheme == null) { ui.enabled = false; } var hName = handleThemeName.nest(leenkx_ui_Canvas.themes.indexOf(lnx2d_Editor.selectedTheme)); if(ui.button("Rename")) { hName.text = lnx2d_Editor.selectedTheme.NAME; leenkx_ui_Popup.showCustom(new zui_Zui(ui.ops),function(ui) { ui.textInput(hName); if(ui.button("OK")) { leenkx_ui_Popup.show = false; lnx2d_ui_UIProperties.hwin.redraws = 2; } },ui.inputX | 0,ui.inputY | 0,200,60); } if(lnx2d_Editor.selectedTheme != null) { var name = lnx2d_Editor.selectedTheme.NAME; if(hName.changed && lnx2d_Editor.selectedTheme.NAME != hName.text) { name = lnx2d_tools_CanvasTools.unique(hName.text,leenkx_ui_Canvas.themes,"NAME"); if(canvas.theme == lnx2d_Editor.selectedTheme.NAME) { canvas.theme = name; } lnx2d_Editor.selectedTheme.NAME = name; } } ui.enabled = true; if(leenkx_ui_Canvas.themes.length == 1 || lnx2d_Editor.selectedTheme == null) { ui.enabled = false; } if(ui.button("Delete")) { handleThemeColor.unnest(leenkx_ui_Canvas.themes.indexOf(lnx2d_Editor.selectedTheme)); handleThemeName.unnest(leenkx_ui_Canvas.themes.indexOf(lnx2d_Editor.selectedTheme)); HxOverrides.remove(leenkx_ui_Canvas.themes,lnx2d_Editor.selectedTheme); if(leenkx_ui_Canvas.getTheme(canvas.theme) == null) { canvas.theme = leenkx_ui_Canvas.themes[0].NAME; } lnx2d_Editor.selectedTheme = null; } ui.enabled = true; if(lnx2d_Editor.selectedTheme == null) { ui.enabled = false; } if(ui.button("Apply to Canvas")) { canvas.theme = lnx2d_Editor.selectedTheme.NAME; } ui.enabled = true; if(lnx2d_Editor.selectedTheme == null) { ui.text("Please select a Theme!"); } else { var themeColorOptions = [["Text","TEXT_COL"],["Elements","BUTTON_COL","BUTTON_TEXT_COL","BUTTON_HOVER_COL","BUTTON_PRESSED_COL","ACCENT_COL","ACCENT_HOVER_COL","ACCENT_SELECT_COL"],["Other","PANEL_BG_COL"]]; var _g = 0; var _g1 = themeColorOptions.length; while(_g < _g1) { var idxCategory = _g++; if(ui.panel(zui_Handle.global.nest(36,null).nest(idxCategory,{ selected : true}),themeColorOptions[idxCategory][0])) { ui.indent(); var attributes = themeColorOptions[idxCategory].slice(1); var _g2 = 0; var _g3 = attributes.length; while(_g2 < _g3) { var idxElemAttribs = _g2++; var themeColorOption = attributes[idxElemAttribs]; ui.row([0.66666666666666663,0.33333333333333331]); ui.text(themeColorOption); var themeColor = Reflect.getProperty(lnx2d_Editor.selectedTheme,themeColorOption); var handleCol = handleThemeColor.nest(leenkx_ui_Canvas.themes.indexOf(lnx2d_Editor.selectedTheme)).nest(idxCategory).nest(idxElemAttribs,{ color : themeColor}); var col = leenkx_ui_Ext.colorField(ui,handleCol,true); Reflect.setProperty(lnx2d_Editor.selectedTheme,themeColorOption,col); } ui.unindent(); } } } } if(ui.tab(htab,"Assets")) { if(ui.button("Import Asset")) { lnx2d_Editor.showFiles = true; lnx2d_Editor.foldersOnly = false; lnx2d_Editor.filesDone = function(path) { path = StringTools.rtrim(path); path = lnx2d_Path.toRelative(path,Main.cwd); lnx2d_Assets.importAsset(canvas,path); }; } if(canvas.assets.length > 0) { ui.text("(Drag and drop assets to canvas)",1); if(ui.panel(zui_Handle.global.nest(37,{ selected : true}),"Imported Assets")) { ui.indent(); var i = canvas.assets.length - 1; while(i >= 0) { var asset = canvas.assets[i]; if(haxe_io_Path.extension(asset.name).toLowerCase() != "ttf" && ui.image(lnx2d_Assets.getImage(asset)) == 1) { lnx2d_Editor.dragAsset = asset; } else if(haxe_io_Path.extension(asset.name).toLowerCase() == "ttf") { var oldFont = ui.ops.font; var oldFontSize = ui.fontSize; ui.ops.font = lnx2d_Assets.getFont(asset); ui.fontSize = 32 * ui.ops.scaleFactor | 0; ui.text(asset.name); ui.ops.font = oldFont; ui.fontSize = oldFontSize; } ui.row([0.875,0.125]); asset.name = ui.textInput(zui_Handle.global.nest(38,null).nest(asset.id,{ text : asset.name}),"",2); lnx2d_Editor.assetNames[i + 1] = asset.name; if(ui.button("X")) { lnx2d_Assets.getImage(asset).unload(); canvas.assets.splice(i,1); lnx2d_Editor.assetNames.splice(i + 1,1); } --i; } ui.unindent(); } } else { ui.text("(Drag and drop images and fonts here)",1); } } if(ui.tab(htab,"Preferences")) { if(ui.panel(zui_Handle.global.nest(39,{ selected : true}),"Application")) { ui.indent(); var hscale = zui_Handle.global.nest(40,{ value : 1.0}); ui.slider(hscale,"UI Scale",0.5,4.0,true); if(hscale.changed && !ui.inputDown) { ui.setScale(hscale.value); lnx2d_Editor.windowW = lnx2d_Editor.defaultWindowW * hscale.value | 0; } var ui1 = ui; var tmp = zui_Handle.global.nest(41,{ selected : true}); Main.prefs.window_vsync = ui1.check(tmp,"VSync"); ui.unindent(); } if(ui.panel(zui_Handle.global.nest(42,{ selected : true}),"Grid")) { ui.indent(); var gsize = zui_Handle.global.nest(43,{ value : 20}); ui.slider(gsize,"Grid Size",1,128,true,1); if(gsize.changed) { lnx2d_Editor.gridSize = gsize.value | 0; lnx2d_Editor.redrawGrid = true; } lnx2d_Editor.gridSnapPos = ui.check(zui_Handle.global.nest(44,{ selected : true}),"Grid Snap Position"); if(ui.isHovered) { ui.tooltip("Snap the element's position to the grid"); } lnx2d_Editor.gridSnapBounds = ui.check(zui_Handle.global.nest(45,{ selected : false}),"Grid Snap Bounds"); if(ui.isHovered) { ui.tooltip("Snap the element's bounds to the grid"); } lnx2d_Editor.gridUseRelative = ui.check(zui_Handle.global.nest(46,{ selected : true}),"Use Relative Grid"); if(ui.isHovered) { ui.tooltip("Use a grid that's relative to the selected element"); } lnx2d_Editor.useRotationSteps = ui.check(zui_Handle.global.nest(47,{ selected : false}),"Use Fixed Rotation Steps"); if(ui.isHovered) { ui.tooltip("Rotate elements by a fixed step size"); } var rotStepHandle = zui_Handle.global.nest(48,{ value : 15}); if(lnx2d_Editor.useRotationSteps) { ui.slider(rotStepHandle,"Rotation Step Size",1,180,true,1); if(rotStepHandle.changed) { lnx2d_Editor.rotationSteps = rotStepHandle.value * 0.0174532924; } } ui.unindent(); } if(ui.panel(zui_Handle.global.nest(49,{ selected : true}),"Shortcuts")) { ui.indent(); ui.row([0.5,0.5]); ui.text("Select"); var selectMouseHandle = zui_Handle.global.nest(50,{ position : 0}); ui.combo(selectMouseHandle,["Left Click","Right Click"],""); if(ui.isHovered) { ui.tooltip("Mouse button used for element selection."); } if(selectMouseHandle.changed) { Main.prefs.keyMap.selectMouseButton = ["Left","Right"][selectMouseHandle.position]; } ui.separator(8,false); ui.row([0.5,0.5]); ui.text("Grab"); var ui1 = ui; var tmp = zui_Handle.global.nest(51,{ value : 71}); Main.prefs.keyMap.grabKey = leenkx_ui_Ext.keyInput(ui1,tmp,"Key"); if(ui.isHovered) { ui.tooltip("Key used for grabbing elements"); } ui.row([0.5,0.5]); ui.text("Rotate"); var ui1 = ui; var tmp = zui_Handle.global.nest(52,{ value : 82}); Main.prefs.keyMap.rotateKey = leenkx_ui_Ext.keyInput(ui1,tmp,"Key"); if(ui.isHovered) { ui.tooltip("Key used for rotating elements"); } ui.row([0.5,0.5]); ui.text("Size"); var ui1 = ui; var tmp = zui_Handle.global.nest(53,{ value : 83}); Main.prefs.keyMap.sizeKey = leenkx_ui_Ext.keyInput(ui1,tmp,"Key"); if(ui.isHovered) { ui.tooltip("Key used for resizing elements"); } ui.separator(8,false); ui.row([0.5,0.5]); ui.text("Precision Transform"); var ui1 = ui; var tmp = zui_Handle.global.nest(54,{ value : 16}); Main.prefs.keyMap.slowMovement = leenkx_ui_Ext.keyInput(ui1,tmp,"Key"); if(ui.isHovered) { ui.tooltip("More precise transformations"); } ui.row([0.5,0.5]); ui.text("Invert Grid"); var ui1 = ui; var tmp = zui_Handle.global.nest(55,{ value : 17}); Main.prefs.keyMap.gridInvert = leenkx_ui_Ext.keyInput(ui1,tmp,"Key"); if(ui.isHovered) { ui.tooltip("Invert the grid setting"); } ui.row([0.5,0.5]); ui.text("Invert Rel. Grid"); var ui1 = ui; var tmp = zui_Handle.global.nest(56,{ value : 18}); Main.prefs.keyMap.gridInvertRelative = leenkx_ui_Ext.keyInput(ui1,tmp,"Key"); if(ui.isHovered) { ui.tooltip("Invert the relative grid setting"); } ui.unindent(); } if(ui.panel(zui_Handle.global.nest(57,{ selected : false}),"Console")) { ui.indent(); ui.text("Mouse X: " + ui.inputX); ui.text("Mouse Y: " + ui.inputY); ui.unindent(); } } } }; var lnx2d_ui_UIToolBar = function() { }; $hxClasses["lnx2d.ui.UIToolBar"] = lnx2d_ui_UIToolBar; lnx2d_ui_UIToolBar.__name__ = true; lnx2d_ui_UIToolBar.renderToolbar = function(ui,cui,canvas,width) { if(ui.window(zui_Handle.global.nest(58,null),0,0,width,kha_System.windowHeight())) { ui.text("Add Elements:"); if(ui.panel(zui_Handle.global.nest(59,{ selected : true}),"Basic")) { ui.indent(); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Empty",3,"Create an empty element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Text",0,"Create a text element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Image",1,"Create an image element"); ui.unindent(); } if(ui.panel(zui_Handle.global.nest(60,{ selected : true}),"Buttons")) { ui.indent(); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Button",2,"Create a button element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Check",6,"Create a checkbox element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Radio",7,"Create a inline-radio element"); ui.unindent(); } if(ui.panel(zui_Handle.global.nest(61,{ selected : true}),"Inputs")) { ui.indent(); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Text Input",10,"Create a text input element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Text Area",20,"Create a text area element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Key Input",11,"Create a key input element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Combo Box",8,"Create a combo box element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Slider",9,"Create a slider element"); ui.unindent(); } if(ui.panel(zui_Handle.global.nest(62,{ selected : true}),"Shapes")) { ui.indent(); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Rect",13,"Create a rectangle shape element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Fill Rect",12,"Create a filled rectangle shape element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Circle",15,"Create a circle shape element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Fill Circle",14,"Create a filled circle shape element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Triangle",17,"Create a triangle shape element"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"Fill Triangle",16,"Create a filled triangle shape element"); ui.unindent(); } if(ui.panel(zui_Handle.global.nest(63,{ selected : true}),"Progress Bars")) { ui.indent(); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"RectPB",18,"Create a rectangular progress bar"); lnx2d_ui_UIToolBar.drawToolbarItem(ui,cui,canvas,"CircularPB",19,"Create a circular progress bar"); ui.unindent(); } } }; lnx2d_ui_UIToolBar.drawToolbarItem = function(ui,cui,canvas,label,elemType,tooltip) { if(ui.button(label)) { lnx2d_Editor.selectedElem = lnx2d_tools_CanvasTools.makeElem(cui,canvas,elemType); } if(ui.isHovered) { ui.tooltip(tooltip); } }; var leenkx_system_Assert = function() { }; $hxClasses["leenkx.system.Assert"] = leenkx_system_Assert; leenkx_system_Assert.__name__ = true; leenkx_system_Assert.throwAssertionError = function(exprString,message,pos) { throw new leenkx_system_LnxAssertionException(exprString,message,null,pos); }; var haxe_Exception = function(message,previous,native) { Error.call(this,message); this.message = message; this.__previousException = previous; this.__nativeException = native != null ? native : this; }; $hxClasses["haxe.Exception"] = haxe_Exception; haxe_Exception.__name__ = true; haxe_Exception.caught = function(value) { if(((value) instanceof haxe_Exception)) { return value; } else if(((value) instanceof Error)) { return new haxe_Exception(value.message,null,value); } else { return new haxe_ValueException(value,null,value); } }; haxe_Exception.thrown = function(value) { if(((value) instanceof haxe_Exception)) { return value.get_native(); } else if(((value) instanceof Error)) { return value; } else { var e = new haxe_ValueException(value); return e; } }; haxe_Exception.__super__ = Error; haxe_Exception.prototype = $extend(Error.prototype,{ __skipStack: null ,__nativeException: null ,__previousException: null ,unwrap: function() { return this.__nativeException; } ,toString: function() { return this.get_message(); } ,get_message: function() { return this.message; } ,get_native: function() { return this.__nativeException; } ,__class__: haxe_Exception ,__properties__: {get_native:"get_native",get_message:"get_message"} }); var haxe_exceptions_PosException = function(message,previous,pos) { haxe_Exception.call(this,message,previous); if(pos == null) { this.posInfos = { fileName : "(unknown)", lineNumber : 0, className : "(unknown)", methodName : "(unknown)"}; } else { this.posInfos = pos; } }; $hxClasses["haxe.exceptions.PosException"] = haxe_exceptions_PosException; haxe_exceptions_PosException.__name__ = true; haxe_exceptions_PosException.__super__ = haxe_Exception; haxe_exceptions_PosException.prototype = $extend(haxe_Exception.prototype,{ posInfos: null ,toString: function() { return "" + haxe_Exception.prototype.toString.call(this) + " in " + this.posInfos.className + "." + this.posInfos.methodName + " at " + this.posInfos.fileName + ":" + this.posInfos.lineNumber; } ,__class__: haxe_exceptions_PosException }); var leenkx_system_LnxAssertionException = function(exprString,message,previous,pos) { var optMsg = message != null ? "\n\tMessage: " + message : ""; haxe_exceptions_PosException.call(this,"\n" + ("Failed assertion:" + optMsg + "\n\tExpression: (" + exprString + ")"),previous,pos); }; $hxClasses["leenkx.system.LnxAssertionException"] = leenkx_system_LnxAssertionException; leenkx_system_LnxAssertionException.__name__ = true; leenkx_system_LnxAssertionException.formatMessage = function(exprString,message) { var optMsg = message != null ? "\n\tMessage: " + message : ""; return "Failed assertion:" + optMsg + "\n\tExpression: (" + exprString + ")"; }; leenkx_system_LnxAssertionException.__super__ = haxe_exceptions_PosException; leenkx_system_LnxAssertionException.prototype = $extend(haxe_exceptions_PosException.prototype,{ __class__: leenkx_system_LnxAssertionException }); var leenkx_system_AssertLevel = {}; leenkx_system_AssertLevel.fromExpr = function(e) { var _g = e.expr; if(_g._hx_index == 0) { var _g1 = _g.c; if(_g1._hx_index == 3) { var v = _g1.s; return leenkx_system_AssertLevel.fromString(v); } else { throw new haxe_Exception("Unsupported expression: " + Std.string(e)); } } else { throw new haxe_Exception("Unsupported expression: " + Std.string(e)); } }; leenkx_system_AssertLevel.fromString = function(s) { if(s == null) { return 2; } else { switch(s) { case "Error": return 1; case "NoAssertions": return 2; case "Warning": return 0; default: throw new haxe_Exception("Could not convert \"" + s + "\" to AssertLevel"); } } }; var leenkx_ui_Canvas = function() { }; $hxClasses["leenkx.ui.Canvas"] = leenkx_ui_Canvas; leenkx_ui_Canvas.__name__ = true; leenkx_ui_Canvas.draw = function(ui,canvas,g) { leenkx_ui_Canvas.events.length = 0; if(!canvas.visible) { return leenkx_ui_Canvas.events; } leenkx_ui_Canvas.screenW = kha_System.windowWidth(); leenkx_ui_Canvas.screenH = kha_System.windowHeight(); leenkx_ui_Canvas._ui = ui; g.end(); g.set_imageScaleQuality(leenkx_ui_Canvas.imageScaleQuality); ui.begin(g); g.begin(false); ui.g = g; var _g = 0; var _g1 = canvas.elements; while(_g < _g1.length) { var elem = _g1[_g]; ++_g; if(elem.parent == null) { leenkx_ui_Canvas.drawElement(ui,canvas,elem); } } g.end(); ui.end(); g.begin(false); return leenkx_ui_Canvas.events; }; leenkx_ui_Canvas.drawElement = function(ui,canvas,element,px,py) { if(py == null) { py = 0.0; } if(px == null) { px = 0.0; } if(element == null || element.visible == false) { return; } var anchorOffset = leenkx_ui_Canvas.getAnchorOffset(canvas,element); px += anchorOffset[0]; py += anchorOffset[1]; ui._x = canvas.x + (element.x * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) + px; ui._y = canvas.y + (element.y * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) + py; ui._w = element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0; var rotated = element.rotation != null && element.rotation != 0; if(rotated) { ui.g.pushRotation(element.rotation,ui._x + (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2); } var font = ui.ops.font; var assetName = element.asset; var fontAsset = assetName != null && StringTools.endsWith(assetName.toLowerCase(),".ttf"); if(fontAsset) { ui.ops.font = leenkx_ui_Canvas.getAsset(canvas,element.asset); } switch(element.type) { case 0: var prevFontSize = ui.fontSize; var prevTEXT_COL = ui.t.TEXT_COL; ui.fontSize = element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.TEXT_COL = color != null ? color : defaultColor; ui.text(element.text,element.alignment); ui.fontSize = prevFontSize; ui.t.TEXT_COL = prevTEXT_COL; break; case 1: var image = leenkx_ui_Canvas.getAsset(canvas,element.asset); if(image != null && !fontAsset) { ui.imageScrollAlign = false; var tint = element.color != null ? element.color : -1; if(ui.image(image,tint,element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) == 3) { var e = element.event; if(e != null && e != "") { leenkx_ui_Canvas.events.push(e); } } ui.imageScrollAlign = true; } break; case 2: var prevELEMENT_H = ui.t.ELEMENT_H; var prevBUTTON_H = ui.t.BUTTON_H; var prevBUTTON_COL = ui.t.BUTTON_COL; var prevBUTTON_TEXT_COL = ui.t.BUTTON_TEXT_COL; var prevBUTTON_HOVER_COL = ui.t.BUTTON_HOVER_COL; var prevBUTTON_PRESSED_COL = ui.t.BUTTON_PRESSED_COL; ui.t.ELEMENT_H = element.height; ui.t.BUTTON_H = element.height; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui.t.BUTTON_COL = color != null ? color : defaultColor; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_TEXT_COL; ui.t.BUTTON_TEXT_COL = color != null ? color : defaultColor; var color = element.color_hover; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_HOVER_COL; ui.t.BUTTON_HOVER_COL = color != null ? color : defaultColor; var color = element.color_press; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_PRESSED_COL; ui.t.BUTTON_PRESSED_COL = color != null ? color : defaultColor; if(ui.button(element.text,element.alignment)) { var e = element.event; if(e != null && e != "") { leenkx_ui_Canvas.events.push(e); } } ui.t.ELEMENT_H = prevELEMENT_H; ui.t.BUTTON_H = prevBUTTON_H; ui.t.BUTTON_COL = prevBUTTON_COL; ui.t.BUTTON_TEXT_COL = prevBUTTON_TEXT_COL; ui.t.BUTTON_HOVER_COL = prevBUTTON_HOVER_COL; ui.t.BUTTON_PRESSED_COL = prevBUTTON_PRESSED_COL; break; case 3: break; case 6: var prevTEXT_COL = ui.t.TEXT_COL; var prevACCENT_COL = ui.t.ACCENT_COL; var prevACCENT_HOVER_COL = ui.t.ACCENT_HOVER_COL; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.TEXT_COL = color != null ? color : defaultColor; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui.t.ACCENT_COL = color != null ? color : defaultColor; var color = element.color_hover; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_HOVER_COL; ui.t.ACCENT_HOVER_COL = color != null ? color : defaultColor; ui.check(leenkx_ui_Canvas.h.nest(element.id),element.text); ui.t.TEXT_COL = prevTEXT_COL; ui.t.ACCENT_COL = prevACCENT_COL; ui.t.ACCENT_HOVER_COL = prevACCENT_HOVER_COL; break; case 7: var prevTEXT_COL = ui.t.TEXT_COL; var prevACCENT_COL = ui.t.ACCENT_COL; var prevACCENT_HOVER_COL = ui.t.ACCENT_HOVER_COL; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.TEXT_COL = color != null ? color : defaultColor; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui.t.ACCENT_COL = color != null ? color : defaultColor; var color = element.color_hover; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_HOVER_COL; ui.t.ACCENT_HOVER_COL = color != null ? color : defaultColor; zui_Ext.inlineRadio(ui,leenkx_ui_Canvas.h.nest(element.id),element.text.split(";")); ui.t.TEXT_COL = prevTEXT_COL; ui.t.ACCENT_COL = prevACCENT_COL; ui.t.ACCENT_HOVER_COL = prevACCENT_HOVER_COL; break; case 8: var prevTEXT_COL = ui.t.TEXT_COL; var prevLABEL_COL = ui.t.LABEL_COL; var prevACCENT_COL = ui.t.ACCENT_COL; var prevSEPARATOR_COL = ui.t.SEPARATOR_COL; var prevACCENT_HOVER_COL = ui.t.ACCENT_HOVER_COL; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.TEXT_COL = color != null ? color : defaultColor; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.LABEL_COL = color != null ? color : defaultColor; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui.t.ACCENT_COL = color != null ? color : defaultColor; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui.t.SEPARATOR_COL = color != null ? color : defaultColor; var color = element.color_hover; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_HOVER_COL; ui.t.ACCENT_HOVER_COL = color != null ? color : defaultColor; ui.combo(leenkx_ui_Canvas.h.nest(element.id),element.text.split(";")); ui.t.TEXT_COL = prevTEXT_COL; ui.t.LABEL_COL = prevLABEL_COL; ui.t.ACCENT_COL = prevACCENT_COL; ui.t.SEPARATOR_COL = prevSEPARATOR_COL; ui.t.ACCENT_HOVER_COL = prevACCENT_HOVER_COL; break; case 9: var prevTEXT_COL = ui.t.TEXT_COL; var prevLABEL_COL = ui.t.LABEL_COL; var prevACCENT_COL = ui.t.ACCENT_COL; var prevACCENT_HOVER_COL = ui.t.ACCENT_HOVER_COL; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.TEXT_COL = color != null ? color : defaultColor; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.LABEL_COL = color != null ? color : defaultColor; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui.t.ACCENT_COL = color != null ? color : defaultColor; var color = element.color_hover; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_HOVER_COL; ui.t.ACCENT_HOVER_COL = color != null ? color : defaultColor; ui.slider(leenkx_ui_Canvas.h.nest(element.id),element.text,0.0,1.0,true,100,true,element.alignment); ui.t.TEXT_COL = prevTEXT_COL; ui.t.LABEL_COL = prevLABEL_COL; ui.t.ACCENT_COL = prevACCENT_COL; ui.t.ACCENT_HOVER_COL = prevACCENT_HOVER_COL; break; case 10: var prevTEXT_COL = ui.t.TEXT_COL; var prevLABEL_COL = ui.t.LABEL_COL; var prevACCENT_COL = ui.t.ACCENT_COL; var prevACCENT_HOVER_COL = ui.t.ACCENT_HOVER_COL; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.TEXT_COL = color != null ? color : defaultColor; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.LABEL_COL = color != null ? color : defaultColor; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui.t.ACCENT_COL = color != null ? color : defaultColor; var color = element.color_hover; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_HOVER_COL; ui.t.ACCENT_HOVER_COL = color != null ? color : defaultColor; ui.textInput(leenkx_ui_Canvas.h.nest(element.id),element.text,element.alignment); if(leenkx_ui_Canvas.h.nest(element.id).changed) { var e = element.event; if(e != null && e != "") { leenkx_ui_Canvas.events.push(e); } } ui.t.TEXT_COL = prevTEXT_COL; ui.t.LABEL_COL = prevLABEL_COL; ui.t.ACCENT_COL = prevACCENT_COL; ui.t.ACCENT_HOVER_COL = prevACCENT_HOVER_COL; break; case 11: var prevTEXT_COL = ui.t.TEXT_COL; var prevLABEL_COL = ui.t.LABEL_COL; var prevACCENT_COL = ui.t.ACCENT_COL; var prevACCENT_HOVER_COL = ui.t.ACCENT_HOVER_COL; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.TEXT_COL = color != null ? color : defaultColor; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.LABEL_COL = color != null ? color : defaultColor; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui.t.ACCENT_COL = color != null ? color : defaultColor; var color = element.color_hover; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_HOVER_COL; ui.t.ACCENT_HOVER_COL = color != null ? color : defaultColor; leenkx_ui_Ext.keyInput(ui,leenkx_ui_Canvas.h.nest(element.id),element.text); ui.t.TEXT_COL = prevTEXT_COL; ui.t.LABEL_COL = prevLABEL_COL; ui.t.ACCENT_COL = prevACCENT_COL; ui.t.ACCENT_HOVER_COL = prevACCENT_HOVER_COL; break; case 12: var col = ui.g.get_color(); var ui1 = ui.g; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui1.set_color(color != null ? color : defaultColor); ui.g.fillRect(ui._x,ui._y,ui._w,element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0); ui.g.set_color(col); break; case 13: var col = ui.g.get_color(); var ui1 = ui.g; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui1.set_color(color != null ? color : defaultColor); ui.g.drawRect(ui._x,ui._y,ui._w,element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0,element.strength); ui.g.set_color(col); break; case 14: var col = ui.g.get_color(); var ui1 = ui.g; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui1.set_color(color != null ? color : defaultColor); zui_GraphicsExtension.fillCircle(ui.g,ui._x + (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2,ui._w / 2); ui.g.set_color(col); break; case 15: var col = ui.g.get_color(); var ui1 = ui.g; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui1.set_color(color != null ? color : defaultColor); zui_GraphicsExtension.drawCircle(ui.g,ui._x + (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2,ui._w / 2,element.strength); ui.g.set_color(col); break; case 16: var col = ui.g.get_color(); var ui1 = ui.g; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui1.set_color(color != null ? color : defaultColor); ui.g.fillTriangle(ui._x + ui._w / 2,ui._y,ui._x,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0),ui._x + ui._w,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0)); ui.g.set_color(col); break; case 17: var col = ui.g.get_color(); var ui1 = ui.g; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui1.set_color(color != null ? color : defaultColor); ui.g.drawLine(ui._x + ui._w / 2,ui._y,ui._x,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0),element.strength); ui.g.drawLine(ui._x,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0),ui._x + ui._w,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0),element.strength); ui.g.drawLine(ui._x + ui._w,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0),ui._x + ui._w / 2,ui._y,element.strength); ui.g.set_color(col); break; case 18: var col = ui.g.get_color(); var progress = element.progress_at; var totalprogress = element.progress_total; var ui1 = ui.g; var color = element.color_progress; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui1.set_color(color != null ? color : defaultColor); ui.g.fillRect(ui._x,ui._y,ui._w / totalprogress * Math.min(progress,totalprogress),element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0); var ui1 = ui.g; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui1.set_color(color != null ? color : defaultColor); ui.g.drawRect(ui._x,ui._y,ui._w,element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0,element.strength); ui.g.set_color(col); break; case 19: var col = ui.g.get_color(); var progress = element.progress_at; var totalprogress = element.progress_total; var ui1 = ui.g; var color = element.color_progress; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui1.set_color(color != null ? color : defaultColor); zui_GraphicsExtension.drawArc(ui.g,ui._x + (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2,ui._w / 2,-Math.PI / 2,Math.PI * 2 / totalprogress * progress - Math.PI / 2,element.strength); var ui1 = ui.g; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui1.set_color(color != null ? color : defaultColor); zui_GraphicsExtension.fillCircle(ui.g,ui._x + (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2,ui._y + (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2,ui._w / 2 - 10); ui.g.set_color(col); break; case 20: var prevTEXT_COL = ui.t.TEXT_COL; var prevLABEL_COL = ui.t.LABEL_COL; var prevACCENT_COL = ui.t.ACCENT_COL; var prevACCENT_HOVER_COL = ui.t.ACCENT_HOVER_COL; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.TEXT_COL = color != null ? color : defaultColor; var color = element.color_text; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).TEXT_COL; ui.t.LABEL_COL = color != null ? color : defaultColor; var color = element.color; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_COL; ui.t.ACCENT_COL = color != null ? color : defaultColor; var color = element.color_hover; var defaultColor = leenkx_ui_Canvas.getTheme(canvas.theme).BUTTON_HOVER_COL; ui.t.ACCENT_HOVER_COL = color != null ? color : defaultColor; leenkx_ui_Canvas.h.nest(element.id).text = element.text; zui_Ext.textArea(ui,leenkx_ui_Canvas.h.nest(element.id),element.alignment,element.editable); if(leenkx_ui_Canvas.h.nest(element.id).changed) { var e = element.event; if(e != null && e != "") { leenkx_ui_Canvas.events.push(e); } } ui.t.TEXT_COL = prevTEXT_COL; ui.t.LABEL_COL = prevLABEL_COL; ui.t.ACCENT_COL = prevACCENT_COL; ui.t.ACCENT_HOVER_COL = prevACCENT_HOVER_COL; break; } ui.ops.font = font; if(element.children != null) { var _g = 0; var _g1 = element.children; while(_g < _g1.length) { var id = _g1[_g]; ++_g; leenkx_ui_Canvas.drawElement(ui,canvas,leenkx_ui_Canvas.elemById(canvas,id),(element.x * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) + px,(element.y * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) + py); } } if(rotated) { ui.g.popTransformation(); } }; leenkx_ui_Canvas.parseCanvasFromBlob = function(blob) { var raw = JSON.parse(blob.toString()); if(!Object.prototype.hasOwnProperty.call(raw,"visible")) { raw["visible"] = true; } return raw; }; leenkx_ui_Canvas.getText = function(canvas,e) { return e.text; }; leenkx_ui_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 leenkx_ui_Canvas.assetMap.h[a.id]; } } return null; }; leenkx_ui_Canvas.getElementId = function(canvas) { if(leenkx_ui_Canvas.elemId == -1) { var _g = 0; var _g1 = canvas.elements; while(_g < _g1.length) { var e = _g1[_g]; ++_g; if(leenkx_ui_Canvas.elemId < e.id) { leenkx_ui_Canvas.elemId = e.id; } } } return ++leenkx_ui_Canvas.elemId; }; leenkx_ui_Canvas.getAssetId = function(canvas) { if(leenkx_ui_Canvas.assetId == -1) { var _g = 0; var _g1 = canvas.assets; while(_g < _g1.length) { var a = _g1[_g]; ++_g; if(leenkx_ui_Canvas.assetId < a.id) { leenkx_ui_Canvas.assetId = a.id; } } } return ++leenkx_ui_Canvas.assetId; }; leenkx_ui_Canvas.elemById = function(canvas,id) { var _g = 0; var _g1 = canvas.elements; while(_g < _g1.length) { var e = _g1[_g]; ++_g; if(e.id == id) { return e; } } return null; }; leenkx_ui_Canvas.scaled = function(f) { return f * leenkx_ui_Canvas._ui.ops.scaleFactor | 0; }; leenkx_ui_Canvas.isFontAsset = function(assetName) { if(assetName != null) { return StringTools.endsWith(assetName.toLowerCase(),".ttf"); } else { return false; } }; leenkx_ui_Canvas.getColor = function(color,defaultColor) { if(color != null) { return color; } else { return defaultColor; } }; leenkx_ui_Canvas.getTheme = function(theme) { var _g = 0; var _g1 = leenkx_ui_Canvas.themes; while(_g < _g1.length) { var t = _g1[_g]; ++_g; if(t.NAME == theme) { return t; } } return null; }; leenkx_ui_Canvas.getAnchorOffset = function(canvas,element) { var boxWidth; var boxHeight; var offsetX = 0.0; var offsetY = 0.0; if(element.parent == null) { boxWidth = canvas.width; boxHeight = canvas.height; } else { var parent = leenkx_ui_Canvas.elemById(canvas,element.parent); boxWidth = parent.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0; boxHeight = parent.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0; } switch(element.anchor) { case 1: offsetX += boxWidth / 2 - (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2; break; case 2: offsetX += boxWidth - (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0); break; case 3: offsetY += boxHeight / 2 - (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2; break; case 4: offsetX += boxWidth / 2 - (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2; offsetY += boxHeight / 2 - (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2; break; case 5: offsetX += boxWidth - (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0); offsetY += boxHeight / 2 - (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2; break; case 6: offsetY += boxHeight - (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0); break; case 7: offsetX += boxWidth / 2 - (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0) / 2; offsetY += boxHeight - (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0); break; case 8: offsetX += boxWidth - (element.width * leenkx_ui_Canvas._ui.ops.scaleFactor | 0); offsetY += boxHeight - (element.height * leenkx_ui_Canvas._ui.ops.scaleFactor | 0); break; } return [offsetX,offsetY]; }; var leenkx_ui_Ext = function() { }; $hxClasses["leenkx.ui.Ext"] = leenkx_ui_Ext; leenkx_ui_Ext.__name__ = true; leenkx_ui_Ext.keyInput = function(ui,handle,label,align) { if(align == null) { align = 0; } if(label == null) { label = ""; } if(!ui.isVisible(ui.t.ELEMENT_H * ui.ops.scaleFactor)) { ui.endElement(); return handle.value | 0; } var hover = ui.getHover(); if(hover && zui_Zui.onTextHover != null) { zui_Zui.onTextHover(); } ui.g.set_color(hover ? ui.t.ACCENT_HOVER_COL : ui.t.ACCENT_COL); var g = ui.g; var fill = ui.t.FILL_ACCENT_BG; var x = ui._x + ui.buttonOffsetY; var y = ui._y + ui.buttonOffsetY; var w = ui._w - ui.buttonOffsetY * 2; var h = ui.t.BUTTON_H * ui.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!ui.enabled) { ui.fadeColor(); } if(fill) { g.fillRect(x,y - 1,w,h + 1); } else { g.drawRect(x,y,w,h,strength); } var startEdit = ui.getReleased() || ui.tabPressed; if(ui.textSelectedHandle != handle && startEdit) { ui.startTextEdit(handle); } if(ui.textSelectedHandle == handle) { leenkx_ui_Ext.listenToKey(ui,handle); } else { handle.changed = false; } if(label != "") { ui.g.set_color(ui.t.LABEL_COL); var labelAlign = align == 2 ? 0 : 2; var xOffset = labelAlign == 0 ? 7 : 0; ui.drawString(ui.g,label,xOffset,0,labelAlign); } handle.text = leenkx_ui_Ext.keycodeToString(handle.value | 0); ui.g.set_color(ui.t.TEXT_COL); if(ui.textSelectedHandle != handle) { ui.drawString(ui.g,handle.text,null,0,align); } else { ui.drawString(ui.g,ui.textSelected,null,0,align); } ui.endElement(); return handle.value | 0; }; leenkx_ui_Ext.listenToKey = function(ui,handle) { if(ui.isKeyDown) { handle.value = ui.key; handle.changed = ui.changed = true; ui.textSelectedHandle = null; ui.isTyping = false; if(kha_input_Keyboard.get() != null) { kha_input_Keyboard.get().hide(); } } else { ui.textSelected = "Press a key..."; } }; leenkx_ui_Ext.list = function(ui,handle,ar,opts) { var selected = 0; if(opts == null) { opts = { }; } var addCb = opts.addCb != null ? opts.addCb : function(name) { ar.push(name); }; var removeCb = opts.removeCb != null ? opts.removeCb : function(i) { ar.splice(i,1); }; var getNameCb = opts.getNameCb != null ? opts.getNameCb : function(i) { return ar[i]; }; var setNameCb = opts.setNameCb != null ? opts.setNameCb : function(i,name) { ar[i] = name; }; var getLabelCb = opts.getLabelCb != null ? opts.getLabelCb : function(i) { return ""; }; var itemDrawCb = opts.itemDrawCb; var showRadio = opts.showRadio != null && opts.showRadio; var editable = opts.editable != null ? opts.editable : true; var showAdd = opts.showAdd != null ? opts.showAdd : true; var addLabel = opts.addLabel != null ? opts.addLabel : "Add"; var i = 0; while(i < ar.length) { if(showRadio) { ui.row([0.12,0.68,0.2]); if(ui.radio(handle.nest(0),i,"")) { selected = i; } } else { ui.row([0.8,0.2]); } var itemHandle = handle.nest(i); itemHandle.text = getNameCb(i); if(editable) { setNameCb(i,ui.textInput(itemHandle,getLabelCb(i))); } else { ui.text(getNameCb(i)); } if(ui.button("X")) { removeCb(i); } else { ++i; } if(itemDrawCb != null) { itemDrawCb(itemHandle.nest(i),i - 1); } } if(showAdd && ui.button(addLabel)) { addCb("untitled"); } return selected; }; leenkx_ui_Ext.panelList = function(ui,handle,ar,addCb,removeCb,getNameCb,setNameCb,itemDrawCb,editable,showAdd,addLabel) { if(addLabel == null) { addLabel = "Add"; } if(showAdd == null) { showAdd = true; } if(editable == null) { editable = true; } if(addCb == null) { addCb = function(name) { ar.push(name); }; } if(removeCb == null) { removeCb = function(i) { ar.splice(i,1); }; } if(getNameCb == null) { getNameCb = function(i) { return ar[i]; }; } if(setNameCb == null) { setNameCb = function(i,name) { ar[i] = name; }; } var i = 0; while(i < ar.length) { ui.row([0.12,0.68,0.2]); var expanded = ui.panel(handle.nest(i),""); var itemHandle = handle.nest(i); if(editable) { setNameCb(i,ui.textInput(itemHandle,getNameCb(i))); } else { ui.text(getNameCb(i)); } if(ui.button("X")) { removeCb(i); } else { ++i; } if(itemDrawCb != null && expanded) { itemDrawCb(itemHandle.nest(i),i - 1); } } if(showAdd && ui.button(addLabel)) { addCb("untitled"); } }; leenkx_ui_Ext.colorField = function(ui,handle,alpha) { if(alpha == null) { alpha = false; } ui.g.set_color(handle.color); var g = ui.g; var x = ui._x + 2; var y = ui._y + ui.buttonOffsetY; var w = ui._w - 4; var h = ui.t.BUTTON_H * ui.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!ui.enabled) { ui.fadeColor(); } g.fillRect(x,y - 1,w,h + 1); ui.g.set_color(ui.getHover() ? ui.t.ACCENT_HOVER_COL : ui.t.ACCENT_COL); var g = ui.g; var x = ui._x + 2; var y = ui._y + ui.buttonOffsetY; var w = ui._w - 4; var h = ui.t.BUTTON_H * ui.ops.scaleFactor; var strength = 1.0; if(strength == null) { strength = 0.0; } if(strength == 0.0) { strength = 1; } if(!ui.enabled) { ui.fadeColor(); } g.drawRect(x,y,w,h,strength); if(ui.getStarted()) { leenkx_ui_Popup.showCustom(new zui_Zui(ui.ops),function(ui) { zui_Ext.colorWheel(ui,handle,alpha); },ui.inputX | 0,ui.inputY | 0,200,500); } ui.endElement(); return handle.color; }; leenkx_ui_Ext.colorPicker = function(ui,handle,alpha) { if(alpha == null) { alpha = false; } var r = ui.slider(handle.nest(0,{ value : ((handle.color & 16711680) >>> 16) * 0.00392156862745098}),"R",0,1,true); var g = ui.slider(handle.nest(1,{ value : ((handle.color & 65280) >>> 8) * 0.00392156862745098}),"G",0,1,true); var b = ui.slider(handle.nest(2,{ value : (handle.color & 255) * 0.00392156862745098}),"B",0,1,true); var a = (handle.color >>> 24) * 0.00392156862745098; if(alpha) { a = ui.slider(handle.nest(3,{ value : a}),"A",0,1,true); } var col = kha_Color.fromFloats(r,g,b,a); ui.text("",2,col); return col; }; leenkx_ui_Ext.keycodeToString = function(keycode) { switch(keycode) { case -1: return "None"; case 0: return "Unknown"; case 1: return "Back"; case 3: return "Cancel"; case 6: return "Help"; case 8: return "Backspace"; case 9: return "Tab"; case 12: return "Clear"; case 13: return "Return"; case 16: return "Shift"; case 17: return "Ctrl"; case 18: return "Alt"; case 19: return "Pause"; case 20: return "CapsLock"; case 21: return "Kana"; case 22: return "Eisu"; case 23: return "Junja"; case 24: return "Final"; case 25: return "Hanja"; case 27: return "Esc"; case 28: return "Convert"; case 29: return "NonConvert"; case 30: return "Accept"; case 31: return "ModeChange"; case 32: return "Space"; case 33: return "PageUp"; case 34: return "PageDown"; case 35: return "End"; case 36: return "Home"; case 37: return "Left"; case 38: return "Up"; case 39: return "Right"; case 40: return "Down"; case 41: return "Select"; case 42: return "Print"; case 43: return "Execute"; case 44: return "PrintScreen"; case 45: return "Insert"; case 46: return "Delete"; case 58: return "Colon"; case 59: return "Semicolon"; case 60: return "LessThan"; case 61: return "Equals"; case 62: return "GreaterThan"; case 63: return "QuestionMark"; case 64: return "At"; case 91: return "Win"; case 93: return "ContextMenu"; case 95: return "Sleep"; case 96: return "Numpad0"; case 97: return "Numpad1"; case 98: return "Numpad2"; case 99: return "Numpad3"; case 100: return "Numpad4"; case 101: return "Numpad5"; case 102: return "Numpad6"; case 103: return "Numpad7"; case 104: return "Numpad8"; case 105: return "Numpad9"; case 106: return "Multiply"; case 107: return "Add"; case 108: return "Separator"; case 109: return "Subtract"; case 110: return "Decimal"; case 111: return "Divide"; case 112: return "F1"; case 113: return "F2"; case 114: return "F3"; case 115: return "F4"; case 116: return "F5"; case 117: return "F6"; case 118: return "F7"; case 119: return "F8"; case 120: return "F9"; case 121: return "F10"; case 122: return "F11"; case 123: return "F12"; case 124: return "F13"; case 125: return "F14"; case 126: return "F15"; case 127: return "F16"; case 128: return "F17"; case 129: return "F18"; case 130: return "F19"; case 131: return "F20"; case 132: return "F21"; case 133: return "F22"; case 134: return "F23"; case 135: return "F24"; case 144: return "NumLock"; case 145: return "ScrollLock"; case 146: return "WinOemFjJisho"; case 147: return "WinOemFjMasshou"; case 148: return "WinOemFjTouroku"; case 149: return "WinOemFjLoya"; case 150: return "WinOemFjRoya"; case 160: return "Circumflex"; case 161: return "Exclamation"; case 162: return "DoubleQuote"; case 163: return "Hash"; case 164: return "Dollar"; case 165: return "Percent"; case 166: return "Ampersand"; case 167: return "Underscore"; case 168: return "OpenParen"; case 169: return "CloseParen"; case 170: return "Asterisk"; case 171: return "Plus"; case 172: return "Pipe"; case 173: return "HyphenMinus"; case 174: return "OpenCurlyBracket"; case 175: return "CloseCurlyBracket"; case 176: return "Tilde"; case 181: return "VolumeMute"; case 182: return "VolumeDown"; case 183: return "VolumeUp"; case 188: return "Comma"; case 190: return "Period"; case 191: return "Slash"; case 192: return "BackQuote"; case 219: return "OpenBracket"; case 220: return "BackSlash"; case 221: return "CloseBracket"; case 222: return "Quote"; case 224: return "Meta"; case 225: return "AltGr"; case 227: return "WinIcoHelp"; case 228: return "WinIco00"; case 230: return "WinIcoClear"; case 233: return "WinOemReset"; case 234: return "WinOemJump"; case 235: return "WinOemPA1"; case 236: return "WinOemPA2"; case 237: return "WinOemPA3"; case 238: return "WinOemWSCTRL"; case 239: return "WinOemCUSEL"; case 240: return "WinOemATTN"; case 241: return "WinOemFinish"; case 242: return "WinOemCopy"; case 243: return "WinOemAuto"; case 244: return "WinOemENLW"; case 245: return "WinOemBackTab"; case 246: return "ATTN"; case 247: return "CRSEL"; case 248: return "EXSEL"; case 249: return "EREOF"; case 250: return "Play"; case 251: return "Zoom"; case 253: return "PA1"; case 254: return "WinOemClear"; default: return String.fromCodePoint(keycode); } }; var leenkx_ui_Popup = function() { }; $hxClasses["leenkx.ui.Popup"] = leenkx_ui_Popup; leenkx_ui_Popup.__name__ = true; leenkx_ui_Popup.render = function(g) { if(leenkx_ui_Popup.boxCommands == null) { leenkx_ui_Popup.ui.begin(g); if(leenkx_ui_Popup.ui.window(leenkx_ui_Popup.hwnd,leenkx_ui_Popup.modalX,leenkx_ui_Popup.modalY,leenkx_ui_Popup.modalW,leenkx_ui_Popup.modalH)) { leenkx_ui_Popup.drawTitle(g); var _g = 0; var _g1 = leenkx_ui_Popup.boxText.split("\n"); while(_g < _g1.length) { var line = _g1[_g]; ++_g; leenkx_ui_Popup.ui.text(line); } leenkx_ui_Popup.ui._y = leenkx_ui_Popup.ui._h - leenkx_ui_Popup.ui.t.BUTTON_H - 10; leenkx_ui_Popup.ui.row([0.33333333333333331,0.33333333333333331,0.33333333333333331]); leenkx_ui_Popup.ui.endElement(); if(leenkx_ui_Popup.ui.button("OK")) { leenkx_ui_Popup.show = false; } } leenkx_ui_Popup.ui.end(); } else { leenkx_ui_Popup.ui.begin(g); if(leenkx_ui_Popup.ui.window(leenkx_ui_Popup.hwnd,leenkx_ui_Popup.modalX,leenkx_ui_Popup.modalY,leenkx_ui_Popup.modalW,leenkx_ui_Popup.modalH)) { leenkx_ui_Popup.drawTitle(g); leenkx_ui_Popup.ui._y += 10; leenkx_ui_Popup.boxCommands(leenkx_ui_Popup.ui); } leenkx_ui_Popup.ui.end(); } }; leenkx_ui_Popup.drawTitle = function(g) { if(leenkx_ui_Popup.boxTitle != "") { g.set_color(leenkx_ui_Popup.ui.t.SEPARATOR_COL); var _this = leenkx_ui_Popup.ui; var x = leenkx_ui_Popup.ui._x; var y = leenkx_ui_Popup.ui._y; var w = leenkx_ui_Popup.ui._w; var h = leenkx_ui_Popup.ui.t.BUTTON_H; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!_this.enabled) { _this.fadeColor(); } g.fillRect(x,y - 1,w,h + 1); g.set_color(leenkx_ui_Popup.ui.t.TEXT_COL); leenkx_ui_Popup.ui.text(leenkx_ui_Popup.boxTitle); } }; leenkx_ui_Popup.update = function() { var inUse = leenkx_ui_Popup.ui.comboSelectedHandle != null; if(leenkx_ui_Popup.ui.inputStarted && !inUse) { if(leenkx_ui_Popup.ui.inputX < leenkx_ui_Popup.modalX || leenkx_ui_Popup.ui.inputX > leenkx_ui_Popup.modalX + leenkx_ui_Popup.modalW || leenkx_ui_Popup.ui.inputY < leenkx_ui_Popup.modalY || leenkx_ui_Popup.ui.inputY > leenkx_ui_Popup.modalY + leenkx_ui_Popup.modalH) { leenkx_ui_Popup.show = false; } } }; leenkx_ui_Popup.showMessage = function(ui,title,text) { leenkx_ui_Popup.ui = ui; leenkx_ui_Popup.init(); leenkx_ui_Popup.boxTitle = title; leenkx_ui_Popup.boxText = text; leenkx_ui_Popup.boxCommands = null; }; leenkx_ui_Popup.showCustom = function(ui,commands,mx,my,mw,mh) { if(mh == null) { mh = 160; } if(mw == null) { mw = 400; } if(my == null) { my = -1; } if(mx == null) { mx = -1; } leenkx_ui_Popup.ui = ui; leenkx_ui_Popup.init(mx,my,mw,mh); leenkx_ui_Popup.boxTitle = ""; leenkx_ui_Popup.boxText = ""; leenkx_ui_Popup.boxCommands = commands; }; leenkx_ui_Popup.init = function(mx,my,mw,mh) { if(mh == null) { mh = 160; } if(mw == null) { mw = 400; } if(my == null) { my = -1; } if(mx == null) { mx = -1; } var appW = kha_System.windowWidth(); var appH = kha_System.windowHeight(); leenkx_ui_Popup.modalX = mx; leenkx_ui_Popup.modalY = my; leenkx_ui_Popup.modalW = mw * leenkx_ui_Popup.ui.ops.scaleFactor | 0; leenkx_ui_Popup.modalH = mh * leenkx_ui_Popup.ui.ops.scaleFactor | 0; if(mx == -1) { leenkx_ui_Popup.modalX = appW / 2 - leenkx_ui_Popup.modalW / 2 | 0; } if(my == -1) { leenkx_ui_Popup.modalY = appH / 2 - leenkx_ui_Popup.modalH / 2 | 0; } leenkx_ui_Popup.modalX = Math.max(0,Math.min(leenkx_ui_Popup.modalX,appW - leenkx_ui_Popup.modalW)) | 0; leenkx_ui_Popup.modalY = Math.max(0,Math.min(leenkx_ui_Popup.modalY,appH - leenkx_ui_Popup.modalH)) | 0; leenkx_ui_Popup.hwnd.dragX = 0; leenkx_ui_Popup.hwnd.dragY = 0; leenkx_ui_Popup.hwnd.scrollOffset = 0.0; leenkx_ui_Popup.show = true; }; var leenkx_ui_Themes = function() { }; $hxClasses["leenkx.ui.Themes"] = leenkx_ui_Themes; leenkx_ui_Themes.__name__ = true; var haxe_IMap = function() { }; $hxClasses["haxe.IMap"] = haxe_IMap; haxe_IMap.__name__ = true; haxe_IMap.__isInterface__ = true; var haxe_Log = function() { }; $hxClasses["haxe.Log"] = haxe_Log; haxe_Log.__name__ = true; haxe_Log.formatOutput = function(v,infos) { var str = Std.string(v); if(infos == null) { return str; } var pstr = infos.fileName + ":" + infos.lineNumber; if(infos.customParams != null) { var _g = 0; var _g1 = infos.customParams; while(_g < _g1.length) { var v = _g1[_g]; ++_g; str += ", " + Std.string(v); } } return pstr + ": " + str; }; haxe_Log.trace = function(v,infos) { var str = haxe_Log.formatOutput(v,infos); if(typeof(console) != "undefined" && console.log != null) { console.log(str); } }; 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 $hxClasses[name]; } ,resolveEnum: function(name) { return $hxEnums[name]; } ,__class__: haxe__$Unserializer_DefaultResolver }; var haxe_Unserializer = function(buf) { this.buf = buf; this.length = this.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 _g = 0; var _g1 = haxe_Unserializer.BASE64.length; while(_g < _g1) { var i = _g++; 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 haxe_Exception.thrown("Invalid object"); } if(this.buf.charCodeAt(this.pos) == 103) { break; } var k = this.unserialize(); if(typeof(k) != "string") { throw haxe_Exception.thrown("Invalid object key"); } var v = this.unserialize(); o[k] = v; } this.pos++; } ,unserializeEnum: function(edecl,tag) { if(this.buf.charCodeAt(this.pos++) != 58) { throw haxe_Exception.thrown("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() { switch(this.buf.charCodeAt(this.pos++)) { case 65: var name = this.unserialize(); var cl = this.resolver.resolveClass(name); if(cl == null) { throw haxe_Exception.thrown("Class not found " + name); } return cl; case 66: var name = this.unserialize(); var e = this.resolver.resolveEnum(name); if(e == null) { throw haxe_Exception.thrown("Enum not found " + name); } return e; case 67: var name = this.unserialize(); var cl = this.resolver.resolveClass(name); if(cl == null) { throw haxe_Exception.thrown("Class not found " + name); } var o = Object.create(cl.prototype); this.cache.push(o); o.hxUnserialize(this); if(this.buf.charCodeAt(this.pos++) != 103) { throw haxe_Exception.thrown("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 haxe_Exception.thrown("Invalid string reference"); } return this.scache[n]; case 97: var buf = 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 n = this.readDigits(); a[a.length + n - 1] = null; } else { a.push(this.unserialize()); } } return a; case 98: var h = new haxe_ds_StringMap(); this.cache.push(h); var buf = this.buf; while(this.buf.charCodeAt(this.pos) != 104) { var s = this.unserialize(); var value = this.unserialize(); h.h[s] = value; } this.pos++; return h; case 99: var name = this.unserialize(); var cl = this.resolver.resolveClass(name); if(cl == null) { throw haxe_Exception.thrown("Class not found " + name); } var o = Object.create(cl.prototype); this.cache.push(o); this.unserializeObject(o); return o; case 100: return this.readFloat(); case 102: return false; case 105: return this.readDigits(); case 106: var name = this.unserialize(); var edecl = this.resolver.resolveEnum(name); if(edecl == null) { throw haxe_Exception.thrown("Enum not found " + name); } this.pos++; var index = this.readDigits(); var _this = edecl.__constructs__; var result = new Array(_this.length); var _g = 0; var _g1 = _this.length; while(_g < _g1) { var i = _g++; result[i] = _this[i]._hx_name; } var tag = result[index]; if(tag == null) { throw haxe_Exception.thrown("Unknown enum index " + name + "@" + index); } var e = this.unserializeEnum(edecl,tag); this.cache.push(e); return e; case 107: return NaN; case 108: var l = new haxe_ds_List(); this.cache.push(l); var buf = 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 o = { }; this.cache.push(o); this.unserializeObject(o); return o; case 112: return Infinity; case 113: var h = new haxe_ds_IntMap(); this.cache.push(h); var buf = this.buf; var c = this.buf.charCodeAt(this.pos++); while(c == 58) { var i = this.readDigits(); var value = this.unserialize(); h.h[i] = value; c = this.buf.charCodeAt(this.pos++); } if(c != 104) { throw haxe_Exception.thrown("Invalid IntMap format"); } return h; case 114: var n = this.readDigits(); if(n < 0 || n >= this.cache.length) { throw haxe_Exception.thrown("Invalid reference"); } return this.cache[n]; case 115: var len = this.readDigits(); var buf = this.buf; if(this.buf.charCodeAt(this.pos++) != 58 || this.length - this.pos < len) { throw haxe_Exception.thrown("Invalid bytes length"); } var codes = haxe_Unserializer.CODES; if(codes == null) { codes = haxe_Unserializer.initCodes(); haxe_Unserializer.CODES = codes; } var i = this.pos; var rest = len & 3; var size = (len >> 2) * 3 + (rest >= 2 ? rest - 1 : 0); var max = i + (len - rest); var bytes = new haxe_io_Bytes(new ArrayBuffer(size)); var bpos = 0; while(i < max) { var c1 = codes[buf.charCodeAt(i++)]; var c2 = codes[buf.charCodeAt(i++)]; bytes.b[bpos++] = c1 << 2 | c2 >> 4; var c3 = codes[buf.charCodeAt(i++)]; bytes.b[bpos++] = c2 << 4 | c3 >> 2; var c4 = codes[buf.charCodeAt(i++)]; bytes.b[bpos++] = c3 << 6 | c4; } if(rest >= 2) { var c1 = codes[buf.charCodeAt(i++)]; var c2 = codes[buf.charCodeAt(i++)]; bytes.b[bpos++] = c1 << 2 | c2 >> 4; if(rest == 3) { var c3 = codes[buf.charCodeAt(i++)]; bytes.b[bpos++] = c2 << 4 | c3 >> 2; } } 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 { d = new Date(this.readFloat()); } this.cache.push(d); return d; case 119: var name = this.unserialize(); var edecl = this.resolver.resolveEnum(name); if(edecl == null) { throw haxe_Exception.thrown("Enum not found " + name); } var e = this.unserializeEnum(edecl,this.unserialize()); this.cache.push(e); return e; case 120: throw haxe_Exception.thrown(this.unserialize()); case 121: var len = this.readDigits(); if(this.buf.charCodeAt(this.pos++) != 58 || this.length - this.pos < len) { throw haxe_Exception.thrown("Invalid string length"); } var s = HxOverrides.substr(this.buf,this.pos,len); this.pos += len; s = decodeURIComponent(s.split("+").join(" ")); this.scache.push(s); return s; case 122: return 0; default: } this.pos--; throw haxe_Exception.thrown("Invalid char " + this.buf.charAt(this.pos) + " at position " + this.pos); } ,__class__: haxe_Unserializer }; var haxe_ValueException = function(value,previous,native) { haxe_Exception.call(this,String(value),previous,native); this.value = value; }; $hxClasses["haxe.ValueException"] = haxe_ValueException; haxe_ValueException.__name__ = true; haxe_ValueException.__super__ = haxe_Exception; haxe_ValueException.prototype = $extend(haxe_Exception.prototype,{ value: null ,unwrap: function() { return this.value; } ,__class__: haxe_ValueException }); 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 ,remove: function(key) { if(!this.h.hasOwnProperty(key)) { return false; } delete(this.h[key]); return true; } ,keys: function() { var a = []; for( var key in this.h ) if(this.h.hasOwnProperty(key)) a.push(+key); return new haxe_iterators_ArrayIterator(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_List = function() { this.length = 0; }; $hxClasses["haxe.ds.List"] = haxe_ds_List; haxe_ds_List.__name__ = true; haxe_ds_List.prototype = { h: null ,q: null ,length: null ,add: function(item) { var x = new haxe_ds__$List_ListNode(item,null); if(this.h == null) { this.h = x; } else { this.q.next = x; } this.q = x; this.length++; } ,__class__: haxe_ds_List }; var haxe_ds__$List_ListNode = function(item,next) { this.item = item; this.next = next; }; $hxClasses["haxe.ds._List.ListNode"] = haxe_ds__$List_ListNode; haxe_ds__$List_ListNode.__name__ = true; haxe_ds__$List_ListNode.prototype = { item: null ,next: null ,__class__: haxe_ds__$List_ListNode }; 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__; if(id == null) { id = (key.__id__ = $global.$haxeUID++); } this.h[id] = value; this.h.__keys__[id] = key; } ,__class__: haxe_ds_ObjectMap }; var haxe_ds_StringMap = function() { this.h = Object.create(null); }; $hxClasses["haxe.ds.StringMap"] = haxe_ds_StringMap; haxe_ds_StringMap.__name__ = true; haxe_ds_StringMap.__interfaces__ = [haxe_IMap]; haxe_ds_StringMap.prototype = { h: null ,__class__: haxe_ds_StringMap }; var haxe_exceptions_NotImplementedException = function(message,previous,pos) { if(message == null) { message = "Not implemented"; } haxe_exceptions_PosException.call(this,message,previous,pos); }; $hxClasses["haxe.exceptions.NotImplementedException"] = haxe_exceptions_NotImplementedException; haxe_exceptions_NotImplementedException.__name__ = true; haxe_exceptions_NotImplementedException.__super__ = haxe_exceptions_PosException; haxe_exceptions_NotImplementedException.prototype = $extend(haxe_exceptions_PosException.prototype,{ __class__: haxe_exceptions_NotImplementedException }); 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,encoding) { if(encoding == haxe_io_Encoding.RawNative) { var buf = new Uint8Array(s.length << 1); var _g = 0; var _g1 = s.length; while(_g < _g1) { var i = _g++; var c = s.charCodeAt(i); buf[i << 1] = c & 255; buf[i << 1 | 1] = c >> 8; } return new haxe_io_Bytes(buf.buffer); } 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 haxe_Exception.thrown(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 haxe_Exception.thrown(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,encoding) { if(pos < 0 || len < 0 || pos + len > this.length) { throw haxe_Exception.thrown(haxe_io_Error.OutsideBounds); } if(encoding == null) { encoding = haxe_io_Encoding.UTF8; } var s = ""; var b = this.b; var i = pos; var max = pos + len; switch(encoding._hx_index) { case 0: var debug = pos > 0; while(i < max) { var c = b[i++]; if(c < 128) { if(c == 0) { break; } s += String.fromCodePoint(c); } else if(c < 224) { var code = (c & 63) << 6 | b[i++] & 127; s += String.fromCodePoint(code); } else if(c < 240) { var c2 = b[i++]; var code1 = (c & 31) << 12 | (c2 & 127) << 6 | b[i++] & 127; s += String.fromCodePoint(code1); } else { var c21 = b[i++]; var c3 = b[i++]; var u = (c & 15) << 18 | (c21 & 127) << 12 | (c3 & 127) << 6 | b[i++] & 127; s += String.fromCodePoint(u); } } break; case 1: while(i < max) { var c = b[i++] | b[i++] << 8; s += String.fromCodePoint(c); } break; } return s; } ,toString: function() { return this.getString(0,this.length); } ,__class__: haxe_io_Bytes }; var haxe_io_BytesBuffer = function() { this.pos = 0; this.size = 0; }; $hxClasses["haxe.io.BytesBuffer"] = haxe_io_BytesBuffer; haxe_io_BytesBuffer.__name__ = true; haxe_io_BytesBuffer.prototype = { buffer: null ,view: null ,u8: null ,pos: null ,size: null ,addByte: function(byte) { if(this.pos == this.size) { this.grow(1); } this.view.setUint8(this.pos++,byte); } ,addBytes: function(src,pos,len) { if(pos < 0 || len < 0 || pos + len > src.length) { throw haxe_Exception.thrown(haxe_io_Error.OutsideBounds); } if(this.pos + len > this.size) { this.grow(len); } if(this.size == 0) { return; } var sub = new Uint8Array(src.b.buffer,src.b.byteOffset + pos,len); this.u8.set(sub,this.pos); this.pos += len; } ,grow: function(delta) { var req = this.pos + delta; var nsize = this.size == 0 ? 16 : this.size; while(nsize < req) nsize = nsize * 3 >> 1; var nbuf = new ArrayBuffer(nsize); var nu8 = new Uint8Array(nbuf); if(this.size > 0) { nu8.set(this.u8); } this.size = nsize; this.buffer = nbuf; this.u8 = nu8; this.view = new DataView(this.buffer); } ,getBytes: function() { if(this.size == 0) { return new haxe_io_Bytes(new ArrayBuffer(0)); } var b = new haxe_io_Bytes(this.buffer); b.length = this.pos; return b; } ,__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 haxe_exceptions_NotImplementedException(null,null,{ fileName : "haxe/io/Input.hx", lineNumber : 53, className : "haxe.io.Input", methodName : "readByte"}); } ,readBytes: function(s,pos,len) { var k = len; var b = s.b; if(pos < 0 || len < 0 || pos + len > s.length) { throw haxe_Exception.thrown(haxe_io_Error.OutsideBounds); } try { while(k > 0) { b[pos] = this.readByte(); ++pos; --k; } } catch( _g ) { if(!((haxe_Exception.caught(_g).unwrap()) instanceof haxe_io_Eof)) { throw _g; } } return len - k; } ,readFullBytes: function(s,pos,len) { while(len > 0) { var k = this.readBytes(s,pos,len); if(k == 0) { throw haxe_Exception.thrown(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 haxe_Exception.thrown(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,encoding) { var b = new haxe_io_Bytes(new ArrayBuffer(len)); this.readFullBytes(b,0,len); return b.getString(0,len,encoding); } ,__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 haxe_Exception.thrown(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 haxe_Exception.thrown(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 haxe_Exception.thrown(haxe_io_Error.OutsideBounds); } if(this.len == 0 && len > 0) { throw haxe_Exception.thrown(new haxe_io_Eof()); } if(this.len < len) { len = this.len; } var b1 = this.b; var b2 = buf.b; var _g = 0; var _g1 = len; while(_g < _g1) { var i = _g++; b2[pos + i] = b1[this.pos + i]; } this.pos += len; this.len -= len; return len; } ,__class__: haxe_io_BytesInput ,__properties__: {set_position:"set_position"} }); 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 haxe_exceptions_NotImplementedException(null,null,{ fileName : "haxe/io/Output.hx", lineNumber : 47, className : "haxe.io.Output", methodName : "writeByte"}); } ,writeBytes: function(s,pos,len) { if(pos < 0 || len < 0 || pos + len > s.length) { throw haxe_Exception.thrown(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 haxe_Exception.thrown(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.addByte(c); } ,writeBytes: function(buf,pos,len) { this.b.addBytes(buf,pos,len); return len; } ,getBytes: function() { return this.b.getBytes(); } ,__class__: haxe_io_BytesOutput }); var haxe_io_Encoding = $hxEnums["haxe.io.Encoding"] = { __ename__:true,__constructs__:null ,UTF8: {_hx_name:"UTF8",_hx_index:0,__enum__:"haxe.io.Encoding",toString:$estr} ,RawNative: {_hx_name:"RawNative",_hx_index:1,__enum__:"haxe.io.Encoding",toString:$estr} }; haxe_io_Encoding.__constructs__ = [haxe_io_Encoding.UTF8,haxe_io_Encoding.RawNative]; 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 = $hxEnums["haxe.io.Error"] = { __ename__:true,__constructs__:null ,Blocked: {_hx_name:"Blocked",_hx_index:0,__enum__:"haxe.io.Error",toString:$estr} ,Overflow: {_hx_name:"Overflow",_hx_index:1,__enum__:"haxe.io.Error",toString:$estr} ,OutsideBounds: {_hx_name:"OutsideBounds",_hx_index:2,__enum__:"haxe.io.Error",toString:$estr} ,Custom: ($_=function(e) { return {_hx_index:3,e:e,__enum__:"haxe.io.Error",toString:$estr}; },$_._hx_name="Custom",$_.__params__ = ["e"],$_) }; haxe_io_Error.__constructs__ = [haxe_io_Error.Blocked,haxe_io_Error.Overflow,haxe_io_Error.OutsideBounds,haxe_io_Error.Custom]; var haxe_io_FPHelper = function() { }; $hxClasses["haxe.io.FPHelper"] = haxe_io_FPHelper; haxe_io_FPHelper.__name__ = true; haxe_io_FPHelper.floatToI32 = function(f) { haxe_io_FPHelper.helper.setFloat32(0,f,true); return haxe_io_FPHelper.helper.getInt32(0,true); }; var haxe_io_Path = function(path) { switch(path) { case ".":case "..": this.dir = path; this.file = ""; return; } var c1 = path.lastIndexOf("/"); var c2 = path.lastIndexOf("\\"); if(c1 < c2) { this.dir = HxOverrides.substr(path,0,c2); path = HxOverrides.substr(path,c2 + 1,null); this.backslash = true; } else if(c2 < c1) { this.dir = HxOverrides.substr(path,0,c1); path = HxOverrides.substr(path,c1 + 1,null); } else { this.dir = null; } var cp = path.lastIndexOf("."); if(cp != -1) { this.ext = HxOverrides.substr(path,cp + 1,null); this.file = HxOverrides.substr(path,0,cp); } else { this.ext = null; this.file = path; } }; $hxClasses["haxe.io.Path"] = haxe_io_Path; haxe_io_Path.__name__ = true; haxe_io_Path.directory = function(path) { var s = new haxe_io_Path(path); if(s.dir == null) { return ""; } return s.dir; }; haxe_io_Path.extension = function(path) { var s = new haxe_io_Path(path); if(s.ext == null) { return ""; } return s.ext; }; haxe_io_Path.join = function(paths) { var _g = []; var _g1 = 0; var _g2 = paths; while(_g1 < _g2.length) { var v = _g2[_g1]; ++_g1; if(v != null && v != "") { _g.push(v); } } var paths = _g; if(paths.length == 0) { return ""; } var path = paths[0]; var _g = 1; var _g1 = paths.length; while(_g < _g1) { var i = _g++; path = haxe_io_Path.addTrailingSlash(path); path += paths[i]; } return haxe_io_Path.normalize(path); }; haxe_io_Path.normalize = function(path) { var slash = "/"; path = path.split("\\").join(slash); if(path == slash) { return slash; } var target = []; var _g = 0; var _g1 = path.split(slash); while(_g < _g1.length) { var token = _g1[_g]; ++_g; if(token == ".." && target.length > 0 && target[target.length - 1] != "..") { target.pop(); } else if(token == "") { if(target.length > 0 || HxOverrides.cca(path,0) == 47) { target.push(token); } } else if(token != ".") { target.push(token); } } var tmp = target.join(slash); var acc_b = ""; var colon = false; var slashes = false; var _g2_offset = 0; var _g2_s = tmp; while(_g2_offset < _g2_s.length) { var s = _g2_s; var index = _g2_offset++; var c = s.charCodeAt(index); if(c >= 55296 && c <= 56319) { c = c - 55232 << 10 | s.charCodeAt(index + 1) & 1023; } var c1 = c; if(c1 >= 65536) { ++_g2_offset; } var c2 = c1; switch(c2) { case 47: if(!colon) { slashes = true; } else { var i = c2; colon = false; if(slashes) { acc_b += "/"; slashes = false; } acc_b += String.fromCodePoint(i); } break; case 58: acc_b += ":"; colon = true; break; default: var i1 = c2; colon = false; if(slashes) { acc_b += "/"; slashes = false; } acc_b += String.fromCodePoint(i1); } } return acc_b; }; haxe_io_Path.addTrailingSlash = function(path) { if(path.length == 0) { return "/"; } var c1 = path.lastIndexOf("/"); var c2 = path.lastIndexOf("\\"); if(c1 < c2) { if(c2 != path.length - 1) { return path + "\\"; } else { return path; } } else if(c1 != path.length - 1) { return path + "/"; } else { return path; } }; haxe_io_Path.prototype = { dir: null ,file: null ,ext: null ,backslash: null ,__class__: haxe_io_Path }; var haxe_iterators_ArrayIterator = function(array) { this.current = 0; this.array = array; }; $hxClasses["haxe.iterators.ArrayIterator"] = haxe_iterators_ArrayIterator; haxe_iterators_ArrayIterator.__name__ = true; haxe_iterators_ArrayIterator.prototype = { array: null ,current: null ,hasNext: function() { return this.current < this.array.length; } ,next: function() { return this.array[this.current++]; } ,__class__: haxe_iterators_ArrayIterator }; var haxe_macro_StringLiteralKind = $hxEnums["haxe.macro.StringLiteralKind"] = { __ename__:true,__constructs__:null ,DoubleQuotes: {_hx_name:"DoubleQuotes",_hx_index:0,__enum__:"haxe.macro.StringLiteralKind",toString:$estr} ,SingleQuotes: {_hx_name:"SingleQuotes",_hx_index:1,__enum__:"haxe.macro.StringLiteralKind",toString:$estr} }; haxe_macro_StringLiteralKind.__constructs__ = [haxe_macro_StringLiteralKind.DoubleQuotes,haxe_macro_StringLiteralKind.SingleQuotes]; var haxe_macro_Constant = $hxEnums["haxe.macro.Constant"] = { __ename__:true,__constructs__:null ,CInt: ($_=function(v) { return {_hx_index:0,v:v,__enum__:"haxe.macro.Constant",toString:$estr}; },$_._hx_name="CInt",$_.__params__ = ["v"],$_) ,CFloat: ($_=function(f) { return {_hx_index:1,f:f,__enum__:"haxe.macro.Constant",toString:$estr}; },$_._hx_name="CFloat",$_.__params__ = ["f"],$_) ,CString: ($_=function(s,kind) { return {_hx_index:2,s:s,kind:kind,__enum__:"haxe.macro.Constant",toString:$estr}; },$_._hx_name="CString",$_.__params__ = ["s","kind"],$_) ,CIdent: ($_=function(s) { return {_hx_index:3,s:s,__enum__:"haxe.macro.Constant",toString:$estr}; },$_._hx_name="CIdent",$_.__params__ = ["s"],$_) ,CRegexp: ($_=function(r,opt) { return {_hx_index:4,r:r,opt:opt,__enum__:"haxe.macro.Constant",toString:$estr}; },$_._hx_name="CRegexp",$_.__params__ = ["r","opt"],$_) }; haxe_macro_Constant.__constructs__ = [haxe_macro_Constant.CInt,haxe_macro_Constant.CFloat,haxe_macro_Constant.CString,haxe_macro_Constant.CIdent,haxe_macro_Constant.CRegexp]; var haxe_macro_Binop = $hxEnums["haxe.macro.Binop"] = { __ename__:true,__constructs__:null ,OpAdd: {_hx_name:"OpAdd",_hx_index:0,__enum__:"haxe.macro.Binop",toString:$estr} ,OpMult: {_hx_name:"OpMult",_hx_index:1,__enum__:"haxe.macro.Binop",toString:$estr} ,OpDiv: {_hx_name:"OpDiv",_hx_index:2,__enum__:"haxe.macro.Binop",toString:$estr} ,OpSub: {_hx_name:"OpSub",_hx_index:3,__enum__:"haxe.macro.Binop",toString:$estr} ,OpAssign: {_hx_name:"OpAssign",_hx_index:4,__enum__:"haxe.macro.Binop",toString:$estr} ,OpEq: {_hx_name:"OpEq",_hx_index:5,__enum__:"haxe.macro.Binop",toString:$estr} ,OpNotEq: {_hx_name:"OpNotEq",_hx_index:6,__enum__:"haxe.macro.Binop",toString:$estr} ,OpGt: {_hx_name:"OpGt",_hx_index:7,__enum__:"haxe.macro.Binop",toString:$estr} ,OpGte: {_hx_name:"OpGte",_hx_index:8,__enum__:"haxe.macro.Binop",toString:$estr} ,OpLt: {_hx_name:"OpLt",_hx_index:9,__enum__:"haxe.macro.Binop",toString:$estr} ,OpLte: {_hx_name:"OpLte",_hx_index:10,__enum__:"haxe.macro.Binop",toString:$estr} ,OpAnd: {_hx_name:"OpAnd",_hx_index:11,__enum__:"haxe.macro.Binop",toString:$estr} ,OpOr: {_hx_name:"OpOr",_hx_index:12,__enum__:"haxe.macro.Binop",toString:$estr} ,OpXor: {_hx_name:"OpXor",_hx_index:13,__enum__:"haxe.macro.Binop",toString:$estr} ,OpBoolAnd: {_hx_name:"OpBoolAnd",_hx_index:14,__enum__:"haxe.macro.Binop",toString:$estr} ,OpBoolOr: {_hx_name:"OpBoolOr",_hx_index:15,__enum__:"haxe.macro.Binop",toString:$estr} ,OpShl: {_hx_name:"OpShl",_hx_index:16,__enum__:"haxe.macro.Binop",toString:$estr} ,OpShr: {_hx_name:"OpShr",_hx_index:17,__enum__:"haxe.macro.Binop",toString:$estr} ,OpUShr: {_hx_name:"OpUShr",_hx_index:18,__enum__:"haxe.macro.Binop",toString:$estr} ,OpMod: {_hx_name:"OpMod",_hx_index:19,__enum__:"haxe.macro.Binop",toString:$estr} ,OpAssignOp: ($_=function(op) { return {_hx_index:20,op:op,__enum__:"haxe.macro.Binop",toString:$estr}; },$_._hx_name="OpAssignOp",$_.__params__ = ["op"],$_) ,OpInterval: {_hx_name:"OpInterval",_hx_index:21,__enum__:"haxe.macro.Binop",toString:$estr} ,OpArrow: {_hx_name:"OpArrow",_hx_index:22,__enum__:"haxe.macro.Binop",toString:$estr} ,OpIn: {_hx_name:"OpIn",_hx_index:23,__enum__:"haxe.macro.Binop",toString:$estr} }; haxe_macro_Binop.__constructs__ = [haxe_macro_Binop.OpAdd,haxe_macro_Binop.OpMult,haxe_macro_Binop.OpDiv,haxe_macro_Binop.OpSub,haxe_macro_Binop.OpAssign,haxe_macro_Binop.OpEq,haxe_macro_Binop.OpNotEq,haxe_macro_Binop.OpGt,haxe_macro_Binop.OpGte,haxe_macro_Binop.OpLt,haxe_macro_Binop.OpLte,haxe_macro_Binop.OpAnd,haxe_macro_Binop.OpOr,haxe_macro_Binop.OpXor,haxe_macro_Binop.OpBoolAnd,haxe_macro_Binop.OpBoolOr,haxe_macro_Binop.OpShl,haxe_macro_Binop.OpShr,haxe_macro_Binop.OpUShr,haxe_macro_Binop.OpMod,haxe_macro_Binop.OpAssignOp,haxe_macro_Binop.OpInterval,haxe_macro_Binop.OpArrow,haxe_macro_Binop.OpIn]; var haxe_macro_Unop = $hxEnums["haxe.macro.Unop"] = { __ename__:true,__constructs__:null ,OpIncrement: {_hx_name:"OpIncrement",_hx_index:0,__enum__:"haxe.macro.Unop",toString:$estr} ,OpDecrement: {_hx_name:"OpDecrement",_hx_index:1,__enum__:"haxe.macro.Unop",toString:$estr} ,OpNot: {_hx_name:"OpNot",_hx_index:2,__enum__:"haxe.macro.Unop",toString:$estr} ,OpNeg: {_hx_name:"OpNeg",_hx_index:3,__enum__:"haxe.macro.Unop",toString:$estr} ,OpNegBits: {_hx_name:"OpNegBits",_hx_index:4,__enum__:"haxe.macro.Unop",toString:$estr} ,OpSpread: {_hx_name:"OpSpread",_hx_index:5,__enum__:"haxe.macro.Unop",toString:$estr} }; haxe_macro_Unop.__constructs__ = [haxe_macro_Unop.OpIncrement,haxe_macro_Unop.OpDecrement,haxe_macro_Unop.OpNot,haxe_macro_Unop.OpNeg,haxe_macro_Unop.OpNegBits,haxe_macro_Unop.OpSpread]; var haxe_macro_FunctionKind = $hxEnums["haxe.macro.FunctionKind"] = { __ename__:true,__constructs__:null ,FAnonymous: {_hx_name:"FAnonymous",_hx_index:0,__enum__:"haxe.macro.FunctionKind",toString:$estr} ,FNamed: ($_=function(name,inlined) { return {_hx_index:1,name:name,inlined:inlined,__enum__:"haxe.macro.FunctionKind",toString:$estr}; },$_._hx_name="FNamed",$_.__params__ = ["name","inlined"],$_) ,FArrow: {_hx_name:"FArrow",_hx_index:2,__enum__:"haxe.macro.FunctionKind",toString:$estr} }; haxe_macro_FunctionKind.__constructs__ = [haxe_macro_FunctionKind.FAnonymous,haxe_macro_FunctionKind.FNamed,haxe_macro_FunctionKind.FArrow]; var haxe_macro_ExprDef = $hxEnums["haxe.macro.ExprDef"] = { __ename__:true,__constructs__:null ,EConst: ($_=function(c) { return {_hx_index:0,c:c,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EConst",$_.__params__ = ["c"],$_) ,EArray: ($_=function(e1,e2) { return {_hx_index:1,e1:e1,e2:e2,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EArray",$_.__params__ = ["e1","e2"],$_) ,EBinop: ($_=function(op,e1,e2) { return {_hx_index:2,op:op,e1:e1,e2:e2,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EBinop",$_.__params__ = ["op","e1","e2"],$_) ,EField: ($_=function(e,field) { return {_hx_index:3,e:e,field:field,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EField",$_.__params__ = ["e","field"],$_) ,EParenthesis: ($_=function(e) { return {_hx_index:4,e:e,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EParenthesis",$_.__params__ = ["e"],$_) ,EObjectDecl: ($_=function(fields) { return {_hx_index:5,fields:fields,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EObjectDecl",$_.__params__ = ["fields"],$_) ,EArrayDecl: ($_=function(values) { return {_hx_index:6,values:values,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EArrayDecl",$_.__params__ = ["values"],$_) ,ECall: ($_=function(e,params) { return {_hx_index:7,e:e,params:params,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="ECall",$_.__params__ = ["e","params"],$_) ,ENew: ($_=function(t,params) { return {_hx_index:8,t:t,params:params,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="ENew",$_.__params__ = ["t","params"],$_) ,EUnop: ($_=function(op,postFix,e) { return {_hx_index:9,op:op,postFix:postFix,e:e,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EUnop",$_.__params__ = ["op","postFix","e"],$_) ,EVars: ($_=function(vars) { return {_hx_index:10,vars:vars,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EVars",$_.__params__ = ["vars"],$_) ,EFunction: ($_=function(kind,f) { return {_hx_index:11,kind:kind,f:f,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EFunction",$_.__params__ = ["kind","f"],$_) ,EBlock: ($_=function(exprs) { return {_hx_index:12,exprs:exprs,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EBlock",$_.__params__ = ["exprs"],$_) ,EFor: ($_=function(it,expr) { return {_hx_index:13,it:it,expr:expr,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EFor",$_.__params__ = ["it","expr"],$_) ,EIf: ($_=function(econd,eif,eelse) { return {_hx_index:14,econd:econd,eif:eif,eelse:eelse,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EIf",$_.__params__ = ["econd","eif","eelse"],$_) ,EWhile: ($_=function(econd,e,normalWhile) { return {_hx_index:15,econd:econd,e:e,normalWhile:normalWhile,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EWhile",$_.__params__ = ["econd","e","normalWhile"],$_) ,ESwitch: ($_=function(e,cases,edef) { return {_hx_index:16,e:e,cases:cases,edef:edef,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="ESwitch",$_.__params__ = ["e","cases","edef"],$_) ,ETry: ($_=function(e,catches) { return {_hx_index:17,e:e,catches:catches,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="ETry",$_.__params__ = ["e","catches"],$_) ,EReturn: ($_=function(e) { return {_hx_index:18,e:e,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EReturn",$_.__params__ = ["e"],$_) ,EBreak: {_hx_name:"EBreak",_hx_index:19,__enum__:"haxe.macro.ExprDef",toString:$estr} ,EContinue: {_hx_name:"EContinue",_hx_index:20,__enum__:"haxe.macro.ExprDef",toString:$estr} ,EUntyped: ($_=function(e) { return {_hx_index:21,e:e,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EUntyped",$_.__params__ = ["e"],$_) ,EThrow: ($_=function(e) { return {_hx_index:22,e:e,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EThrow",$_.__params__ = ["e"],$_) ,ECast: ($_=function(e,t) { return {_hx_index:23,e:e,t:t,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="ECast",$_.__params__ = ["e","t"],$_) ,EDisplay: ($_=function(e,displayKind) { return {_hx_index:24,e:e,displayKind:displayKind,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EDisplay",$_.__params__ = ["e","displayKind"],$_) ,EDisplayNew: ($_=function(t) { return {_hx_index:25,t:t,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EDisplayNew",$_.__params__ = ["t"],$_) ,ETernary: ($_=function(econd,eif,eelse) { return {_hx_index:26,econd:econd,eif:eif,eelse:eelse,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="ETernary",$_.__params__ = ["econd","eif","eelse"],$_) ,ECheckType: ($_=function(e,t) { return {_hx_index:27,e:e,t:t,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="ECheckType",$_.__params__ = ["e","t"],$_) ,EMeta: ($_=function(s,e) { return {_hx_index:28,s:s,e:e,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EMeta",$_.__params__ = ["s","e"],$_) ,EIs: ($_=function(e,t) { return {_hx_index:29,e:e,t:t,__enum__:"haxe.macro.ExprDef",toString:$estr}; },$_._hx_name="EIs",$_.__params__ = ["e","t"],$_) }; haxe_macro_ExprDef.__constructs__ = [haxe_macro_ExprDef.EConst,haxe_macro_ExprDef.EArray,haxe_macro_ExprDef.EBinop,haxe_macro_ExprDef.EField,haxe_macro_ExprDef.EParenthesis,haxe_macro_ExprDef.EObjectDecl,haxe_macro_ExprDef.EArrayDecl,haxe_macro_ExprDef.ECall,haxe_macro_ExprDef.ENew,haxe_macro_ExprDef.EUnop,haxe_macro_ExprDef.EVars,haxe_macro_ExprDef.EFunction,haxe_macro_ExprDef.EBlock,haxe_macro_ExprDef.EFor,haxe_macro_ExprDef.EIf,haxe_macro_ExprDef.EWhile,haxe_macro_ExprDef.ESwitch,haxe_macro_ExprDef.ETry,haxe_macro_ExprDef.EReturn,haxe_macro_ExprDef.EBreak,haxe_macro_ExprDef.EContinue,haxe_macro_ExprDef.EUntyped,haxe_macro_ExprDef.EThrow,haxe_macro_ExprDef.ECast,haxe_macro_ExprDef.EDisplay,haxe_macro_ExprDef.EDisplayNew,haxe_macro_ExprDef.ETernary,haxe_macro_ExprDef.ECheckType,haxe_macro_ExprDef.EMeta,haxe_macro_ExprDef.EIs]; var haxe_macro_DisplayKind = $hxEnums["haxe.macro.DisplayKind"] = { __ename__:true,__constructs__:null ,DKCall: {_hx_name:"DKCall",_hx_index:0,__enum__:"haxe.macro.DisplayKind",toString:$estr} ,DKDot: {_hx_name:"DKDot",_hx_index:1,__enum__:"haxe.macro.DisplayKind",toString:$estr} ,DKStructure: {_hx_name:"DKStructure",_hx_index:2,__enum__:"haxe.macro.DisplayKind",toString:$estr} ,DKMarked: {_hx_name:"DKMarked",_hx_index:3,__enum__:"haxe.macro.DisplayKind",toString:$estr} ,DKPattern: ($_=function(outermost) { return {_hx_index:4,outermost:outermost,__enum__:"haxe.macro.DisplayKind",toString:$estr}; },$_._hx_name="DKPattern",$_.__params__ = ["outermost"],$_) }; haxe_macro_DisplayKind.__constructs__ = [haxe_macro_DisplayKind.DKCall,haxe_macro_DisplayKind.DKDot,haxe_macro_DisplayKind.DKStructure,haxe_macro_DisplayKind.DKMarked,haxe_macro_DisplayKind.DKPattern]; var haxe_macro_ComplexType = $hxEnums["haxe.macro.ComplexType"] = { __ename__:true,__constructs__:null ,TPath: ($_=function(p) { return {_hx_index:0,p:p,__enum__:"haxe.macro.ComplexType",toString:$estr}; },$_._hx_name="TPath",$_.__params__ = ["p"],$_) ,TFunction: ($_=function(args,ret) { return {_hx_index:1,args:args,ret:ret,__enum__:"haxe.macro.ComplexType",toString:$estr}; },$_._hx_name="TFunction",$_.__params__ = ["args","ret"],$_) ,TAnonymous: ($_=function(fields) { return {_hx_index:2,fields:fields,__enum__:"haxe.macro.ComplexType",toString:$estr}; },$_._hx_name="TAnonymous",$_.__params__ = ["fields"],$_) ,TParent: ($_=function(t) { return {_hx_index:3,t:t,__enum__:"haxe.macro.ComplexType",toString:$estr}; },$_._hx_name="TParent",$_.__params__ = ["t"],$_) ,TExtend: ($_=function(p,fields) { return {_hx_index:4,p:p,fields:fields,__enum__:"haxe.macro.ComplexType",toString:$estr}; },$_._hx_name="TExtend",$_.__params__ = ["p","fields"],$_) ,TOptional: ($_=function(t) { return {_hx_index:5,t:t,__enum__:"haxe.macro.ComplexType",toString:$estr}; },$_._hx_name="TOptional",$_.__params__ = ["t"],$_) ,TNamed: ($_=function(n,t) { return {_hx_index:6,n:n,t:t,__enum__:"haxe.macro.ComplexType",toString:$estr}; },$_._hx_name="TNamed",$_.__params__ = ["n","t"],$_) ,TIntersection: ($_=function(tl) { return {_hx_index:7,tl:tl,__enum__:"haxe.macro.ComplexType",toString:$estr}; },$_._hx_name="TIntersection",$_.__params__ = ["tl"],$_) }; haxe_macro_ComplexType.__constructs__ = [haxe_macro_ComplexType.TPath,haxe_macro_ComplexType.TFunction,haxe_macro_ComplexType.TAnonymous,haxe_macro_ComplexType.TParent,haxe_macro_ComplexType.TExtend,haxe_macro_ComplexType.TOptional,haxe_macro_ComplexType.TNamed,haxe_macro_ComplexType.TIntersection]; var haxe_macro_Error = function(message,pos,previous) { haxe_Exception.call(this,message,previous); this.pos = pos; }; $hxClasses["haxe.macro.Error"] = haxe_macro_Error; haxe_macro_Error.__name__ = true; haxe_macro_Error.__super__ = haxe_Exception; haxe_macro_Error.prototype = $extend(haxe_Exception.prototype,{ pos: null ,__class__: haxe_macro_Error }); var js_Boot = function() { }; $hxClasses["js.Boot"] = js_Boot; js_Boot.__name__ = true; js_Boot.getClass = function(o) { if(o == null) { return null; } else if(((o) instanceof Array)) { return Array; } else { var cl = o.__class__; if(cl != null) { return cl; } var name = js_Boot.__nativeClassName(o); if(name != null) { return js_Boot.__resolveNativeClass(name); } return null; } }; js_Boot.__string_rec = function(o,s) { if(o == null) { return "null"; } if(s.length >= 5) { return "<...>"; } var t = typeof(o); if(t == "function" && (o.__name__ || o.__ename__)) { t = "object"; } switch(t) { case "function": return ""; case "object": if(o.__enum__) { var e = $hxEnums[o.__enum__]; var con = e.__constructs__[o._hx_index]; var n = con._hx_name; if(con.__params__) { s = s + "\t"; return n + "(" + ((function($this) { var $r; var _g = []; { var _g1 = 0; var _g2 = con.__params__; while(true) { if(!(_g1 < _g2.length)) { break; } var p = _g2[_g1]; _g1 = _g1 + 1; _g.push(js_Boot.__string_rec(o[p],s)); } } $r = _g; return $r; }(this))).join(",") + ")"; } else { return n; } } if(((o) instanceof Array)) { var str = "["; s += "\t"; var _g = 0; var _g1 = o.length; while(_g < _g1) { var i = _g++; str += (i > 0 ? "," : "") + js_Boot.__string_rec(o[i],s); } str += "]"; return str; } var tostr; try { tostr = o.toString; } catch( _g ) { return "???"; } if(tostr != null && tostr != Object.toString && typeof(tostr) == "function") { var s2 = o.toString(); if(s2 != "[object Object]") { return s2; } } var str = "{\n"; s += "\t"; var hasp = o.hasOwnProperty != null; var k = null; for( k in o ) { if(hasp && !o.hasOwnProperty(k)) { continue; } if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__" || k == "__properties__") { continue; } if(str.length != 2) { str += ", \n"; } str += s + k + " : " + js_Boot.__string_rec(o[k],s); } s = s.substring(1); str += "\n" + s + "}"; return str; 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 _g = 0; var _g1 = intf.length; while(_g < _g1) { var i = _g++; 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: return ((o) instanceof Array); case Bool: return typeof(o) == "boolean"; case Dynamic: return o != null; 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(js_Boot.__downcastCheck(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__ != null ? $hxEnums[o.__enum__] == cl : false; } }; js_Boot.__downcastCheck = function(o,cl) { if(!((o) instanceof cl)) { if(cl.__isInterface__) { return js_Boot.__interfLoop(js_Boot.getClass(o),cl); } else { return false; } } else { return true; } }; js_Boot.__cast = function(o,t) { if(o == null || js_Boot.__instanceof(o,t)) { return o; } else { throw haxe_Exception.thrown("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_lib__$ArrayBuffer_ArrayBufferCompat = function() { }; $hxClasses["js.lib._ArrayBuffer.ArrayBufferCompat"] = js_lib__$ArrayBuffer_ArrayBufferCompat; js_lib__$ArrayBuffer_ArrayBufferCompat.__name__ = true; js_lib__$ArrayBuffer_ArrayBufferCompat.sliceImpl = function(begin,end) { var u = new Uint8Array(this,begin,end == null ? null : end - begin); var resultArray = new Uint8Array(u.byteLength); resultArray.set(u); return resultArray.buffer; }; var kha__$Assets_ImageList = function() { this.names = ["black_white_gradient","color_wheel","icons"]; this.iconsSize = 1; this.iconsDescription = { name : "icons", original_height : 512, file_sizes : [1], original_width : 512, files : ["icons.png"], type : "image"}; this.iconsName = "icons"; this.icons = null; this.color_wheelSize = 1; this.color_wheelDescription = { name : "color_wheel", original_height : 270, file_sizes : [1], original_width : 360, files : ["color_wheel.png"], type : "image"}; this.color_wheelName = "color_wheel"; this.color_wheel = null; this.black_white_gradientSize = 1; this.black_white_gradientDescription = { name : "black_white_gradient", original_height : 270, file_sizes : [1], original_width : 360, files : ["black_white_gradient.png"], type : "image"}; this.black_white_gradientName = "black_white_gradient"; this.black_white_gradient = null; }; $hxClasses["kha._Assets.ImageList"] = kha__$Assets_ImageList; kha__$Assets_ImageList.__name__ = true; kha__$Assets_ImageList.prototype = { get: function(name) { return Reflect.field(this,name); } ,black_white_gradient: null ,black_white_gradientName: null ,black_white_gradientDescription: null ,black_white_gradientSize: null ,black_white_gradientLoad: function(done,failure) { kha_Assets.loadImage("black_white_gradient",function(image) { done(); },failure,{ fileName : "kha/internal/AssetsBuilder.hx", lineNumber : 142, className : "kha._Assets.ImageList", methodName : "black_white_gradientLoad"}); } ,black_white_gradientUnload: function() { this.black_white_gradient.unload(); this.black_white_gradient = null; } ,color_wheel: null ,color_wheelName: null ,color_wheelDescription: null ,color_wheelSize: null ,color_wheelLoad: function(done,failure) { kha_Assets.loadImage("color_wheel",function(image) { done(); },failure,{ fileName : "kha/internal/AssetsBuilder.hx", lineNumber : 142, className : "kha._Assets.ImageList", methodName : "color_wheelLoad"}); } ,color_wheelUnload: function() { this.color_wheel.unload(); this.color_wheel = null; } ,icons: null ,iconsName: null ,iconsDescription: null ,iconsSize: null ,iconsLoad: function(done,failure) { kha_Assets.loadImage("icons",function(image) { done(); },failure,{ fileName : "kha/internal/AssetsBuilder.hx", lineNumber : 142, className : "kha._Assets.ImageList", methodName : "iconsLoad"}); } ,iconsUnload: function() { this.icons.unload(); this.icons = null; } ,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 = { get: function(name) { return Reflect.field(this,name); } ,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 = { get: function(name) { return Reflect.field(this,name); } ,names: null ,__class__: kha__$Assets_BlobList }; var kha__$Assets_FontList = function() { this.names = ["font_default"]; this.font_defaultSize = 1; this.font_defaultDescription = { name : "font_default", file_sizes : [1], files : ["font_default.ttf"], type : "font"}; this.font_defaultName = "font_default"; this.font_default = null; }; $hxClasses["kha._Assets.FontList"] = kha__$Assets_FontList; kha__$Assets_FontList.__name__ = true; kha__$Assets_FontList.prototype = { get: function(name) { return Reflect.field(this,name); } ,font_default: null ,font_defaultName: null ,font_defaultDescription: null ,font_defaultSize: null ,font_defaultLoad: function(done,failure) { kha_Assets.loadFont("font_default",function(font) { done(); },failure,{ fileName : "kha/internal/AssetsBuilder.hx", lineNumber : 154, className : "kha._Assets.FontList", methodName : "font_defaultLoad"}); } ,font_defaultUnload: function() { this.font_default.unload(); this.font_default = 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 = { get: function(name) { return Reflect.field(this,name); } ,names: null ,__class__: kha__$Assets_VideoList }; var kha_Assets = function() { }; $hxClasses["kha.Assets"] = kha_Assets; kha_Assets.__name__ = true; kha_Assets.__properties__ = {get_videoFormats:"get_videoFormats",get_fontFormats:"get_fontFormats",get_soundFormats:"get_soundFormats",get_imageFormats:"get_imageFormats"}; kha_Assets.loadEverything = function(callback,filter,uncompressSoundsFilter,failed) { var lists = [kha__$Assets_ImageList,kha__$Assets_SoundList,kha__$Assets_BlobList,kha__$Assets_FontList,kha__$Assets_VideoList]; var listInstances = [kha_Assets.images,kha_Assets.sounds,kha_Assets.blobs,kha_Assets.fonts,kha_Assets.videos]; var fileCount = 0; var byteCount = 0; var _g = 0; var _g1 = lists.length; while(_g < _g1) { var i = _g++; var list = lists[i]; var _g2 = 0; var _g3 = Type.getInstanceFields(list); while(_g2 < _g3.length) { var file = _g3[_g2]; ++_g2; if(StringTools.endsWith(file,"Description")) { ++fileCount; } else if(StringTools.endsWith(file,"Size")) { var size = Reflect.field(listInstances[i],file); byteCount += size; } } } if(fileCount == 0) { callback(); return; } var filesLeft = fileCount; var bytesLeft = byteCount; var onLoaded = function(bytes) { filesLeft -= 1; bytesLeft -= bytes; kha_Assets.progress = 1 - bytesLeft / byteCount; if(filesLeft == 0) { callback(); } }; var onError = function(err,bytes) { (kha_Assets.reporter(failed,{ fileName : "kha/Assets.hx", lineNumber : 116, className : "kha.Assets", methodName : "loadEverything"}))(err); onLoaded(bytes); }; var loadFunc = function(desc,done,failure) { var name = desc.name; var size = desc.file_sizes[0]; switch(desc.type) { case "blob": kha_Assets.loadBlob(name,function(blob) { done(size); },function(err) { onError(err,size); },{ fileName : "kha/Assets.hx", lineNumber : 142, className : "kha.Assets", methodName : "loadEverything"}); break; case "font": kha_Assets.loadFont(name,function(font) { done(size); },function(err) { onError(err,size); },{ fileName : "kha/Assets.hx", lineNumber : 146, className : "kha.Assets", methodName : "loadEverything"}); break; case "image": kha_Assets.loadImage(name,function(image) { done(size); },function(err) { onError(err,size); },{ fileName : "kha/Assets.hx", lineNumber : 125, className : "kha.Assets", methodName : "loadEverything"}); break; case "sound": kha_Assets.loadSound(name,function(sound) { if(uncompressSoundsFilter == null || uncompressSoundsFilter(desc)) { sound.uncompress(function() { done(size); }); } else { done(size); } },function(err) { onError(err,size); },{ fileName : "kha/Assets.hx", lineNumber : 129, className : "kha.Assets", methodName : "loadEverything"}); break; case "video": kha_Assets.loadVideo(name,function(video) { done(size); },function(err) { onError(err,size); },{ fileName : "kha/Assets.hx", lineNumber : 150, className : "kha.Assets", methodName : "loadEverything"}); break; } }; var _g = 0; var _g1 = lists.length; while(_g < _g1) { var i = _g++; var list = lists[i]; var listInstance = listInstances[i]; var _g2 = 0; var _g3 = Type.getInstanceFields(list); while(_g2 < _g3.length) { var field = _g3[_g2]; ++_g2; if(!StringTools.endsWith(field,"Description")) { continue; } var desc = Reflect.field(listInstance,field); if(filter == null || filter(desc)) { loadFunc(desc,onLoaded,onError); } else { onLoaded(desc.file_sizes[0]); } } } }; kha_Assets.loadImage = function(name,done,failed,pos) { var description = Reflect.field(kha_Assets.images,name + "Description"); if(description == null) { (kha_Assets.reporter(failed,pos))({ url : name, error : "Name not found"}); return; } kha_LoaderImpl.loadImageFromDescription(description,function(image) { kha_Assets.images[name] = image; done(image); },kha_Assets.reporter(failed,pos)); }; kha_Assets.loadImageFromPath = function(path,readable,done,failed,pos) { var description = { files : [path], readable : readable}; kha_LoaderImpl.loadImageFromDescription(description,done,kha_Assets.reporter(failed,pos)); }; kha_Assets.get_imageFormats = function() { return kha_LoaderImpl.getImageFormats(); }; kha_Assets.loadBlob = function(name,done,failed,pos) { var description = Reflect.field(kha_Assets.blobs,name + "Description"); if(description == null) { (kha_Assets.reporter(failed,pos))({ url : name, error : "Name not found"}); return; } kha_LoaderImpl.loadBlobFromDescription(description,function(blob) { kha_Assets.blobs[name] = blob; done(blob); },kha_Assets.reporter(failed,pos)); }; kha_Assets.loadBlobFromPath = function(path,done,failed,pos) { var description = { files : [path]}; kha_LoaderImpl.loadBlobFromDescription(description,done,kha_Assets.reporter(failed,pos)); }; kha_Assets.loadSound = function(name,done,failed,pos) { var description = Reflect.field(kha_Assets.sounds,name + "Description"); if(description == null) { (kha_Assets.reporter(failed,pos))({ url : name, error : "Name not found"}); return; } kha_LoaderImpl.loadSoundFromDescription(description,function(sound) { kha_Assets.sounds[name] = sound; done(sound); },kha_Assets.reporter(failed,pos)); }; kha_Assets.loadSoundFromPath = function(path,done,failed,pos) { var description = { files : [path]}; kha_LoaderImpl.loadSoundFromDescription(description,done,kha_Assets.reporter(failed,pos)); }; kha_Assets.get_soundFormats = function() { return kha_LoaderImpl.getSoundFormats(); }; kha_Assets.loadFont = function(name,done,failed,pos) { var description = Reflect.field(kha_Assets.fonts,name + "Description"); if(description == null) { (kha_Assets.reporter(failed,pos))({ url : name, error : "Name not found"}); return; } kha_LoaderImpl.loadFontFromDescription(description,function(font) { kha_Assets.fonts[name] = font; done(font); },kha_Assets.reporter(failed,pos)); }; kha_Assets.loadFontFromPath = function(path,done,failed,pos) { var description = { files : [path]}; kha_LoaderImpl.loadFontFromDescription(description,done,kha_Assets.reporter(failed,pos)); }; kha_Assets.get_fontFormats = function() { return ["ttf"]; }; kha_Assets.loadVideo = function(name,done,failed,pos) { var description = Reflect.field(kha_Assets.videos,name + "Description"); if(description == null) { (kha_Assets.reporter(failed,pos))({ url : name, error : "Name not found"}); return; } kha_LoaderImpl.loadVideoFromDescription(description,function(video) { kha_Assets.videos[name] = video; done(video); },kha_Assets.reporter(failed,pos)); }; kha_Assets.loadVideoFromPath = function(path,done,failed,pos) { var description = { files : [path]}; kha_LoaderImpl.loadVideoFromDescription(description,done,kha_Assets.reporter(failed,pos)); }; kha_Assets.get_videoFormats = function() { return kha_LoaderImpl.getVideoFormats(); }; kha_Assets.reporter = function(custom,pos) { if(custom != null) { return custom; } else { var _g = haxe_Log.trace; var infos = pos; return function(v) { _g(v,infos); }; } }; var kha_Canvas = function() { }; $hxClasses["kha.Canvas"] = kha_Canvas; kha_Canvas.__name__ = true; kha_Canvas.__isInterface__ = 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 ,__properties__: {get_g4:"get_g4",get_g2:"get_g2",get_g1:"get_g1",get_height:"get_height",get_width:"get_width"} }; var kha_Color = {}; kha_Color.__properties__ = {set_value:"set_value",get_value:"get_value",set_A:"set_A",get_A:"get_A",set_B:"set_B",get_B:"get_B",set_G:"set_G",get_G:"get_G",set_R:"set_R",get_R:"get_R",set_Ab:"set_Ab",get_Ab:"get_Ab",set_Bb:"set_Bb",get_Bb:"get_Bb",set_Gb:"set_Gb",get_Gb:"get_Gb",set_Rb:"set_Rb",get_Rb:"get_Rb"}; kha_Color.fromValue = function(value) { return kha_Color._new(value); }; kha_Color.fromBytes = function(r,g,b,a) { if(a == null) { a = 255; } return kha_Color._new(a << 24 | r << 16 | g << 8 | b); }; kha_Color.fromFloats = function(r,g,b,a) { if(a == null) { a = 1; } return kha_Color._new((a * 255 | 0) << 24 | (r * 255 | 0) << 16 | (g * 255 | 0) << 8 | (b * 255 | 0)); }; kha_Color.fromString = function(value) { if(!(value.length == 4 || value.length == 7 || value.length == 9) || value.charCodeAt(0) != 35) { throw haxe_Exception.thrown("Invalid Color string: " + value); } if(value.length == 4) { var r = value.charAt(1); var g = value.charAt(2); var b = value.charAt(3); value = "#" + r + r + g + g + b + b; } var colorValue = Std.parseInt("0x" + HxOverrides.substr(value,1,null)); if(value.length == 7) { colorValue += -16777216; } return kha_Color._new(colorValue | 0); }; kha_Color._new = function(value) { var this1 = value; return this1; }; kha_Color.get_value = function(this1) { return this1; }; kha_Color.set_value = function(this1,value) { this1 = value; return this1; }; kha_Color.get_Rb = function(this1) { return (this1 & 16711680) >>> 16; }; kha_Color.get_Gb = function(this1) { return (this1 & 65280) >>> 8; }; kha_Color.get_Bb = function(this1) { return this1 & 255; }; kha_Color.get_Ab = function(this1) { return this1 >>> 24; }; kha_Color.set_Rb = function(this1,i) { this1 = this1 >>> 24 << 24 | i << 16 | (this1 & 65280) >>> 8 << 8 | this1 & 255; return i; }; kha_Color.set_Gb = function(this1,i) { this1 = this1 >>> 24 << 24 | (this1 & 16711680) >>> 16 << 16 | i << 8 | this1 & 255; return i; }; kha_Color.set_Bb = function(this1,i) { this1 = this1 >>> 24 << 24 | (this1 & 16711680) >>> 16 << 16 | (this1 & 65280) >>> 8 << 8 | i; return i; }; kha_Color.set_Ab = function(this1,i) { this1 = i << 24 | (this1 & 16711680) >>> 16 << 16 | (this1 & 65280) >>> 8 << 8 | this1 & 255; return i; }; kha_Color.get_R = function(this1) { return ((this1 & 16711680) >>> 16) * 0.00392156862745098; }; kha_Color.get_G = function(this1) { return ((this1 & 65280) >>> 8) * 0.00392156862745098; }; kha_Color.get_B = function(this1) { return (this1 & 255) * 0.00392156862745098; }; kha_Color.get_A = function(this1) { return (this1 >>> 24) * 0.00392156862745098; }; kha_Color.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.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.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.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_Display = function(num,isPrimary) { this.num = num; this.isPrimary = isPrimary; }; $hxClasses["kha.Display"] = kha_Display; kha_Display.__name__ = true; kha_Display.__properties__ = {get_all:"get_all",get_primary:"get_primary"}; kha_Display.init = function() { if(kha_Display.displays == null) { kha_Display.displays = []; var _g = 0; var _g1 = Krom.displayCount(); while(_g < _g1) { var i = _g++; kha_Display.displays.push(new kha_Display(i,Krom.displayIsPrimary(i))); } } }; kha_Display.get_primary = function() { kha_Display.init(); var _g = 0; var _g1 = kha_Display.displays; while(_g < _g1.length) { var display = _g1[_g]; ++_g; if(display.isPrimary) { return display; } } return null; }; kha_Display.get_all = function() { kha_Display.init(); return kha_Display.displays; }; kha_Display.prototype = { num: null ,isPrimary: null ,get_available: function() { return true; } ,get_name: function() { return "Display"; } ,get_x: function() { return Krom.displayX(this.num); } ,get_y: function() { return Krom.displayY(this.num); } ,get_width: function() { return Krom.displayWidth(this.num); } ,get_height: function() { return Krom.displayHeight(this.num); } ,get_frequency: function() { return 60; } ,get_pixelsPerInch: function() { return Krom.screenDpi(); } ,get_modes: function() { return []; } ,__class__: kha_Display ,__properties__: {get_modes:"get_modes",get_pixelsPerInch:"get_pixelsPerInch",get_frequency:"get_frequency",get_height:"get_height",get_width:"get_width",get_y:"get_y",get_x:"get_x",get_name:"get_name",get_available:"get_available"} }; var kha_DisplayMode = function(width,height,frequency,bitsPerPixel) { this.width = width; this.height = height; this.frequency = frequency; this.bitsPerPixel = bitsPerPixel; }; $hxClasses["kha.DisplayMode"] = kha_DisplayMode; kha_DisplayMode.__name__ = true; kha_DisplayMode.prototype = { width: null ,height: null ,frequency: null ,bitsPerPixel: null ,__class__: kha_DisplayMode }; 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($window,g1,g2,g4) { this.window = $window; 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 = { window: null ,graphics1: null ,graphics2: null ,graphics4: null ,init: function(g1,g2,g4) { this.graphics1 = g1; this.graphics2 = g2; this.graphics4 = g4; } ,get_g1: function() { return this.graphics1; } ,get_g2: function() { return this.graphics2; } ,get_g4: function() { return this.graphics4; } ,width: null ,get_width: function() { return kha_System.windowWidth(this.window); } ,height: null ,get_height: function() { return kha_System.windowHeight(this.window); } ,__class__: kha_Framebuffer ,__properties__: {get_height:"get_height",get_width:"get_width",get_g4:"get_g4",get_g2:"get_g2",get_g1:"get_g1"} }; var kha_FramebufferOptions = function(frequency,verticalSync,colorBufferBits,depthBufferBits,stencilBufferBits,samplesPerPixel) { if(samplesPerPixel == null) { samplesPerPixel = 1; } if(stencilBufferBits == null) { stencilBufferBits = 8; } if(depthBufferBits == null) { depthBufferBits = 16; } if(colorBufferBits == null) { colorBufferBits = 32; } if(verticalSync == null) { verticalSync = true; } if(frequency == null) { frequency = 60; } this.samplesPerPixel = 1; this.stencilBufferBits = 8; this.depthBufferBits = 16; this.colorBufferBits = 32; this.verticalSync = true; this.frequency = 60; this.frequency = frequency; this.verticalSync = verticalSync; this.colorBufferBits = colorBufferBits; this.depthBufferBits = depthBufferBits; this.stencilBufferBits = stencilBufferBits; this.samplesPerPixel = samplesPerPixel; }; $hxClasses["kha.FramebufferOptions"] = kha_FramebufferOptions; kha_FramebufferOptions.__name__ = true; kha_FramebufferOptions.prototype = { frequency: null ,verticalSync: null ,colorBufferBits: null ,depthBufferBits: null ,stencilBufferBits: null ,samplesPerPixel: null ,__class__: kha_FramebufferOptions }; var kha_Resource = function() { }; $hxClasses["kha.Resource"] = kha_Resource; kha_Resource.__name__ = true; kha_Resource.__isInterface__ = true; kha_Resource.prototype = { unload: null ,__class__: kha_Resource }; var kha_Image = function(texture) { this.pixels = null; this.texture_ = texture; }; $hxClasses["kha.Image"] = kha_Image; kha_Image.__name__ = true; kha_Image.__interfaces__ = [kha_Resource,kha_Canvas]; kha_Image.__properties__ = {get_nonPow2Supported:"get_nonPow2Supported",get_maxSize:"get_maxSize"}; kha_Image.getRenderTargetFormat = function(format) { switch(format) { case 0: return 0; case 1: return 5; case 2: return 3; case 3: return 4; case 4: return 1; case 5: return 2; case 6: return 6; default: return 0; } }; kha_Image.getDepthBufferBits = function(depthAndStencil) { switch(depthAndStencil) { case 0: return -1; case 1: return 24; case 2: return 24; case 3: return 24; case 4: return 32; case 5: return 16; } }; kha_Image.getStencilBufferBits = function(depthAndStencil) { switch(depthAndStencil) { case 0: return -1; case 1: return -1; case 2: return 8; case 3: return 8; case 4: return 8; case 5: return 0; } }; kha_Image.getTextureFormat = function(format) { switch(format) { case 0: return 0; case 2: return 3; case 4: return 4; case 5: return 5; case 6: return 7; default: return 1; } }; kha_Image._fromTexture = function(texture) { return new kha_Image(texture); }; kha_Image.fromBytes = function(bytes,width,height,format,usage,readable) { if(readable == null) { readable = false; } if(format == null) { format = 0; } var image = new kha_Image(null); image.myFormat = format; image.texture_ = Krom.createTextureFromBytes(bytes.b.bufferValue,width,height,kha_Image.getTextureFormat(format),readable); return image; }; kha_Image.fromBytes3D = function(bytes,width,height,depth,format,usage,readable) { if(readable == null) { readable = false; } if(format == null) { format = 0; } var image = new kha_Image(null); image.myFormat = format; image.texture_ = Krom.createTextureFromBytes3D(bytes.b.bufferValue,width,height,depth,kha_Image.getTextureFormat(format),readable); return image; }; kha_Image.fromEncodedBytes = function(bytes,format,doneCallback,errorCallback,readable) { if(readable == null) { readable = false; } var image = new kha_Image(null); image.texture_ = Krom.createTextureFromEncodedBytes(bytes.b.bufferValue,format,readable); doneCallback(image); }; kha_Image.create = function(width,height,format,usage,readable) { if(readable == null) { readable = false; } if(format == null) { format = 0; } var image = new kha_Image(null); image.myFormat = format; image.texture_ = Krom.createTexture(width,height,kha_Image.getTextureFormat(format)); return image; }; kha_Image.create3D = function(width,height,depth,format,usage,readable) { if(readable == null) { readable = false; } if(format == null) { format = 0; } var image = new kha_Image(null); image.myFormat = format; image.texture_ = Krom.createTexture3D(width,height,depth,kha_Image.getTextureFormat(format)); return image; }; kha_Image.createRenderTarget = function(width,height,format,depthStencil,antiAliasingSamples) { if(antiAliasingSamples == null) { antiAliasingSamples = 1; } if(depthStencil == null) { depthStencil = 0; } if(format == null) { format = 0; } var image = new kha_Image(null); image.myFormat = format; image.renderTarget_ = Krom.createRenderTarget(width,height,kha_Image.getRenderTargetFormat(format),kha_Image.getDepthBufferBits(depthStencil),kha_Image.getStencilBufferBits(depthStencil)); return image; }; kha_Image.get_maxSize = function() { return 4096; }; kha_Image.get_nonPow2Supported = function() { return true; }; kha_Image.renderTargetsInvertedY = function() { return Krom.renderTargetsInvertedY(); }; kha_Image.formatByteSize = function(format) { switch(format) { 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; default: return 4; } }; kha_Image.prototype = { texture_: null ,renderTarget_: null ,myFormat: null ,readable: null ,graphics1: null ,graphics2: null ,graphics4: null ,isOpaque: function(x,y) { return false; } ,at: function(x,y) { return -16777216; } ,unload: function() { Krom.unloadImage(this); this.texture_ = null; this.renderTarget_ = null; } ,lock: function(level) { if(level == null) { level = 0; } return haxe_io_Bytes.ofData(Krom.lockTexture(this.texture_,level)); } ,unlock: function() { Krom.unlockTexture(this.texture_); } ,pixels: null ,getPixels: function() { if(this.renderTarget_ != null) { if(this.pixels == null) { this.pixels = new haxe_io_Bytes(new ArrayBuffer(kha_Image.formatByteSize(this.myFormat) * this.get_width() * this.get_height())); } Krom.getRenderTargetPixels(this.renderTarget_,this.pixels.b.bufferValue); return this.pixels; } else { return haxe_io_Bytes.ofData(Krom.getTexturePixels(this.texture_)); } } ,generateMipmaps: function(levels) { if(this.texture_ == null) { Krom.generateRenderTargetMipmaps(this.renderTarget_,levels); } else { Krom.generateTextureMipmaps(this.texture_,levels); } } ,setMipmaps: function(mipmaps) { Krom.setMipmaps(this.texture_,mipmaps); } ,setDepthStencilFrom: function(image) { Krom.setDepthStencilFrom(this.renderTarget_,image.renderTarget_); } ,clear: function(x,y,z,width,height,depth,color) { Krom.clearTexture(this.texture_,x,y,z,width,height,depth,color); } ,get_width: function() { if(this.texture_ == null) { return this.renderTarget_.width; } else { return this.texture_.width; } } ,get_height: function() { if(this.texture_ == null) { return this.renderTarget_.height; } else { return this.texture_.height; } } ,get_depth: function() { if(this.texture_ != null) { return this.texture_.depth; } else { return 1; } } ,get_format: function() { return this.myFormat; } ,get_realWidth: function() { if(this.texture_ == null) { return this.renderTarget_.width; } else { return this.texture_.realWidth; } } ,get_realHeight: function() { if(this.texture_ == null) { return this.renderTarget_.height; } else { return this.texture_.realHeight; } } ,get_stride: function() { return this.texture_.stride; } ,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_graphics4_Graphics2(this); } return this.graphics2; } ,get_g4: function() { if(this.graphics4 == null) { this.graphics4 = new kha_krom_Graphics(this); } return this.graphics4; } ,__class__: kha_Image ,__properties__: {get_g4:"get_g4",get_g2:"get_g2",get_g1:"get_g1",get_stride:"get_stride",get_realHeight:"get_realHeight",get_realWidth:"get_realWidth",get_format:"get_format",get_depth:"get_depth",get_height:"get_height",get_width:"get_width"} }; 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,1); var bytes = this.texture.lock(); var pos = 0; var _g = 0; var _g1 = height; while(_g < _g1) { var y = _g++; var _g2 = 0; var _g3 = width; while(_g2 < _g3) { var x = _g2++; var v = pixels.readU8(pos); bytes.b[pos] = v; ++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(q,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); 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(this.chars.length == 0) { return 0; } var offset = kha_KravurImage.charBlocks[0]; if(charIndex < offset) { return this.chars[0].xadvance; } var _g = 1; var _g1 = kha_KravurImage.charBlocks.length / 2 | 0; while(_g < _g1) { var i = _g++; var prevEnd = kha_KravurImage.charBlocks[i * 2 - 1]; var start = kha_KravurImage.charBlocks[i * 2]; if(charIndex > start - 1) { offset += start - 1 - prevEnd; } } if(charIndex - offset >= this.chars.length) { return this.chars[0].xadvance; } return this.chars[charIndex - offset].xadvance; } ,getHeight: function() { return this.mySize; } ,stringWidth: function(str) { var width = 0; var _g = 0; var _g1 = str.length; while(_g < _g1) { var c = _g++; width += this.getCharWidth(HxOverrides.cca(str,c)); } return width; } ,charactersWidth: function(characters,start,length) { var width = 0; var _g = start; var _g1 = start + length; while(_g < _g1) { var i = _g++; width += this.getCharWidth(characters[i]); } return width; } ,getBaselinePosition: function() { return this.baseline; } ,__class__: kha_KravurImage }; var kha_Kravur = function(blob,fontIndex) { if(fontIndex == null) { fontIndex = 0; } this.images = new haxe_ds_IntMap(); this.blob = blob; this.fontIndex = fontIndex; }; $hxClasses["kha.Kravur"] = kha_Kravur; kha_Kravur.__name__ = true; kha_Kravur.__interfaces__ = [kha_Resource]; kha_Kravur.fromBytes = function(bytes,fontIndex) { if(fontIndex == null) { fontIndex = 0; } return new kha_Kravur(kha_internal_BytesBlob.fromBytes(bytes),fontIndex); }; kha_Kravur.prototype = { oldGlyphs: null ,blob: null ,images: null ,fontIndex: null ,_get: function(fontSize) { var glyphs = kha_graphics2_Graphics.fontGlyphs; if(glyphs != this.oldGlyphs) { this.oldGlyphs = glyphs; kha_KravurImage.charBlocks = [glyphs[0]]; var nextChar = kha_KravurImage.charBlocks[0] + 1; var _g = 1; var _g1 = glyphs.length; while(_g < _g1) { var i = _g++; if(glyphs[i] != nextChar) { kha_KravurImage.charBlocks.push(glyphs[i - 1]); kha_KravurImage.charBlocks.push(glyphs[i]); nextChar = glyphs[i] + 1; } else { ++nextChar; } } kha_KravurImage.charBlocks.push(glyphs[glyphs.length - 1]); } var imageIndex = this.fontIndex * 10000000 + fontSize * 10000 + glyphs.length; if(!this.images.h.hasOwnProperty(imageIndex)) { var width = 64; var height = 32; var this1 = new Array(glyphs.length); var baked = this1; var _g = 0; var _g1 = baked.length; while(_g < _g1) { var i = _g++; baked[i] = new kha_graphics2_truetype_Stbtt_$bakedchar(); } var pixels = null; var offset = kha_graphics2_truetype_StbTruetype.stbtt_GetFontOffsetForIndex(this.blob,this.fontIndex); if(offset == -1) { offset = kha_graphics2_truetype_StbTruetype.stbtt_GetFontOffsetForIndex(this.blob,0); } 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,offset,fontSize,pixels,width,height,glyphs,baked); } var info = new kha_graphics2_truetype_Stbtt_$fontinfo(); kha_graphics2_truetype_StbTruetype.stbtt_InitFont(info,this.blob,offset); 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[imageIndex] = image; return image; } return this.images.h[imageIndex]; } ,height: function(fontSize) { return this._get(fontSize).getHeight(); } ,width: function(fontSize,str) { return this._get(fontSize).stringWidth(str); } ,widthOfCharacters: function(fontSize,characters,start,length) { return this._get(fontSize).charactersWidth(characters,start,length); } ,baseline: function(fontSize) { return this._get(fontSize).getBaselinePosition(); } ,setFontIndex: function(fontIndex) { this.fontIndex = fontIndex; } ,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"]; }; kha_LoaderImpl.loadImageFromDescription = function(desc,done,failed) { var readable = Object.prototype.hasOwnProperty.call(desc,"readable") && desc.readable; var texture = Krom.loadImage(desc.files[0],readable); if(texture == null) { failed({ url : desc.files.join(","), error : "Could not load image(s)"}); } else { done(kha_Image._fromTexture(texture)); } }; kha_LoaderImpl.getSoundFormats = function() { return ["wav","ogg"]; }; kha_LoaderImpl.loadSoundFromDescription = function(desc,done,failed) { var sound = Krom.loadSound(desc.files[0]); if(sound == null) { failed({ url : desc.files.join(","), error : "Could not load sound(s)"}); } else { done(new kha_krom_Sound(haxe_io_Bytes.ofData(sound))); } }; kha_LoaderImpl.getVideoFormats = function() { return ["webm"]; }; kha_LoaderImpl.loadVideoFromDescription = function(desc,done,failed) { failed({ url : desc.files.join(","), error : "Could not load video(s), Krom currently does not support loading videos"}); }; kha_LoaderImpl.loadBlobFromDescription = function(desc,done,failed) { var blob = Krom.loadBlob(desc.files[0]); if(blob == null) { failed({ url : desc.files.join(","), error : "Could not load blob(s)"}); } else { done(new kha_internal_BytesBlob(haxe_io_Bytes.ofData(blob))); } }; kha_LoaderImpl.loadFontFromDescription = function(desc,done,failed) { kha_LoaderImpl.loadBlobFromDescription(desc,function(blob) { done(new kha_Kravur(blob)); },function(a) { a.error = "Could not load font(s)"; failed(a); }); }; 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 _g = 0; var _g1 = kha_Scheduler.DIF_COUNT; while(_g < _g1) { var i = _g++; kha_Scheduler.deltas[i] = 0; } kha_Scheduler.stopped = true; kha_Scheduler.frame_tasks_sorted = true; kha_Scheduler.current = kha_Scheduler.lastTime = kha_Scheduler.lastFrameEnd = 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_Window.get(0).get_vSynced(); var hz = kha_Display.get_primary() != null ? kha_Display.get_primary().get_frequency() : 60; 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 _g = 0; var _g1 = kha_Scheduler.DIF_COUNT; while(_g < _g1) { var i = _g++; kha_Scheduler.deltas[i] = 0; } if(restartTimers) { var _g = 0; var _g1 = kha_Scheduler.timeTasks; while(_g < _g1.length) { var timeTask = _g1[_g]; ++_g; timeTask.paused = false; } var _g = 0; var _g1 = kha_Scheduler.frameTasks; while(_g < _g1.length) { var frameTask = _g1[_g]; ++_g; frameTask.paused = false; } } }; kha_Scheduler.stop = function() { kha_Scheduler.stopped = true; }; kha_Scheduler.isStopped = function() { return kha_Scheduler.stopped; }; kha_Scheduler.warpTimeTasksBack = 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.warp = function(time) { if(time < kha_Scheduler.lastTime) { kha_Scheduler.current = time; kha_Scheduler.lastTime = time; kha_Scheduler.lastFrameEnd = time; kha_Scheduler.warpTimeTasksBack(time,kha_Scheduler.outdatedTimeTasks); kha_Scheduler.warpTimeTasksBack(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 _g = 0; var _g1 = kha_Scheduler.timeTasksScratchpad; while(_g < _g1.length) { var task = _g1[_g]; ++_g; HxOverrides.remove(kha_Scheduler.outdatedTimeTasks,task); } var _g = 0; var _g1 = kha_Scheduler.timeTasksScratchpad; while(_g < _g1.length) { var task = _g1[_g]; ++_g; kha_Scheduler.insertSorted(kha_Scheduler.timeTasks,task); } while(kha_Scheduler.timeTasksScratchpad.length > 0) HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0]); } else if(time > kha_Scheduler.lastTime) { kha_Scheduler.startTime -= time - kha_Scheduler.lastTime; kha_Scheduler.current = time; kha_Scheduler.lastTime = time; kha_Scheduler.lastFrameEnd = time; kha_Scheduler.executeTimeTasks(time); } }; kha_Scheduler.executeFrame = function() { var real = kha_Scheduler.realTime(); var now = real - kha_Scheduler.startTime; var delta = now - kha_Scheduler.lastTime; var frameEnd = kha_Scheduler.lastFrameEnd; if(delta >= 0) { if(kha_netsync_Session.the() == null) { if(delta > kha_Scheduler.maxframetime) { kha_Scheduler.startTime += delta - kha_Scheduler.maxframetime; now = real - kha_Scheduler.startTime; delta = kha_Scheduler.maxframetime; frameEnd += delta; } else if(kha_Scheduler.vsync) { var frames = Math.round(delta / kha_Scheduler.onedifhz); if(frames < 1) { return; } var realdif = frames * kha_Scheduler.onedifhz; delta = realdif; var _g = 0; var _g1 = kha_Scheduler.DIF_COUNT - 2; while(_g < _g1) { var i = _g++; 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 _g = 0; var _g1 = kha_Scheduler.DIF_COUNT - 1; while(_g < _g1) { var i = _g++; kha_Scheduler.deltas[i] = kha_Scheduler.deltas[i + 1]; } kha_Scheduler.deltas[kha_Scheduler.DIF_COUNT - 1] = delta; var next = 0; var _g = 0; var _g1 = kha_Scheduler.DIF_COUNT; while(_g < _g1) { var i = _g++; next += kha_Scheduler.deltas[i]; } next /= kha_Scheduler.DIF_COUNT; frameEnd += next; } } else { frameEnd += delta; } kha_Scheduler.lastTime = now; if(!kha_Scheduler.stopped) { kha_Scheduler.lastFrameEnd = frameEnd; } var _g = 0; var _g1 = kha_Scheduler.pausedTimeTasks; while(_g < _g1.length) { var pausedTask = _g1[_g]; ++_g; pausedTask.next += delta; } if(kha_Scheduler.stopped) { var _g = 0; var _g1 = kha_Scheduler.timeTasks; while(_g < _g1.length) { var timeTask = _g1[_g]; ++_g; timeTask.next += delta; } } kha_Scheduler.executeTimeTasks(frameEnd); var _g = 0; var _g1 = kha_Scheduler.outdatedTimeTasks; while(_g < _g1.length) { var task = _g1[_g]; ++_g; if(task.next < frameEnd - 10.0) { kha_Scheduler.timeTasksScratchpad.push(task); } } var _g = 0; var _g1 = kha_Scheduler.timeTasksScratchpad; while(_g < _g1.length) { var task = _g1[_g]; ++_g; HxOverrides.remove(kha_Scheduler.outdatedTimeTasks,task); } while(kha_Scheduler.timeTasksScratchpad.length > 0) HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0]); } kha_Scheduler.current = frameEnd; kha_Scheduler.sortFrameTasks(); var _g = 0; var _g1 = kha_Scheduler.frameTasks; while(_g < _g1.length) { var frameTask = _g1[_g]; ++_g; if(!kha_Scheduler.stopped && !frameTask.paused && frameTask.active) { if(!frameTask.task()) { frameTask.active = false; } } } var _g = 0; var _g1 = kha_Scheduler.frameTasks; while(_g < _g1.length) { var frameTask = _g1[_g]; ++_g; if(!frameTask.active) { kha_Scheduler.toDeleteFrame.push(frameTask); } } while(kha_Scheduler.toDeleteFrame.length > 0) HxOverrides.remove(kha_Scheduler.frameTasks,kha_Scheduler.toDeleteFrame.pop()); }; kha_Scheduler.executeTimeTasks = function(until) { while(kha_Scheduler.timeTasks.length > 0) { kha_Scheduler.activeTimeTask = kha_Scheduler.timeTasks[0]; if(kha_Scheduler.activeTimeTask.next <= until) { kha_Scheduler.current = kha_Scheduler.activeTimeTask.next; 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,until); } } else { kha_Scheduler.activeTimeTask.active = false; kha_Scheduler.archiveTimeTask(kha_Scheduler.activeTimeTask,until); } } else { break; } } kha_Scheduler.activeTimeTask = null; }; 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 _g = 0; var _g1 = kha_Scheduler.DIF_COUNT; while(_g < _g1) { var i = _g++; kha_Scheduler.deltas[i] = 0; } kha_Scheduler.current = 0; kha_Scheduler.lastTime = 0; kha_Scheduler.lastFrameEnd = 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 _g = 0; var _g1 = kha_Scheduler.pausedTimeTasks; while(_g < _g1.length) { var timeTask = _g1[_g]; ++_g; if(timeTask.id == id) { return timeTask; } } 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) { if(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); } } } else { var _g = 0; var _g1 = kha_Scheduler.pausedTimeTasks; 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 _g = 0; var _g1 = kha_Scheduler.timeTasksScratchpad; while(_g < _g1.length) { var timeTask = _g1[_g]; ++_g; HxOverrides.remove(kha_Scheduler.timeTasks,timeTask); } 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 _g = 0; var _g1 = list.length; while(_g < _g1) { var i = _g++; 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_Shaders = function() { }; $hxClasses["kha.Shaders"] = kha_Shaders; kha_Shaders.__name__ = true; kha_Shaders.init = function() { var blobs = []; var data = Reflect.field(kha_Shaders,"painter_colored_fragData" + 0); 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.glsl"]); var blobs = []; var data = Reflect.field(kha_Shaders,"painter_colored_vertData" + 0); var bytes = haxe_Unserializer.run(data); blobs.push(kha_internal_BytesBlob.fromBytes(bytes)); kha_Shaders.painter_colored_vert = new kha_graphics4_VertexShader(blobs,["painter-colored.vert.glsl"]); var blobs = []; var data = Reflect.field(kha_Shaders,"painter_image_fragData" + 0); var bytes = haxe_Unserializer.run(data); blobs.push(kha_internal_BytesBlob.fromBytes(bytes)); kha_Shaders.painter_image_frag = new kha_graphics4_FragmentShader(blobs,["painter-image.frag.glsl"]); var blobs = []; var data = Reflect.field(kha_Shaders,"painter_image_vertData" + 0); var bytes = haxe_Unserializer.run(data); blobs.push(kha_internal_BytesBlob.fromBytes(bytes)); kha_Shaders.painter_image_vert = new kha_graphics4_VertexShader(blobs,["painter-image.vert.glsl"]); var blobs = []; var data = Reflect.field(kha_Shaders,"painter_text_fragData" + 0); var bytes = haxe_Unserializer.run(data); blobs.push(kha_internal_BytesBlob.fromBytes(bytes)); kha_Shaders.painter_text_frag = new kha_graphics4_FragmentShader(blobs,["painter-text.frag.glsl"]); var blobs = []; var data = Reflect.field(kha_Shaders,"painter_text_vertData" + 0); var bytes = haxe_Unserializer.run(data); blobs.push(kha_internal_BytesBlob.fromBytes(bytes)); kha_Shaders.painter_text_vert = new kha_graphics4_VertexShader(blobs,["painter-text.vert.glsl"]); var blobs = []; var data = Reflect.field(kha_Shaders,"painter_video_fragData" + 0); var bytes = haxe_Unserializer.run(data); blobs.push(kha_internal_BytesBlob.fromBytes(bytes)); kha_Shaders.painter_video_frag = new kha_graphics4_FragmentShader(blobs,["painter-video.frag.glsl"]); var blobs = []; var data = Reflect.field(kha_Shaders,"painter_video_vertData" + 0); var bytes = haxe_Unserializer.run(data); blobs.push(kha_internal_BytesBlob.fromBytes(bytes)); kha_Shaders.painter_video_vert = new kha_graphics4_VertexShader(blobs,["painter-video.vert.glsl"]); }; var kha_Sound = function() { this.sampleRate = 0; this.channels = 0; this.length = 0; }; $hxClasses["kha.Sound"] = kha_Sound; kha_Sound.__name__ = true; kha_Sound.__interfaces__ = [kha_Resource]; kha_Sound.prototype = { compressedData: null ,uncompressedData: null ,length: null ,channels: null ,sampleRate: null ,uncompress: function(done) { if(this.uncompressedData != null) { done(); return; } 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) { this.length = count / kha_audio2_Audio.samplesPerSecond; this.uncompressedData = kha_arrays_Float32Array._new(count * 2); var _g = 0; var _g1 = count; while(_g < _g1) { var i = _g++; var this1 = this.uncompressedData; var v = soundBytes.getFloat(i * 4); this1.setFloat32(i * 2 * 4,v,true); var this2 = this.uncompressedData; var v1 = soundBytes.getFloat(i * 4); this2.setFloat32((i * 2 + 1) * 4,v1,true); } } else { this.length = count / 2 / kha_audio2_Audio.samplesPerSecond; this.uncompressedData = kha_arrays_Float32Array._new(count); var _g = 0; var _g1 = count; while(_g < _g1) { var i = _g++; var this1 = this.uncompressedData; var v = soundBytes.getFloat(i * 4); this1.setFloat32(i * 4,v,true); } } this.channels = header.channel; this.sampleRate = header.sampleRate; this.compressedData = null; done(); } ,unload: function() { this.compressedData = null; this.uncompressedData = null; } ,__class__: kha_Sound }; var kha_SystemOptions = function(title,width,height,$window,framebuffer) { if(height == null) { height = -1; } if(width == null) { width = -1; } if(title == null) { title = "Kha"; } this.framebuffer = null; this.window = null; this.height = -1; this.width = -1; this.title = "Kha"; this.title = title; this.window = $window == null ? new kha_WindowOptions(null,-1,-1,800,600,-1,true,null,0) : $window; if(width > 0) { this.window.width = width; this.width = width; } else { this.width = this.window.width; } if(height > 0) { this.window.height = height; this.height = height; } else { this.height = this.window.height; } if(this.window.title == null) { this.window.title = title; } this.framebuffer = framebuffer == null ? new kha_FramebufferOptions(60,true,32,16,8,1) : framebuffer; }; $hxClasses["kha.SystemOptions"] = kha_SystemOptions; kha_SystemOptions.__name__ = true; kha_SystemOptions.prototype = { title: null ,width: null ,height: null ,window: null ,framebuffer: null ,__class__: kha_SystemOptions }; var kha_System = function() { }; $hxClasses["kha.System"] = kha_System; kha_System.__name__ = true; kha_System.__properties__ = {get_refreshRate:"get_refreshRate",get_vsync:"get_vsync",get_language:"get_language",get_systemId:"get_systemId",get_screenRotation:"get_screenRotation",get_time:"get_time",get_title:"get_title"}; kha_System.init = function(options,callback) { var features = 0; if(options.resizable) { features |= 1; } if(options.maximizable) { features |= 4; } if(options.minimizable) { features |= 2; } var newOptions = new kha_SystemOptions(options.title,options.width,options.height,new kha_WindowOptions(null,-1,-1,800,600,-1,true,features,options.windowMode),new kha_FramebufferOptions(60,options.vSync,32,16,8,options.samplesPerPixel)); kha_System.start(newOptions,function(_) { callback(); }); }; kha_System.start = function(options,callback) { kha_System.theTitle = options.title; kha_SystemImpl.init(options,callback); }; kha_System.get_title = function() { return kha_System.theTitle; }; kha_System.notifyOnRender = function(listener,id) { if(id == null) { id = 0; } kha_System.renderListeners.push(function(framebuffers) { if(id < framebuffers.length) { listener(framebuffers[id]); } }); }; kha_System.notifyOnFrames = function(listener) { kha_System.renderListeners.push(listener); }; kha_System.removeFramesListener = function(listener) { HxOverrides.remove(kha_System.renderListeners,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.removeApplicationStateListeners = function(foregroundListener,resumeListener,pauseListener,backgroundListener,shutdownListener) { if(foregroundListener != null) { HxOverrides.remove(kha_System.foregroundListeners,foregroundListener); } if(resumeListener != null) { HxOverrides.remove(kha_System.resumeListeners,resumeListener); } if(pauseListener != null) { HxOverrides.remove(kha_System.pauseListeners,pauseListener); } if(backgroundListener != null) { HxOverrides.remove(kha_System.backgroundListeners,backgroundListener); } if(shutdownListener != null) { HxOverrides.remove(kha_System.shutdownListeners,shutdownListener); } }; kha_System.notifyOnDropFiles = function(dropFilesListener) { kha_System.dropFilesListeners.push(dropFilesListener); }; kha_System.removeDropListener = function(listener) { HxOverrides.remove(kha_System.dropFilesListeners,listener); }; kha_System.notifyOnCutCopyPaste = function(cutListener,copyListener,pasteListener) { kha_System.cutListener = cutListener; kha_System.copyListener = copyListener; kha_System.pasteListener = pasteListener; }; kha_System.notifyOnLoginLogout = function(loginListener,logoutListener) { kha_System.loginListener = loginListener; kha_System.logoutListener = logoutListener; }; kha_System.login = function() { kha_SystemImpl.login(); }; kha_System.waitingForLogin = function() { return kha_SystemImpl.waitingForLogin(); }; kha_System.allowUserChange = function() { kha_SystemImpl.allowUserChange(); }; kha_System.disallowUserChange = function() { kha_SystemImpl.disallowUserChange(); }; kha_System.render = function(framebuffers) { var _g = 0; var _g1 = kha_System.renderListeners; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(framebuffers); } }; 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.dropFiles = function(filePath) { var _g = 0; var _g1 = kha_System.dropFilesListeners; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(filePath); } }; kha_System.get_time = function() { return kha_SystemImpl.getTime(); }; kha_System.windowWidth = function($window) { if($window == null) { $window = 0; } return kha_Window.get($window).get_width(); }; kha_System.windowHeight = function($window) { if($window == null) { $window = 0; } return kha_Window.get($window).get_height(); }; kha_System.get_screenRotation = function() { return 0; }; kha_System.get_systemId = function() { return kha_SystemImpl.getSystemId(); }; kha_System.vibrate = function(ms) { kha_SystemImpl.vibrate(ms); }; kha_System.get_language = function() { return kha_SystemImpl.getLanguage(); }; kha_System.stop = function() { return kha_SystemImpl.requestShutdown(); }; kha_System.loadUrl = function(url) { kha_SystemImpl.loadUrl(url); }; kha_System.canSwitchFullscreen = function() { return true; }; kha_System.isFullscreen = function() { if(kha_Window.get(0).get_mode() != 1) { return kha_Window.get(0).get_mode() == 2; } else { return true; } }; kha_System.requestFullscreen = function() { kha_Window.get(0).set_mode(1); }; kha_System.exitFullscreen = function() { kha_Window.get(0).set_mode(0); }; kha_System.notifyOnFullscreenChange = function(func,error) { }; kha_System.removeFullscreenListener = function(func,error) { }; kha_System.changeResolution = function(width,height) { }; kha_System.requestShutdown = function() { kha_System.stop(); }; kha_System.get_vsync = function() { return kha_Window.get(0).get_vSynced(); }; kha_System.get_refreshRate = function() { return kha_Display.get_primary().get_frequency(); }; kha_System.screenDpi = function() { return kha_Display.get_primary().get_pixelsPerInch(); }; kha_System.safeZone = function() { return kha_SystemImpl.safeZone(); }; kha_System.automaticSafeZone = function() { return kha_SystemImpl.automaticSafeZone(); }; kha_System.setSafeZone = function(value) { kha_SystemImpl.setSafeZone(value); }; kha_System.unlockAchievement = function(id) { kha_SystemImpl.unlockAchievement(id); }; var kha_SystemImpl = function() { }; $hxClasses["kha.SystemImpl"] = kha_SystemImpl; kha_SystemImpl.__name__ = true; kha_SystemImpl.renderCallback = function() { kha_Scheduler.executeFrame(); kha_System.render([kha_SystemImpl.framebuffer]); }; kha_SystemImpl.dropFilesCallback = function(filePath) { kha_System.dropFiles(filePath); }; kha_SystemImpl.copyCallback = function() { if(kha_System.copyListener != null) { return kha_System.copyListener(); } else { return null; } }; kha_SystemImpl.cutCallback = function() { if(kha_System.cutListener != null) { return kha_System.cutListener(); } else { return null; } }; kha_SystemImpl.pasteCallback = function(data) { if(kha_System.pasteListener != null) { kha_System.pasteListener(data); } }; kha_SystemImpl.foregroundCallback = function() { kha_System.foreground(); }; kha_SystemImpl.resumeCallback = function() { kha_System.resume(); }; kha_SystemImpl.pauseCallback = function() { kha_System.pause(); }; kha_SystemImpl.backgroundCallback = function() { kha_System.background(); }; kha_SystemImpl.shutdownCallback = function() { kha_System.shutdown(); }; kha_SystemImpl.keyboardDownCallback = function(code) { kha_SystemImpl.keyboard.sendDownEvent(code); }; kha_SystemImpl.keyboardUpCallback = function(code) { kha_SystemImpl.keyboard.sendUpEvent(code); }; kha_SystemImpl.keyboardPressCallback = function(charCode) { kha_SystemImpl.keyboard.sendPressEvent(String.fromCodePoint(charCode)); }; kha_SystemImpl.mouseDownCallback = function(button,x,y) { kha_SystemImpl.mouse.sendDownEvent(0,button,x,y); }; kha_SystemImpl.mouseUpCallback = function(button,x,y) { kha_SystemImpl.mouse.sendUpEvent(0,button,x,y); }; kha_SystemImpl.mouseMoveCallback = function(x,y,mx,my) { kha_SystemImpl.mouse.sendMoveEvent(0,x,y,mx,my); }; kha_SystemImpl.mouseWheelCallback = function(delta) { kha_SystemImpl.mouse.sendWheelEvent(0,delta); }; kha_SystemImpl.penDownCallback = function(x,y,pressure) { kha_SystemImpl.pen.sendDownEvent(0,x,y,pressure); }; kha_SystemImpl.penUpCallback = function(x,y,pressure) { kha_SystemImpl.pen.sendUpEvent(0,x,y,pressure); }; kha_SystemImpl.penMoveCallback = function(x,y,pressure) { kha_SystemImpl.pen.sendMoveEvent(0,x,y,pressure); }; kha_SystemImpl.gamepadAxisCallback = function(gamepad,axis,value) { kha_SystemImpl.gamepads[gamepad].sendAxisEvent(axis,value); }; kha_SystemImpl.gamepadButtonCallback = function(gamepad,button,value) { kha_SystemImpl.gamepads[gamepad].sendButtonEvent(button,value); }; kha_SystemImpl.audioCallback = function(samples) { kha_audio2_Audio._callCallback(samples); var buffer = kha_audio2_Audio.buffer; Krom.writeAudioBuffer(buffer.data.buffer,samples); }; kha_SystemImpl.init = function(options,callback) { Krom.init(options.title,options.width,options.height,options.framebuffer.samplesPerPixel,options.framebuffer.verticalSync,options.window.mode,options.window.windowFeatures,6); kha_SystemImpl.start = Krom.getTime(); haxe_Log.trace = function(v,infos) { var message = haxe_Log.formatOutput(v,infos); Krom.log(message); }; new kha_Window(0); kha_Scheduler.init(); kha_Shaders.init(); var g4 = new kha_krom_Graphics(); kha_SystemImpl.framebuffer = new kha_Framebuffer(0,null,null,g4); kha_SystemImpl.framebuffer.init(new kha_graphics2_Graphics1(kha_SystemImpl.framebuffer),new kha_graphics4_Graphics2(kha_SystemImpl.framebuffer),g4); Krom.setCallback(kha_SystemImpl.renderCallback); Krom.setDropFilesCallback(kha_SystemImpl.dropFilesCallback); Krom.setCutCopyPasteCallback(kha_SystemImpl.cutCallback,kha_SystemImpl.copyCallback,kha_SystemImpl.pasteCallback); Krom.setApplicationStateCallback(kha_SystemImpl.foregroundCallback,kha_SystemImpl.resumeCallback,kha_SystemImpl.pauseCallback,kha_SystemImpl.backgroundCallback,kha_SystemImpl.shutdownCallback); kha_SystemImpl.keyboard = new kha_input_Keyboard(); kha_SystemImpl.mouse = new kha_input_MouseImpl(); kha_SystemImpl.pen = new kha_input_Pen(); kha_SystemImpl.gamepads = []; var _g = 0; var _g1 = kha_SystemImpl.maxGamepads; while(_g < _g1) { var i = _g++; kha_SystemImpl.gamepads[i] = new kha_input_Gamepad(i); } Krom.setKeyboardDownCallback(kha_SystemImpl.keyboardDownCallback); Krom.setKeyboardUpCallback(kha_SystemImpl.keyboardUpCallback); Krom.setKeyboardPressCallback(kha_SystemImpl.keyboardPressCallback); Krom.setMouseDownCallback(kha_SystemImpl.mouseDownCallback); Krom.setMouseUpCallback(kha_SystemImpl.mouseUpCallback); Krom.setMouseMoveCallback(kha_SystemImpl.mouseMoveCallback); Krom.setMouseWheelCallback(kha_SystemImpl.mouseWheelCallback); Krom.setPenDownCallback(kha_SystemImpl.penDownCallback); Krom.setPenUpCallback(kha_SystemImpl.penUpCallback); Krom.setPenMoveCallback(kha_SystemImpl.penMoveCallback); Krom.setGamepadAxisCallback(kha_SystemImpl.gamepadAxisCallback); Krom.setGamepadButtonCallback(kha_SystemImpl.gamepadButtonCallback); kha_audio2_Audio._init(); kha_audio2_Audio1._init(); Krom.setAudioCallback(kha_SystemImpl.audioCallback); kha_Scheduler.start(); callback(kha_Window.get(0)); }; kha_SystemImpl.initEx = function(title,options,windowCallback,callback) { }; kha_SystemImpl.translateWindowMode = function(value) { if(value == null) { return 0; } switch(value) { case 0: return 0; case 1: return 1; case 2: return 2; } }; kha_SystemImpl.getScreenRotation = function() { return 0; }; kha_SystemImpl.getTime = function() { return Krom.getTime() - kha_SystemImpl.start; }; kha_SystemImpl.getVsync = function() { return true; }; kha_SystemImpl.getRefreshRate = function() { return 60; }; kha_SystemImpl.getSystemId = function() { return Krom.systemId(); }; kha_SystemImpl.vibrate = function(ms) { }; kha_SystemImpl.getLanguage = function() { return "en"; }; kha_SystemImpl.requestShutdown = function() { Krom.requestShutdown(); return true; }; kha_SystemImpl.getMouse = function(num) { return kha_SystemImpl.mouse; }; kha_SystemImpl.getPen = function(num) { return kha_SystemImpl.pen; }; kha_SystemImpl.getKeyboard = function(num) { return kha_SystemImpl.keyboard; }; kha_SystemImpl.lockMouse = function() { if(!kha_SystemImpl.isMouseLocked()) { Krom.lockMouse(); var _g = 0; var _g1 = kha_SystemImpl.mouseLockListeners; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(); } } }; kha_SystemImpl.unlockMouse = function() { if(kha_SystemImpl.isMouseLocked()) { Krom.unlockMouse(); var _g = 0; var _g1 = kha_SystemImpl.mouseLockListeners; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(); } } }; kha_SystemImpl.canLockMouse = function() { return Krom.canLockMouse(); }; kha_SystemImpl.isMouseLocked = function() { return Krom.isMouseLocked(); }; kha_SystemImpl.notifyOfMouseLockChange = function(func,error) { if(kha_SystemImpl.canLockMouse() && func != null) { kha_SystemImpl.mouseLockListeners.push(func); } }; kha_SystemImpl.removeFromMouseLockChange = function(func,error) { if(kha_SystemImpl.canLockMouse() && func != null) { HxOverrides.remove(kha_SystemImpl.mouseLockListeners,func); } }; kha_SystemImpl.hideSystemCursor = function() { Krom.showMouse(false); }; kha_SystemImpl.showSystemCursor = function() { Krom.showMouse(true); }; kha_SystemImpl.unload = function() { }; kha_SystemImpl.canSwitchFullscreen = function() { return false; }; kha_SystemImpl.isFullscreen = function() { return false; }; kha_SystemImpl.requestFullscreen = function() { }; kha_SystemImpl.exitFullscreen = function() { }; kha_SystemImpl.notifyOfFullscreenChange = function(func,error) { }; kha_SystemImpl.removeFromFullscreenChange = function(func,error) { }; kha_SystemImpl.changeResolution = function(width,height) { }; kha_SystemImpl.setKeepScreenOn = function(on) { }; kha_SystemImpl.loadUrl = function(url) { }; kha_SystemImpl.getGamepadId = function(index) { return "unknown"; }; kha_SystemImpl.getGamepadVendor = function(index) { return "unknown"; }; kha_SystemImpl.setGamepadRumble = function(index,leftAmount,rightAmount) { }; kha_SystemImpl.safeZone = function() { return 1.0; }; kha_SystemImpl.login = function() { }; kha_SystemImpl.automaticSafeZone = function() { return true; }; kha_SystemImpl.setSafeZone = function(value) { }; kha_SystemImpl.unlockAchievement = function(id) { }; kha_SystemImpl.waitingForLogin = function() { return false; }; kha_SystemImpl.disallowUserChange = function() { }; kha_SystemImpl.allowUserChange = function() { }; 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; } } ,update: function(dt) { } ,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 ,__properties__: {set_position:"set_position",get_position:"get_position"} }; var kha_Window = function(num) { this.num = num; kha_Window.windows.push(this); }; $hxClasses["kha.Window"] = kha_Window; kha_Window.__name__ = true; kha_Window.__properties__ = {get_all:"get_all"}; kha_Window.create = function(win,frame) { return null; }; kha_Window.destroy = function($window) { }; kha_Window.get = function(index) { return kha_Window.windows[index]; }; kha_Window.get_all = function() { return kha_Window.windows; }; kha_Window.prototype = { num: null ,windowTitle: null ,resize: function(width,height) { } ,move: function(x,y) { } ,changeWindowFeatures: function(features) { } ,changeFramebuffer: function(frame) { } ,get_x: function() { return 0; } ,set_x: function(value) { return 0; } ,get_y: function() { return 0; } ,set_y: function(value) { return 0; } ,get_width: function() { return Krom.windowWidth(this.num); } ,set_width: function(value) { return 800; } ,get_height: function() { return Krom.windowHeight(this.num); } ,set_height: function(value) { return 600; } ,get_mode: function() { return 0; } ,set_mode: function(mode) { return 0; } ,get_visible: function() { return true; } ,set_visible: function(value) { return true; } ,get_title: function() { return this.windowTitle; } ,set_title: function(value) { Krom.setWindowTitle(this.num,value); this.windowTitle = value; return this.windowTitle; } ,notifyOnResize: function(callback) { } ,get_vSynced: function() { return true; } ,__class__: kha_Window ,__properties__: {get_vSynced:"get_vSynced",set_title:"set_title",get_title:"get_title",set_visible:"set_visible",get_visible:"get_visible",set_mode:"set_mode",get_mode:"get_mode",set_height:"set_height",get_height:"get_height",set_width:"set_width",get_width:"get_width",set_y:"set_y",get_y:"get_y",set_x:"set_x",get_x:"get_x"} }; var kha_WindowFeatures = {}; kha_WindowFeatures._new = function(value) { var this1 = value; return this1; }; var kha_WindowOptions = function(title,x,y,width,height,display,visible,windowFeatures,mode) { if(mode == null) { mode = 0; } if(visible == null) { visible = true; } if(display == null) { display = -1; } if(height == null) { height = 600; } if(width == null) { width = 800; } if(y == null) { y = -1; } if(x == null) { x = -1; } this.mode = 0; this.windowFeatures = 1 | 4 | 2; this.visible = true; this.display = -1; this.height = 600; this.width = 800; this.y = -1; this.x = -1; this.title = null; this.title = title; this.x = x; this.y = y; this.width = width; this.height = height; this.display = display; this.visible = visible; this.windowFeatures = windowFeatures == null ? 1 | 4 | 2 : windowFeatures; this.mode = mode; }; $hxClasses["kha.WindowOptions"] = kha_WindowOptions; kha_WindowOptions.__name__ = true; kha_WindowOptions.prototype = { title: null ,x: null ,y: null ,width: null ,height: null ,display: null ,visible: null ,windowFeatures: null ,mode: null ,__class__: kha_WindowOptions }; var kha_arrays_ByteArray = {}; kha_arrays_ByteArray.__properties__ = {get_buffer:"get_buffer"}; kha_arrays_ByteArray.get_buffer = function(this1) { return this1.buffer; }; kha_arrays_ByteArray._new = function(buffer,byteOffset,byteLength) { var this1 = new DataView(buffer,byteOffset,byteLength); return this1; }; kha_arrays_ByteArray.make = function(byteLength) { return kha_arrays_ByteArray._new(kha_arrays_ByteBuffer.create(byteLength)); }; kha_arrays_ByteArray.getInt8 = function(this1,byteOffset) { return this1.getInt8(byteOffset); }; kha_arrays_ByteArray.getUint8 = function(this1,byteOffset) { return this1.getUint8(byteOffset); }; kha_arrays_ByteArray.getInt16 = function(this1,byteOffset) { return this1.getInt16(byteOffset,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.getUint16 = function(this1,byteOffset) { return this1.getUint16(byteOffset,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.getInt32 = function(this1,byteOffset) { return this1.getInt32(byteOffset,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.getUint32 = function(this1,byteOffset) { return this1.getUint32(byteOffset,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.getFloat32 = function(this1,byteOffset) { return this1.getFloat32(byteOffset,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.getFloat64 = function(this1,byteOffset) { return this1.getFloat64(byteOffset,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.setInt8 = function(this1,byteOffset,value) { this1.setInt8(byteOffset,value); }; kha_arrays_ByteArray.setUint8 = function(this1,byteOffset,value) { this1.setUint8(byteOffset,value); }; kha_arrays_ByteArray.setInt16 = function(this1,byteOffset,value) { this1.setInt16(byteOffset,value,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.setUint16 = function(this1,byteOffset,value) { this1.setUint16(byteOffset,value,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.setInt32 = function(this1,byteOffset,value) { this1.setInt32(byteOffset,value,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.setUint32 = function(this1,byteOffset,value) { this1.setUint32(byteOffset,value,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.setFloat32 = function(this1,byteOffset,value) { this1.setFloat32(byteOffset,value,true); }; kha_arrays_ByteArray.setFloat64 = function(this1,byteOffset,value) { this1.setFloat64(byteOffset,value,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_ByteArray.getInt16LE = function(this1,byteOffset) { return this1.getInt16(byteOffset,true); }; kha_arrays_ByteArray.getUint16LE = function(this1,byteOffset) { return this1.getUint16(byteOffset,true); }; kha_arrays_ByteArray.getInt32LE = function(this1,byteOffset) { return this1.getInt32(byteOffset,true); }; kha_arrays_ByteArray.getUint32LE = function(this1,byteOffset) { return this1.getUint32(byteOffset,true); }; kha_arrays_ByteArray.getFloat32LE = function(this1,byteOffset) { return this1.getFloat32(byteOffset,true); }; kha_arrays_ByteArray.getFloat64LE = function(this1,byteOffset) { return this1.getFloat64(byteOffset,true); }; kha_arrays_ByteArray.setInt16LE = function(this1,byteOffset,value) { this1.setInt16(byteOffset,value,true); }; kha_arrays_ByteArray.setUint16LE = function(this1,byteOffset,value) { this1.setUint16(byteOffset,value,true); }; kha_arrays_ByteArray.setInt32LE = function(this1,byteOffset,value) { this1.setInt32(byteOffset,value,true); }; kha_arrays_ByteArray.setUint32LE = function(this1,byteOffset,value) { this1.setUint32(byteOffset,value,true); }; kha_arrays_ByteArray.setFloat32LE = function(this1,byteOffset,value) { this1.setFloat32(byteOffset,value,true); }; kha_arrays_ByteArray.setFloat64LE = function(this1,byteOffset,value) { this1.setFloat64(byteOffset,value,true); }; kha_arrays_ByteArray.getInt16BE = function(this1,byteOffset) { return this1.getInt16(byteOffset); }; kha_arrays_ByteArray.getUint16BE = function(this1,byteOffset) { return this1.getUint16(byteOffset); }; kha_arrays_ByteArray.getInt32BE = function(this1,byteOffset) { return this1.getInt32(byteOffset); }; kha_arrays_ByteArray.getUint32BE = function(this1,byteOffset) { return this1.getUint32(byteOffset); }; kha_arrays_ByteArray.getFloat32BE = function(this1,byteOffset) { return this1.getFloat32(byteOffset); }; kha_arrays_ByteArray.getFloat64BE = function(this1,byteOffset) { return this1.getFloat64(byteOffset); }; kha_arrays_ByteArray.setInt16BE = function(this1,byteOffset,value) { this1.setInt16(byteOffset,value); }; kha_arrays_ByteArray.setUint16BE = function(this1,byteOffset,value) { this1.setUint16(byteOffset,value); }; kha_arrays_ByteArray.setInt32BE = function(this1,byteOffset,value) { this1.setInt32(byteOffset,value); }; kha_arrays_ByteArray.setUint32BE = function(this1,byteOffset,value) { this1.setUint32(byteOffset,value); }; kha_arrays_ByteArray.setFloat32BE = function(this1,byteOffset,value) { this1.setFloat32(byteOffset,value); }; kha_arrays_ByteArray.setFloat64BE = function(this1,byteOffset,value) { this1.setFloat64(byteOffset,value); }; kha_arrays_ByteArray.subarray = function(this1,start,end) { return kha_arrays_ByteArray._new(this1.buffer,start,end != null ? end - start : null); }; var kha_arrays_ByteBuffer = {}; kha_arrays_ByteBuffer.create = function(length) { return kha_arrays_ByteBuffer._new(length); }; kha_arrays_ByteBuffer._new = function(length) { var this1 = new ArrayBuffer(length); return this1; }; var kha_arrays_Float32Array = {}; kha_arrays_Float32Array.__properties__ = {get_length:"get_length"}; kha_arrays_Float32Array.get_length = function(this1) { return this1.byteLength >> 2; }; kha_arrays_Float32Array._new = function(elements) { var this1 = kha_arrays_ByteArray.make(elements * 4); return this1; }; kha_arrays_Float32Array.get = function(this1,k) { return this1.getFloat32(k * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_Float32Array.set = function(this1,k,v) { this1.setFloat32(k * 4,v,true); return v; }; kha_arrays_Float32Array.subarray = function(this1,start,end) { var start1 = start * 4; var end1 = end != null ? end * 4 : end; return kha_arrays_ByteArray._new(this1.buffer,start1,end1 != null ? end1 - start1 : null); }; var kha_arrays_Int16Array = {}; kha_arrays_Int16Array.__properties__ = {get_length:"get_length"}; kha_arrays_Int16Array.get_length = function(this1) { return this1.byteLength >> 1; }; kha_arrays_Int16Array._new = function(elements) { var this1 = kha_arrays_ByteArray.make(elements * 2); return this1; }; kha_arrays_Int16Array.get = function(this1,k) { return this1.getInt16(k * 2,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_Int16Array.set = function(this1,k,v) { this1.setInt16(k * 2,v,kha_arrays_ByteArray.LITTLE_ENDIAN); return this1.getInt16(k * 2,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_Int16Array.subarray = function(this1,start,end) { var start1 = start * 2; var end1 = end != null ? end * 2 : null; return kha_arrays_ByteArray._new(this1.buffer,start1,end1 != null ? end1 - start1 : null); }; var kha_arrays_Int32Array = {}; kha_arrays_Int32Array.__properties__ = {get_length:"get_length"}; kha_arrays_Int32Array.get_length = function(this1) { return this1.byteLength >> 2; }; kha_arrays_Int32Array._new = function(elements) { var this1 = kha_arrays_ByteArray.make(elements * 4); return this1; }; kha_arrays_Int32Array.get = function(this1,k) { return this1.getInt32(k * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_Int32Array.set = function(this1,k,v) { this1.setInt32(k * 4,v,kha_arrays_ByteArray.LITTLE_ENDIAN); return this1.getInt32(k * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_Int32Array.subarray = function(this1,start,end) { var start1 = start * 4; var end1 = end != null ? end * 4 : null; return kha_arrays_ByteArray._new(this1.buffer,start1,end1 != null ? end1 - start1 : null); }; var kha_arrays_Uint32Array = {}; kha_arrays_Uint32Array.__properties__ = {get_length:"get_length"}; kha_arrays_Uint32Array.get_length = function(this1) { return this1.byteLength >> 2; }; kha_arrays_Uint32Array._new = function(elements) { var this1 = kha_arrays_ByteArray.make(elements * 4); return this1; }; kha_arrays_Uint32Array.get = function(this1,k) { return this1.getUint32(k * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_Uint32Array.set = function(this1,k,v) { this1.setUint32(k * 4,v,kha_arrays_ByteArray.LITTLE_ENDIAN); return this1.getUint32(k * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); }; kha_arrays_Uint32Array.subarray = function(this1,start,end) { var start1 = start * 4; var end1 = end != null ? end * 4 : null; return kha_arrays_ByteArray._new(this1.buffer,start1,end1 != null ? end1 - start1 : null); }; var kha_audio1_AudioChannel = function() { }; $hxClasses["kha.audio1.AudioChannel"] = kha_audio1_AudioChannel; kha_audio1_AudioChannel.__name__ = true; kha_audio1_AudioChannel.__isInterface__ = true; kha_audio1_AudioChannel.prototype = { play: null ,pause: null ,stop: null ,length: null ,get_length: null ,get_position: null ,set_position: null ,get_volume: null ,set_volume: null ,finished: null ,get_finished: null ,__class__: kha_audio1_AudioChannel ,__properties__: {get_finished:"get_finished",set_volume:"set_volume",get_volume:"get_volume",set_position:"set_position",get_position:"get_position",get_length:"get_length"} }; var kha_internal_IntBox = function(value) { this.value = value; }; $hxClasses["kha.internal.IntBox"] = kha_internal_IntBox; kha_internal_IntBox.__name__ = true; kha_internal_IntBox.prototype = { value: null ,__class__: kha_internal_IntBox }; var kha_audio2_Audio = function() { }; $hxClasses["kha.audio2.Audio"] = kha_audio2_Audio; kha_audio2_Audio.__name__ = true; kha_audio2_Audio._init = function() { var bufferSize = 2048; kha_audio2_Audio.buffer = new kha_audio2_Buffer(bufferSize * 4,2,44100); kha_audio2_Audio.samplesPerSecond = 44100; }; kha_audio2_Audio._callCallback = function(samples) { if(kha_audio2_Audio.buffer == null) { return; } if(kha_audio2_Audio.audioCallback != null) { kha_audio2_Audio.intBox.value = samples; kha_audio2_Audio.audioCallback(kha_audio2_Audio.intBox,kha_audio2_Audio.buffer); } else { var _g = 0; var _g1 = samples; while(_g < _g1) { var i = _g++; kha_audio2_Audio.buffer.data.setFloat32(kha_audio2_Audio.buffer.writeLocation * 4,0,true); kha_audio2_Audio.buffer.writeLocation += 1; if(kha_audio2_Audio.buffer.writeLocation >= kha_audio2_Audio.buffer.size) { kha_audio2_Audio.buffer.writeLocation = 0; } } } }; kha_audio2_Audio._readSample = function() { if(kha_audio2_Audio.buffer == null) { return 0; } var value = kha_audio2_Audio.buffer.data.getFloat32(kha_audio2_Audio.buffer.readLocation * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); kha_audio2_Audio.buffer.readLocation += 1; if(kha_audio2_Audio.buffer.readLocation >= kha_audio2_Audio.buffer.size) { kha_audio2_Audio.buffer.readLocation = 0; } return value; }; kha_audio2_Audio.play = function(sound,loop) { if(loop == null) { loop = false; } return null; }; kha_audio2_Audio.stream = function(sound,loop) { if(loop == null) { loop = false; } return null; }; 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(32); kha_audio2_Audio1.soundChannels = this1; var this1 = new Array(32); kha_audio2_Audio1.streamChannels = this1; var this1 = new Array(32); kha_audio2_Audio1.internalSoundChannels = this1; var this1 = new Array(32); kha_audio2_Audio1.internalStreamChannels = this1; kha_audio2_Audio1.sampleCache1 = kha_arrays_Float32Array._new(512); kha_audio2_Audio1.sampleCache2 = kha_arrays_Float32Array._new(512); kha_audio2_Audio1.lastAllocationCount = 0; 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(samplesBox,buffer) { var samples = samplesBox.value; if(kha_audio2_Audio1.sampleCache1.byteLength >> 2 < samples) { if(kha_audio2_Audio.disableGcInteractions) { haxe_Log.trace("Unexpected allocation request in audio thread.",{ fileName : "kha/audio2/Audio1.hx", lineNumber : 50, className : "kha.audio2.Audio1", methodName : "mix"}); var _g = 0; var _g1 = samples; while(_g < _g1) { var i = _g++; buffer.data.setFloat32(buffer.writeLocation * 4,0,true); buffer.writeLocation += 1; if(buffer.writeLocation >= buffer.size) { buffer.writeLocation = 0; } } kha_audio2_Audio1.lastAllocationCount = 0; kha_audio2_Audio.disableGcInteractions = false; return; } kha_audio2_Audio1.sampleCache1 = kha_arrays_Float32Array._new(samples * 2); kha_audio2_Audio1.sampleCache2 = kha_arrays_Float32Array._new(samples * 2); kha_audio2_Audio1.lastAllocationCount = 0; } else if(kha_audio2_Audio1.lastAllocationCount > 100) { kha_audio2_Audio.disableGcInteractions = true; } else { kha_audio2_Audio1.lastAllocationCount += 1; } var _g = 0; var _g1 = samples; while(_g < _g1) { var i = _g++; kha_audio2_Audio1.sampleCache2.setFloat32(i * 4,0,true); } var _g = 0; while(_g < 32) { var i = _g++; kha_audio2_Audio1.internalSoundChannels[i] = kha_audio2_Audio1.soundChannels[i]; } var _g = 0; while(_g < 32) { var i = _g++; kha_audio2_Audio1.internalStreamChannels[i] = kha_audio2_Audio1.streamChannels[i]; } var _g = 0; var _g1 = kha_audio2_Audio1.internalSoundChannels; while(_g < _g1.length) { var channel = _g1[_g]; ++_g; if(channel == null || channel.get_finished()) { continue; } channel.nextSamples(kha_audio2_Audio1.sampleCache1,samples,buffer.samplesPerSecond); var _g2 = 0; var _g3 = samples; while(_g2 < _g3) { var i = _g2++; var _g4 = i; var _g5 = kha_audio2_Audio1.sampleCache2; var v = _g5.getFloat32(_g4 * 4,kha_arrays_ByteArray.LITTLE_ENDIAN) + kha_audio2_Audio1.sampleCache1.getFloat32(i * 4,kha_arrays_ByteArray.LITTLE_ENDIAN) * channel.get_volume(); _g5.setFloat32(_g4 * 4,v,true); } } var _g = 0; var _g1 = kha_audio2_Audio1.internalStreamChannels; while(_g < _g1.length) { var channel = _g1[_g]; ++_g; if(channel == null || channel.get_finished()) { continue; } channel.nextSamples(kha_audio2_Audio1.sampleCache1,samples,buffer.samplesPerSecond); var _g2 = 0; var _g3 = samples; while(_g2 < _g3) { var i = _g2++; var _g4 = i; var _g5 = kha_audio2_Audio1.sampleCache2; var v = _g5.getFloat32(_g4 * 4,kha_arrays_ByteArray.LITTLE_ENDIAN) + kha_audio2_Audio1.sampleCache1.getFloat32(i * 4,kha_arrays_ByteArray.LITTLE_ENDIAN) * channel.get_volume(); _g5.setFloat32(_g4 * 4,v,true); } } var _g = 0; var _g1 = samples; while(_g < _g1) { var i = _g++; var a = kha_audio2_Audio1.sampleCache2.getFloat32(i * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var a1 = a < 1.0 ? a : 1.0; var v = a1 > -1.0 ? a1 : -1.0; buffer.data.setFloat32(buffer.writeLocation * 4,v,true); 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; if(kha_audio2_Audio.samplesPerSecond != sound.sampleRate) { channel = new kha_audio2_ResamplingAudioChannel(loop,sound.sampleRate); } else { channel = new kha_audio2_AudioChannel(loop); } channel.data = sound.uncompressedData; var foundChannel = false; var _g = 0; while(_g < 32) { var i = _g++; if(kha_audio2_Audio1.soundChannels[i] == null || kha_audio2_Audio1.soundChannels[i].get_finished()) { kha_audio2_Audio1.soundChannels[i] = channel; foundChannel = true; break; } } if(foundChannel) { return channel; } else { return null; } }; kha_audio2_Audio1._playAgain = function(channel) { var _g = 0; while(_g < 32) { var i = _g++; if(kha_audio2_Audio1.soundChannels[i] == channel) { kha_audio2_Audio1.soundChannels[i] = null; } } var _g = 0; while(_g < 32) { 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 = new kha_audio2_StreamChannel(sound.compressedData,loop); var foundChannel = false; var _g = 0; while(_g < 32) { var i = _g++; if(kha_audio2_Audio1.streamChannels[i] == null || kha_audio2_Audio1.streamChannels[i].get_finished()) { kha_audio2_Audio1.streamChannels[i] = channel; foundChannel = true; break; } } if(foundChannel) { return channel; } else { return null; } }; var kha_audio2_AudioChannel = function(looping) { this.data = null; this.looping = looping; this.stopped = false; this.paused = false; this.myPosition = 0; this.myVolume = 1; }; $hxClasses["kha.audio2.AudioChannel"] = kha_audio2_AudioChannel; kha_audio2_AudioChannel.__name__ = true; kha_audio2_AudioChannel.__interfaces__ = [kha_audio1_AudioChannel]; kha_audio2_AudioChannel.max = function(a,b) { if(a > b) { return a; } else { return b; } }; kha_audio2_AudioChannel.min = function(a,b) { if(a < b) { return a; } else { return b; } }; kha_audio2_AudioChannel.prototype = { data: null ,myVolume: null ,myPosition: null ,paused: null ,stopped: null ,looping: null ,nextSamples: function(requestedSamples,requestedLength,sampleRate) { if(this.paused || this.stopped) { var _g = 0; var _g1 = requestedLength; while(_g < _g1) { var i = _g++; requestedSamples.setFloat32(i * 4,0,true); } return; } var requestedSamplesIndex = 0; while(requestedSamplesIndex < requestedLength) { var _g = 0; var a = (this.data.byteLength >> 2) - this.myPosition; var b = requestedLength - requestedSamplesIndex; var _g1 = a < b ? a : b; while(_g < _g1) { var i = _g++; var v = this.data.getFloat32(this.myPosition++ * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); requestedSamples.setFloat32(requestedSamplesIndex++ * 4,v,true); } if(this.myPosition >= this.data.byteLength >> 2) { this.myPosition = 0; if(!this.looping) { this.stopped = true; break; } } } while(requestedSamplesIndex < requestedLength) requestedSamples.setFloat32(requestedSamplesIndex++ * 4,0,true); } ,play: function() { this.paused = false; this.stopped = false; kha_audio2_Audio1._playAgain(this); } ,pause: function() { this.paused = true; } ,stop: function() { this.myPosition = 0; this.stopped = true; } ,length: null ,get_length: function() { return (this.data.byteLength >> 2) / kha_audio2_Audio.samplesPerSecond / 2; } ,get_position: function() { return this.myPosition / kha_audio2_Audio.samplesPerSecond / 2; } ,set_position: function(value) { this.myPosition = Math.round(value * kha_audio2_Audio.samplesPerSecond * 2); var a = this.myPosition; var b = this.data.byteLength >> 2; var a1 = a < b ? a : b; this.myPosition = a1 > 0 ? a1 : 0; return value; } ,get_volume: function() { return this.myVolume; } ,set_volume: function(value) { return this.myVolume = value; } ,finished: null ,get_finished: function() { return this.stopped; } ,__class__: kha_audio2_AudioChannel ,__properties__: {get_finished:"get_finished",set_volume:"set_volume",get_volume:"get_volume",set_position:"set_position",get_position:"get_position",get_length:"get_length"} }; var kha_audio2_Buffer = function(size,channels,samplesPerSecond) { this.size = size; this.data = kha_arrays_Float32Array._new(size); 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_ResamplingAudioChannel = function(looping,sampleRate) { kha_audio2_AudioChannel.call(this,looping); this.sampleRate = sampleRate; }; $hxClasses["kha.audio2.ResamplingAudioChannel"] = kha_audio2_ResamplingAudioChannel; kha_audio2_ResamplingAudioChannel.__name__ = true; kha_audio2_ResamplingAudioChannel.max = function(a,b) { if(a > b) { return a; } else { return b; } }; kha_audio2_ResamplingAudioChannel.min = function(a,b) { if(a < b) { return a; } else { return b; } }; kha_audio2_ResamplingAudioChannel.__super__ = kha_audio2_AudioChannel; kha_audio2_ResamplingAudioChannel.prototype = $extend(kha_audio2_AudioChannel.prototype,{ sampleRate: null ,nextSamples: function(requestedSamples,requestedLength,sampleRate) { if(this.paused || this.stopped) { var _g = 0; var _g1 = requestedLength; while(_g < _g1) { var i = _g++; requestedSamples.setFloat32(i * 4,0,true); } return; } var requestedSamplesIndex = 0; while(requestedSamplesIndex < requestedLength) { var _g = 0; var value = Math.ceil((this.data.byteLength >> 2) * (sampleRate / this.sampleRate)); var a = (value % 2 == 0 ? value : value + 1) - this.myPosition; var b = requestedLength - requestedSamplesIndex; var _g1 = a < b ? a : b; while(_g < _g1) { var i = _g++; var k = requestedSamplesIndex++; var position = this.myPosition++; var even = position % 2 == 0; var factor = this.sampleRate / sampleRate; var v; if(even) { position = position / 2 | 0; var pos = factor * position; var pos1 = Math.floor(pos); var pos2 = Math.floor(pos + 1); pos1 *= 2; pos2 *= 2; var minimum = 0; var maximum = (this.data.byteLength >> 2) - 1; if(maximum % 2 != 0) { --maximum; } var a1 = pos1 < minimum || pos1 > maximum ? 0 : this.data.getFloat32(pos1 * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var b1 = pos2 < minimum || pos2 > maximum ? 0 : this.data.getFloat32(pos2 * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var t = pos - Math.floor(pos); v = (1 - t) * a1 + t * b1; } else { position = position / 2 | 0; var pos3 = factor * position; var pos11 = Math.floor(pos3); var pos21 = Math.floor(pos3 + 1); pos11 = pos11 * 2 + 1; pos21 = pos21 * 2 + 1; var minimum1 = 1; var maximum1 = (this.data.byteLength >> 2) - 1; if(maximum1 % 2 == 0) { --maximum1; } var a2 = pos11 < minimum1 || pos11 > maximum1 ? 0 : this.data.getFloat32(pos11 * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var b2 = pos21 < minimum1 || pos21 > maximum1 ? 0 : this.data.getFloat32(pos21 * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var t1 = pos3 - Math.floor(pos3); v = (1 - t1) * a2 + t1 * b2; } requestedSamples.setFloat32(k * 4,v,true); } var value1 = Math.ceil((this.data.byteLength >> 2) * (sampleRate / this.sampleRate)); if(this.myPosition >= (value1 % 2 == 0 ? value1 : value1 + 1)) { this.myPosition = 0; if(!this.looping) { this.stopped = true; break; } } } while(requestedSamplesIndex < requestedLength) requestedSamples.setFloat32(requestedSamplesIndex++ * 4,0,true); } ,sample: function(position,sampleRate) { var even = position % 2 == 0; var factor = this.sampleRate / sampleRate; if(even) { position = position / 2 | 0; var pos = factor * position; var pos1 = Math.floor(pos); var pos2 = Math.floor(pos + 1); pos1 *= 2; pos2 *= 2; var minimum = 0; var maximum = (this.data.byteLength >> 2) - 1; if(maximum % 2 != 0) { --maximum; } var a = pos1 < minimum || pos1 > maximum ? 0 : this.data.getFloat32(pos1 * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var b = pos2 < minimum || pos2 > maximum ? 0 : this.data.getFloat32(pos2 * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var t = pos - Math.floor(pos); return (1 - t) * a + t * b; } else { position = position / 2 | 0; var pos = factor * position; var pos1 = Math.floor(pos); var pos2 = Math.floor(pos + 1); pos1 = pos1 * 2 + 1; pos2 = pos2 * 2 + 1; var minimum = 1; var maximum = (this.data.byteLength >> 2) - 1; if(maximum % 2 == 0) { --maximum; } var a = pos1 < minimum || pos1 > maximum ? 0 : this.data.getFloat32(pos1 * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var b = pos2 < minimum || pos2 > maximum ? 0 : this.data.getFloat32(pos2 * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var t = pos - Math.floor(pos); return (1 - t) * a + t * b; } } ,lerp: function(v0,v1,t) { return (1 - t) * v0 + t * v1; } ,sampleLength: function(sampleRate) { var value = Math.ceil((this.data.byteLength >> 2) * (sampleRate / this.sampleRate)); if(value % 2 == 0) { return value; } else { return value + 1; } } ,play: function() { this.paused = false; this.stopped = false; kha_audio2_Audio1._playAgain(this); } ,pause: function() { this.paused = true; } ,stop: function() { this.myPosition = 0; this.stopped = true; } ,get_length: function() { return (this.data.byteLength >> 2) / this.sampleRate / 2; } ,get_position: function() { return this.myPosition / kha_audio2_Audio.samplesPerSecond / 2; } ,set_position: function(value) { var pos = Math.round(value * kha_audio2_Audio.samplesPerSecond * 2.0); if(pos % 2 != 0) { ++pos; } var value1 = Math.ceil((this.data.byteLength >> 2) * (kha_audio2_Audio.samplesPerSecond / this.sampleRate)); var b = value1 % 2 == 0 ? value1 : value1 + 1; var a = pos < b ? pos : b; this.myPosition = a > 0 ? a : 0; return value; } ,get_volume: function() { return this.myVolume; } ,set_volume: function(value) { return this.myVolume = value; } ,get_finished: function() { return this.stopped; } ,__class__: kha_audio2_ResamplingAudioChannel }); 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 _g = 0; var _g1 = length; while(_g < _g1) { var i = _g++; samples.setFloat32(i * 4,0,true); } 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 _g = count; var _g1 = length; while(_g < _g1) { var i = _g++; samples.setFloat32(i * 4,0,true); } } } ,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; } ,get_position: function() { return this.reader.get_currentMillisecond() / 1000.0; } ,set_position: function(value) { return value; } ,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 ,__properties__: {get_finished:"get_finished",set_volume:"set_volume",get_volume:"get_volume",set_position:"set_position",get_position:"get_position",get_length:"get_length"} }; 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; s = s << 1 ^ (UInt.gte(s,1 << 31) ? 79764919 : 0); s = s << 1 ^ (UInt.gte(s,1 << 31) ? 79764919 : 0); s = s << 1 ^ (UInt.gte(s,1 << 31) ? 79764919 : 0); s = s << 1 ^ (UInt.gte(s,1 << 31) ? 79764919 : 0); s = s << 1 ^ (UInt.gte(s,1 << 31) ? 79764919 : 0); s = s << 1 ^ (UInt.gte(s,1 << 31) ? 79764919 : 0); s = s << 1 ^ (UInt.gte(s,1 << 31) ? 79764919 : 0); s = s << 1 ^ (UInt.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 aaOffset = n2 - 8; var eOffset0 = n4; var eOffset1 = 0; var dOffset0 = n4; var dOffset1 = 0; while(aaOffset >= 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[aaOffset + 4] - v40_20 * a[aaOffset + 5]; u[dOffset1] = v40_20 * a[aaOffset + 4] + v41_21 * a[aaOffset + 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[aaOffset] - v40_20 * a[aaOffset + 1]; u[dOffset1 + 2] = v40_20 * a[aaOffset] + v41_21 * a[aaOffset + 1]; aaOffset -= 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)]; u[eeOffset0] += u[eeOffset2]; u[eeOffset0 + (-1)] += 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)]; u[eeOffset0 + (-2)] += u[eeOffset2 + (-2)]; u[eeOffset0 + (-3)] += 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)]; u[eeOffset0 + (-4)] += u[eeOffset2 + (-4)]; u[eeOffset0 + (-5)] += 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)]; u[eeOffset0 + (-6)] += u[eeOffset2 + (-6)]; u[eeOffset0 + (-7)] += 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_off = n2 - 1 - n4; 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)]; u[eeOffset0] += u[eeOffset2]; u[eeOffset0 + (-1)] += 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)]; u[eeOffset0 + (-2)] += u[eeOffset2 + (-2)]; u[eeOffset0 + (-3)] += 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)]; u[eeOffset0 + (-4)] += u[eeOffset2 + (-4)]; u[eeOffset0 + (-5)] += 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)]; u[eeOffset0 + (-6)] += u[eeOffset2 + (-6)]; u[eeOffset0 + (-7)] += 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 d0 = n2 - 1 - n8 * 0; var aOffset = 0; var eOffset0 = d0; var eOffset2 = d0 + -(n >> 4); var i = (n >> 5 >> 2) + 1; while(--i > 0) { var k00_20 = u[eOffset0] - u[eOffset2]; var k01_21 = u[eOffset0 + (-1)] - u[eOffset2 + (-1)]; u[eOffset0] += u[eOffset2]; u[eOffset0 + (-1)] += u[eOffset2 + (-1)]; u[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-1)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-2)] - u[eOffset2 + (-2)]; k01_21 = u[eOffset0 + (-3)] - u[eOffset2 + (-3)]; u[eOffset0 + (-2)] += u[eOffset2 + (-2)]; u[eOffset0 + (-3)] += u[eOffset2 + (-3)]; u[eOffset2 + (-2)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-3)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-4)] - u[eOffset2 + (-4)]; k01_21 = u[eOffset0 + (-5)] - u[eOffset2 + (-5)]; u[eOffset0 + (-4)] += u[eOffset2 + (-4)]; u[eOffset0 + (-5)] += u[eOffset2 + (-5)]; u[eOffset2 + (-4)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-5)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-6)] - u[eOffset2 + (-6)]; k01_21 = u[eOffset0 + (-7)] - u[eOffset2 + (-7)]; u[eOffset0 + (-6)] += u[eOffset2 + (-6)]; u[eOffset0 + (-7)] += u[eOffset2 + (-7)]; u[eOffset2 + (-6)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-7)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; eOffset0 -= 8; eOffset2 -= 8; aOffset += 16; } var d0 = n2 - 1 - n8; var aOffset = 0; var eOffset0 = d0; var eOffset2 = d0 + -(n >> 4); var i = (n >> 5 >> 2) + 1; while(--i > 0) { var k00_20 = u[eOffset0] - u[eOffset2]; var k01_21 = u[eOffset0 + (-1)] - u[eOffset2 + (-1)]; u[eOffset0] += u[eOffset2]; u[eOffset0 + (-1)] += u[eOffset2 + (-1)]; u[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-1)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-2)] - u[eOffset2 + (-2)]; k01_21 = u[eOffset0 + (-3)] - u[eOffset2 + (-3)]; u[eOffset0 + (-2)] += u[eOffset2 + (-2)]; u[eOffset0 + (-3)] += u[eOffset2 + (-3)]; u[eOffset2 + (-2)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-3)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-4)] - u[eOffset2 + (-4)]; k01_21 = u[eOffset0 + (-5)] - u[eOffset2 + (-5)]; u[eOffset0 + (-4)] += u[eOffset2 + (-4)]; u[eOffset0 + (-5)] += u[eOffset2 + (-5)]; u[eOffset2 + (-4)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-5)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-6)] - u[eOffset2 + (-6)]; k01_21 = u[eOffset0 + (-7)] - u[eOffset2 + (-7)]; u[eOffset0 + (-6)] += u[eOffset2 + (-6)]; u[eOffset0 + (-7)] += u[eOffset2 + (-7)]; u[eOffset2 + (-6)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-7)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; eOffset0 -= 8; eOffset2 -= 8; aOffset += 16; } var d0 = n2 - 1 - n8 * 2; var aOffset = 0; var eOffset0 = d0; var eOffset2 = d0 + -(n >> 4); var i = (n >> 5 >> 2) + 1; while(--i > 0) { var k00_20 = u[eOffset0] - u[eOffset2]; var k01_21 = u[eOffset0 + (-1)] - u[eOffset2 + (-1)]; u[eOffset0] += u[eOffset2]; u[eOffset0 + (-1)] += u[eOffset2 + (-1)]; u[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-1)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-2)] - u[eOffset2 + (-2)]; k01_21 = u[eOffset0 + (-3)] - u[eOffset2 + (-3)]; u[eOffset0 + (-2)] += u[eOffset2 + (-2)]; u[eOffset0 + (-3)] += u[eOffset2 + (-3)]; u[eOffset2 + (-2)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-3)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-4)] - u[eOffset2 + (-4)]; k01_21 = u[eOffset0 + (-5)] - u[eOffset2 + (-5)]; u[eOffset0 + (-4)] += u[eOffset2 + (-4)]; u[eOffset0 + (-5)] += u[eOffset2 + (-5)]; u[eOffset2 + (-4)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-5)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-6)] - u[eOffset2 + (-6)]; k01_21 = u[eOffset0 + (-7)] - u[eOffset2 + (-7)]; u[eOffset0 + (-6)] += u[eOffset2 + (-6)]; u[eOffset0 + (-7)] += u[eOffset2 + (-7)]; u[eOffset2 + (-6)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-7)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; eOffset0 -= 8; eOffset2 -= 8; aOffset += 16; } var d0 = n2 - 1 - n8 * 3; var aOffset = 0; var eOffset0 = d0; var eOffset2 = d0 + -(n >> 4); var i = (n >> 5 >> 2) + 1; while(--i > 0) { var k00_20 = u[eOffset0] - u[eOffset2]; var k01_21 = u[eOffset0 + (-1)] - u[eOffset2 + (-1)]; u[eOffset0] += u[eOffset2]; u[eOffset0 + (-1)] += u[eOffset2 + (-1)]; u[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-1)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-2)] - u[eOffset2 + (-2)]; k01_21 = u[eOffset0 + (-3)] - u[eOffset2 + (-3)]; u[eOffset0 + (-2)] += u[eOffset2 + (-2)]; u[eOffset0 + (-3)] += u[eOffset2 + (-3)]; u[eOffset2 + (-2)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-3)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-4)] - u[eOffset2 + (-4)]; k01_21 = u[eOffset0 + (-5)] - u[eOffset2 + (-5)]; u[eOffset0 + (-4)] += u[eOffset2 + (-4)]; u[eOffset0 + (-5)] += u[eOffset2 + (-5)]; u[eOffset2 + (-4)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-5)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-6)] - u[eOffset2 + (-6)]; k01_21 = u[eOffset0 + (-7)] - u[eOffset2 + (-7)]; u[eOffset0 + (-6)] += u[eOffset2 + (-6)]; u[eOffset0 + (-7)] += u[eOffset2 + (-7)]; u[eOffset2 + (-6)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-7)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; eOffset0 -= 8; eOffset2 -= 8; aOffset += 16; } var _g = 2; var _g1 = ld - 3 >> 1; while(_g < _g1) { var l = _g++; var k0 = n >> l + 2; var k0_2 = k0 >> 1; var lim = 1 << l + 1; var _g2 = 0; var _g3 = lim; while(_g2 < _g3) { var i = _g2++; var d0 = n2 - 1 - k0 * i; var k1 = 1 << l + 3; var aOffset = 0; var eOffset0 = d0; var eOffset2 = d0 + -k0_2; var i1 = (n >> l + 4 >> 2) + 1; while(--i1 > 0) { var k00_20 = u[eOffset0] - u[eOffset2]; var k01_21 = u[eOffset0 + (-1)] - u[eOffset2 + (-1)]; u[eOffset0] += u[eOffset2]; u[eOffset0 + (-1)] += u[eOffset2 + (-1)]; u[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-1)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += k1; k00_20 = u[eOffset0 + (-2)] - u[eOffset2 + (-2)]; k01_21 = u[eOffset0 + (-3)] - u[eOffset2 + (-3)]; u[eOffset0 + (-2)] += u[eOffset2 + (-2)]; u[eOffset0 + (-3)] += u[eOffset2 + (-3)]; u[eOffset2 + (-2)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-3)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += k1; k00_20 = u[eOffset0 + (-4)] - u[eOffset2 + (-4)]; k01_21 = u[eOffset0 + (-5)] - u[eOffset2 + (-5)]; u[eOffset0 + (-4)] += u[eOffset2 + (-4)]; u[eOffset0 + (-5)] += u[eOffset2 + (-5)]; u[eOffset2 + (-4)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-5)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += k1; k00_20 = u[eOffset0 + (-6)] - u[eOffset2 + (-6)]; k01_21 = u[eOffset0 + (-7)] - u[eOffset2 + (-7)]; u[eOffset0 + (-6)] += u[eOffset2 + (-6)]; u[eOffset0 + (-7)] += u[eOffset2 + (-7)]; u[eOffset2 + (-6)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-7)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; eOffset0 -= 8; eOffset2 -= 8; aOffset += k1; } } } var _g = ld - 3 >> 1; var _g1 = ld - 6; while(_g < _g1) { var l = _g++; var k0 = n >> l + 2; var k1 = 1 << l + 3; var k0_2 = k0 >> 1; var rlim = n >> l + 6; var lim = 1 << l + 1; var aOffset = 0; var i_off = n2 - 1; var r = rlim + 1; while(--r > 0) { var A0 = a[aOffset]; var A1 = a[aOffset + 1]; var A2 = a[aOffset + k1]; var A3 = a[aOffset + k1 + 1]; var A4 = a[aOffset + k1 * 2]; var A5 = a[aOffset + k1 * 2 + 1]; var A6 = a[aOffset + k1 * 3]; var A7 = a[aOffset + k1 * 3 + 1]; var eeOffset0 = i_off; var eeOffset2 = i_off + -k0_2; var i = lim + 1; while(--i > 0) { var k00 = u[eeOffset0] - u[eeOffset2]; var k11 = u[eeOffset0 + (-1)] - u[eeOffset2 + (-1)]; u[eeOffset0] += u[eeOffset2]; u[eeOffset0 + (-1)] += u[eeOffset2 + (-1)]; u[eeOffset2] = k00 * A0 - k11 * A1; u[eeOffset2 + (-1)] = k11 * A0 + k00 * A1; k00 = u[eeOffset0 + (-2)] - u[eeOffset2 + (-2)]; k11 = u[eeOffset0 + (-3)] - u[eeOffset2 + (-3)]; u[eeOffset0 + (-2)] += u[eeOffset2 + (-2)]; u[eeOffset0 + (-3)] += u[eeOffset2 + (-3)]; u[eeOffset2 + (-2)] = k00 * A2 - k11 * A3; u[eeOffset2 + (-3)] = k11 * A2 + k00 * A3; k00 = u[eeOffset0 + (-4)] - u[eeOffset2 + (-4)]; k11 = u[eeOffset0 + (-5)] - u[eeOffset2 + (-5)]; u[eeOffset0 + (-4)] += u[eeOffset2 + (-4)]; u[eeOffset0 + (-5)] += u[eeOffset2 + (-5)]; u[eeOffset2 + (-4)] = k00 * A4 - k11 * A5; u[eeOffset2 + (-5)] = k11 * A4 + k00 * A5; k00 = u[eeOffset0 + (-6)] - u[eeOffset2 + (-6)]; k11 = u[eeOffset0 + (-7)] - u[eeOffset2 + (-7)]; u[eeOffset0 + (-6)] += u[eeOffset2 + (-6)]; u[eeOffset0 + (-7)] += u[eeOffset2 + (-7)]; u[eeOffset2 + (-6)] = k00 * A6 - k11 * A7; u[eeOffset2 + (-7)] = k11 * A6 + k00 * A7; eeOffset0 -= k0; eeOffset2 -= k0; } aOffset += k1 * 4; i_off -= 8; } } var i_off = n2 - 1; var A2 = a[n >> 3]; var zOffset = i_off; var baseOffset = i_off - 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 k00 = t0 - t1; u[zOffset + (-2)] = t0 + t1; t0 = u[zOffset + (-3)]; t1 = u[zOffset + (-11)]; var k11 = t0 - t1; u[zOffset + (-3)] = t0 + t1; u[zOffset + (-10)] = (k00 + k11) * A2; u[zOffset + (-11)] = (k11 - k00) * A2; t0 = u[zOffset + (-4)]; t1 = u[zOffset + (-12)]; k00 = t1 - t0; u[zOffset + (-4)] = t0 + t1; t0 = u[zOffset + (-5)]; t1 = u[zOffset + (-13)]; k11 = t0 - t1; u[zOffset + (-5)] = t0 + t1; u[zOffset + (-12)] = k11; u[zOffset + (-13)] = k00; t0 = u[zOffset + (-6)]; t1 = u[zOffset + (-14)]; k00 = t1 - t0; u[zOffset + (-6)] = t0 + t1; t0 = u[zOffset + (-7)]; t1 = u[zOffset + (-15)]; k11 = t0 - t1; u[zOffset + (-7)] = t0 + t1; u[zOffset + (-14)] = (k00 + k11) * A2; u[zOffset + (-15)] = (k00 - k11) * A2; var t01 = u[zOffset]; var t11 = u[zOffset + (-4)]; var k001 = 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)] = k001 + k33; u[zOffset + (-6)] = k001 - k33; t01 = u[zOffset + (-1)]; t11 = u[zOffset + (-5)]; var k111 = 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)] = k111 - k22; u[zOffset + (-7)] = k111 + k22; var zOffset1 = zOffset - 8; var t02 = u[zOffset1]; var t12 = u[zOffset1 + (-4)]; var k002 = 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)] = k002 + k331; u[zOffset1 + (-6)] = k002 - k331; t02 = u[zOffset1 + (-1)]; t12 = u[zOffset1 + (-5)]; var k112 = 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)] = k112 - k221; u[zOffset1 + (-7)] = k112 + k221; zOffset -= 16; } var brOffset = 0; var dOffset0 = n4 - 4; var dOffset1 = n2 - 4; while(dOffset0 >= 0) { var k4 = bitReverse[brOffset]; v[dOffset1 + 3] = u[k4]; v[dOffset1 + 2] = u[k4 + 1]; v[dOffset0 + 3] = u[k4 + 2]; v[dOffset0 + 2] = u[k4 + 3]; k4 = bitReverse[brOffset + 1]; v[dOffset1 + 1] = u[k4]; v[dOffset1] = u[k4 + 1]; v[dOffset0 + 1] = u[k4 + 2]; v[dOffset0] = u[k4 + 3]; dOffset0 -= 4; dOffset1 -= 4; brOffset += 2; } var cOffset = 0; var dOffset = 0; var eOffset = n2 - 4; while(dOffset < eOffset) { var a02 = v[dOffset] - v[eOffset + 2]; var a11 = v[dOffset + 1] + v[eOffset + 3]; var b0 = c[cOffset + 1] * a02 + c[cOffset] * a11; var b1 = c[cOffset + 1] * a11 - c[cOffset] * a02; var b2 = v[dOffset] + v[eOffset + 2]; var b3 = v[dOffset + 1] - v[eOffset + 3]; v[dOffset] = b2 + b0; v[dOffset + 1] = b3 + b1; v[eOffset + 2] = b2 - b0; v[eOffset + 3] = b1 - b3; a02 = v[dOffset + 2] - v[eOffset]; a11 = v[dOffset + 3] + v[eOffset + 1]; b0 = c[cOffset + 3] * a02 + c[cOffset + 2] * a11; b1 = c[cOffset + 3] * a11 - c[cOffset + 2] * a02; b2 = v[dOffset + 2] + v[eOffset]; b3 = v[dOffset + 3] - v[eOffset + 1]; v[dOffset + 2] = b2 + b0; v[dOffset + 3] = b3 + b1; v[eOffset] = b2 - b0; v[eOffset + 1] = b1 - b3; cOffset += 4; dOffset += 4; eOffset -= 4; } var bOffset = n2 - 8; var eOffset = n2 - 8; var dOffset0 = 0; var dOffset1 = n2 - 4; var dOffset2 = n2; var dOffset3 = n - 4; while(eOffset >= 0) { var p3 = buf2[eOffset + 6] * b[bOffset + 7] - buf2[eOffset + 7] * b[bOffset + 6]; var p2 = -buf2[eOffset + 6] * b[bOffset + 6] - buf2[eOffset + 7] * b[bOffset + 7]; buffer[dOffset0] = p3; buffer[dOffset1 + 3] = -p3; buffer[dOffset2] = p2; buffer[dOffset3 + 3] = p2; var p1 = buf2[eOffset + 4] * b[bOffset + 5] - buf2[eOffset + 5] * b[bOffset + 4]; var p0 = -buf2[eOffset + 4] * b[bOffset + 4] - buf2[eOffset + 5] * b[bOffset + 5]; buffer[dOffset0 + 1] = p1; buffer[dOffset1 + 2] = -p1; buffer[dOffset2 + 1] = p0; buffer[dOffset3 + 2] = p0; p3 = buf2[eOffset + 2] * b[bOffset + 3] - buf2[eOffset + 3] * b[bOffset + 2]; p2 = -buf2[eOffset + 2] * b[bOffset + 2] - buf2[eOffset + 3] * b[bOffset + 3]; buffer[dOffset0 + 2] = p3; buffer[dOffset1 + 1] = -p3; buffer[dOffset2 + 2] = p2; buffer[dOffset3 + 1] = p2; p1 = buf2[eOffset] * b[bOffset + 1] - buf2[eOffset + 1] * b[bOffset]; p0 = -buf2[eOffset] * b[bOffset] - buf2[eOffset + 1] * b[bOffset + 1]; buffer[dOffset0 + 3] = p1; buffer[dOffset1] = -p1; buffer[dOffset2 + 3] = p0; buffer[dOffset3] = p0; bOffset -= 8; eOffset -= 8; dOffset0 += 4; dOffset2 += 4; dOffset1 -= 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)]; e[eeOffset0] += e[eeOffset2]; e[eeOffset0 + (-1)] += 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)]; e[eeOffset0 + (-2)] += e[eeOffset2 + (-2)]; e[eeOffset0 + (-3)] += 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)]; e[eeOffset0 + (-4)] += e[eeOffset2 + (-4)]; e[eeOffset0 + (-5)] += 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)]; e[eeOffset0 + (-6)] += e[eeOffset2 + (-6)]; e[eeOffset0 + (-7)] += 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)]; e[eOffset0] += e[eOffset2]; e[eOffset0 + (-1)] += 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)]; e[eOffset0 + (-2)] += e[eOffset2 + (-2)]; e[eOffset0 + (-3)] += 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)]; e[eOffset0 + (-4)] += e[eOffset2 + (-4)]; e[eOffset0 + (-5)] += 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)]; e[eOffset0 + (-6)] += e[eOffset2 + (-6)]; e[eOffset0 + (-7)] += 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[eeOffset2]; 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[eeOffset2 + (-2)]; 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[eeOffset2 + (-4)]; 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[eeOffset2 + (-6)]; 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 bytes1 = input; return new kha_audio2_ogg_vorbis_Reader(input,function(pos) { kha_audio2_ogg_vorbis_Reader.seekBytes(bytes1,pos); },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 bytes1 = input; decoder.setupSampleNumber(function(pos) { kha_audio2_ogg_vorbis_Reader.seekBytes(bytes1,pos); },bytes.length); var header = decoder.header; var count = 0; var bufferSize = 4096; var buffer = kha_arrays_Float32Array._new(bufferSize * header.channel); while(true) { var n = decoder.read(buffer,bufferSize,header.channel,header.sampleRate,useFloat); var _g = 0; var _g1 = n * header.channel; while(_g < _g1) { var i = _g++; output.writeFloat(buffer.getFloat32(i * 4,kha_arrays_ByteArray.LITTLE_ENDIAN)); } 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.toFloat(samples) / UInt.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.toFloat(samples) / UInt.toFloat(b) * 1000; } ,set_currentMillisecond: function(value) { this.set_currentSample(Math.floor(UInt.toFloat(this.get_header().sampleRate) * (value / 1000))); 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 = Object.create(kha_audio2_ogg_vorbis_Reader.prototype); 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.toFloat(samples) / UInt.toFloat(b) * 1000; } ,millisecondToSample: function(millseconds) { return Math.floor(UInt.toFloat(this.get_header().sampleRate) * (millseconds / 1000)); } ,__class__: kha_audio2_ogg_vorbis_Reader ,__properties__: {set_currentMillisecond:"set_currentMillisecond",get_currentMillisecond:"get_currentMillisecond",set_currentSample:"set_currentSample",get_currentSample:"get_currentSample",get_totalMillisecond:"get_totalMillisecond",get_totalSample:"get_totalSample",get_header:"get_header"} }; 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 _g = 0; var _g1 = segmentCount; while(_g < _g1) { var i = _g++; vec[i] = this.input.readByte(); } this.segments = vec; this.endSegWithKnownLoc = -2; if(loc0 != -1 || loc1 != -1) { var i = segmentCount - 1; while(i >= 0) { if(this.segments[i] < 255) { break; } if(i >= 0) { this.endSegWithKnownLoc = i; this.knownLocForPacket = loc0; } --i; } } if(this.firstDecode) { var i = 0; var len = 0; var p = new kha_audio2_ogg_vorbis_data_ProbedPage(); var _g = 0; var _g1 = segmentCount; while(_g < _g1) { var i = _g++; len += this.segments[i]; } 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 = Object.create(kha_audio2_ogg_vorbis_VorbisDecodeState.prototype); 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( _g ) { var _g1 = haxe_Exception.caught(_g).unwrap(); if(((_g1) instanceof kha_audio2_ogg_vorbis_data_ReaderError)) { var e = _g1; this.lastSeg = true; this.error = e; return 0; } else { throw _g; } } if((this.page.flag & 1) == 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID,null,{ fileName : "kha/audio2/ogg/vorbis/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; } this.bytesInSeg = len; return len; } ,startPacket: function() { while(this.nextSeg == -1) { this.page.start(this); if((this.page.flag & 1) != 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "kha/audio2/ogg/vorbis/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( _g ) { if(((haxe_Exception.caught(_g).unwrap()) instanceof haxe_io_Eof)) { eof = true; x = 0; } else { throw _g; } } 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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "kha/audio2/ogg/vorbis/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 z = this.acc & (1 << n) - 1; this.acc = this.acc >>> n; this.validBits -= n; return z; } } ,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 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[0] = x; 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[1] = x; 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[2] = x; 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[3] = x; 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[4] = x; 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[5] = x; if(header.toString() != "vorbis") { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{ fileName : "kha/audio2/ogg/vorbis/VorbisDecodeState.hx", lineNumber : 301, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "vorbisValidate"})); } } ,firstPageValidate: function() { if(this.segments.length != 1) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"segmentCount",{ fileName : "kha/audio2/ogg/vorbis/VorbisDecodeState.hx", lineNumber : 308, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "firstPageValidate"})); } if(this.segments[0] != 30) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"decodeState head",{ fileName : "kha/audio2/ogg/vorbis/VorbisDecodeState.hx", lineNumber : 311, 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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "kha/audio2/ogg/vorbis/VorbisDecodeState.hx", lineNumber : 324, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "capturePattern"})); } } ,skip: function(len) { this.inputPosition += len; var this1 = new Array(len); var vec = this1; var _g = 0; var _g1 = len; while(_g < _g1) { var i = _g++; 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 _g = 0; var _g1 = n; while(_g < _g1) { var i = _g++; 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.gte(inputLength,65536) && UInt.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._hx_index) { case 0: var e = _g.end; var l = _g.last; end = e; last = l; break; case 1: throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{ fileName : "kha/audio2/ogg/vorbis/VorbisDecodeState.hx", lineNumber : 519, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "getSampleNumber"})); } var lastPageLoc = this.inputPosition; _hx_loop1: while(!last) { seekFunc(this.inputPosition = end); var _g = this.findPage(seekFunc,inputLength); switch(_g._hx_index) { case 0: var e = _g.end; var l = _g.last; end = e; last = l; break; case 1: break _hx_loop1; } previousSafe = lastPageLoc + 1; lastPageLoc = this.inputPosition; } seekFunc(this.inputPosition = lastPageLoc); this.inputPosition += 6; var this1 = new Array(6); var vec = this1; var _g = 0; var _g1 = 6; while(_g < _g1) { var i = _g++; 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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{ fileName : "kha/audio2/ogg/vorbis/VorbisDecodeState.hx", lineNumber : 553, 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; this.inputPosition += 1; header[4] = this.input.readByte(); this.inputPosition += 1; header[5] = this.input.readByte(); this.inputPosition += 1; header[6] = this.input.readByte(); this.inputPosition += 1; header[7] = this.input.readByte(); this.inputPosition += 1; header[8] = this.input.readByte(); this.inputPosition += 1; header[9] = this.input.readByte(); this.inputPosition += 1; header[10] = this.input.readByte(); this.inputPosition += 1; header[11] = this.input.readByte(); this.inputPosition += 1; header[12] = this.input.readByte(); this.inputPosition += 1; header[13] = this.input.readByte(); this.inputPosition += 1; header[14] = this.input.readByte(); this.inputPosition += 1; header[15] = this.input.readByte(); this.inputPosition += 1; header[16] = this.input.readByte(); this.inputPosition += 1; header[17] = this.input.readByte(); this.inputPosition += 1; header[18] = this.input.readByte(); this.inputPosition += 1; header[19] = this.input.readByte(); this.inputPosition += 1; header[20] = this.input.readByte(); this.inputPosition += 1; header[21] = this.input.readByte(); this.inputPosition += 1; header[22] = this.input.readByte(); this.inputPosition += 1; header[23] = this.input.readByte(); this.inputPosition += 1; header[24] = this.input.readByte(); this.inputPosition += 1; header[25] = this.input.readByte(); this.inputPosition += 1; header[26] = 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); header[22] = 0; header[23] = 0; header[24] = 0; header[25] = 0; var crc = 0; var _g = 0; while(_g < 27) { var i = _g++; crc = crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[header[i] ^ crc >>> 24]; } var len = 0; try { var _g1 = 0; var _g2 = header[26]; while(_g1 < _g2) { var i1 = _g1++; this.inputPosition += 1; var s = this.input.readByte(); crc = crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[s ^ crc >>> 24]; len += s; } var _g3 = 0; var _g4 = len; while(_g3 < _g4) { var i2 = _g3++; this.inputPosition += 1; var byte = this.input.readByte(); crc = crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[byte ^ crc >>> 24]; } } catch( _g5 ) { if(((haxe_Exception.caught(_g5).unwrap()) instanceof haxe_io_Eof)) { return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound; } else { throw _g5; } } 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( _g ) { if(((haxe_Exception.caught(_g).unwrap()) instanceof haxe_io_Eof)) { return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound; } else { throw _g; } } } ,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 this1 = new Array(27); var vec = this1; var _g = 0; var _g1 = 27; while(_g < _g1) { var i = _g++; vec[i] = this.input.readByte(); } var pageHeader = vec; var n = pageHeader[26]; this.inputPosition += n; var this1 = new Array(n); var vec = this1; var _g = 0; var _g1 = n; while(_g < _g1) { var i = _g++; vec[i] = this.input.readByte(); } var lacing = vec; var len = 0; var _g = 0; var _g1 = pageHeader[26]; while(_g < _g1) { var i = _g++; len += lacing[i]; } 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 _g = 0; var _g1 = pageHeader[26]; while(_g < _g1) { var i = _g++; if(packetStart) { if(lacing[i] == 0) { seekFunc(this.inputPosition = z.pageStart); return null; } this.inputPosition += 1; var n = this.input.readByte(); if((n & 1) != 0) { seekFunc(this.inputPosition = z.pageStart); return null; } n >>= 1; var n1 = modeCount - 1; var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; var b = n1 < 16384 ? n1 < 16 ? log2_4[n1] : n1 < 512 ? 5 + log2_4[n1 >> 5] : 10 + log2_4[n1 >> 10] : n1 < 16777216 ? n1 < 524288 ? 15 + log2_4[n1 >> 15] : 20 + log2_4[n1 >> 20] : n1 < 536870912 ? 25 + log2_4[n1 >> 25] : n1 < -2147483648 ? 30 + log2_4[n1 >> 30] : 0; n &= (1 << b) - 1; if(n >= modeCount) { seekFunc(this.inputPosition = z.pageStart); return null; } packetType[numPacket++] = h.modes[n].blockflag; var len = lacing[i] - 1; this.inputPosition += len; var this1 = new Array(len); var vec = this1; var _g2 = 0; var _g3 = len; while(_g2 < _g3) { var i1 = _g2++; vec[i1] = this.input.readByte(); } } else { var len1 = lacing[i]; this.inputPosition += len1; var this2 = new Array(len1); var vec1 = this2; var _g4 = 0; var _g5 = len1; while(_g4 < _g5) { var i2 = _g4++; vec1[i2] = this.input.readByte(); } } packetStart = lacing[i] < 255; } var samples = 0; if(numPacket > 1) { samples += packetType[numPacket - 1] ? h.blocksize1 : h.blocksize0; } var i = numPacket - 2; while(i >= 1) { --i; if(packetType[i]) { if(packetType[i + 1]) { samples += h.blocksize1 >> 1; } else { samples += (h.blocksize1 - h.blocksize0 >> 2) + (h.blocksize0 >> 1); } } else { samples += h.blocksize0 >> 1; } --i; } z.firstDecodedSample = z.lastDecodedSample - samples; seekFunc(this.inputPosition = z.pageStart); return z; } ,decodeScalarRaw: function(c) { this.prepHuffman(); 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 n = c.sortedEntries; while(n > 1) { var m = x + (n >> 1); if(UInt.gte(code,sortedCodewords[m])) { x = m; n -= n >> 1; } else { n >>= 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 _g = 0; var _g1 = c.entries; while(_g < _g1) { var i = _g++; 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 : "kha/audio2/ogg/vorbis/VorbisDecodeState.hx", lineNumber : 847, 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 = $hxEnums["kha.audio2.ogg.vorbis._VorbisDecodeState.FindPageResult"] = { __ename__:true,__constructs__:null ,Found: ($_=function(end,last) { return {_hx_index:0,end:end,last:last,__enum__:"kha.audio2.ogg.vorbis._VorbisDecodeState.FindPageResult",toString:$estr}; },$_._hx_name="Found",$_.__params__ = ["end","last"],$_) ,NotFound: {_hx_name:"NotFound",_hx_index:1,__enum__:"kha.audio2.ogg.vorbis._VorbisDecodeState.FindPageResult",toString:$estr} }; kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.__constructs__ = [kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.Found,kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound]; 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 this1 = new Array(header.channel); this.channelBuffers = this1; var this1 = new Array(header.channel); this.previousWindow = this1; var this1 = new Array(header.channel); this.finalY = this1; var _g = 0; var _g1 = header.channel; while(_g < _g1) { var i = _g++; var this1 = this.channelBuffers; var this2 = new Array(header.blocksize1); var vec = this2; this1[i] = vec; var this3 = this.previousWindow; var this4 = new Array(header.blocksize1 / 2 | 0); var vec1 = this4; this3[i] = vec1; this.finalY[i] = []; } var this1 = new Array(2); this.a = this1; var this1 = new Array(2); this.b = this1; var this1 = new Array(2); this.c = this1; var this1 = new Array(2); this.window = this1; var this1 = new Array(2); this.bitReverseData = this1; 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.toFloat(sampleRate) % UInt.toFloat(b) | 0) != 0) { throw haxe_Exception.thrown("Unsupported sampleRate : can't convert " + (this.header.sampleRate == null ? "null" : Std.string(UInt.toFloat(this.header.sampleRate))) + " to " + sampleRate); } if(channels % this.header.channel != 0) { throw haxe_Exception.thrown("Unsupported channels : can't convert " + this.header.channel + " to " + channels); } var b = this.header.sampleRate; var sampleRepeat = UInt.toFloat(sampleRate) / UInt.toFloat(b) | 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 _g = this.channelBufferStart; var _g1 = this.channelBufferStart + k; while(_g < _g1) { var j = _g++; var _g2 = 0; var _g3 = sampleRepeat; while(_g2 < _g3) { var sr = _g2++; var _g4 = 0; var _g5 = this.header.channel; while(_g4 < _g5) { var i = _g4++; var _g6 = 0; var _g7 = channelRepeat; while(_g6 < _g7) { var cr = _g6++; var value = this.channelBuffers[i][j]; if(value > 1) { value = 1; } else if(value < -1) { value = -1; } if(useFloat) { output.setFloat32(index * 4,value,true); ++index; } } } } } n += k; this.channelBufferStart += k; if(n == len || this.getFrameFloat() == 0) { break; } } var _g = n; var _g1 = len; while(_g < _g1) { var j = _g++; var _g2 = 0; var _g3 = sampleRepeat; while(_g2 < _g3) { var sr = _g2++; var _g4 = 0; var _g5 = this.header.channel; while(_g4 < _g5) { var i = _g4++; var _g6 = 0; var _g7 = channelRepeat; while(_g6 < _g7) { var cr = _g6++; if(useFloat) { output.setFloat32(index * 4,0,true); ++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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{ fileName : "kha/audio2/ogg/vorbis/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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "kha/audio2/ogg/vorbis/VorbisDecoder.hx", lineNumber : 219, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"})); } if(UInt.gt(endOffset,startOffset + 4000)) { endOffset = endOffset - 4000; } var probe = startOffset + Math.floor(UInt.toFloat(endOffset - startOffset) / UInt.toFloat(endSample - startSample) * (sampleNumber - startSample)); if(attempts >= 4) { var probe2 = startOffset + (endOffset - startOffset >>> 1); probe = attempts >= 8 ? probe2 : UInt.gt(probe2,probe) ? probe + (probe2 - probe >>> 1) : probe2 + (probe - probe2 >>> 1); } ++attempts; seekFunc(this.decodeState.inputPosition = probe); var _g = this.decodeState.findPage(seekFunc,inputLength); switch(_g._hx_index) { case 0: var _g1 = _g.end; var _g2 = _g.last; break; case 1: throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "kha/audio2/ogg/vorbis/VorbisDecoder.hx", lineNumber : 249, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"})); } var q = this.decodeState.analyzePage(seekFunc,this.header); if(q == null) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "kha/audio2/ogg/vorbis/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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "kha/audio2/ogg/vorbis/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 = Object.create(kha_audio2_ogg_vorbis_VorbisDecoder.prototype); 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 this1 = new Array(this.header.channel); decoder.channelBuffers = this1; var this1 = new Array(this.header.channel); decoder.previousWindow = this1; var this1 = new Array(this.header.channel); decoder.finalY = this1; var _g = 0; var _g1 = this.header.channel; while(_g < _g1) { var i = _g++; 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 _g = 0; var _g1 = this.header.channel; while(_g < _g1) { var i = _g++; var cb = this.channelBuffers[i]; var pw = this.previousWindow[i]; var _g2 = 0; var _g3 = n; while(_g2 < _g3) { var j = _g2++; cb[left + j] = cb[left + j] * w[j] + pw[j] * w[n - 1 - j]; } } } var prev = this.previousLength; this.previousLength = len - right; var _g = 0; var _g1 = this.header.channel; while(_g < _g1) { var i = _g++; var pw = this.previousWindow[i]; var cb = this.channelBuffers[i]; var _g2 = 0; var _g3 = len - right; while(_g2 < _g3) { var j = _g2++; pw[j] = cb[right + j]; } } 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 this1 = this.b; var this2 = new Array(n2); this1[bs] = this2; var this1 = this.c; var this2 = new Array(n4); this1[bs] = this2; var this1 = this.window; var this2 = new Array(n2); this1[bs] = this2; var this1 = this.bitReverseData; var this2 = new Array(n8); this1[bs] = this2; 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 aaOffset = n2 - 8; var eOffset0 = n4; var eOffset1 = 0; var dOffset0 = n4; var dOffset1 = 0; while(aaOffset >= 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[aaOffset + 4] - v40_20 * a[aaOffset + 5]; u[dOffset1] = v40_20 * a[aaOffset + 4] + v41_21 * a[aaOffset + 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[aaOffset] - v40_20 * a[aaOffset + 1]; u[dOffset1 + 2] = v40_20 * a[aaOffset] + v41_21 * a[aaOffset + 1]; aaOffset -= 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)]; u[eeOffset0] += u[eeOffset2]; u[eeOffset0 + (-1)] += 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)]; u[eeOffset0 + (-2)] += u[eeOffset2 + (-2)]; u[eeOffset0 + (-3)] += 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)]; u[eeOffset0 + (-4)] += u[eeOffset2 + (-4)]; u[eeOffset0 + (-5)] += 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)]; u[eeOffset0 + (-6)] += u[eeOffset2 + (-6)]; u[eeOffset0 + (-7)] += 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_off = n2 - 1 - n4; 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)]; u[eeOffset0] += u[eeOffset2]; u[eeOffset0 + (-1)] += 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)]; u[eeOffset0 + (-2)] += u[eeOffset2 + (-2)]; u[eeOffset0 + (-3)] += 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)]; u[eeOffset0 + (-4)] += u[eeOffset2 + (-4)]; u[eeOffset0 + (-5)] += 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)]; u[eeOffset0 + (-6)] += u[eeOffset2 + (-6)]; u[eeOffset0 + (-7)] += 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 d0 = n2 - 1 - n8 * 0; var aOffset = 0; var eOffset0 = d0; var eOffset2 = d0 + -(n >> 4); var i = (n >> 5 >> 2) + 1; while(--i > 0) { var k00_20 = u[eOffset0] - u[eOffset2]; var k01_21 = u[eOffset0 + (-1)] - u[eOffset2 + (-1)]; u[eOffset0] += u[eOffset2]; u[eOffset0 + (-1)] += u[eOffset2 + (-1)]; u[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-1)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-2)] - u[eOffset2 + (-2)]; k01_21 = u[eOffset0 + (-3)] - u[eOffset2 + (-3)]; u[eOffset0 + (-2)] += u[eOffset2 + (-2)]; u[eOffset0 + (-3)] += u[eOffset2 + (-3)]; u[eOffset2 + (-2)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-3)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-4)] - u[eOffset2 + (-4)]; k01_21 = u[eOffset0 + (-5)] - u[eOffset2 + (-5)]; u[eOffset0 + (-4)] += u[eOffset2 + (-4)]; u[eOffset0 + (-5)] += u[eOffset2 + (-5)]; u[eOffset2 + (-4)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-5)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-6)] - u[eOffset2 + (-6)]; k01_21 = u[eOffset0 + (-7)] - u[eOffset2 + (-7)]; u[eOffset0 + (-6)] += u[eOffset2 + (-6)]; u[eOffset0 + (-7)] += u[eOffset2 + (-7)]; u[eOffset2 + (-6)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-7)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; eOffset0 -= 8; eOffset2 -= 8; aOffset += 16; } var d0 = n2 - 1 - n8; var aOffset = 0; var eOffset0 = d0; var eOffset2 = d0 + -(n >> 4); var i = (n >> 5 >> 2) + 1; while(--i > 0) { var k00_20 = u[eOffset0] - u[eOffset2]; var k01_21 = u[eOffset0 + (-1)] - u[eOffset2 + (-1)]; u[eOffset0] += u[eOffset2]; u[eOffset0 + (-1)] += u[eOffset2 + (-1)]; u[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-1)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-2)] - u[eOffset2 + (-2)]; k01_21 = u[eOffset0 + (-3)] - u[eOffset2 + (-3)]; u[eOffset0 + (-2)] += u[eOffset2 + (-2)]; u[eOffset0 + (-3)] += u[eOffset2 + (-3)]; u[eOffset2 + (-2)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-3)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-4)] - u[eOffset2 + (-4)]; k01_21 = u[eOffset0 + (-5)] - u[eOffset2 + (-5)]; u[eOffset0 + (-4)] += u[eOffset2 + (-4)]; u[eOffset0 + (-5)] += u[eOffset2 + (-5)]; u[eOffset2 + (-4)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-5)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-6)] - u[eOffset2 + (-6)]; k01_21 = u[eOffset0 + (-7)] - u[eOffset2 + (-7)]; u[eOffset0 + (-6)] += u[eOffset2 + (-6)]; u[eOffset0 + (-7)] += u[eOffset2 + (-7)]; u[eOffset2 + (-6)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-7)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; eOffset0 -= 8; eOffset2 -= 8; aOffset += 16; } var d0 = n2 - 1 - n8 * 2; var aOffset = 0; var eOffset0 = d0; var eOffset2 = d0 + -(n >> 4); var i = (n >> 5 >> 2) + 1; while(--i > 0) { var k00_20 = u[eOffset0] - u[eOffset2]; var k01_21 = u[eOffset0 + (-1)] - u[eOffset2 + (-1)]; u[eOffset0] += u[eOffset2]; u[eOffset0 + (-1)] += u[eOffset2 + (-1)]; u[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-1)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-2)] - u[eOffset2 + (-2)]; k01_21 = u[eOffset0 + (-3)] - u[eOffset2 + (-3)]; u[eOffset0 + (-2)] += u[eOffset2 + (-2)]; u[eOffset0 + (-3)] += u[eOffset2 + (-3)]; u[eOffset2 + (-2)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-3)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-4)] - u[eOffset2 + (-4)]; k01_21 = u[eOffset0 + (-5)] - u[eOffset2 + (-5)]; u[eOffset0 + (-4)] += u[eOffset2 + (-4)]; u[eOffset0 + (-5)] += u[eOffset2 + (-5)]; u[eOffset2 + (-4)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-5)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-6)] - u[eOffset2 + (-6)]; k01_21 = u[eOffset0 + (-7)] - u[eOffset2 + (-7)]; u[eOffset0 + (-6)] += u[eOffset2 + (-6)]; u[eOffset0 + (-7)] += u[eOffset2 + (-7)]; u[eOffset2 + (-6)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-7)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; eOffset0 -= 8; eOffset2 -= 8; aOffset += 16; } var d0 = n2 - 1 - n8 * 3; var aOffset = 0; var eOffset0 = d0; var eOffset2 = d0 + -(n >> 4); var i = (n >> 5 >> 2) + 1; while(--i > 0) { var k00_20 = u[eOffset0] - u[eOffset2]; var k01_21 = u[eOffset0 + (-1)] - u[eOffset2 + (-1)]; u[eOffset0] += u[eOffset2]; u[eOffset0 + (-1)] += u[eOffset2 + (-1)]; u[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-1)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-2)] - u[eOffset2 + (-2)]; k01_21 = u[eOffset0 + (-3)] - u[eOffset2 + (-3)]; u[eOffset0 + (-2)] += u[eOffset2 + (-2)]; u[eOffset0 + (-3)] += u[eOffset2 + (-3)]; u[eOffset2 + (-2)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-3)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-4)] - u[eOffset2 + (-4)]; k01_21 = u[eOffset0 + (-5)] - u[eOffset2 + (-5)]; u[eOffset0 + (-4)] += u[eOffset2 + (-4)]; u[eOffset0 + (-5)] += u[eOffset2 + (-5)]; u[eOffset2 + (-4)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-5)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += 16; k00_20 = u[eOffset0 + (-6)] - u[eOffset2 + (-6)]; k01_21 = u[eOffset0 + (-7)] - u[eOffset2 + (-7)]; u[eOffset0 + (-6)] += u[eOffset2 + (-6)]; u[eOffset0 + (-7)] += u[eOffset2 + (-7)]; u[eOffset2 + (-6)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-7)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; eOffset0 -= 8; eOffset2 -= 8; aOffset += 16; } var _g = 2; var _g1 = ld - 3 >> 1; while(_g < _g1) { var l = _g++; var k0 = n >> l + 2; var k0_2 = k0 >> 1; var lim = 1 << l + 1; var _g2 = 0; var _g3 = lim; while(_g2 < _g3) { var i = _g2++; var d0 = n2 - 1 - k0 * i; var k1 = 1 << l + 3; var aOffset = 0; var eOffset0 = d0; var eOffset2 = d0 + -k0_2; var i1 = (n >> l + 4 >> 2) + 1; while(--i1 > 0) { var k00_20 = u[eOffset0] - u[eOffset2]; var k01_21 = u[eOffset0 + (-1)] - u[eOffset2 + (-1)]; u[eOffset0] += u[eOffset2]; u[eOffset0 + (-1)] += u[eOffset2 + (-1)]; u[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-1)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += k1; k00_20 = u[eOffset0 + (-2)] - u[eOffset2 + (-2)]; k01_21 = u[eOffset0 + (-3)] - u[eOffset2 + (-3)]; u[eOffset0 + (-2)] += u[eOffset2 + (-2)]; u[eOffset0 + (-3)] += u[eOffset2 + (-3)]; u[eOffset2 + (-2)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-3)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += k1; k00_20 = u[eOffset0 + (-4)] - u[eOffset2 + (-4)]; k01_21 = u[eOffset0 + (-5)] - u[eOffset2 + (-5)]; u[eOffset0 + (-4)] += u[eOffset2 + (-4)]; u[eOffset0 + (-5)] += u[eOffset2 + (-5)]; u[eOffset2 + (-4)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-5)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; aOffset += k1; k00_20 = u[eOffset0 + (-6)] - u[eOffset2 + (-6)]; k01_21 = u[eOffset0 + (-7)] - u[eOffset2 + (-7)]; u[eOffset0 + (-6)] += u[eOffset2 + (-6)]; u[eOffset0 + (-7)] += u[eOffset2 + (-7)]; u[eOffset2 + (-6)] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; u[eOffset2 + (-7)] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; eOffset0 -= 8; eOffset2 -= 8; aOffset += k1; } } } var _g = ld - 3 >> 1; var _g1 = ld - 6; while(_g < _g1) { var l = _g++; var k0 = n >> l + 2; var k1 = 1 << l + 3; var k0_2 = k0 >> 1; var rlim = n >> l + 6; var lim = 1 << l + 1; var aOffset = 0; var i_off = n2 - 1; var r = rlim + 1; while(--r > 0) { var A0 = a[aOffset]; var A1 = a[aOffset + 1]; var A2 = a[aOffset + k1]; var A3 = a[aOffset + k1 + 1]; var A4 = a[aOffset + k1 * 2]; var A5 = a[aOffset + k1 * 2 + 1]; var A6 = a[aOffset + k1 * 3]; var A7 = a[aOffset + k1 * 3 + 1]; var eeOffset0 = i_off; var eeOffset2 = i_off + -k0_2; var i = lim + 1; while(--i > 0) { var k00 = u[eeOffset0] - u[eeOffset2]; var k11 = u[eeOffset0 + (-1)] - u[eeOffset2 + (-1)]; u[eeOffset0] += u[eeOffset2]; u[eeOffset0 + (-1)] += u[eeOffset2 + (-1)]; u[eeOffset2] = k00 * A0 - k11 * A1; u[eeOffset2 + (-1)] = k11 * A0 + k00 * A1; k00 = u[eeOffset0 + (-2)] - u[eeOffset2 + (-2)]; k11 = u[eeOffset0 + (-3)] - u[eeOffset2 + (-3)]; u[eeOffset0 + (-2)] += u[eeOffset2 + (-2)]; u[eeOffset0 + (-3)] += u[eeOffset2 + (-3)]; u[eeOffset2 + (-2)] = k00 * A2 - k11 * A3; u[eeOffset2 + (-3)] = k11 * A2 + k00 * A3; k00 = u[eeOffset0 + (-4)] - u[eeOffset2 + (-4)]; k11 = u[eeOffset0 + (-5)] - u[eeOffset2 + (-5)]; u[eeOffset0 + (-4)] += u[eeOffset2 + (-4)]; u[eeOffset0 + (-5)] += u[eeOffset2 + (-5)]; u[eeOffset2 + (-4)] = k00 * A4 - k11 * A5; u[eeOffset2 + (-5)] = k11 * A4 + k00 * A5; k00 = u[eeOffset0 + (-6)] - u[eeOffset2 + (-6)]; k11 = u[eeOffset0 + (-7)] - u[eeOffset2 + (-7)]; u[eeOffset0 + (-6)] += u[eeOffset2 + (-6)]; u[eeOffset0 + (-7)] += u[eeOffset2 + (-7)]; u[eeOffset2 + (-6)] = k00 * A6 - k11 * A7; u[eeOffset2 + (-7)] = k11 * A6 + k00 * A7; eeOffset0 -= k0; eeOffset2 -= k0; } aOffset += k1 * 4; i_off -= 8; } } var i_off = n2 - 1; var A2 = a[n >> 3]; var zOffset = i_off; var baseOffset = i_off - 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 k00 = t0 - t1; u[zOffset + (-2)] = t0 + t1; t0 = u[zOffset + (-3)]; t1 = u[zOffset + (-11)]; var k11 = t0 - t1; u[zOffset + (-3)] = t0 + t1; u[zOffset + (-10)] = (k00 + k11) * A2; u[zOffset + (-11)] = (k11 - k00) * A2; t0 = u[zOffset + (-4)]; t1 = u[zOffset + (-12)]; k00 = t1 - t0; u[zOffset + (-4)] = t0 + t1; t0 = u[zOffset + (-5)]; t1 = u[zOffset + (-13)]; k11 = t0 - t1; u[zOffset + (-5)] = t0 + t1; u[zOffset + (-12)] = k11; u[zOffset + (-13)] = k00; t0 = u[zOffset + (-6)]; t1 = u[zOffset + (-14)]; k00 = t1 - t0; u[zOffset + (-6)] = t0 + t1; t0 = u[zOffset + (-7)]; t1 = u[zOffset + (-15)]; k11 = t0 - t1; u[zOffset + (-7)] = t0 + t1; u[zOffset + (-14)] = (k00 + k11) * A2; u[zOffset + (-15)] = (k00 - k11) * A2; var t01 = u[zOffset]; var t11 = u[zOffset + (-4)]; var k001 = 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)] = k001 + k33; u[zOffset + (-6)] = k001 - k33; t01 = u[zOffset + (-1)]; t11 = u[zOffset + (-5)]; var k111 = 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)] = k111 - k22; u[zOffset + (-7)] = k111 + k22; var zOffset1 = zOffset - 8; var t02 = u[zOffset1]; var t12 = u[zOffset1 + (-4)]; var k002 = 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)] = k002 + k331; u[zOffset1 + (-6)] = k002 - k331; t02 = u[zOffset1 + (-1)]; t12 = u[zOffset1 + (-5)]; var k112 = 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)] = k112 - k221; u[zOffset1 + (-7)] = k112 + k221; zOffset -= 16; } var brOffset = 0; var dOffset0 = n4 - 4; var dOffset1 = n2 - 4; while(dOffset0 >= 0) { var k4 = bitReverse[brOffset]; v[dOffset1 + 3] = u[k4]; v[dOffset1 + 2] = u[k4 + 1]; v[dOffset0 + 3] = u[k4 + 2]; v[dOffset0 + 2] = u[k4 + 3]; k4 = bitReverse[brOffset + 1]; v[dOffset1 + 1] = u[k4]; v[dOffset1] = u[k4 + 1]; v[dOffset0 + 1] = u[k4 + 2]; v[dOffset0] = u[k4 + 3]; dOffset0 -= 4; dOffset1 -= 4; brOffset += 2; } var cOffset = 0; var dOffset = 0; var eOffset = n2 - 4; while(dOffset < eOffset) { var a02 = v[dOffset] - v[eOffset + 2]; var a11 = v[dOffset + 1] + v[eOffset + 3]; var b0 = c[cOffset + 1] * a02 + c[cOffset] * a11; var b1 = c[cOffset + 1] * a11 - c[cOffset] * a02; var b2 = v[dOffset] + v[eOffset + 2]; var b3 = v[dOffset + 1] - v[eOffset + 3]; v[dOffset] = b2 + b0; v[dOffset + 1] = b3 + b1; v[eOffset + 2] = b2 - b0; v[eOffset + 3] = b1 - b3; a02 = v[dOffset + 2] - v[eOffset]; a11 = v[dOffset + 3] + v[eOffset + 1]; b0 = c[cOffset + 3] * a02 + c[cOffset + 2] * a11; b1 = c[cOffset + 3] * a11 - c[cOffset + 2] * a02; b2 = v[dOffset + 2] + v[eOffset]; b3 = v[dOffset + 3] - v[eOffset + 1]; v[dOffset + 2] = b2 + b0; v[dOffset + 3] = b3 + b1; v[eOffset] = b2 - b0; v[eOffset + 1] = b1 - b3; cOffset += 4; dOffset += 4; eOffset -= 4; } var bOffset = n2 - 8; var eOffset = n2 - 8; var dOffset0 = 0; var dOffset1 = n2 - 4; var dOffset2 = n2; var dOffset3 = n - 4; while(eOffset >= 0) { var p3 = buf2[eOffset + 6] * b[bOffset + 7] - buf2[eOffset + 7] * b[bOffset + 6]; var p2 = -buf2[eOffset + 6] * b[bOffset + 6] - buf2[eOffset + 7] * b[bOffset + 7]; buffer[dOffset0] = p3; buffer[dOffset1 + 3] = -p3; buffer[dOffset2] = p2; buffer[dOffset3 + 3] = p2; var p1 = buf2[eOffset + 4] * b[bOffset + 5] - buf2[eOffset + 5] * b[bOffset + 4]; var p0 = -buf2[eOffset + 4] * b[bOffset + 4] - buf2[eOffset + 5] * b[bOffset + 5]; buffer[dOffset0 + 1] = p1; buffer[dOffset1 + 2] = -p1; buffer[dOffset2 + 1] = p0; buffer[dOffset3 + 2] = p0; p3 = buf2[eOffset + 2] * b[bOffset + 3] - buf2[eOffset + 3] * b[bOffset + 2]; p2 = -buf2[eOffset + 2] * b[bOffset + 2] - buf2[eOffset + 3] * b[bOffset + 3]; buffer[dOffset0 + 2] = p3; buffer[dOffset1 + 1] = -p3; buffer[dOffset2 + 2] = p2; buffer[dOffset3 + 1] = p2; p1 = buf2[eOffset] * b[bOffset + 1] - buf2[eOffset + 1] * b[bOffset]; p0 = -buf2[eOffset] * b[bOffset] - buf2[eOffset + 1] * b[bOffset + 1]; buffer[dOffset0 + 3] = p1; buffer[dOffset1] = -p1; buffer[dOffset2 + 3] = p0; buffer[dOffset3] = p0; bOffset -= 8; eOffset -= 8; dOffset0 += 4; dOffset2 += 4; dOffset1 -= 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; } if(this.decodeState.readBits(1) != 0) { while(true) { var _this = this.decodeState; 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; if(!(-1 != x)) { break; } } continue; } break; } 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 i = this.decodeState.readBits(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); if(i == -1 || i >= this.header.modes.length) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "kha/audio2/ogg/vorbis/VorbisDecoder.hx", lineNumber : 519, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "decodeInitial"})); } var m = this.header.modes[i]; var n; var prev; var next; if(m.blockflag) { n = this.header.blocksize1; prev = this.decodeState.readBits(1); next = this.decodeState.readBits(1); } else { next = 0; prev = next; n = this.header.blocksize0; } var windowCenter = n >> 1; return { mode : i, left : m.blockflag && prev == 0 ? { start : n - this.header.blocksize0 >> 2, end : n + this.header.blocksize0 >> 2} : { start : 0, end : windowCenter}, right : m.blockflag && next == 0 ? { start : n * 3 - this.header.blocksize0 >> 2, end : n * 3 + this.header.blocksize0 >> 2} : { start : windowCenter, end : n}}; } ,decodePacketRest: function(r) { var len = 0; var m = this.header.modes[r.mode]; var this1 = new Array(256); var zeroChannel = this1; var this1 = new Array(256); var reallyZeroChannel = this1; 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 _g = 0; var _g1 = this.header.channel; while(_g < _g1) { var i = _g++; var s = map.chan[i].mux; zeroChannel[i] = false; var floor = this.header.floorConfig[map.submapFloor[s]]; if(floor.type == 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "kha/audio2/ogg/vorbis/VorbisDecoder.hx", lineNumber : 581, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "decodePacketRest"})); } else { var g = floor.floor1; if(this.decodeState.readBits(1) != 0) { var fy = []; var this1 = new Array(256); var step2Flag = this1; var range = rangeList[g.floor1Multiplier - 1]; var offset = 2; fy = this.finalY[i]; var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; fy[0] = this.decodeState.readBits((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 log2_41 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; fy[1] = this.decodeState.readBits((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 _g2 = 0; var _g3 = g.partitions; while(_g2 < _g3) { var j = _g2++; 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 _this = this.decodeState; if(_this.validBits < 10) { _this.prepHuffman(); } var i1 = c.fastHuffman[_this.acc & 1023]; var val; if(i1 >= 0) { var l = c.codewordLengths[i1]; _this.acc = _this.acc >>> l; _this.validBits -= l; if(_this.validBits < 0) { _this.validBits = 0; val = -1; } else { val = i1; } } else { val = _this.decodeScalarRaw(c); } if(c.sparse) { val = c.sortedValues[val]; } cval = val; } var books = g.subclassBooks[pclass]; var _g4 = 0; var _g5 = cdim; while(_g4 < _g5) { var k = _g4++; var book = books[cval & csub]; cval >>= cbits; var tmp = offset++; var tmp1; if(book >= 0) { var _this1 = this.decodeState; var c1 = codebooks[book]; if(_this1.validBits < 10) { _this1.prepHuffman(); } var i2 = c1.fastHuffman[_this1.acc & 1023]; var val1; if(i2 >= 0) { var l1 = c1.codewordLengths[i2]; _this1.acc = _this1.acc >>> l1; _this1.validBits -= l1; if(_this1.validBits < 0) { _this1.validBits = 0; val1 = -1; } else { val1 = i2; } } else { val1 = _this1.decodeScalarRaw(c1); } if(c1.sparse) { val1 = c1.sortedValues[val1]; } tmp1 = val1; } else { tmp1 = 0; } fy[tmp] = tmp1; } } if(this.decodeState.validBits == -1) { zeroChannel[i] = true; continue; } step2Flag[0] = step2Flag[1] = true; var naighbors = g.neighbors; var xlist = g.xlist; var _g6 = 2; var _g7 = g.values; while(_g6 < _g7) { var j1 = _g6++; 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 _g8 = 0; var _g9 = g.values; while(_g8 < _g9) { var j2 = _g8++; if(!step2Flag[j2]) { fy[j2] = -1; } } } else { zeroChannel[i] = true; } } } var _g = 0; var _g1 = this.header.channel; while(_g < _g1) { var i = _g++; reallyZeroChannel[i] = zeroChannel[i]; } var _g = 0; var _g1 = map.couplingSteps; while(_g < _g1) { var i = _g++; if(!zeroChannel[map.chan[i].magnitude] || !zeroChannel[map.chan[i].angle]) { zeroChannel[map.chan[i].magnitude] = zeroChannel[map.chan[i].angle] = false; } } var _g = 0; var _g1 = map.submaps; while(_g < _g1) { var i = _g++; var this1 = new Array(this.header.channel); var residueBuffers = this1; var this2 = new Array(256); var doNotDecode = this2; var ch = 0; var _g2 = 0; var _g3 = this.header.channel; while(_g2 < _g3) { var j = _g2++; if(map.chan[j].mux == i) { if(zeroChannel[j]) { doNotDecode[ch] = true; residueBuffers[ch] = null; } else { doNotDecode[ch] = false; residueBuffers[ch] = this.channelBuffers[j]; } ++ch; } } var r1 = map.submapResidue[i]; var residue = this.header.residueConfig[r1]; residue.decode(this.decodeState,this.header,residueBuffers,ch,n2,doNotDecode,this.channelBuffers); } var i = map.couplingSteps; var n2 = n >> 1; while(--i >= 0) { var m1 = this.channelBuffers[map.chan[i].magnitude]; var a = this.channelBuffers[map.chan[i].angle]; var _g = 0; var _g1 = n2; while(_g < _g1) { var j = _g++; var a2; var m2; if(m1[j] > 0) { if(a[j] > 0) { m2 = m1[j]; a2 = m1[j] - a[j]; } else { a2 = m1[j]; m2 = m1[j] + a[j]; } } else if(a[j] > 0) { m2 = m1[j]; a2 = m1[j] + a[j]; } else { a2 = m1[j]; m2 = m1[j] - a[j]; } m1[j] = m2; a[j] = a2; } } var _g = 0; var _g1 = this.header.channel; while(_g < _g1) { var i = _g++; if(reallyZeroChannel[i]) { var _g2 = 0; var _g3 = n2; while(_g2 < _g3) { var j = _g2++; this.channelBuffers[i][j] = 0; } } else { map.doFloor(this.header.floorConfig,i,n,this.channelBuffers[i],this.finalY[i],null); } } var _g = 0; var _g1 = this.header.channel; while(_g < _g1) { var i = _g++; this.inverseMdct(this.channelBuffers[i],n,m.blockflag); } var _this = this.decodeState; while(_this.bytesInSeg != 0 || !_this.lastSeg && _this.next() != 0) { _this.bytesInSeg--; _this.inputPosition += 1; _this.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 _g = 0; var _g1 = n; while(_g < _g1) { var i = _g++; 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.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.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; } return r; }; kha_audio2_ogg_vorbis_VorbisTools.computeWindow = function(n,$window) { var n2 = n >> 1; var _g = 0; var _g1 = n2; while(_g < _g1) { var i = _g++; $window[i] = Math.sin(1.5707963267948966 * 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 _g = 0; var _g1 = n8; while(_g < _g1) { var i = _g++; var n = 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; rev[i] = (n >>> 16 | n << 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 _g = 0; var _g1 = n4; while(_g < _g1) { var k = _g++; 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 k2 = 0; var _g = 0; var _g1 = n8; while(_g < _g1) { var k = _g++; cf[k2] = Math.cos(2 * (k2 + 1) * 3.14159265358979323846264 / n); cf[k2 + 1] = -Math.sin(2 * (k2 + 1) * 3.14159265358979323846264 / n); k2 += 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 this1 = kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable; var this2 = new Array(64); this1[i] = this2; 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; sy = dy < 0 ? base - 1 : base + 1; } ady -= (base < 0 ? -base : base) * adx; if(x1 > n) { x1 = n; } output[x] *= kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE[y]; var _g = x + 1; var _g1 = x1; while(_g < _g1) { var i = _g++; err += ady; if(err >= adx) { err -= adx; y += sy; } else { y += base; } output[i] *= 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 this1 = new Array(source.length); var dest = this1; var _g = 0; var _g1 = source.length; while(_g < _g1) { var i = _g++; 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(); if(decodeState.readBits(8) != 66 || decodeState.readBits(8) != 67 || decodeState.readBits(8) != 86) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Codebook.hx", lineNumber : 40, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"})); } var x = decodeState.readBits(8); c.dimensions = (decodeState.readBits(8) << 8) + x; var x = decodeState.readBits(8); var y = decodeState.readBits(8); c.entries = (decodeState.readBits(8) << 16) + (y << 8) + x; var ordered = decodeState.readBits(1); c.sparse = ordered != 0 ? false : decodeState.readBits(1) != 0; var this1 = new Array(c.entries); var lengths = this1; if(!c.sparse) { c.codewordLengths = lengths; } var total = 0; if(ordered != 0) { var currentEntry = 0; var currentLength = decodeState.readBits(5) + 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 = decodeState.readBits(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); if(currentEntry + n > c.entries) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"codebook entrys",{ fileName : "kha/audio2/ogg/vorbis/data/Codebook.hx", lineNumber : 67, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"})); } var _g = 0; var _g1 = n; while(_g < _g1) { var i = _g++; lengths[currentEntry + i] = currentLength; } currentEntry += n; ++currentLength; } } else { var _g = 0; var _g1 = c.entries; while(_g < _g1) { var j = _g++; var present = c.sparse ? decodeState.readBits(1) : 1; if(present != 0) { lengths[j] = decodeState.readBits(5) + 1; ++total; } else { lengths[j] = 255; } } } if(c.sparse && total >= c.entries >> 2) { c.codewordLengths = lengths; c.sparse = false; } var tmp; if(c.sparse) { tmp = total; } else { var sortedCount = 0; var _g = 0; var _g1 = c.entries; while(_g < _g1) { var j = _g++; var l = lengths[j]; if(l > 10 && l != 255) { ++sortedCount; } } tmp = sortedCount; } c.sortedEntries = tmp; var values = null; if(!c.sparse) { var this1 = new Array(c.entries); c.codewords = this1; } else { if(c.sortedEntries != 0) { var this1 = new Array(c.sortedEntries); c.codewordLengths = this1; var this1 = new Array(c.entries); c.codewords = this1; var this1 = new Array(c.entries); values = this1; } var size = c.entries + 64 * c.sortedEntries; } if(!c.computeCodewords(lengths,c.entries,values)) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"compute codewords",{ fileName : "kha/audio2/ogg/vorbis/data/Codebook.hx", lineNumber : 120, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"})); } if(c.sortedEntries != 0) { c.sortedCodewords = []; var this1 = new Array(c.sortedEntries); c.sortedValues = this1; c.computeSortedHuffman(lengths,values); } if(c.sparse) { values = null; c.codewords = null; lengths = null; } c.computeAcceleratedHuffman(); c.lookupType = decodeState.readBits(4); if(c.lookupType > 2) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"codebook lookup type",{ fileName : "kha/audio2/ogg/vorbis/data/Codebook.hx", lineNumber : 143, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"})); } if(c.lookupType > 0) { var x = decodeState.readBits(32); var mantissa = UInt.toFloat(x & 2097151); var sign = x & -2147483648; var exp = (x & 2145386496) >>> 21; var res = sign != 0 ? -mantissa : mantissa; c.minimumValue = res * Math.pow(2,exp - 788); var x = decodeState.readBits(32); var mantissa = UInt.toFloat(x & 2097151); var sign = x & -2147483648; var exp = (x & 2145386496) >>> 21; var res = sign != 0 ? -mantissa : mantissa; c.deltaValue = res * Math.pow(2,exp - 788); c.valueBits = decodeState.readBits(4) + 1; c.sequenceP = decodeState.readBits(1) != 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 this1 = new Array(c.lookupValues); var mults = this1; var _g = 0; var _g1 = c.lookupValues; while(_g < _g1) { var j = _g++; var q = decodeState.readBits(c.valueBits); if(q == -1) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"fail lookup",{ fileName : "kha/audio2/ogg/vorbis/data/Codebook.hx", lineNumber : 161, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"})); } mults[j] = q; } var this1 = new Array(c.lookupValues); c.multiplicands = this1; var _g = 0; var _g1 = c.lookupValues; while(_g < _g1) { var j = _g++; c.multiplicands[j] = mults[j] * c.deltaValue + c.minimumValue; } if(c.lookupType == 2 && c.sequenceP) { var _g = 1; var _g1 = c.lookupValues; while(_g < _g1) { var j = _g++; c.multiplicands[j] = c.multiplicands[j - 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; available[0] = 0; available[1] = 0; available[2] = 0; available[3] = 0; available[4] = 0; available[5] = 0; available[6] = 0; available[7] = 0; available[8] = 0; available[9] = 0; available[10] = 0; available[11] = 0; available[12] = 0; available[13] = 0; available[14] = 0; available[15] = 0; available[16] = 0; available[17] = 0; available[18] = 0; available[19] = 0; available[20] = 0; available[21] = 0; available[22] = 0; available[23] = 0; available[24] = 0; available[25] = 0; available[26] = 0; available[27] = 0; available[28] = 0; available[29] = 0; available[30] = 0; available[31] = 0; var k = 0; while(k < n) { if(len[k] < 255) { break; } ++k; } if(k == n) { 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 count = m++; if(!this.sparse) { this.codewords[i] = huffCode; } else { this.codewords[count] = huffCode; this.codewordLengths[count] = len[i]; values[count] = 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 _g = 0; var _g1 = this.entries; while(_g < _g1) { var i = _g++; 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; } } } else { var _g = 0; var _g1 = this.sortedEntries; while(_g < _g1) { var i = _g++; 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[i] = n >>> 16 | n << 16; } } this.sortedCodewords[this.sortedEntries] = -1; this.sortedCodewords.sort(kha_audio2_ogg_vorbis_VorbisTools.uintAsc); var len = this.sparse ? this.sortedEntries : this.entries; var _g = 0; var _g1 = len; while(_g < _g1) { var i = _g++; var huffLen = this.sparse ? lengths[values[i]] : lengths[i]; if(this.sparse ? true : huffLen == 255 ? false : huffLen > 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; var code = n >>> 16 | n << 16; var x = 0; var n1 = this.sortedEntries; while(n1 > 1) { var m = x + (n1 >> 1); if(UInt.gte(code,this.sortedCodewords[m])) { x = m; n1 -= n1 >> 1; } else { n1 >>= 1; } } if(this.sparse) { this.sortedValues[x] = values[i]; this.codewordLengths[x] = huffLen; } else { this.sortedValues[x] = i; } } } } ,computeAcceleratedHuffman: function() { var this1 = new Array(1024); this.fastHuffman = this1; this.fastHuffman[0] = -1; var _g = 0; var _g1 = 1024; while(_g < _g1) { var i = _g++; this.fastHuffman[i] = -1; } var len = this.sparse ? this.sortedEntries : this.entries; var _g = 0; var _g1 = len; while(_g < _g1) { var i = _g++; if(this.codewordLengths[i] <= 10) { var z; if(this.sparse) { var n = this.sortedCodewords[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; z = n >>> 16 | n << 16; } else { z = this.codewords[i]; } while(z < 1024) { this.fastHuffman[z] = i; z += 1 << this.codewordLengths[i]; } } } } ,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 _g = 0; var _g1 = len; while(_g < _g1) { var i = _g++; var off = UInt.toFloat(z / div | 0) % UInt.toFloat(lookupValues) | 0; var val = multiplicands[off] + last; output[offset + i] += val; if(sequenceP) { last = val + minimumValue; } div = div * lookupValues; } return true; } z *= this.dimensions; if(sequenceP) { var last = 0.0; var _g = 0; var _g1 = len; while(_g < _g1) { var i = _g++; var val = multiplicands[z + i] + last; output[offset + i] += val; last = val + minimumValue; } } else { var last = 0.0; var _g = 0; var _g1 = len; while(_g < _g1) { var i = _g++; output[offset + i] += multiplicands[z + i] + last; } } 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 _g = 0; var _g1 = len; while(_g < _g1) { var i = _g++; var off = UInt.toFloat(z / div | 0) % UInt.toFloat(lookupValues) | 0; var val = multiplicands[off] + last; output[offset + i * step] += val; if(sequenceP) { last = val; } div = div * lookupValues; } return true; } z *= this.dimensions; var _g = 0; var _g1 = len; while(_g < _g1) { var i = _g++; var val = multiplicands[z + i] + last; output[offset + i * step] += val; if(sequenceP) { last = val; } } 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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "kha/audio2/ogg/vorbis/data/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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "kha/audio2/ogg/vorbis/data/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 _g = 0; var _g1 = effective; while(_g < _g1) { var i1 = _g++; var off = UInt.toFloat(z / div | 0) % UInt.toFloat(lookupValues) | 0; var val1 = multiplicands[off] + last; residueBuffers[cInter][pInter] += val1; if(++cInter == ch) { cInter = 0; ++pInter; } last = val1; div = div * lookupValues; } } else { var _g2 = 0; var _g3 = effective; while(_g2 < _g3) { var i2 = _g2++; var off1 = UInt.toFloat(z / div | 0) % UInt.toFloat(lookupValues) | 0; var val2 = multiplicands[off1] + last; residueBuffers[cInter][pInter] += val2; if(++cInter == ch) { cInter = 0; ++pInter; } div = div * lookupValues; } } } else { z *= this.dimensions; if(sequenceP) { var _g4 = 0; var _g5 = effective; while(_g4 < _g5) { var i3 = _g4++; var val3 = multiplicands[z + i3] + last; residueBuffers[cInter][pInter] += val3; if(++cInter == ch) { cInter = 0; ++pInter; } last = val3; } } else { var _g6 = 0; var _g7 = effective; while(_g6 < _g7) { var i4 = _g6++; var val4 = multiplicands[z + i4] + last; residueBuffers[cInter][pInter] += 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 _g = 0; var _g1 = step; while(_g < _g1) { var k = _g++; if(!this.codebookDecodeStep(decodeState,target,offset + k,n - offset - k,step)) { return false; } } } else { var k = 0; while(k < n) { if(!this.codebookDecode(decodeState,target,offset,n - k)) { return false; } k += 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(); if(Object.prototype.hasOwnProperty.call(this.data.h,key)) { this.data.h[key].push(value); } else { var v = [value]; this.data.h[key] = v; } } ,getString: function(key) { key = key.toLowerCase(); if(Object.prototype.hasOwnProperty.call(this.data.h,key)) { return this.data.h[key][0]; } else { return null; } } ,getArray: function(key) { key = key.toLowerCase(); if(Object.prototype.hasOwnProperty.call(this.data.h,key)) { return this.data.h[key]; } else { return null; } } ,__class__: kha_audio2_ogg_vorbis_data_Comment ,__properties__: {get_artists:"get_artists",get_isrc:"get_isrc",get_contact:"get_contact",get_location:"get_location",get_date:"get_date",get_genre:"get_genre",get_description:"get_description",get_artist:"get_artist",get_license:"get_license",get_copyright:"get_copyright",get_performer:"get_performer",get_tracknumber:"get_tracknumber",get_organization:"get_organization",get_album:"get_album",get_version:"get_version",get_loopLength:"get_loopLength",get_loopStart:"get_loopStart",get_title:"get_title"} }; 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(); floor.type = decodeState.readBits(16); if(floor.type > 1) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/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(); g.order = decodeState.readBits(8); g.rate = decodeState.readBits(16); g.barkMapSize = decodeState.readBits(16); g.amplitudeBits = decodeState.readBits(6); g.amplitudeOffset = decodeState.readBits(8); g.numberOfBooks = decodeState.readBits(4) + 1; var _g = 0; var _g1 = g.numberOfBooks; while(_g < _g1) { var j = _g++; g.bookList[j] = decodeState.readBits(8); } throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED,null,{ fileName : "kha/audio2/ogg/vorbis/data/Floor.hx", lineNumber : 41, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"})); } else { var p = []; var g = floor.floor1 = new kha_audio2_ogg_vorbis_data_Floor1(); var maxClass = -1; g.partitions = decodeState.readBits(5); var this1 = new Array(g.partitions); g.partitionClassList = this1; var _g = 0; var _g1 = g.partitions; while(_g < _g1) { var j = _g++; g.partitionClassList[j] = decodeState.readBits(4); if(g.partitionClassList[j] > maxClass) { maxClass = g.partitionClassList[j]; } } var this1 = new Array(maxClass + 1); g.classDimensions = this1; var this1 = new Array(maxClass + 1); g.classMasterbooks = this1; var this1 = new Array(maxClass + 1); g.classSubclasses = this1; var this1 = new Array(maxClass + 1); g.subclassBooks = this1; var _g = 0; var _g1 = maxClass + 1; while(_g < _g1) { var j = _g++; g.classDimensions[j] = decodeState.readBits(3) + 1; g.classSubclasses[j] = decodeState.readBits(2); if(g.classSubclasses[j] != 0) { g.classMasterbooks[j] = decodeState.readBits(8); if(g.classMasterbooks[j] >= codebooks.length) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Floor.hx", lineNumber : 64, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"})); } } var kl = 1 << g.classSubclasses[j]; var this1 = g.subclassBooks; var this2 = new Array(kl); this1[j] = this2; var _g2 = 0; var _g3 = kl; while(_g2 < _g3) { var k = _g2++; g.subclassBooks[j][k] = decodeState.readBits(8) - 1; if(g.subclassBooks[j][k] >= codebooks.length) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Floor.hx", lineNumber : 73, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"})); } } } g.floor1Multiplier = decodeState.readBits(2) + 1; g.rangebits = decodeState.readBits(4); var this1 = new Array(250); g.xlist = this1; g.xlist[0] = 0; g.xlist[1] = 1 << g.rangebits; g.values = 2; var _g = 0; var _g1 = g.partitions; while(_g < _g1) { var j = _g++; var c = g.partitionClassList[j]; var _g2 = 0; var _g3 = g.classDimensions[c]; while(_g2 < _g3) { var k = _g2++; g.xlist[g.values] = decodeState.readBits(g.rangebits); g.values++; } } var _g = 0; var _g1 = g.values; while(_g < _g1) { var j = _g++; p.push(new kha_audio2_ogg_vorbis_data_IntPoint()); p[j].x = g.xlist[j]; p[j].y = j; } p.sort(kha_audio2_ogg_vorbis_VorbisTools.pointCompare); var this1 = new Array(g.values); g.sortedOrder = this1; var _g = 0; var _g1 = g.values; while(_g < _g1) { var j = _g++; g.sortedOrder[j] = p[j].y; } var this1 = new Array(g.values); g.neighbors = this1; var _g = 2; var _g1 = g.values; while(_g < _g1) { var j = _g++; var x = g.xlist; var low = -1; var high = 65536; var plow = 0; var phigh = 0; var _g2 = 0; var _g3 = j; while(_g2 < _g3) { var i = _g2++; if(x[i] > low && x[i] < x[j]) { plow = i; low = x[i]; } if(x[i] < high && x[i] > x[j]) { phigh = i; high = x[i]; } } var ne_low = plow; var ne_high = phigh; var this1 = g.neighbors; var this2 = new Array(g.values); this1[j] = this2; g.neighbors[j][0] = ne_low; g.neighbors[j][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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"not firstPage",{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 46, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } if((page.flag & 4) != 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"lastPage",{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 49, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } if((page.flag & 1) != 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"continuedPacket",{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 52, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } decodeState.firstPageValidate(); decodeState.inputPosition += 1; if(decodeState.input.readByte() != 1) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"decodeState head",{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 57, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } var header = new haxe_io_Bytes(new ArrayBuffer(6)); 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[0] = x; 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[1] = x; 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[2] = x; 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[3] = x; 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[4] = x; 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[5] = x; if(header.toString() != "vorbis") { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{ fileName : "kha/audio2/ogg/vorbis/VorbisDecodeState.hx", lineNumber : 301, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "vorbisValidate"})); } decodeState.inputPosition += 4; var version = decodeState.input.readInt32(); if(version != 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"vorbis version : " + version,{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 66, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } var header = new kha_audio2_ogg_vorbis_data_Header(); decodeState.inputPosition += 1; header.channel = decodeState.input.readByte(); if(header.channel == 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"no channel",{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 73, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } else if(header.channel > 16) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS,"too many channels",{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 75, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } decodeState.inputPosition += 4; header.sampleRate = decodeState.input.readInt32(); if(header.sampleRate == 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"no sampling rate",{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 80, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } decodeState.inputPosition += 4; header.maximumBitRate = decodeState.input.readInt32(); decodeState.inputPosition += 4; header.nominalBitRate = decodeState.input.readInt32(); decodeState.inputPosition += 4; header.minimumBitRate = decodeState.input.readInt32(); decodeState.inputPosition += 1; var x = decodeState.input.readByte(); var log0 = x & 15; var log1 = x >> 4; header.blocksize0 = 1 << log0; header.blocksize1 = 1 << log1; if(log0 < 6 || log0 > 13) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 93, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } if(log1 < 6 || log1 > 13) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 96, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } if(log0 > log1) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 99, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } decodeState.inputPosition += 1; var x = decodeState.input.readByte(); if((x & 1) == 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,null,{ fileName : "kha/audio2/ogg/vorbis/data/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(); header.vendor = packetInput.readString(vendorLength); header.comment = new kha_audio2_ogg_vorbis_data_Comment(); var commentCount = packetInput.readInt32(); var _g = 0; var _g1 = commentCount; while(_g < _g1) { var i = _g++; var n = packetInput.readInt32(); var str = packetInput.readString(n); var splitter = str.indexOf("="); if(splitter != -1) { header.comment.add(str.substring(0,splitter),str.substring(splitter + 1)); } } var x1 = packetInput.readByte(); if((x1 & 1) == 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 141, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } decodeState.startPacket(); var x1; if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { x1 = -1; } else { decodeState.bytesInSeg--; decodeState.inputPosition += 1; x1 = decodeState.input.readByte(); } decodeState.validBits = 0; if(x1 != 5) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"setup packet",{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 149, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } var header1 = new haxe_io_Bytes(new ArrayBuffer(6)); var x1; if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { x1 = -1; } else { decodeState.bytesInSeg--; decodeState.inputPosition += 1; x1 = decodeState.input.readByte(); } decodeState.validBits = 0; header1.b[0] = x1; var x1; if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { x1 = -1; } else { decodeState.bytesInSeg--; decodeState.inputPosition += 1; x1 = decodeState.input.readByte(); } decodeState.validBits = 0; header1.b[1] = x1; var x1; if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { x1 = -1; } else { decodeState.bytesInSeg--; decodeState.inputPosition += 1; x1 = decodeState.input.readByte(); } decodeState.validBits = 0; header1.b[2] = x1; var x1; if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { x1 = -1; } else { decodeState.bytesInSeg--; decodeState.inputPosition += 1; x1 = decodeState.input.readByte(); } decodeState.validBits = 0; header1.b[3] = x1; var x1; if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { x1 = -1; } else { decodeState.bytesInSeg--; decodeState.inputPosition += 1; x1 = decodeState.input.readByte(); } decodeState.validBits = 0; header1.b[4] = x1; var x1; if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { x1 = -1; } else { decodeState.bytesInSeg--; decodeState.inputPosition += 1; x1 = decodeState.input.readByte(); } decodeState.validBits = 0; header1.b[5] = x1; if(header1.toString() != "vorbis") { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{ fileName : "kha/audio2/ogg/vorbis/VorbisDecodeState.hx", lineNumber : 301, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "vorbisValidate"})); } var codebookCount = decodeState.readBits(8) + 1; var this1 = new Array(codebookCount); header.codebooks = this1; var _g = 0; var _g1 = codebookCount; while(_g < _g1) { var i = _g++; header.codebooks[i] = kha_audio2_ogg_vorbis_data_Codebook.read(decodeState); } x = decodeState.readBits(6) + 1; var _g = 0; var _g1 = x; while(_g < _g1) { var i = _g++; if(decodeState.readBits(16) != 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 165, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } } var floorCount = decodeState.readBits(6) + 1; var this1 = new Array(floorCount); header.floorConfig = this1; var _g = 0; var _g1 = floorCount; while(_g < _g1) { var i = _g++; header.floorConfig[i] = kha_audio2_ogg_vorbis_data_Floor.read(decodeState,header.codebooks); } var residueCount = decodeState.readBits(6) + 1; var this1 = new Array(residueCount); header.residueConfig = this1; var _g = 0; var _g1 = residueCount; while(_g < _g1) { var i = _g++; header.residueConfig[i] = kha_audio2_ogg_vorbis_data_Residue.read(decodeState,header.codebooks); } var mappingCount = decodeState.readBits(6) + 1; var this1 = new Array(mappingCount); header.mapping = this1; var _g = 0; var _g1 = mappingCount; while(_g < _g1) { var i = _g++; var map = kha_audio2_ogg_vorbis_data_Mapping.read(decodeState,header.channel); header.mapping[i] = map; var _g2 = 0; var _g3 = map.submaps; while(_g2 < _g3) { var j = _g2++; if(map.submapFloor[j] >= header.floorConfig.length) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 191, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } if(map.submapResidue[j] >= header.residueConfig.length) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Header.hx", lineNumber : 194, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); } } } var modeCount = decodeState.readBits(6) + 1; var this1 = new Array(modeCount); header.modes = this1; var _g = 0; var _g1 = modeCount; while(_g < _g1) { var i = _g++; var mode = kha_audio2_ogg_vorbis_data_Mode.read(decodeState); header.modes[i] = mode; if(mode.mapping >= header.mapping.length) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/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 header; }; 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 = decodeState.readBits(16); if(mappingType != 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"mapping type " + mappingType,{ fileName : "kha/audio2/ogg/vorbis/data/Mapping.hx", lineNumber : 22, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); } var this1 = new Array(channels); m.chan = this1; var _g = 0; var _g1 = channels; while(_g < _g1) { var j = _g++; m.chan[j] = new kha_audio2_ogg_vorbis_data_MappingChannel(); } if(decodeState.readBits(1) != 0) { m.submaps = decodeState.readBits(4) + 1; } else { m.submaps = 1; } if(decodeState.readBits(1) != 0) { m.couplingSteps = decodeState.readBits(8) + 1; var _g = 0; var _g1 = m.couplingSteps; while(_g < _g1) { var k = _g++; var n = channels - 1; var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; m.chan[k].magnitude = decodeState.readBits(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 n1 = channels - 1; var log2_41 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; m.chan[k].angle = decodeState.readBits(n1 < 16384 ? n1 < 16 ? log2_41[n1] : n1 < 512 ? 5 + log2_41[n1 >> 5] : 10 + log2_41[n1 >> 10] : n1 < 16777216 ? n1 < 524288 ? 15 + log2_41[n1 >> 15] : 20 + log2_41[n1 >> 20] : n1 < 536870912 ? 25 + log2_41[n1 >> 25] : n1 < -2147483648 ? 30 + log2_41[n1 >> 30] : 0); if(m.chan[k].magnitude >= channels) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Mapping.hx", lineNumber : 46, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); } if(m.chan[k].angle >= channels) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Mapping.hx", lineNumber : 49, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); } if(m.chan[k].magnitude == m.chan[k].angle) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Mapping.hx", lineNumber : 52, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); } } } else { m.couplingSteps = 0; } if(decodeState.readBits(2) != 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Mapping.hx", lineNumber : 61, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); } if(m.submaps > 1) { var _g = 0; var _g1 = channels; while(_g < _g1) { var j = _g++; m.chan[j].mux = decodeState.readBits(4); if(m.chan[j].mux >= m.submaps) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Mapping.hx", lineNumber : 67, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); } } } else { var _g = 0; var _g1 = channels; while(_g < _g1) { var j = _g++; m.chan[j].mux = 0; } } var this1 = new Array(m.submaps); m.submapFloor = this1; var this1 = new Array(m.submaps); m.submapResidue = this1; var _g = 0; var _g1 = m.submaps; while(_g < _g1) { var j = _g++; decodeState.readBits(8); m.submapFloor[j] = decodeState.readBits(8); m.submapResidue[j] = decodeState.readBits(8); } 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 floor = floors[this.submapFloor[s]]; if(floor.type == 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "kha/audio2/ogg/vorbis/data/Mapping.hx", lineNumber : 94, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "doFloor"})); } else { var g = floor.floor1; var lx = 0; var ly = finalY[0] * g.floor1Multiplier; var _g = 1; var _g1 = g.values; while(_g < _g1) { var q = _g++; 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 _g = lx; var _g1 = n2; while(_g < _g1) { var j = _g++; target[j] *= 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(); m.blockflag = decodeState.readBits(1) != 0; m.windowtype = decodeState.readBits(16); m.transformtype = decodeState.readBits(16); m.mapping = decodeState.readBits(8); if(m.windowtype != 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Mode.hx", lineNumber : 22, className : "kha.audio2.ogg.vorbis.data.Mode", methodName : "read"})); } if(m.transformtype != 0) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "kha/audio2/ogg/vorbis/VorbisDecodeState.hx", lineNumber : 324, 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 haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION,"" + version,{ fileName : "kha/audio2/ogg/vorbis/data/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 = $hxEnums["kha.audio2.ogg.vorbis.data.ReaderErrorType"] = { __ename__:true,__constructs__:null ,NEED_MORE_DATA: {_hx_name:"NEED_MORE_DATA",_hx_index:0,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,INVALID_API_MIXING: {_hx_name:"INVALID_API_MIXING",_hx_index:1,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,OUTOFMEM: {_hx_name:"OUTOFMEM",_hx_index:2,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,FEATURE_NOT_SUPPORTED: {_hx_name:"FEATURE_NOT_SUPPORTED",_hx_index:3,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,TOO_MANY_CHANNELS: {_hx_name:"TOO_MANY_CHANNELS",_hx_index:4,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,FILE_OPEN_FAILURE: {_hx_name:"FILE_OPEN_FAILURE",_hx_index:5,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,SEEK_WITHOUT_LENGTH: {_hx_name:"SEEK_WITHOUT_LENGTH",_hx_index:6,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,UNEXPECTED_EOF: {_hx_name:"UNEXPECTED_EOF",_hx_index:7,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,SEEK_INVALID: {_hx_name:"SEEK_INVALID",_hx_index:8,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,INVALID_SETUP: {_hx_name:"INVALID_SETUP",_hx_index:9,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,INVALID_STREAM: {_hx_name:"INVALID_STREAM",_hx_index:10,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,MISSING_CAPTURE_PATTERN: {_hx_name:"MISSING_CAPTURE_PATTERN",_hx_index:11,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,INVALID_STREAM_STRUCTURE_VERSION: {_hx_name:"INVALID_STREAM_STRUCTURE_VERSION",_hx_index:12,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,CONTINUED_PACKET_FLAG_INVALID: {_hx_name:"CONTINUED_PACKET_FLAG_INVALID",_hx_index:13,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,INCORRECT_STREAM_SERIAL_NUMBER: {_hx_name:"INCORRECT_STREAM_SERIAL_NUMBER",_hx_index:14,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,INVALID_FIRST_PAGE: {_hx_name:"INVALID_FIRST_PAGE",_hx_index:15,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,BAD_PACKET_TYPE: {_hx_name:"BAD_PACKET_TYPE",_hx_index:16,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,CANT_FIND_LAST_PAGE: {_hx_name:"CANT_FIND_LAST_PAGE",_hx_index:17,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,SEEK_FAILED: {_hx_name:"SEEK_FAILED",_hx_index:18,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} ,OTHER: {_hx_name:"OTHER",_hx_index:19,__enum__:"kha.audio2.ogg.vorbis.data.ReaderErrorType",toString:$estr} }; kha_audio2_ogg_vorbis_data_ReaderErrorType.__constructs__ = [kha_audio2_ogg_vorbis_data_ReaderErrorType.NEED_MORE_DATA,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_API_MIXING,kha_audio2_ogg_vorbis_data_ReaderErrorType.OUTOFMEM,kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED,kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS,kha_audio2_ogg_vorbis_data_ReaderErrorType.FILE_OPEN_FAILURE,kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_WITHOUT_LENGTH,kha_audio2_ogg_vorbis_data_ReaderErrorType.UNEXPECTED_EOF,kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_INVALID,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION,kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID,kha_audio2_ogg_vorbis_data_ReaderErrorType.INCORRECT_STREAM_SERIAL_NUMBER,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,kha_audio2_ogg_vorbis_data_ReaderErrorType.BAD_PACKET_TYPE,kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER]; 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(); r.type = decodeState.readBits(16); if(r.type > 2) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Residue.hx", lineNumber : 29, className : "kha.audio2.ogg.vorbis.data.Residue", methodName : "read"})); } var this1 = new Array(64); var residueCascade = this1; r.begin = decodeState.readBits(24); r.end = decodeState.readBits(24); r.partSize = decodeState.readBits(24) + 1; var classifications = r.classifications = decodeState.readBits(6) + 1; r.classbook = decodeState.readBits(8); var _g = 0; var _g1 = r.classifications; while(_g < _g1) { var j = _g++; var highBits = 0; var lowBits = decodeState.readBits(3); if(decodeState.readBits(1) != 0) { highBits = decodeState.readBits(5); } residueCascade[j] = highBits * 8 + lowBits; } var this1 = new Array(r.classifications); r.residueBooks = this1; var _g = 0; var _g1 = r.classifications; while(_g < _g1) { var j = _g++; var this1 = r.residueBooks; var this2 = new Array(8); this1[j] = this2; var _g2 = 0; while(_g2 < 8) { var k = _g2++; if((residueCascade[j] & 1 << k) != 0) { r.residueBooks[j][k] = decodeState.readBits(8); if(r.residueBooks[j][k] >= codebooks.length) { throw haxe_Exception.thrown(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "kha/audio2/ogg/vorbis/data/Residue.hx", lineNumber : 55, className : "kha.audio2.ogg.vorbis.data.Residue", methodName : "read"})); } } else { r.residueBooks[j][k] = -1; } } } var el = codebooks[r.classbook].entries; var classwords = codebooks[r.classbook].dimensions; var this1 = new Array(el); r.classdata = this1; var _g = 0; var _g1 = el; while(_g < _g1) { var j = _g++; var temp = j; var k = classwords; var this1 = r.classdata; var this2 = new Array(classwords); var cd = this1[j] = this2; while(--k >= 0) { cd[k] = temp % classifications; temp = temp / classifications | 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.toFloat(nRead) / UInt.toFloat(partSize) | 0; var this1 = new Array(header.channel * partRead + 1); var classifications = this1; var _g = 0; var _g1 = ch; while(_g < _g1) { var i = _g++; if(!doNotDecode[i]) { var buffer = residueBuffers[i]; var _g2 = 0; var _g3 = buffer.length; while(_g2 < _g3) { var j = _g2++; buffer[j] = 0; } } } if(this.type == 2 && ch != 1) { var _g = 0; var _g1 = ch; while(_g < _g1) { var j = _g++; if(!doNotDecode[j]) { break; } else if(j == ch - 1) { return; } } var _g = 0; while(_g < 8) { var pass = _g++; 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 i = c.fastHuffman[decodeState.acc & 1023]; var val; if(i >= 0) { var l = c.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(c); } if(c.sparse) { val = c.sortedValues[val]; } var q = val; if(q == -1) { return; } var i1 = classwords; while(--i1 >= 0) { classifications[i1 + pcount] = q % this.classifications; q = q / this.classifications | 0; } } var _g1 = 0; var _g2 = classwords; while(_g1 < _g2) { var i2 = _g1++; 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 i3 = c2.fastHuffman[decodeState.acc & 1023]; var val1; if(i3 >= 0) { var l1 = c2.codewordLengths[i3]; decodeState.acc = decodeState.acc >>> l1; decodeState.validBits -= l1; if(decodeState.validBits < 0) { decodeState.validBits = 0; val1 = -1; } else { val1 = i3; } } else { val1 = decodeState.decodeScalarRaw(c2); } if(c2.sparse) { val1 = c2.sortedValues[val1]; } var q1 = val1; if(q1 == -1) { return; } var i4 = classwords; while(--i4 >= 0) { classifications[i4 + pcount] = q1 % this.classifications; q1 = q1 / this.classifications | 0; } } var _g3 = 0; var _g4 = classwords; while(_g3 < _g4) { var i5 = _g3++; 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.toFloat(z4) % UInt.toFloat(ch) | 0; var pInter2 = UInt.toFloat(z4) / UInt.toFloat(ch) | 0; if(pass == 0) { var c3 = codebooks[this.classbook]; if(decodeState.validBits < 10) { decodeState.prepHuffman(); } var i6 = c3.fastHuffman[decodeState.acc & 1023]; var val2; if(i6 >= 0) { var l2 = c3.codewordLengths[i6]; decodeState.acc = decodeState.acc >>> l2; decodeState.validBits -= l2; if(decodeState.validBits < 0) { decodeState.validBits = 0; val2 = -1; } else { val2 = i6; } } else { val2 = decodeState.decodeScalarRaw(c3); } if(c3.sparse) { val2 = c3.sortedValues[val2]; } var q2 = val2; if(q2 == -1) { return; } var i7 = classwords; while(--i7 >= 0) { classifications[i7 + pcount] = q2 % this.classifications; q2 = q2 / this.classifications | 0; } } var _g5 = 0; var _g6 = classwords; while(_g5 < _g6) { var i8 = _g5++; 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.toFloat(z5) % UInt.toFloat(ch) | 0; pInter2 = UInt.toFloat(z5) / UInt.toFloat(ch) | 0; } ++pcount; } } } } return; } var _g = 0; while(_g < 8) { var pass = _g++; var pcount = 0; var classSet = 0; while(pcount < partRead) { if(pass == 0) { var _g1 = 0; var _g2 = ch; while(_g1 < _g2) { var j = _g1++; if(!doNotDecode[j]) { var c = codebooks[this.classbook]; if(decodeState.validBits < 10) { decodeState.prepHuffman(); } var i = c.fastHuffman[decodeState.acc & 1023]; var val; if(i >= 0) { var l = c.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(c); } if(c.sparse) { val = c.sortedValues[val]; } var temp = val; if(temp == -1) { return; } var i1 = classwords; while(--i1 >= 0) { classifications[j * partRead + i1 + pcount] = temp % this.classifications; temp = temp / this.classifications | 0; } } } } var _g3 = 0; var _g4 = classwords; while(_g3 < _g4) { var i2 = _g3++; if(pcount >= partRead) { break; } var _g5 = 0; var _g6 = ch; while(_g5 < _g6) { var j1 = _g5++; if(!doNotDecode[j1]) { var c1 = classifications[j1 * partRead + pcount]; var b = this.residueBooks[c1][pass]; if(b >= 0) { var target = residueBuffers[j1]; var offset = this.begin + pcount * partSize; var n = partSize; var book = codebooks[b]; if(!book.residueDecode(decodeState,target,offset,n,this.type)) { return; } } } } ++pcount; } } } } ,__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_compute_ConstantLocation = function() { }; $hxClasses["kha.compute.ConstantLocation"] = kha_compute_ConstantLocation; kha_compute_ConstantLocation.__name__ = true; kha_compute_ConstantLocation.prototype = { __class__: kha_compute_ConstantLocation }; var kha_compute_TextureUnit = function() { }; $hxClasses["kha.compute.TextureUnit"] = kha_compute_TextureUnit; kha_compute_TextureUnit.__name__ = true; kha_compute_TextureUnit.prototype = { __class__: kha_compute_TextureUnit }; var kha_graphics1_Graphics = function() { }; $hxClasses["kha.graphics1.Graphics"] = kha_graphics1_Graphics; kha_graphics1_Graphics.__name__ = true; kha_graphics1_Graphics.__isInterface__ = true; kha_graphics1_Graphics.prototype = { begin: null ,end: null ,setPixel: null ,__class__: kha_graphics1_Graphics }; var kha_graphics2_Graphics = function() { this.transformations = [new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1)]; this.transformationIndex = 0; this.opacities = [1]; this.myFontSize = 12; 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(img,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) { } ,drawCharacters: function(text,start,length,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 0; } ,set_imageScaleQuality: function(value) { return 1; } ,get_mipmapScaleQuality: function() { return 0; } ,set_mipmapScaleQuality: function(value) { return 1; } ,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_transformation: function() { return this.transformations[this.transformationIndex]; } ,set_transformation: function(transformation) { this.setTransformation(transformation); var _this = this.transformations[this.transformationIndex]; _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; } ,pushTransformation: function(trans) { this.transformationIndex++; if(this.transformationIndex == this.transformations.length) { this.transformations.push(new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1)); } var _this = this.transformations[this.transformationIndex]; _this._00 = trans._00; _this._10 = trans._10; _this._20 = trans._20; _this._01 = trans._01; _this._11 = trans._11; _this._21 = trans._21; _this._02 = trans._02; _this._12 = trans._12; _this._22 = trans._22; this.setTransformation(this.transformations[this.transformationIndex]); } ,popTransformation: function() { this.transformationIndex--; if(this.transformationIndex == -1) { throw haxe_Exception.thrown("There is no transformation matrix to remove, check your push/popTransformation code"); } this.setTransformation(this.transformations[this.transformationIndex]); return this.transformations[this.transformationIndex + 1]; } ,scale: function(x,y) { var _this = this.transformations[this.transformationIndex]; var _this__00 = x; var _this__10 = 0; var _this__20 = 0; var _this__01 = 0; var _this__11 = y; var _this__21 = 0; var _this__02 = 0; var _this__12 = 0; var _this__22 = 1; var m = this.transformations[this.transformationIndex]; var m__00 = _this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02; var m__10 = _this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12; var m__20 = _this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22; var m__01 = _this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02; var m__11 = _this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12; var m__21 = _this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22; var m__02 = _this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02; var m__12 = _this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12; var m__22 = _this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22; _this._00 = m__00; _this._10 = m__10; _this._20 = m__20; _this._01 = m__01; _this._11 = m__11; _this._21 = m__21; _this._02 = m__02; _this._12 = m__12; _this._22 = m__22; } ,pushScale: function(x,y) { var _this__00 = x; var _this__10 = 0; var _this__20 = 0; var _this__01 = 0; var _this__11 = y; var _this__21 = 0; var _this__02 = 0; var _this__12 = 0; var _this__22 = 1; var m = this.transformations[this.transformationIndex]; var mat__00 = _this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02; var mat__10 = _this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12; var mat__20 = _this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22; var mat__01 = _this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02; var mat__11 = _this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12; var mat__21 = _this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22; var mat__02 = _this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02; var mat__12 = _this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12; var mat__22 = _this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22; this.transformationIndex++; if(this.transformationIndex == this.transformations.length) { this.transformations.push(new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1)); } var _this = this.transformations[this.transformationIndex]; _this._00 = mat__00; _this._10 = mat__10; _this._20 = mat__20; _this._01 = mat__01; _this._11 = mat__11; _this._21 = mat__21; _this._02 = mat__02; _this._12 = mat__12; _this._22 = mat__22; this.setTransformation(this.transformations[this.transformationIndex]); } ,translation: function(tx,ty) { var _this__00 = 1; var _this__10 = 0; var _this__20 = tx; var _this__01 = 0; var _this__11 = 1; var _this__21 = ty; var _this__02 = 0; var _this__12 = 0; var _this__22 = 1; var m = this.transformations[this.transformationIndex]; 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 = this.transformations[this.transformationIndex]; var _this__00 = 1; var _this__10 = 0; var _this__20 = tx; var _this__01 = 0; var _this__11 = 1; var _this__21 = ty; var _this__02 = 0; var _this__12 = 0; var _this__22 = 1; var m = this.transformations[this.transformationIndex]; var m__00 = _this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02; var m__10 = _this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12; var m__20 = _this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22; var m__01 = _this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02; var m__11 = _this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12; var m__21 = _this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22; var m__02 = _this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02; var m__12 = _this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12; var m__22 = _this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22; _this._00 = m__00; _this._10 = m__10; _this._20 = m__20; _this._01 = m__01; _this._11 = m__11; _this._21 = m__21; _this._02 = m__02; _this._12 = m__12; _this._22 = m__22; } ,pushTranslation: function(tx,ty) { var _this__00 = 1; var _this__10 = 0; var _this__20 = tx; var _this__01 = 0; var _this__11 = 1; var _this__21 = ty; var _this__02 = 0; var _this__12 = 0; var _this__22 = 1; var m = this.transformations[this.transformationIndex]; var trans__00 = _this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02; var trans__10 = _this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12; var trans__20 = _this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22; var trans__01 = _this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02; var trans__11 = _this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12; var trans__21 = _this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22; var trans__02 = _this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02; var trans__12 = _this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12; var trans__22 = _this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22; this.transformationIndex++; if(this.transformationIndex == this.transformations.length) { this.transformations.push(new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1)); } var _this = this.transformations[this.transformationIndex]; _this._00 = trans__00; _this._10 = trans__10; _this._20 = trans__20; _this._01 = trans__01; _this._11 = trans__11; _this._21 = trans__21; _this._02 = trans__02; _this._12 = trans__12; _this._22 = trans__22; this.setTransformation(this.transformations[this.transformationIndex]); } ,rotation: function(angle,centerx,centery) { var _this__00 = 1; var _this__10 = 0; var _this__20 = centerx; var _this__01 = 0; var _this__11 = 1; var _this__21 = centery; var _this__02 = 0; var _this__12 = 0; var _this__22 = 1; var m__00 = Math.cos(angle); var m__10 = -Math.sin(angle); var m__20 = 0; var m__01 = Math.sin(angle); var m__11 = Math.cos(angle); var m__21 = 0; var m__02 = 0; var m__12 = 0; var m__22 = 1; var _this__001 = _this__00 * m__00 + _this__10 * m__01 + _this__20 * m__02; var _this__101 = _this__00 * m__10 + _this__10 * m__11 + _this__20 * m__12; var _this__201 = _this__00 * m__20 + _this__10 * m__21 + _this__20 * m__22; var _this__011 = _this__01 * m__00 + _this__11 * m__01 + _this__21 * m__02; var _this__111 = _this__01 * m__10 + _this__11 * m__11 + _this__21 * m__12; var _this__211 = _this__01 * m__20 + _this__11 * m__21 + _this__21 * m__22; var _this__021 = _this__02 * m__00 + _this__12 * m__01 + _this__22 * m__02; var _this__121 = _this__02 * m__10 + _this__12 * m__11 + _this__22 * m__12; var _this__221 = _this__02 * m__20 + _this__12 * m__21 + _this__22 * m__22; var m__00 = 1; var m__10 = 0; var m__20 = -centerx; var m__01 = 0; var m__11 = 1; var m__21 = -centery; var m__02 = 0; var m__12 = 0; var m__22 = 1; var _this__00 = _this__001 * m__00 + _this__101 * m__01 + _this__201 * m__02; var _this__10 = _this__001 * m__10 + _this__101 * m__11 + _this__201 * m__12; var _this__20 = _this__001 * m__20 + _this__101 * m__21 + _this__201 * m__22; var _this__01 = _this__011 * m__00 + _this__111 * m__01 + _this__211 * m__02; var _this__11 = _this__011 * m__10 + _this__111 * m__11 + _this__211 * m__12; var _this__21 = _this__011 * m__20 + _this__111 * m__21 + _this__211 * m__22; var _this__02 = _this__021 * m__00 + _this__121 * m__01 + _this__221 * m__02; var _this__12 = _this__021 * m__10 + _this__121 * m__11 + _this__221 * m__12; var _this__22 = _this__021 * m__20 + _this__121 * m__21 + _this__221 * m__22; var m = this.transformations[this.transformationIndex]; 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 _this = this.transformations[this.transformationIndex]; var _this__00 = 1; var _this__10 = 0; var _this__20 = centerx; var _this__01 = 0; var _this__11 = 1; var _this__21 = centery; var _this__02 = 0; var _this__12 = 0; var _this__22 = 1; var m__00 = Math.cos(angle); var m__10 = -Math.sin(angle); var m__20 = 0; var m__01 = Math.sin(angle); var m__11 = Math.cos(angle); var m__21 = 0; var m__02 = 0; var m__12 = 0; var m__22 = 1; var _this__001 = _this__00 * m__00 + _this__10 * m__01 + _this__20 * m__02; var _this__101 = _this__00 * m__10 + _this__10 * m__11 + _this__20 * m__12; var _this__201 = _this__00 * m__20 + _this__10 * m__21 + _this__20 * m__22; var _this__011 = _this__01 * m__00 + _this__11 * m__01 + _this__21 * m__02; var _this__111 = _this__01 * m__10 + _this__11 * m__11 + _this__21 * m__12; var _this__211 = _this__01 * m__20 + _this__11 * m__21 + _this__21 * m__22; var _this__021 = _this__02 * m__00 + _this__12 * m__01 + _this__22 * m__02; var _this__121 = _this__02 * m__10 + _this__12 * m__11 + _this__22 * m__12; var _this__221 = _this__02 * m__20 + _this__12 * m__21 + _this__22 * m__22; var m__00 = 1; var m__10 = 0; var m__20 = -centerx; var m__01 = 0; var m__11 = 1; var m__21 = -centery; var m__02 = 0; var m__12 = 0; var m__22 = 1; var _this__00 = _this__001 * m__00 + _this__101 * m__01 + _this__201 * m__02; var _this__10 = _this__001 * m__10 + _this__101 * m__11 + _this__201 * m__12; var _this__20 = _this__001 * m__20 + _this__101 * m__21 + _this__201 * m__22; var _this__01 = _this__011 * m__00 + _this__111 * m__01 + _this__211 * m__02; var _this__11 = _this__011 * m__10 + _this__111 * m__11 + _this__211 * m__12; var _this__21 = _this__011 * m__20 + _this__111 * m__21 + _this__211 * m__22; var _this__02 = _this__021 * m__00 + _this__121 * m__01 + _this__221 * m__02; var _this__12 = _this__021 * m__10 + _this__121 * m__11 + _this__221 * m__12; var _this__22 = _this__021 * m__20 + _this__121 * m__21 + _this__221 * m__22; var m = this.transformations[this.transformationIndex]; var m__00 = _this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02; var m__10 = _this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12; var m__20 = _this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22; var m__01 = _this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02; var m__11 = _this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12; var m__21 = _this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22; var m__02 = _this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02; var m__12 = _this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12; var m__22 = _this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22; _this._00 = m__00; _this._10 = m__10; _this._20 = m__20; _this._01 = m__01; _this._11 = m__11; _this._21 = m__21; _this._02 = m__02; _this._12 = m__12; _this._22 = m__22; } ,pushRotation: function(angle,centerx,centery) { var _this__00 = 1; var _this__10 = 0; var _this__20 = centerx; var _this__01 = 0; var _this__11 = 1; var _this__21 = centery; var _this__02 = 0; var _this__12 = 0; var _this__22 = 1; var m__00 = Math.cos(angle); var m__10 = -Math.sin(angle); var m__20 = 0; var m__01 = Math.sin(angle); var m__11 = Math.cos(angle); var m__21 = 0; var m__02 = 0; var m__12 = 0; var m__22 = 1; var _this__001 = _this__00 * m__00 + _this__10 * m__01 + _this__20 * m__02; var _this__101 = _this__00 * m__10 + _this__10 * m__11 + _this__20 * m__12; var _this__201 = _this__00 * m__20 + _this__10 * m__21 + _this__20 * m__22; var _this__011 = _this__01 * m__00 + _this__11 * m__01 + _this__21 * m__02; var _this__111 = _this__01 * m__10 + _this__11 * m__11 + _this__21 * m__12; var _this__211 = _this__01 * m__20 + _this__11 * m__21 + _this__21 * m__22; var _this__021 = _this__02 * m__00 + _this__12 * m__01 + _this__22 * m__02; var _this__121 = _this__02 * m__10 + _this__12 * m__11 + _this__22 * m__12; var _this__221 = _this__02 * m__20 + _this__12 * m__21 + _this__22 * m__22; var m__00 = 1; var m__10 = 0; var m__20 = -centerx; var m__01 = 0; var m__11 = 1; var m__21 = -centery; var m__02 = 0; var m__12 = 0; var m__22 = 1; var _this__00 = _this__001 * m__00 + _this__101 * m__01 + _this__201 * m__02; var _this__10 = _this__001 * m__10 + _this__101 * m__11 + _this__201 * m__12; var _this__20 = _this__001 * m__20 + _this__101 * m__21 + _this__201 * m__22; var _this__01 = _this__011 * m__00 + _this__111 * m__01 + _this__211 * m__02; var _this__11 = _this__011 * m__10 + _this__111 * m__11 + _this__211 * m__12; var _this__21 = _this__011 * m__20 + _this__111 * m__21 + _this__211 * m__22; var _this__02 = _this__021 * m__00 + _this__121 * m__01 + _this__221 * m__02; var _this__12 = _this__021 * m__10 + _this__121 * m__11 + _this__221 * m__12; var _this__22 = _this__021 * m__20 + _this__121 * m__21 + _this__221 * m__22; var m = this.transformations[this.transformationIndex]; var trans__00 = _this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02; var trans__10 = _this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12; var trans__20 = _this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22; var trans__01 = _this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02; var trans__11 = _this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12; var trans__21 = _this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22; var trans__02 = _this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02; var trans__12 = _this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12; var trans__22 = _this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22; this.transformationIndex++; if(this.transformationIndex == this.transformations.length) { this.transformations.push(new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1)); } var _this = this.transformations[this.transformationIndex]; _this._00 = trans__00; _this._10 = trans__10; _this._20 = trans__20; _this._01 = trans__01; _this._11 = trans__11; _this._21 = trans__21; _this._02 = trans__02; _this._12 = trans__12; _this._22 = trans__22; this.setTransformation(this.transformations[this.transformationIndex]); } ,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 ,transformationIndex: null ,opacities: null ,myFontSize: null ,setTransformation: function(transformation) { } ,setOpacity: function(opacity) { } ,setPipeline: function(pipeline) { } ,__class__: kha_graphics2_Graphics ,__properties__: {set_pipeline:"set_pipeline",get_pipeline:"get_pipeline",set_opacity:"set_opacity",get_opacity:"get_opacity",set_transformation:"set_transformation",get_transformation:"get_transformation",set_fontSize:"set_fontSize",get_fontSize:"get_fontSize",set_font:"set_font",get_font:"get_font",set_color:"set_color",get_color:"get_color",set_mipmapScaleQuality:"set_mipmapScaleQuality",get_mipmapScaleQuality:"get_mipmapScaleQuality",set_imageScaleQuality:"set_imageScaleQuality",get_imageScaleQuality:"get_imageScaleQuality"} }; 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.get_realWidth() != this.canvas.get_width() || this.texture.get_realHeight() != this.canvas.get_height())) { this.texture = kha_Image.create(this.canvas.get_width(),this.canvas.get_height(),0,2); } this.pixels = this.texture.lock(); } ,end: function() { this.texture.unlock(); this.canvas.get_g2().begin(false); 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_stride() + x * 4,kha_Color.fromBytes(color & 255,(color & 65280) >>> 8,(color & 16711680) >>> 16,color >>> 24)); } ,__class__: kha_graphics2_Graphics1 }; var kha_graphics2_GraphicsExtension = function() { }; $hxClasses["kha.graphics2.GraphicsExtension"] = kha_graphics2_GraphicsExtension; kha_graphics2_GraphicsExtension.__name__ = true; kha_graphics2_GraphicsExtension.drawArc = function(g2,cx,cy,radius,sAngle,eAngle,strength,ccw,segments) { if(segments == null) { segments = 0; } if(ccw == null) { ccw = false; } if(strength == null) { strength = 1; } sAngle %= Math.PI * 2; eAngle %= Math.PI * 2; if(ccw) { if(eAngle > sAngle) { eAngle -= Math.PI * 2; } } else if(eAngle < sAngle) { eAngle += Math.PI * 2; } radius += strength / 2; if(segments <= 0) { segments = Math.floor(10 * Math.sqrt(radius)); } var theta = (eAngle - sAngle) / segments; var c = Math.cos(theta); var s = Math.sin(theta); var x = Math.cos(sAngle) * radius; var y = Math.sin(sAngle) * radius; var _g = 0; var _g1 = segments; while(_g < _g1) { var n = _g++; var px = x + cx; var py = y + cy; var t = x; x = c * x - s * y; y = c * y + s * t; kha_graphics2_GraphicsExtension.drawInnerLine(g2,x + cx,y + cy,px,py,strength); } }; kha_graphics2_GraphicsExtension.fillArc = function(g2,cx,cy,radius,sAngle,eAngle,ccw,segments) { if(segments == null) { segments = 0; } if(ccw == null) { ccw = false; } sAngle %= Math.PI * 2; eAngle %= Math.PI * 2; if(ccw) { if(eAngle > sAngle) { eAngle -= Math.PI * 2; } } else if(eAngle < sAngle) { eAngle += Math.PI * 2; } if(segments <= 0) { segments = Math.floor(10 * Math.sqrt(radius)); } var theta = (eAngle - sAngle) / segments; var c = Math.cos(theta); var s = Math.sin(theta); var x = Math.cos(sAngle) * radius; var y = Math.sin(sAngle) * radius; var sx = x + cx; var sy = y + cy; var _g = 0; var _g1 = segments; while(_g < _g1) { var n = _g++; var px = x + cx; var py = y + cy; var t = x; x = c * x - s * y; y = c * y + s * t; g2.fillTriangle(px,py,x + cx,y + cy,sx,sy); } }; kha_graphics2_GraphicsExtension.drawCircle = function(g2,cx,cy,radius,strength,segments) { if(segments == null) { segments = 0; } if(strength == null) { strength = 1; } radius += strength / 2; if(segments <= 0) { segments = Math.floor(10 * Math.sqrt(radius)); } var theta = 2 * Math.PI / segments; var c = Math.cos(theta); var s = Math.sin(theta); var x = radius; var y = 0.0; var _g = 0; var _g1 = segments; while(_g < _g1) { var n = _g++; var px = x + cx; var py = y + cy; var t = x; x = c * x - s * y; y = c * y + s * t; kha_graphics2_GraphicsExtension.drawInnerLine(g2,x + cx,y + cy,px,py,strength); } }; kha_graphics2_GraphicsExtension.drawInnerLine = function(g2,x1,y1,x2,y2,strength) { var side = y2 > y1 ? 1 : 0; if(y2 == y1) { side = x2 - x1 > 0 ? 1 : 0; } var vec_x = 0; var vec_y = 0; if(y2 == y1) { var x = 0; var y = -1; if(y == null) { y = 0; } if(x == null) { x = 0; } var v_x = x; var v_y = y; vec_x = v_x; vec_y = v_y; } else { var x = 1; var y = -(x2 - x1) / (y2 - y1); if(y == null) { y = 0; } if(x == null) { x = 0; } var v_x = x; var v_y = y; vec_x = v_x; vec_y = v_y; } var currentLength = Math.sqrt(vec_x * vec_x + vec_y * vec_y); if(currentLength != 0) { var mul = strength / currentLength; vec_x *= mul; vec_y *= mul; } var x = x1 + side * vec_x; var y = y1 + side * vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p1_x = x; var p1_y = y; var x = x2 + side * vec_x; var y = y2 + side * vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p2_x = x; var p2_y = y; var x = p1_x - vec_x; var y = p1_y - vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p3_x = x; var p3_y = y; var x = p2_x - vec_x; var y = p2_y - vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p4_x = x; var p4_y = y; g2.fillTriangle(p1_x,p1_y,p2_x,p2_y,p3_x,p3_y); g2.fillTriangle(p3_x,p3_y,p2_x,p2_y,p4_x,p4_y); }; kha_graphics2_GraphicsExtension.fillCircle = function(g2,cx,cy,radius,segments) { if(segments == null) { segments = 0; } if(segments <= 0) { segments = Math.floor(10 * Math.sqrt(radius)); } var theta = 2 * Math.PI / segments; var c = Math.cos(theta); var s = Math.sin(theta); var x = radius; var y = 0.0; var _g = 0; var _g1 = segments; while(_g < _g1) { var n = _g++; var px = x + cx; var py = y + cy; var t = x; x = c * x - s * y; y = c * y + s * t; g2.fillTriangle(px,py,x + cx,y + cy,cx,cy); } }; kha_graphics2_GraphicsExtension.drawPolygon = function(g2,x,y,vertices,strength) { if(strength == null) { strength = 1; } var iterator_current = 0; var iterator_array = vertices; var v0 = iterator_array[iterator_current++]; var v1 = v0; while(iterator_current < iterator_array.length) { var v2 = iterator_array[iterator_current++]; g2.drawLine(v1.x + x,v1.y + y,v2.x + x,v2.y + y,strength); v1 = v2; } g2.drawLine(v1.x + x,v1.y + y,v0.x + x,v0.y + y,strength); }; kha_graphics2_GraphicsExtension.fillPolygon = function(g2,x,y,vertices) { var iterator_current = 0; var iterator_array = vertices; if(iterator_current >= iterator_array.length) { return; } var v0 = iterator_array[iterator_current++]; if(iterator_current >= iterator_array.length) { return; } var v1 = iterator_array[iterator_current++]; while(iterator_current < iterator_array.length) { var v2 = iterator_array[iterator_current++]; g2.fillTriangle(v0.x + x,v0.y + y,v1.x + x,v1.y + y,v2.x + x,v2.y + y); v1 = v2; } }; kha_graphics2_GraphicsExtension.drawCubicBezier = function(g2,x,y,segments,strength) { if(strength == null) { strength = 1.0; } if(segments == null) { segments = 20; } var t; var q0 = kha_graphics2_GraphicsExtension.calculateCubicBezierPoint(0,x,y); var q1; var _g = 1; var _g1 = segments + 1; while(_g < _g1) { var i = _g++; t = i / segments; q1 = kha_graphics2_GraphicsExtension.calculateCubicBezierPoint(t,x,y); g2.drawLine(q0[0],q0[1],q1[0],q1[1],strength); q0 = q1; } }; kha_graphics2_GraphicsExtension.drawCubicBezierPath = function(g2,x,y,segments,strength) { if(strength == null) { strength = 1.0; } if(segments == null) { segments = 20; } var i = 0; var t; var q0 = null; var q1 = null; while(i < x.length - 3) { if(i == 0) { q0 = kha_graphics2_GraphicsExtension.calculateCubicBezierPoint(0,[x[i],x[i + 1],x[i + 2],x[i + 3]],[y[i],y[i + 1],y[i + 2],y[i + 3]]); } var _g = 1; var _g1 = segments + 1; while(_g < _g1) { var j = _g++; t = j / segments; q1 = kha_graphics2_GraphicsExtension.calculateCubicBezierPoint(t,[x[i],x[i + 1],x[i + 2],x[i + 3]],[y[i],y[i + 1],y[i + 2],y[i + 3]]); g2.drawLine(q0[0],q0[1],q1[0],q1[1],strength); q0 = q1; } i += 3; } }; kha_graphics2_GraphicsExtension.calculateCubicBezierPoint = function(t,x,y) { var u = 1 - t; var tt = t * t; var uu = u * u; var uuu = uu * u; var ttt = tt * t; var p = [uuu * x[0],uuu * y[0]]; p[0] += 3 * uu * t * x[1]; p[1] += 3 * uu * t * y[1]; p[0] += 3 * u * tt * x[2]; p[1] += 3 * u * tt * y[2]; p[0] += ttt * x[3]; p[1] += ttt * y[3]; return p; }; kha_graphics2_GraphicsExtension.drawAlignedString = function(g2,text,x,y,horAlign,verAlign) { var xoffset = 0.0; if(horAlign == 1 || horAlign == 2) { var width = g2.get_font().width(g2.get_fontSize(),text); if(horAlign == 1) { xoffset = -width * 0.5; } else { xoffset = -width; } } var yoffset = 0.0; if(verAlign == 1 || verAlign == 2) { var height = g2.get_font().height(g2.get_fontSize()); if(verAlign == 1) { yoffset = -height * 0.5; } else { yoffset = -height; } } g2.drawString(text,x + xoffset,y + yoffset); }; kha_graphics2_GraphicsExtension.drawAlignedCharacters = function(g2,text,start,length,x,y,horAlign,verAlign) { var xoffset = 0.0; if(horAlign == 1 || horAlign == 2) { var width = g2.get_font().widthOfCharacters(g2.get_fontSize(),text,start,length); if(horAlign == 1) { xoffset = -width * 0.5; } else { xoffset = -width; } } var yoffset = 0.0; if(verAlign == 1 || verAlign == 2) { var height = g2.get_font().height(g2.get_fontSize()); if(verAlign == 1) { yoffset = -height * 0.5; } else { yoffset = -height; } } g2.drawCharacters(text,start,length,x + xoffset,y + yoffset); }; 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_$_$buf = function() { }; $hxClasses["kha.graphics2.truetype.Stbtt__buf"] = kha_graphics2_truetype_Stbtt_$_$buf; kha_graphics2_truetype_Stbtt_$_$buf.__name__ = true; kha_graphics2_truetype_Stbtt_$_$buf.prototype = { data: null ,cursor: null ,__class__: kha_graphics2_truetype_Stbtt_$_$buf }; 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 ,gpos: null ,index_map: null ,indexToLocFormat: null ,cff: null ,charstrings: null ,gsubrs: null ,subrs: null ,fontdicts: null ,fdselect: 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 ,cx1: null ,cy1: 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_Stbtt_$_$csctx = function() { }; $hxClasses["kha.graphics2.truetype.Stbtt__csctx"] = kha_graphics2_truetype_Stbtt_$_$csctx; kha_graphics2_truetype_Stbtt_$_$csctx.__name__ = true; kha_graphics2_truetype_Stbtt_$_$csctx.prototype = { bounds: null ,started: null ,first_x: null ,first_y: null ,x: null ,y: null ,min_x: null ,min_y: null ,max_x: null ,max_y: null ,pvertices: null ,num_vertices: null ,__class__: kha_graphics2_truetype_Stbtt_$_$csctx }; 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 haxe_Exception.thrown("Error"); } }; kha_graphics2_truetype_StbTruetype.STBTT_POINT_SIZE = function(x) { return -x; }; kha_graphics2_truetype_StbTruetype.stbtt__buf_get8 = function(b) { if(b.cursor >= b.data.get_length()) { return 0; } var pos = b.cursor++; if(pos == null) { pos = 0; } return b.data.readU8(pos); }; kha_graphics2_truetype_StbTruetype.stbtt__buf_peek8 = function(b) { if(b.cursor >= b.data.get_length()) { return 0; } var pos = b.cursor; if(pos == null) { pos = 0; } return b.data.readU8(pos); }; kha_graphics2_truetype_StbTruetype.stbtt__buf_seek = function(b,o) { if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; }; kha_graphics2_truetype_StbTruetype.stbtt__buf_skip = function(b,o) { var o1 = b.cursor + o; if(o1 > b.data.get_length() || o1 < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o1 > b.data.get_length() || o1 < 0 ? b.data.get_length() : o1; }; kha_graphics2_truetype_StbTruetype.stbtt__buf_get = function(b,n) { var v = 0; if(!(n >= 1 && n <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = n; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } return v; }; kha_graphics2_truetype_StbTruetype.stbtt__new_buf = function(p,size) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); if(size >= 1073741824) { throw haxe_Exception.thrown("Error"); } r.data = p; r.cursor = 0; return r; }; kha_graphics2_truetype_StbTruetype.stbtt__buf_get16 = function(b) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } return v; }; kha_graphics2_truetype_StbTruetype.stbtt__buf_get32 = function(b) { var v = 0; var _g = 0; var _g1 = 4; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } return v; }; kha_graphics2_truetype_StbTruetype.stbtt__buf_range = function(b,o,s) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(o < 0 || s < 0 || o > b.data.get_length() || s > b.data.get_length() - o) { return r1; } r1.data = b.data.sub(o,s); return r1; }; kha_graphics2_truetype_StbTruetype.stbtt__cff_get_index = function(b) { var start = b.cursor; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var count = v; if(count > 0) { var offsize; if(b.cursor >= b.data.get_length()) { offsize = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } offsize = b.data.readU8(pos); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b.cursor + offsize * count; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var o = b.cursor + (v - 1); if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var s = b.cursor - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > b.data.get_length() || s > b.data.get_length() - start) { return r1; } else { r1.data = b.data.sub(start,s); return r1; } } return b; }; kha_graphics2_truetype_StbTruetype.stbtt__cff_int = function(b) { var b0; if(b.cursor >= b.data.get_length()) { b0 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } b0 = b.data.readU8(pos); } if(b0 >= 32 && b0 <= 246) { return b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp; if(b.cursor >= b.data.get_length()) { tmp = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } tmp = b.data.readU8(pos); } return (b0 - 247) * 256 + tmp + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp; if(b.cursor >= b.data.get_length()) { tmp = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } tmp = b.data.readU8(pos); } return -(b0 - 251) * 256 - tmp - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } return v; } else if(b0 == 29) { var v = 0; var _g = 0; var _g1 = 4; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } return v; } else { throw haxe_Exception.thrown("Error"); } }; kha_graphics2_truetype_StbTruetype.stbtt__cff_skip_operand = function(b) { var v; var b0; if(b.cursor >= b.data.get_length()) { b0 = 0; } else { var pos = b.cursor; if(pos == null) { pos = 0; } b0 = b.data.readU8(pos); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = b.cursor + 1; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; while(b.cursor < b.data.get_length()) { if(b.cursor >= b.data.get_length()) { v = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v = b.data.readU8(pos); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b0; if(b.cursor >= b.data.get_length()) { b0 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } b0 = b.data.readU8(pos); } if(!(b0 >= 32 && b0 <= 246)) { if(b0 >= 247 && b0 <= 250) { if(b.cursor < b.data.get_length()) { var pos = b.cursor++; if(pos == null) { pos = 0; } b.data.readU8(pos); } } else if(b0 >= 251 && b0 <= 254) { if(b.cursor < b.data.get_length()) { var pos = b.cursor++; if(pos == null) { pos = 0; } b.data.readU8(pos); } } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } } else if(b0 == 29) { var v = 0; var _g = 0; var _g1 = 4; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } } else { throw haxe_Exception.thrown("Error"); } } } }; kha_graphics2_truetype_StbTruetype.stbtt__dict_get = function(b,key) { if(0 > b.data.get_length()) { throw haxe_Exception.thrown("Error"); } b.cursor = 0 > b.data.get_length() ? b.data.get_length() : 0; var ret = null; while(b.cursor < b.data.get_length()) { var start = b.cursor; var op; while(true) { var tmp; if(b.cursor >= b.data.get_length()) { tmp = 0; } else { var pos = b.cursor; if(pos == null) { pos = 0; } tmp = b.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(b.cursor >= b.data.get_length()) { b0 = 0; } else { var pos1 = b.cursor; if(pos1 == null) { pos1 = 0; } b0 = b.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = b.cursor + 1; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; while(b.cursor < b.data.get_length()) { if(b.cursor >= b.data.get_length()) { v = 0; } else { var pos2 = b.cursor++; if(pos2 == null) { pos2 = 0; } v = b.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(b.cursor >= b.data.get_length()) { b01 = 0; } else { var pos3 = b.cursor++; if(pos3 == null) { pos3 = 0; } b01 = b.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(b.cursor < b.data.get_length()) { var pos4 = b.cursor++; if(pos4 == null) { pos4 = 0; } b.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(b.cursor < b.data.get_length()) { var pos5 = b.cursor++; if(pos5 == null) { pos5 = 0; } b.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v2; if(b.cursor >= b.data.get_length()) { v2 = 0; } else { var pos6 = b.cursor++; if(pos6 == null) { pos6 = 0; } v2 = b.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i1 = _g2++; var v4; if(b.cursor >= b.data.get_length()) { v4 = 0; } else { var pos7 = b.cursor++; if(pos7 == null) { pos7 = 0; } v4 = b.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = b.cursor; if(b.cursor >= b.data.get_length()) { op = 0; } else { var pos8 = b.cursor++; if(pos8 == null) { pos8 = 0; } op = b.data.readU8(pos8); } if(op == 12) { var op1; if(b.cursor >= b.data.get_length()) { op1 = 0; } else { var pos9 = b.cursor++; if(pos9 == null) { pos9 = 0; } op1 = b.data.readU8(pos9); } op = op1 | 256; } if(op == key) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > b.data.get_length() || s > b.data.get_length() - start) { ret = r1; } else { r1.data = b.data.sub(start,s); ret = r1; } break; } } if(ret != null) { return ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > b.data.get_length() || 0 > b.data.get_length()) { return r1; } else { r1.data = b.data.sub(0,0); return r1; } } }; kha_graphics2_truetype_StbTruetype.stbtt__dict_get_ints = function(b,key,outcount,out) { var i = 0; if(0 > b.data.get_length()) { throw haxe_Exception.thrown("Error"); } b.cursor = 0 > b.data.get_length() ? b.data.get_length() : 0; var ret = null; while(b.cursor < b.data.get_length()) { var start = b.cursor; var op; while(true) { var tmp; if(b.cursor >= b.data.get_length()) { tmp = 0; } else { var pos = b.cursor; if(pos == null) { pos = 0; } tmp = b.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(b.cursor >= b.data.get_length()) { b0 = 0; } else { var pos1 = b.cursor; if(pos1 == null) { pos1 = 0; } b0 = b.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = b.cursor + 1; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; while(b.cursor < b.data.get_length()) { if(b.cursor >= b.data.get_length()) { v = 0; } else { var pos2 = b.cursor++; if(pos2 == null) { pos2 = 0; } v = b.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(b.cursor >= b.data.get_length()) { b01 = 0; } else { var pos3 = b.cursor++; if(pos3 == null) { pos3 = 0; } b01 = b.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(b.cursor < b.data.get_length()) { var pos4 = b.cursor++; if(pos4 == null) { pos4 = 0; } b.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(b.cursor < b.data.get_length()) { var pos5 = b.cursor++; if(pos5 == null) { pos5 = 0; } b.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(b.cursor >= b.data.get_length()) { v2 = 0; } else { var pos6 = b.cursor++; if(pos6 == null) { pos6 = 0; } v2 = b.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(b.cursor >= b.data.get_length()) { v4 = 0; } else { var pos7 = b.cursor++; if(pos7 == null) { pos7 = 0; } v4 = b.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = b.cursor; if(b.cursor >= b.data.get_length()) { op = 0; } else { var pos8 = b.cursor++; if(pos8 == null) { pos8 = 0; } op = b.data.readU8(pos8); } if(op == 12) { var op1; if(b.cursor >= b.data.get_length()) { op1 = 0; } else { var pos9 = b.cursor++; if(pos9 == null) { pos9 = 0; } op1 = b.data.readU8(pos9); } op = op1 | 256; } if(op == key) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > b.data.get_length() || s > b.data.get_length() - start) { ret = r1; } else { r1.data = b.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > b.data.get_length() || 0 > b.data.get_length()) { operands = r1; } else { r1.data = b.data.sub(0,0); operands = r1; } } while(i < outcount && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp; if(b0 >= 32 && b0 <= 246) { tmp = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp1; if(operands.cursor >= operands.data.get_length()) { tmp1 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp1 = operands.data.readU8(pos1); } tmp = (b0 - 247) * 256 + tmp1 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp2 = operands.data.readU8(pos2); } tmp = -(b0 - 251) * 256 - tmp2 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp = v2; } else { throw haxe_Exception.thrown("Error"); } out[i] = tmp; ++i; } }; kha_graphics2_truetype_StbTruetype.stbtt__cff_index_count = function(b) { if(0 > b.data.get_length()) { throw haxe_Exception.thrown("Error"); } b.cursor = 0 > b.data.get_length() ? b.data.get_length() : 0; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } return v; }; kha_graphics2_truetype_StbTruetype.stbtt__cff_index_get = function(b,i) { if(0 > b.data.get_length()) { throw haxe_Exception.thrown("Error"); } b.cursor = 0 > b.data.get_length() ? b.data.get_length() : 0; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var count = v; var offsize; if(b.cursor >= b.data.get_length()) { offsize = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } offsize = b.data.readU8(pos); } if(!(i >= 0 && i < count)) { throw haxe_Exception.thrown("Error"); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b.cursor + i * offsize; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var start = v; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var end = v; var o = 2 + (count + 1) * offsize + start; var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(o < 0 || s < 0 || o > b.data.get_length() || s > b.data.get_length() - o) { return r1; } else { r1.data = b.data.sub(o,s); return r1; } }; 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 pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = p.readU8(pos1); var ch2 = p.readU8(pos1 + 1); var ch3 = p.readU8(pos1 + 2); var ch4 = p.readU8(pos1 + 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.to_stbtt_uint16 = function(value) { return value & 65535; }; kha_graphics2_truetype_StbTruetype.ttFixed = function(p,pos) { if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = p.readU8(pos1); var ch2 = p.readU8(pos1 + 1); var ch3 = p.readU8(pos1 + 2); var ch4 = p.readU8(pos1 + 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 c0 = 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) == c0 && font.readU8(1) == c1 && font.readU8(2) == c2 && font.readU8(3) == c3) { return true; } var c0 = HxOverrides.cca("OTTO",0); var c1 = HxOverrides.cca("OTTO",1); var c2 = HxOverrides.cca("OTTO",2); var c3 = HxOverrides.cca("OTTO",3); if(font.readU8(0) == c0 && font.readU8(1) == c1 && font.readU8(2) == c2 && font.readU8(3) == c3) { return true; } if(font.readU8(0) == 0 && font.readU8(1) == 1 && font.readU8(2) == 0 && font.readU8(3) == 0) { return true; } var c0 = HxOverrides.cca("true",0); var c1 = HxOverrides.cca("true",1); var c2 = HxOverrides.cca("true",2); var c3 = HxOverrides.cca("true",3); if(font.readU8(0) == c0 && font.readU8(1) == c1 && font.readU8(2) == c2 && font.readU8(3) == c3) { return true; } return false; }; kha_graphics2_truetype_StbTruetype.stbtt__find_table = function(data,fontstart,tag) { var pos = fontstart + 4; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var num_tables = ch2 | ch1 << 8; var tabledir = fontstart + 12; var _g = 0; var _g1 = num_tables; while(_g < _g1) { var i = _g++; 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 pos = loc + 8; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = data.readU8(pos1); var ch2 = data.readU8(pos1 + 1); var ch3 = data.readU8(pos1 + 2); var ch4 = data.readU8(pos1 + 3); return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 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 pos = 4; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = font_collection.readU8(pos1); var ch2 = font_collection.readU8(pos1 + 1); var ch3 = font_collection.readU8(pos1 + 2); var ch4 = font_collection.readU8(pos1 + 3); if((ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24) != 65536) { var pos = 4; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = font_collection.readU8(pos1); var ch2 = font_collection.readU8(pos1 + 1); var ch3 = font_collection.readU8(pos1 + 2); var ch4 = font_collection.readU8(pos1 + 3); tmp = (ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24) == 131072; } else { tmp = true; } if(tmp) { var pos = 8; if(pos == null) { pos = 0; } var ch1 = font_collection.readU8(pos); var ch2 = font_collection.readU8(pos + 1); var ch3 = font_collection.readU8(pos + 2); var ch4 = font_collection.readU8(pos + 3); var n = ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24; if(index >= n) { return -1; } var pos = 12 + index * 4; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = font_collection.readU8(pos1); var ch2 = font_collection.readU8(pos1 + 1); var ch3 = font_collection.readU8(pos1 + 2); var ch4 = font_collection.readU8(pos1 + 3); return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24; } } return -1; }; kha_graphics2_truetype_StbTruetype.stbtt_GetNumberOfFonts = function(font_collection) { if(kha_graphics2_truetype_StbTruetype.stbtt__isfont(font_collection)) { 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 pos = 4; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = font_collection.readU8(pos1); var ch2 = font_collection.readU8(pos1 + 1); var ch3 = font_collection.readU8(pos1 + 2); var ch4 = font_collection.readU8(pos1 + 3); if((ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24) != 65536) { var pos = 4; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = font_collection.readU8(pos1); var ch2 = font_collection.readU8(pos1 + 1); var ch3 = font_collection.readU8(pos1 + 2); var ch4 = font_collection.readU8(pos1 + 3); tmp = (ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24) == 131072; } else { tmp = true; } if(tmp) { var pos = 8; if(pos == null) { pos = 0; } var ch1 = font_collection.readU8(pos); var ch2 = font_collection.readU8(pos + 1); var ch3 = font_collection.readU8(pos + 2); var ch4 = font_collection.readU8(pos + 3); return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24; } } return 0; }; kha_graphics2_truetype_StbTruetype.stbtt__get_subrs = function(cff,fontdict) { var subrsoff = [0]; var private_loc = [0,0]; var i = 0; if(0 > fontdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } fontdict.cursor = 0 > fontdict.data.get_length() ? fontdict.data.get_length() : 0; var ret = null; while(fontdict.cursor < fontdict.data.get_length()) { var start = fontdict.cursor; var op; while(true) { var tmp; if(fontdict.cursor >= fontdict.data.get_length()) { tmp = 0; } else { var pos = fontdict.cursor; if(pos == null) { pos = 0; } tmp = fontdict.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(fontdict.cursor >= fontdict.data.get_length()) { b0 = 0; } else { var pos1 = fontdict.cursor; if(pos1 == null) { pos1 = 0; } b0 = fontdict.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = fontdict.cursor + 1; if(o > fontdict.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } fontdict.cursor = o > fontdict.data.get_length() || o < 0 ? fontdict.data.get_length() : o; while(fontdict.cursor < fontdict.data.get_length()) { if(fontdict.cursor >= fontdict.data.get_length()) { v = 0; } else { var pos2 = fontdict.cursor++; if(pos2 == null) { pos2 = 0; } v = fontdict.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(fontdict.cursor >= fontdict.data.get_length()) { b01 = 0; } else { var pos3 = fontdict.cursor++; if(pos3 == null) { pos3 = 0; } b01 = fontdict.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(fontdict.cursor < fontdict.data.get_length()) { var pos4 = fontdict.cursor++; if(pos4 == null) { pos4 = 0; } fontdict.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(fontdict.cursor < fontdict.data.get_length()) { var pos5 = fontdict.cursor++; if(pos5 == null) { pos5 = 0; } fontdict.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(fontdict.cursor >= fontdict.data.get_length()) { v2 = 0; } else { var pos6 = fontdict.cursor++; if(pos6 == null) { pos6 = 0; } v2 = fontdict.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(fontdict.cursor >= fontdict.data.get_length()) { v4 = 0; } else { var pos7 = fontdict.cursor++; if(pos7 == null) { pos7 = 0; } v4 = fontdict.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = fontdict.cursor; if(fontdict.cursor >= fontdict.data.get_length()) { op = 0; } else { var pos8 = fontdict.cursor++; if(pos8 == null) { pos8 = 0; } op = fontdict.data.readU8(pos8); } if(op == 12) { var op1; if(fontdict.cursor >= fontdict.data.get_length()) { op1 = 0; } else { var pos9 = fontdict.cursor++; if(pos9 == null) { pos9 = 0; } op1 = fontdict.data.readU8(pos9); } op = op1 | 256; } if(op == 18) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > fontdict.data.get_length() || s > fontdict.data.get_length() - start) { ret = r1; } else { r1.data = fontdict.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > fontdict.data.get_length() || 0 > fontdict.data.get_length()) { operands = r1; } else { r1.data = fontdict.data.sub(0,0); operands = r1; } } while(i < 2 && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp; if(b0 >= 32 && b0 <= 246) { tmp = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp1; if(operands.cursor >= operands.data.get_length()) { tmp1 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp1 = operands.data.readU8(pos1); } tmp = (b0 - 247) * 256 + tmp1 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp2 = operands.data.readU8(pos2); } tmp = -(b0 - 251) * 256 - tmp2 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp = v2; } else { throw haxe_Exception.thrown("Error"); } private_loc[i] = tmp; ++i; } if(private_loc[1] == 0 || private_loc[0] == 0) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; return r; } var o = private_loc[1]; var s = private_loc[0]; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; var pdict; if(o < 0 || s < 0 || o > cff.data.get_length() || s > cff.data.get_length() - o) { pdict = r1; } else { r1.data = cff.data.sub(o,s); pdict = r1; } var i = 0; if(0 > pdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } pdict.cursor = 0 > pdict.data.get_length() ? pdict.data.get_length() : 0; var ret = null; while(pdict.cursor < pdict.data.get_length()) { var start = pdict.cursor; var op; while(true) { var tmp; if(pdict.cursor >= pdict.data.get_length()) { tmp = 0; } else { var pos = pdict.cursor; if(pos == null) { pos = 0; } tmp = pdict.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(pdict.cursor >= pdict.data.get_length()) { b0 = 0; } else { var pos1 = pdict.cursor; if(pos1 == null) { pos1 = 0; } b0 = pdict.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = pdict.cursor + 1; if(o > pdict.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } pdict.cursor = o > pdict.data.get_length() || o < 0 ? pdict.data.get_length() : o; while(pdict.cursor < pdict.data.get_length()) { if(pdict.cursor >= pdict.data.get_length()) { v = 0; } else { var pos2 = pdict.cursor++; if(pos2 == null) { pos2 = 0; } v = pdict.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(pdict.cursor >= pdict.data.get_length()) { b01 = 0; } else { var pos3 = pdict.cursor++; if(pos3 == null) { pos3 = 0; } b01 = pdict.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(pdict.cursor < pdict.data.get_length()) { var pos4 = pdict.cursor++; if(pos4 == null) { pos4 = 0; } pdict.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(pdict.cursor < pdict.data.get_length()) { var pos5 = pdict.cursor++; if(pos5 == null) { pos5 = 0; } pdict.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(pdict.cursor >= pdict.data.get_length()) { v2 = 0; } else { var pos6 = pdict.cursor++; if(pos6 == null) { pos6 = 0; } v2 = pdict.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(pdict.cursor >= pdict.data.get_length()) { v4 = 0; } else { var pos7 = pdict.cursor++; if(pos7 == null) { pos7 = 0; } v4 = pdict.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = pdict.cursor; if(pdict.cursor >= pdict.data.get_length()) { op = 0; } else { var pos8 = pdict.cursor++; if(pos8 == null) { pos8 = 0; } op = pdict.data.readU8(pos8); } if(op == 12) { var op1; if(pdict.cursor >= pdict.data.get_length()) { op1 = 0; } else { var pos9 = pdict.cursor++; if(pos9 == null) { pos9 = 0; } op1 = pdict.data.readU8(pos9); } op = op1 | 256; } if(op == 19) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > pdict.data.get_length() || s > pdict.data.get_length() - start) { ret = r1; } else { r1.data = pdict.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > pdict.data.get_length() || 0 > pdict.data.get_length()) { operands = r1; } else { r1.data = pdict.data.sub(0,0); operands = r1; } } while(i < 1 && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp; if(b0 >= 32 && b0 <= 246) { tmp = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp1; if(operands.cursor >= operands.data.get_length()) { tmp1 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp1 = operands.data.readU8(pos1); } tmp = (b0 - 247) * 256 + tmp1 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp2 = operands.data.readU8(pos2); } tmp = -(b0 - 251) * 256 - tmp2 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp = v2; } else { throw haxe_Exception.thrown("Error"); } subrsoff[i] = tmp; ++i; } if(subrsoff[0] == 0) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; return r; } var o = private_loc[1] + subrsoff[0]; if(o > cff.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } cff.cursor = o > cff.data.get_length() || o < 0 ? cff.data.get_length() : o; var start = cff.cursor; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(cff.cursor >= cff.data.get_length()) { v1 = 0; } else { var pos = cff.cursor++; if(pos == null) { pos = 0; } v1 = cff.data.readU8(pos); } v = v << 8 | v1; } var count = v; if(count > 0) { var offsize; if(cff.cursor >= cff.data.get_length()) { offsize = 0; } else { var pos = cff.cursor++; if(pos == null) { pos = 0; } offsize = cff.data.readU8(pos); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = cff.cursor + offsize * count; if(o > cff.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } cff.cursor = o > cff.data.get_length() || o < 0 ? cff.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(cff.cursor >= cff.data.get_length()) { v1 = 0; } else { var pos = cff.cursor++; if(pos == null) { pos = 0; } v1 = cff.data.readU8(pos); } v = v << 8 | v1; } var o = cff.cursor + (v - 1); if(o > cff.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } cff.cursor = o > cff.data.get_length() || o < 0 ? cff.data.get_length() : o; var s = cff.cursor - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > cff.data.get_length() || s > cff.data.get_length() - start) { return r1; } else { r1.data = cff.data.sub(start,s); return r1; } } else { return cff; } }; kha_graphics2_truetype_StbTruetype.stbtt_InitFont = function(info,data,fontstart) { info.data = data; info.fontstart = fontstart; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; info.cff = r; var 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"); info.gpos = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"GPOS"); if(cmap == 0 || info.head == 0 || info.hhea == 0 || info.hmtx == 0) { return false; } if(info.glyf != 0) { if(info.loca == 0) { return false; } } else { var topdict; var topdictidx; var cstype = [2]; var charstrings = [0]; var fdarrayoff = [0]; var fdselectoff = [0]; var cff = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"CFF "); if(cff == 0) { return false; } var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; info.fontdicts = r; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; info.fdselect = r; var cff_data = data.sub(cff,data.get_length() - cff); var size = cff_data.get_length(); var r = new kha_graphics2_truetype_Stbtt_$_$buf(); if(size >= 1073741824) { throw haxe_Exception.thrown("Error"); } r.data = cff_data; r.cursor = 0; info.cff = r; var b = info.cff; var o = b.cursor + 2; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var o; if(b.cursor >= b.data.get_length()) { o = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } o = b.data.readU8(pos); } if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var start = b.cursor; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var count = v; if(count > 0) { var offsize; if(b.cursor >= b.data.get_length()) { offsize = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } offsize = b.data.readU8(pos); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b.cursor + offsize * count; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var o = b.cursor + (v - 1); if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var s = b.cursor - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(!(start < 0 || s < 0 || start > b.data.get_length() || s > b.data.get_length() - start)) { r1.data = b.data.sub(start,s); } } var start = b.cursor; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var count = v; if(count > 0) { var offsize; if(b.cursor >= b.data.get_length()) { offsize = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } offsize = b.data.readU8(pos); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b.cursor + offsize * count; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var o = b.cursor + (v - 1); if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var s = b.cursor - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > b.data.get_length() || s > b.data.get_length() - start) { topdictidx = r1; } else { r1.data = b.data.sub(start,s); topdictidx = r1; } } else { topdictidx = b; } if(0 > topdictidx.data.get_length()) { throw haxe_Exception.thrown("Error"); } topdictidx.cursor = 0 > topdictidx.data.get_length() ? topdictidx.data.get_length() : 0; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(topdictidx.cursor >= topdictidx.data.get_length()) { v1 = 0; } else { var pos = topdictidx.cursor++; if(pos == null) { pos = 0; } v1 = topdictidx.data.readU8(pos); } v = v << 8 | v1; } var count = v; var offsize; if(topdictidx.cursor >= topdictidx.data.get_length()) { offsize = 0; } else { var pos = topdictidx.cursor++; if(pos == null) { pos = 0; } offsize = topdictidx.data.readU8(pos); } if(0 >= count) { throw haxe_Exception.thrown("Error"); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = topdictidx.cursor + 0 * offsize; if(o > topdictidx.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } topdictidx.cursor = o > topdictidx.data.get_length() || o < 0 ? topdictidx.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(topdictidx.cursor >= topdictidx.data.get_length()) { v1 = 0; } else { var pos = topdictidx.cursor++; if(pos == null) { pos = 0; } v1 = topdictidx.data.readU8(pos); } v = v << 8 | v1; } var start = v; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(topdictidx.cursor >= topdictidx.data.get_length()) { v1 = 0; } else { var pos = topdictidx.cursor++; if(pos == null) { pos = 0; } v1 = topdictidx.data.readU8(pos); } v = v << 8 | v1; } var end = v; var o = 2 + (count + 1) * offsize + start; var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(o < 0 || s < 0 || o > topdictidx.data.get_length() || s > topdictidx.data.get_length() - o) { topdict = r1; } else { r1.data = topdictidx.data.sub(o,s); topdict = r1; } var start = b.cursor; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var count = v; if(count > 0) { var offsize; if(b.cursor >= b.data.get_length()) { offsize = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } offsize = b.data.readU8(pos); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b.cursor + offsize * count; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var o = b.cursor + (v - 1); if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var s = b.cursor - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(!(start < 0 || s < 0 || start > b.data.get_length() || s > b.data.get_length() - start)) { r1.data = b.data.sub(start,s); } } var start = b.cursor; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var count = v; var tmp; if(count > 0) { var offsize; if(b.cursor >= b.data.get_length()) { offsize = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } offsize = b.data.readU8(pos); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b.cursor + offsize * count; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var o = b.cursor + (v - 1); if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var s = b.cursor - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > b.data.get_length() || s > b.data.get_length() - start) { tmp = r1; } else { r1.data = b.data.sub(start,s); tmp = r1; } } else { tmp = b; } info.gsubrs = tmp; var i = 0; if(0 > topdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } topdict.cursor = 0 > topdict.data.get_length() ? topdict.data.get_length() : 0; var ret = null; while(topdict.cursor < topdict.data.get_length()) { var start = topdict.cursor; var op; while(true) { var tmp; if(topdict.cursor >= topdict.data.get_length()) { tmp = 0; } else { var pos = topdict.cursor; if(pos == null) { pos = 0; } tmp = topdict.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(topdict.cursor >= topdict.data.get_length()) { b0 = 0; } else { var pos1 = topdict.cursor; if(pos1 == null) { pos1 = 0; } b0 = topdict.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = topdict.cursor + 1; if(o > topdict.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } topdict.cursor = o > topdict.data.get_length() || o < 0 ? topdict.data.get_length() : o; while(topdict.cursor < topdict.data.get_length()) { if(topdict.cursor >= topdict.data.get_length()) { v = 0; } else { var pos2 = topdict.cursor++; if(pos2 == null) { pos2 = 0; } v = topdict.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(topdict.cursor >= topdict.data.get_length()) { b01 = 0; } else { var pos3 = topdict.cursor++; if(pos3 == null) { pos3 = 0; } b01 = topdict.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(topdict.cursor < topdict.data.get_length()) { var pos4 = topdict.cursor++; if(pos4 == null) { pos4 = 0; } topdict.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(topdict.cursor < topdict.data.get_length()) { var pos5 = topdict.cursor++; if(pos5 == null) { pos5 = 0; } topdict.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(topdict.cursor >= topdict.data.get_length()) { v2 = 0; } else { var pos6 = topdict.cursor++; if(pos6 == null) { pos6 = 0; } v2 = topdict.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(topdict.cursor >= topdict.data.get_length()) { v4 = 0; } else { var pos7 = topdict.cursor++; if(pos7 == null) { pos7 = 0; } v4 = topdict.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = topdict.cursor; if(topdict.cursor >= topdict.data.get_length()) { op = 0; } else { var pos8 = topdict.cursor++; if(pos8 == null) { pos8 = 0; } op = topdict.data.readU8(pos8); } if(op == 12) { var op1; if(topdict.cursor >= topdict.data.get_length()) { op1 = 0; } else { var pos9 = topdict.cursor++; if(pos9 == null) { pos9 = 0; } op1 = topdict.data.readU8(pos9); } op = op1 | 256; } if(op == 17) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > topdict.data.get_length() || s > topdict.data.get_length() - start) { ret = r1; } else { r1.data = topdict.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > topdict.data.get_length() || 0 > topdict.data.get_length()) { operands = r1; } else { r1.data = topdict.data.sub(0,0); operands = r1; } } while(i < 1 && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp; if(b0 >= 32 && b0 <= 246) { tmp = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp1; if(operands.cursor >= operands.data.get_length()) { tmp1 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp1 = operands.data.readU8(pos1); } tmp = (b0 - 247) * 256 + tmp1 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp2 = operands.data.readU8(pos2); } tmp = -(b0 - 251) * 256 - tmp2 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp = v2; } else { throw haxe_Exception.thrown("Error"); } charstrings[i] = tmp; ++i; } var i = 0; if(0 > topdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } topdict.cursor = 0 > topdict.data.get_length() ? topdict.data.get_length() : 0; var ret = null; while(topdict.cursor < topdict.data.get_length()) { var start = topdict.cursor; var op; while(true) { var tmp; if(topdict.cursor >= topdict.data.get_length()) { tmp = 0; } else { var pos = topdict.cursor; if(pos == null) { pos = 0; } tmp = topdict.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(topdict.cursor >= topdict.data.get_length()) { b0 = 0; } else { var pos1 = topdict.cursor; if(pos1 == null) { pos1 = 0; } b0 = topdict.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = topdict.cursor + 1; if(o > topdict.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } topdict.cursor = o > topdict.data.get_length() || o < 0 ? topdict.data.get_length() : o; while(topdict.cursor < topdict.data.get_length()) { if(topdict.cursor >= topdict.data.get_length()) { v = 0; } else { var pos2 = topdict.cursor++; if(pos2 == null) { pos2 = 0; } v = topdict.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(topdict.cursor >= topdict.data.get_length()) { b01 = 0; } else { var pos3 = topdict.cursor++; if(pos3 == null) { pos3 = 0; } b01 = topdict.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(topdict.cursor < topdict.data.get_length()) { var pos4 = topdict.cursor++; if(pos4 == null) { pos4 = 0; } topdict.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(topdict.cursor < topdict.data.get_length()) { var pos5 = topdict.cursor++; if(pos5 == null) { pos5 = 0; } topdict.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(topdict.cursor >= topdict.data.get_length()) { v2 = 0; } else { var pos6 = topdict.cursor++; if(pos6 == null) { pos6 = 0; } v2 = topdict.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(topdict.cursor >= topdict.data.get_length()) { v4 = 0; } else { var pos7 = topdict.cursor++; if(pos7 == null) { pos7 = 0; } v4 = topdict.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = topdict.cursor; if(topdict.cursor >= topdict.data.get_length()) { op = 0; } else { var pos8 = topdict.cursor++; if(pos8 == null) { pos8 = 0; } op = topdict.data.readU8(pos8); } if(op == 12) { var op1; if(topdict.cursor >= topdict.data.get_length()) { op1 = 0; } else { var pos9 = topdict.cursor++; if(pos9 == null) { pos9 = 0; } op1 = topdict.data.readU8(pos9); } op = op1 | 256; } if(op == 262) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > topdict.data.get_length() || s > topdict.data.get_length() - start) { ret = r1; } else { r1.data = topdict.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > topdict.data.get_length() || 0 > topdict.data.get_length()) { operands = r1; } else { r1.data = topdict.data.sub(0,0); operands = r1; } } while(i < 1 && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp; if(b0 >= 32 && b0 <= 246) { tmp = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp1; if(operands.cursor >= operands.data.get_length()) { tmp1 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp1 = operands.data.readU8(pos1); } tmp = (b0 - 247) * 256 + tmp1 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp2 = operands.data.readU8(pos2); } tmp = -(b0 - 251) * 256 - tmp2 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp = v2; } else { throw haxe_Exception.thrown("Error"); } cstype[i] = tmp; ++i; } var i = 0; if(0 > topdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } topdict.cursor = 0 > topdict.data.get_length() ? topdict.data.get_length() : 0; var ret = null; while(topdict.cursor < topdict.data.get_length()) { var start = topdict.cursor; var op; while(true) { var tmp; if(topdict.cursor >= topdict.data.get_length()) { tmp = 0; } else { var pos = topdict.cursor; if(pos == null) { pos = 0; } tmp = topdict.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(topdict.cursor >= topdict.data.get_length()) { b0 = 0; } else { var pos1 = topdict.cursor; if(pos1 == null) { pos1 = 0; } b0 = topdict.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = topdict.cursor + 1; if(o > topdict.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } topdict.cursor = o > topdict.data.get_length() || o < 0 ? topdict.data.get_length() : o; while(topdict.cursor < topdict.data.get_length()) { if(topdict.cursor >= topdict.data.get_length()) { v = 0; } else { var pos2 = topdict.cursor++; if(pos2 == null) { pos2 = 0; } v = topdict.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(topdict.cursor >= topdict.data.get_length()) { b01 = 0; } else { var pos3 = topdict.cursor++; if(pos3 == null) { pos3 = 0; } b01 = topdict.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(topdict.cursor < topdict.data.get_length()) { var pos4 = topdict.cursor++; if(pos4 == null) { pos4 = 0; } topdict.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(topdict.cursor < topdict.data.get_length()) { var pos5 = topdict.cursor++; if(pos5 == null) { pos5 = 0; } topdict.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(topdict.cursor >= topdict.data.get_length()) { v2 = 0; } else { var pos6 = topdict.cursor++; if(pos6 == null) { pos6 = 0; } v2 = topdict.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(topdict.cursor >= topdict.data.get_length()) { v4 = 0; } else { var pos7 = topdict.cursor++; if(pos7 == null) { pos7 = 0; } v4 = topdict.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = topdict.cursor; if(topdict.cursor >= topdict.data.get_length()) { op = 0; } else { var pos8 = topdict.cursor++; if(pos8 == null) { pos8 = 0; } op = topdict.data.readU8(pos8); } if(op == 12) { var op1; if(topdict.cursor >= topdict.data.get_length()) { op1 = 0; } else { var pos9 = topdict.cursor++; if(pos9 == null) { pos9 = 0; } op1 = topdict.data.readU8(pos9); } op = op1 | 256; } if(op == 292) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > topdict.data.get_length() || s > topdict.data.get_length() - start) { ret = r1; } else { r1.data = topdict.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > topdict.data.get_length() || 0 > topdict.data.get_length()) { operands = r1; } else { r1.data = topdict.data.sub(0,0); operands = r1; } } while(i < 1 && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp; if(b0 >= 32 && b0 <= 246) { tmp = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp1; if(operands.cursor >= operands.data.get_length()) { tmp1 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp1 = operands.data.readU8(pos1); } tmp = (b0 - 247) * 256 + tmp1 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp2 = operands.data.readU8(pos2); } tmp = -(b0 - 251) * 256 - tmp2 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp = v2; } else { throw haxe_Exception.thrown("Error"); } fdarrayoff[i] = tmp; ++i; } var i = 0; if(0 > topdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } topdict.cursor = 0 > topdict.data.get_length() ? topdict.data.get_length() : 0; var ret = null; while(topdict.cursor < topdict.data.get_length()) { var start = topdict.cursor; var op; while(true) { var tmp; if(topdict.cursor >= topdict.data.get_length()) { tmp = 0; } else { var pos = topdict.cursor; if(pos == null) { pos = 0; } tmp = topdict.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(topdict.cursor >= topdict.data.get_length()) { b0 = 0; } else { var pos1 = topdict.cursor; if(pos1 == null) { pos1 = 0; } b0 = topdict.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = topdict.cursor + 1; if(o > topdict.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } topdict.cursor = o > topdict.data.get_length() || o < 0 ? topdict.data.get_length() : o; while(topdict.cursor < topdict.data.get_length()) { if(topdict.cursor >= topdict.data.get_length()) { v = 0; } else { var pos2 = topdict.cursor++; if(pos2 == null) { pos2 = 0; } v = topdict.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(topdict.cursor >= topdict.data.get_length()) { b01 = 0; } else { var pos3 = topdict.cursor++; if(pos3 == null) { pos3 = 0; } b01 = topdict.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(topdict.cursor < topdict.data.get_length()) { var pos4 = topdict.cursor++; if(pos4 == null) { pos4 = 0; } topdict.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(topdict.cursor < topdict.data.get_length()) { var pos5 = topdict.cursor++; if(pos5 == null) { pos5 = 0; } topdict.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(topdict.cursor >= topdict.data.get_length()) { v2 = 0; } else { var pos6 = topdict.cursor++; if(pos6 == null) { pos6 = 0; } v2 = topdict.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(topdict.cursor >= topdict.data.get_length()) { v4 = 0; } else { var pos7 = topdict.cursor++; if(pos7 == null) { pos7 = 0; } v4 = topdict.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = topdict.cursor; if(topdict.cursor >= topdict.data.get_length()) { op = 0; } else { var pos8 = topdict.cursor++; if(pos8 == null) { pos8 = 0; } op = topdict.data.readU8(pos8); } if(op == 12) { var op1; if(topdict.cursor >= topdict.data.get_length()) { op1 = 0; } else { var pos9 = topdict.cursor++; if(pos9 == null) { pos9 = 0; } op1 = topdict.data.readU8(pos9); } op = op1 | 256; } if(op == 293) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > topdict.data.get_length() || s > topdict.data.get_length() - start) { ret = r1; } else { r1.data = topdict.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > topdict.data.get_length() || 0 > topdict.data.get_length()) { operands = r1; } else { r1.data = topdict.data.sub(0,0); operands = r1; } } while(i < 1 && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp; if(b0 >= 32 && b0 <= 246) { tmp = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp1; if(operands.cursor >= operands.data.get_length()) { tmp1 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp1 = operands.data.readU8(pos1); } tmp = (b0 - 247) * 256 + tmp1 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp2 = operands.data.readU8(pos2); } tmp = -(b0 - 251) * 256 - tmp2 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp = v2; } else { throw haxe_Exception.thrown("Error"); } fdselectoff[i] = tmp; ++i; } var subrsoff = [0]; var private_loc = [0,0]; var i = 0; if(0 > topdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } topdict.cursor = 0 > topdict.data.get_length() ? topdict.data.get_length() : 0; var ret = null; while(topdict.cursor < topdict.data.get_length()) { var start = topdict.cursor; var op; while(true) { var tmp; if(topdict.cursor >= topdict.data.get_length()) { tmp = 0; } else { var pos = topdict.cursor; if(pos == null) { pos = 0; } tmp = topdict.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(topdict.cursor >= topdict.data.get_length()) { b0 = 0; } else { var pos1 = topdict.cursor; if(pos1 == null) { pos1 = 0; } b0 = topdict.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = topdict.cursor + 1; if(o > topdict.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } topdict.cursor = o > topdict.data.get_length() || o < 0 ? topdict.data.get_length() : o; while(topdict.cursor < topdict.data.get_length()) { if(topdict.cursor >= topdict.data.get_length()) { v = 0; } else { var pos2 = topdict.cursor++; if(pos2 == null) { pos2 = 0; } v = topdict.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(topdict.cursor >= topdict.data.get_length()) { b01 = 0; } else { var pos3 = topdict.cursor++; if(pos3 == null) { pos3 = 0; } b01 = topdict.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(topdict.cursor < topdict.data.get_length()) { var pos4 = topdict.cursor++; if(pos4 == null) { pos4 = 0; } topdict.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(topdict.cursor < topdict.data.get_length()) { var pos5 = topdict.cursor++; if(pos5 == null) { pos5 = 0; } topdict.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(topdict.cursor >= topdict.data.get_length()) { v2 = 0; } else { var pos6 = topdict.cursor++; if(pos6 == null) { pos6 = 0; } v2 = topdict.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(topdict.cursor >= topdict.data.get_length()) { v4 = 0; } else { var pos7 = topdict.cursor++; if(pos7 == null) { pos7 = 0; } v4 = topdict.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = topdict.cursor; if(topdict.cursor >= topdict.data.get_length()) { op = 0; } else { var pos8 = topdict.cursor++; if(pos8 == null) { pos8 = 0; } op = topdict.data.readU8(pos8); } if(op == 12) { var op1; if(topdict.cursor >= topdict.data.get_length()) { op1 = 0; } else { var pos9 = topdict.cursor++; if(pos9 == null) { pos9 = 0; } op1 = topdict.data.readU8(pos9); } op = op1 | 256; } if(op == 18) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > topdict.data.get_length() || s > topdict.data.get_length() - start) { ret = r1; } else { r1.data = topdict.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > topdict.data.get_length() || 0 > topdict.data.get_length()) { operands = r1; } else { r1.data = topdict.data.sub(0,0); operands = r1; } } while(i < 2 && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp; if(b0 >= 32 && b0 <= 246) { tmp = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp1; if(operands.cursor >= operands.data.get_length()) { tmp1 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp1 = operands.data.readU8(pos1); } tmp = (b0 - 247) * 256 + tmp1 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp2 = operands.data.readU8(pos2); } tmp = -(b0 - 251) * 256 - tmp2 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp = v2; } else { throw haxe_Exception.thrown("Error"); } private_loc[i] = tmp; ++i; } var tmp; if(private_loc[1] == 0 || private_loc[0] == 0) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; tmp = r; } else { var o = private_loc[1]; var s = private_loc[0]; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; var pdict; if(o < 0 || s < 0 || o > b.data.get_length() || s > b.data.get_length() - o) { pdict = r1; } else { r1.data = b.data.sub(o,s); pdict = r1; } var i = 0; if(0 > pdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } pdict.cursor = 0 > pdict.data.get_length() ? pdict.data.get_length() : 0; var ret = null; while(pdict.cursor < pdict.data.get_length()) { var start = pdict.cursor; var op; while(true) { var tmp1; if(pdict.cursor >= pdict.data.get_length()) { tmp1 = 0; } else { var pos = pdict.cursor; if(pos == null) { pos = 0; } tmp1 = pdict.data.readU8(pos); } if(!(tmp1 >= 28)) { break; } var v; var b0; if(pdict.cursor >= pdict.data.get_length()) { b0 = 0; } else { var pos1 = pdict.cursor; if(pos1 == null) { pos1 = 0; } b0 = pdict.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = pdict.cursor + 1; if(o > pdict.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } pdict.cursor = o > pdict.data.get_length() || o < 0 ? pdict.data.get_length() : o; while(pdict.cursor < pdict.data.get_length()) { if(pdict.cursor >= pdict.data.get_length()) { v = 0; } else { var pos2 = pdict.cursor++; if(pos2 == null) { pos2 = 0; } v = pdict.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(pdict.cursor >= pdict.data.get_length()) { b01 = 0; } else { var pos3 = pdict.cursor++; if(pos3 == null) { pos3 = 0; } b01 = pdict.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(pdict.cursor < pdict.data.get_length()) { var pos4 = pdict.cursor++; if(pos4 == null) { pos4 = 0; } pdict.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(pdict.cursor < pdict.data.get_length()) { var pos5 = pdict.cursor++; if(pos5 == null) { pos5 = 0; } pdict.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(pdict.cursor >= pdict.data.get_length()) { v2 = 0; } else { var pos6 = pdict.cursor++; if(pos6 == null) { pos6 = 0; } v2 = pdict.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(pdict.cursor >= pdict.data.get_length()) { v4 = 0; } else { var pos7 = pdict.cursor++; if(pos7 == null) { pos7 = 0; } v4 = pdict.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = pdict.cursor; if(pdict.cursor >= pdict.data.get_length()) { op = 0; } else { var pos8 = pdict.cursor++; if(pos8 == null) { pos8 = 0; } op = pdict.data.readU8(pos8); } if(op == 12) { var op1; if(pdict.cursor >= pdict.data.get_length()) { op1 = 0; } else { var pos9 = pdict.cursor++; if(pos9 == null) { pos9 = 0; } op1 = pdict.data.readU8(pos9); } op = op1 | 256; } if(op == 19) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > pdict.data.get_length() || s > pdict.data.get_length() - start) { ret = r1; } else { r1.data = pdict.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > pdict.data.get_length() || 0 > pdict.data.get_length()) { operands = r1; } else { r1.data = pdict.data.sub(0,0); operands = r1; } } while(i < 1 && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp1; if(b0 >= 32 && b0 <= 246) { tmp1 = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp2 = operands.data.readU8(pos1); } tmp1 = (b0 - 247) * 256 + tmp2 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp3; if(operands.cursor >= operands.data.get_length()) { tmp3 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp3 = operands.data.readU8(pos2); } tmp1 = -(b0 - 251) * 256 - tmp3 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp1 = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp1 = v2; } else { throw haxe_Exception.thrown("Error"); } subrsoff[i] = tmp1; ++i; } if(subrsoff[0] == 0) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; tmp = r; } else { var o = private_loc[1] + subrsoff[0]; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var start = b.cursor; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var count = v; if(count > 0) { var offsize; if(b.cursor >= b.data.get_length()) { offsize = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } offsize = b.data.readU8(pos); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b.cursor + offsize * count; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var o = b.cursor + (v - 1); if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var s = b.cursor - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > b.data.get_length() || s > b.data.get_length() - start) { tmp = r1; } else { r1.data = b.data.sub(start,s); tmp = r1; } } else { tmp = b; } } } info.subrs = tmp; if(cstype[0] != 2) { return false; } if(charstrings[0] == 0) { return false; } if(fdarrayoff[0] != 0) { if(fdselectoff[0] == 0) { return false; } var o = fdarrayoff[0]; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var start = b.cursor; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var count = v; var tmp; if(count > 0) { var offsize; if(b.cursor >= b.data.get_length()) { offsize = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } offsize = b.data.readU8(pos); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b.cursor + offsize * count; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var o = b.cursor + (v - 1); if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var s = b.cursor - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > b.data.get_length() || s > b.data.get_length() - start) { tmp = r1; } else { r1.data = b.data.sub(start,s); tmp = r1; } } else { tmp = b; } info.fontdicts = tmp; var o = fdselectoff[0]; var s = b.data.get_length() - fdselectoff[0]; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; var tmp; if(o < 0 || s < 0 || o > b.data.get_length() || s > b.data.get_length() - o) { tmp = r1; } else { r1.data = b.data.sub(o,s); tmp = r1; } info.fdselect = tmp; } var o = charstrings[0]; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var start = b.cursor; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var count = v; var tmp; if(count > 0) { var offsize; if(b.cursor >= b.data.get_length()) { offsize = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } offsize = b.data.readU8(pos); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b.cursor + offsize * count; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var o = b.cursor + (v - 1); if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var s = b.cursor - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > b.data.get_length() || s > b.data.get_length() - start) { tmp = r1; } else { r1.data = b.data.sub(start,s); tmp = r1; } } else { tmp = b; } info.charstrings = tmp; } var t = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"maxp"); if(t != 0) { var pos = t + 4; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); info.numGlyphs = ch2 | ch1 << 8; } else { info.numGlyphs = 65535; } var pos = cmap + 2; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var numTables = ch2 | ch1 << 8; info.index_map = 0; var _g = 0; var _g1 = numTables; while(_g < _g1) { var i = _g++; var encoding_record = cmap + 4 + 8 * i; var pos = encoding_record; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); switch(ch2 | ch1 << 8) { case 0: var pos1 = encoding_record + 4; if(pos1 == null) { pos1 = 0; } var pos2 = pos1; if(pos2 == null) { pos2 = 0; } var ch11 = data.readU8(pos2); var ch21 = data.readU8(pos2 + 1); var ch3 = data.readU8(pos2 + 2); var ch4 = data.readU8(pos2 + 3); info.index_map = cmap + (ch4 | ch3 << 8 | ch21 << 16 | ch11 << 24); break; case 3: var pos3 = encoding_record + 2; if(pos3 == null) { pos3 = 0; } var ch12 = data.readU8(pos3); var ch22 = data.readU8(pos3 + 1); switch(ch22 | ch12 << 8) { case 1:case 10: var pos4 = encoding_record + 4; if(pos4 == null) { pos4 = 0; } var pos5 = pos4; if(pos5 == null) { pos5 = 0; } var ch13 = data.readU8(pos5); var ch23 = data.readU8(pos5 + 1); var ch31 = data.readU8(pos5 + 2); var ch41 = data.readU8(pos5 + 3); info.index_map = cmap + (ch41 | ch31 << 8 | ch23 << 16 | ch13 << 24); break; } break; } } if(info.index_map == 0) { return false; } var pos = info.head + 50; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); info.indexToLocFormat = ch2 | ch1 << 8; return true; }; kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex = function(info,unicode_codepoint) { var data = info.data; var index_map = info.index_map; var pos = index_map; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var format = ch2 | ch1 << 8; if(format == 0) { var pos = index_map + 2; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var bytes = ch2 | ch1 << 8; if(unicode_codepoint < bytes - 6) { var pos = index_map + 6 + unicode_codepoint; if(pos == null) { pos = 0; } return data.readU8(pos); } return 0; } else if(format == 6) { var pos = index_map + 6; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var first = ch2 | ch1 << 8; var pos = index_map + 8; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var count = ch2 | ch1 << 8; if(unicode_codepoint >= first && unicode_codepoint < first + count) { var pos = index_map + 10 + (unicode_codepoint - first) * 2; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); return ch2 | ch1 << 8; } return 0; } else if(format == 2) { throw haxe_Exception.thrown("Error"); } else if(format == 4) { var pos = index_map + 6; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var segcount = (ch2 | ch1 << 8) >> 1; var pos = index_map + 8; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var searchRange = (ch2 | ch1 << 8) >> 1; var pos = index_map + 10; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var entrySelector = ch2 | ch1 << 8; var pos = index_map + 12; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var rangeShift = (ch2 | ch1 << 8) >> 1; var endCount = index_map + 14; var search = endCount; if(unicode_codepoint > 65535) { return 0; } var pos = search + rangeShift * 2; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); if(unicode_codepoint >= (ch2 | ch1 << 8)) { search += rangeShift * 2; } search -= 2; while(entrySelector != 0) { searchRange >>= 1; var pos = search + searchRange * 2; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var end = ch2 | ch1 << 8; if(unicode_codepoint > end) { search += searchRange * 2; } --entrySelector; } search += 2; var item = search - endCount >> 1 & 65535; var pos = endCount + 2 * item; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); if(unicode_codepoint > (ch2 | ch1 << 8)) { throw haxe_Exception.thrown("Error"); } var pos = index_map + 14 + segcount * 2 + 2 + 2 * item; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var start = ch2 | ch1 << 8; if(unicode_codepoint < start) { return 0; } var pos = index_map + 14 + segcount * 6 + 2 + 2 * item; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var offset = ch2 | ch1 << 8; if(offset == 0) { var pos = index_map + 14 + segcount * 4 + 2 + 2 * item; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var n = ch2 | ch1 << 8; return unicode_codepoint + ((n & 32768) != 0 ? n - 65536 : n) & 65535; } var pos = offset + (unicode_codepoint - start) * 2 + index_map + 14 + segcount * 6 + 2 + 2 * item; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); return ch2 | ch1 << 8; } else if(format == 12 || format == 13) { var pos = index_map + 12; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = data.readU8(pos1); var ch2 = data.readU8(pos1 + 1); var ch3 = data.readU8(pos1 + 2); var ch4 = data.readU8(pos1 + 3); var ngroups = ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24; var low = 0; var high = ngroups; while(low < high) { var mid = low + (high - low >> 1); var pos = index_map + 16 + mid * 12; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = data.readU8(pos1); var ch2 = data.readU8(pos1 + 1); var ch3 = data.readU8(pos1 + 2); var ch4 = data.readU8(pos1 + 3); var start_char = ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24; var pos2 = index_map + 16 + mid * 12 + 4; if(pos2 == null) { pos2 = 0; } var pos3 = pos2; if(pos3 == null) { pos3 = 0; } var ch11 = data.readU8(pos3); var ch21 = data.readU8(pos3 + 1); var ch31 = data.readU8(pos3 + 2); var ch41 = data.readU8(pos3 + 3); var end_char = ch41 | ch31 << 8 | ch21 << 16 | ch11 << 24; if(unicode_codepoint < start_char) { high = mid; } else if(unicode_codepoint > end_char) { low = mid + 1; } else { var pos4 = index_map + 16 + mid * 12 + 8; if(pos4 == null) { pos4 = 0; } var pos5 = pos4; if(pos5 == null) { pos5 = 0; } var ch12 = data.readU8(pos5); var ch22 = data.readU8(pos5 + 1); var ch32 = data.readU8(pos5 + 2); var ch42 = data.readU8(pos5 + 3); var start_glyph = ch42 | ch32 << 8 | ch22 << 16 | ch12 << 24; if(format == 12) { return start_glyph + unicode_codepoint - start_char; } else { return start_glyph; } } } return 0; } throw haxe_Exception.thrown("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(!(info.cff.data == null || info.cff.data.get_length() == 0)) { throw haxe_Exception.thrown("Error"); } 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; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); g1 = info1 + (ch2 | ch1 << 8) * 2; var info1 = info.glyf; var p = info.data; var pos = info.loca + glyph_index * 2 + 2; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); g2 = info1 + (ch2 | ch1 << 8) * 2; } else { var info1 = info.glyf; var p = info.data; var pos = info.loca + glyph_index * 4; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = p.readU8(pos1); var ch2 = p.readU8(pos1 + 1); var ch3 = p.readU8(pos1 + 2); var ch4 = p.readU8(pos1 + 3); g1 = info1 + (ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24); var info1 = info.glyf; var p = info.data; var pos = info.loca + glyph_index * 4 + 4; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = p.readU8(pos1); var ch2 = p.readU8(pos1 + 1); var ch3 = p.readU8(pos1 + 2); var ch4 = p.readU8(pos1 + 3); g2 = info1 + (ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24); } if(g1 == g2) { return -1; } else { return g1; } }; kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBox = function(info,glyph_index,rect) { if(info.cff.data != null && info.cff.data.get_length() > 0) { kha_graphics2_truetype_StbTruetype.stbtt__GetGlyphInfoT2(info,glyph_index,rect); } else { var g = kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset(info,glyph_index); if(g < 0) { return false; } var p = info.data; var pos = g + 2; if(pos == null) { pos = 0; } 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 p = info.data; var pos = g + 4; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; rect.y0 = (n & 32768) != 0 ? n - 65536 : n; var p = info.data; var pos = g + 6; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; rect.x1 = (n & 32768) != 0 ? n - 65536 : n; var p = info.data; var pos = g + 8; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; rect.y1 = (n & 32768) != 0 ? n - 65536 : n; } 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) { if(info.cff.data != null && info.cff.data.get_length() > 0) { return kha_graphics2_truetype_StbTruetype.stbtt__GetGlyphInfoT2(info,glyph_index,null) == 0; } var g = kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset(info,glyph_index); if(g < 0) { return true; } var p = info.data; var pos = g; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; var numberOfContours = (n & 32768) != 0 ? n - 65536 : 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 _g = 0; var _g1 = count; while(_g < _g1) { var i = _g++; to[offset + i] = from[i]; } }; kha_graphics2_truetype_StbTruetype.stbtt__GetGlyphShapeTT = function(info,glyph_index) { 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 pos = g; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var n = ch2 | ch1 << 8; var numberOfContours = (n & 32768) != 0 ? n - 65536 : n; if(numberOfContours > 0) { var flags = 0; var j = 0; var next_move = 0; var off = 0; var was_off = false; var start_off = false; var endPtsOfContoursOffset = g + 10; var pos = endPtsOfContoursOffset + numberOfContours * 2; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var ins = ch2 | ch1 << 8; var pointsIndex = endPtsOfContoursOffset + numberOfContours * 2 + 2 + ins; var pos = endPtsOfContoursOffset + numberOfContours * 2 - 2; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var n = 1 + (ch2 | ch1 << 8); var m = n + 2 * numberOfContours; var this1 = new Array(m); vertices = this1; if(vertices == null) { return null; } else { var _g = 0; var _g1 = vertices.length; while(_g < _g1) { var i = _g++; vertices[i] = new kha_graphics2_truetype_Stbtt_$vertex(); } } next_move = 0; var flagcount = 0; off = m - n; var _g = 0; var _g1 = n; while(_g < _g1) { var i = _g++; if(flagcount == 0) { flags = data.readU8(pointsIndex++); if((flags & 8) != 0) { flagcount = data.readU8(pointsIndex++); } } else { --flagcount; } vertices[off + i].type = flags; } var x = 0; var _g = 0; var _g1 = n; while(_g < _g1) { var i = _g++; flags = vertices[off + i].type; if((flags & 2) != 0) { var dx = data.readU8(pointsIndex++); x += (flags & 16) != 0 ? dx : -dx; } else if((flags & 16) == 0) { var value; var ch1 = data.readU8(pointsIndex); var ch2 = data.readU8(pointsIndex + 1); var n1 = ch2 | ch1 << 8; if((n1 & 32768) != 0) { value = n1 - 65536; } else { value = n1; } x += value; pointsIndex += 2; } vertices[off + i].x = x; } var y = 0; var _g = 0; var _g1 = n; while(_g < _g1) { var i = _g++; flags = vertices[off + i].type; if((flags & 4) != 0) { var dy = data.readU8(pointsIndex++); y += (flags & 32) != 0 ? dy : -dy; } else if((flags & 32) == 0) { var value; var ch1 = data.readU8(pointsIndex); var ch2 = data.readU8(pointsIndex + 1); var n1 = ch2 | ch1 << 8; if((n1 & 32768) != 0) { value = n1 - 65536; } else { value = n1; } y += value; pointsIndex += 2; } vertices[off + i].y = y; } num_vertices = 0; var scy = 0; var scx = scy; var cy = scx; var cx = cy; var sy = cx; var sx = sy; var i = 0; while(i < n) { flags = vertices[off + i].type; x = vertices[off + i].x; y = vertices[off + i].y; if(next_move == i) { if(i != 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 + i + 1].type & 1) == 0) { sx = x + vertices[off + i + 1].x >> 1; sy = y + vertices[off + i + 1].y >> 1; } else { sx = vertices[off + i + 1].x; sy = vertices[off + i + 1].y; ++i; } } else { sx = x; sy = y; } kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],1,sx,sy,0,0); was_off = false; var pos = endPtsOfContoursOffset + j * 2; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); next_move = 1 + (ch2 | ch1 << 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; } ++i; } 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 < 0) { var more = 1; var compIndex = g + 10; num_vertices = 0; vertices = null; while(more != 0) { var comp_num_verts = 0; var i; 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 pos = compIndex; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var n = ch2 | ch1 << 8; var flags = (n & 32768) != 0 ? n - 65536 : n; var pos1 = compIndex += 2; if(pos1 == null) { pos1 = 0; } var ch11 = data.readU8(pos1); var ch21 = data.readU8(pos1 + 1); var n1 = ch21 | ch11 << 8; var gidx = (n1 & 32768) != 0 ? n1 - 65536 : n1; compIndex += 2; if((flags & 2) != 0) { if((flags & 1) != 0) { var pos2 = compIndex; if(pos2 == null) { pos2 = 0; } var ch12 = data.readU8(pos2); var ch22 = data.readU8(pos2 + 1); var n2 = ch22 | ch12 << 8; mtx4 = (n2 & 32768) != 0 ? n2 - 65536 : n2; var pos3 = compIndex += 2; if(pos3 == null) { pos3 = 0; } var ch13 = data.readU8(pos3); var ch23 = data.readU8(pos3 + 1); var n3 = ch23 | ch13 << 8; mtx5 = (n3 & 32768) != 0 ? n3 - 65536 : n3; compIndex += 2; } else { var pos4 = compIndex; if(pos4 == null) { pos4 = 0; } var n4 = data.readU8(pos4); mtx4 = n4 >= 128 ? n4 - 256 : n4; var pos5 = ++compIndex; if(pos5 == null) { pos5 = 0; } var n5 = data.readU8(pos5); mtx5 = n5 >= 128 ? n5 - 256 : n5; ++compIndex; } } else { throw haxe_Exception.thrown("Error"); } if((flags & 8) != 0) { var pos6 = compIndex; if(pos6 == null) { pos6 = 0; } var ch14 = data.readU8(pos6); var ch24 = data.readU8(pos6 + 1); var n6 = ch24 | ch14 << 8; mtx3 = ((n6 & 32768) != 0 ? n6 - 65536 : n6) / 16384.0; mtx0 = mtx3; compIndex += 2; mtx2 = 0; mtx1 = mtx2; } else if((flags & 64) != 0) { var pos7 = compIndex; if(pos7 == null) { pos7 = 0; } var ch15 = data.readU8(pos7); var ch25 = data.readU8(pos7 + 1); var n7 = ch25 | ch15 << 8; mtx0 = ((n7 & 32768) != 0 ? n7 - 65536 : n7) / 16384.0; compIndex += 2; mtx2 = 0; mtx1 = mtx2; var pos8 = compIndex; if(pos8 == null) { pos8 = 0; } var ch16 = data.readU8(pos8); var ch26 = data.readU8(pos8 + 1); var n8 = ch26 | ch16 << 8; mtx3 = ((n8 & 32768) != 0 ? n8 - 65536 : n8) / 16384.0; compIndex += 2; } else if((flags & 128) != 0) { var pos9 = compIndex; if(pos9 == null) { pos9 = 0; } var ch17 = data.readU8(pos9); var ch27 = data.readU8(pos9 + 1); var n9 = ch27 | ch17 << 8; mtx0 = ((n9 & 32768) != 0 ? n9 - 65536 : n9) / 16384.0; var pos10 = compIndex += 2; if(pos10 == null) { pos10 = 0; } var ch18 = data.readU8(pos10); var ch28 = data.readU8(pos10 + 1); var n10 = ch28 | ch18 << 8; mtx1 = ((n10 & 32768) != 0 ? n10 - 65536 : n10) / 16384.0; var pos11 = compIndex += 2; if(pos11 == null) { pos11 = 0; } var ch19 = data.readU8(pos11); var ch29 = data.readU8(pos11 + 1); var n11 = ch29 | ch19 << 8; mtx2 = ((n11 & 32768) != 0 ? n11 - 65536 : n11) / 16384.0; var pos12 = compIndex += 2; if(pos12 == null) { pos12 = 0; } var ch110 = data.readU8(pos12); var ch210 = data.readU8(pos12 + 1); var n12 = ch210 | ch110 << 8; mtx3 = ((n12 & 32768) != 0 ? n12 - 65536 : n12) / 16384.0; compIndex += 2; } var m = Math.sqrt(mtx0 * mtx0 + mtx1 * mtx1); var n13 = Math.sqrt(mtx2 * mtx2 + mtx3 * mtx3); comp_verts = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(info,gidx); comp_num_verts = comp_verts == null ? 0 : comp_verts.length; if(comp_num_verts > 0) { var _g = 0; var _g1 = comp_num_verts; while(_g < _g1) { var i1 = _g++; var v = comp_verts[i1]; var x = v.x; var y = v.y; v.x = m * (mtx0 * x + mtx2 * y + mtx4) | 0; v.y = n13 * (mtx1 * x + mtx3 * y + mtx5) | 0; x = v.cx; y = v.cy; v.cx = m * (mtx0 * x + mtx2 * y + mtx4) | 0; v.cy = n13 * (mtx1 * x + mtx3 * y + mtx5) | 0; } var this1 = new Array(num_vertices + comp_num_verts); tmp = this1; 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 = flags & 32; } } if(vertices == null) { return null; } if(vertices.length < num_vertices) { throw haxe_Exception.thrown("Error"); } if(num_vertices < vertices.length) { var this1 = new Array(num_vertices); var tmp = this1; kha_graphics2_truetype_StbTruetype.copyVertices(vertices,tmp,0,num_vertices); return tmp; } else { return vertices; } }; kha_graphics2_truetype_StbTruetype.STBTT__CSCTX_INIT = function(bounds) { var tmp = new kha_graphics2_truetype_Stbtt_$_$csctx(); tmp.bounds = bounds; tmp.started = false; tmp.first_x = 0; tmp.first_y = 0; tmp.x = 0; tmp.y = 0; tmp.min_x = 0; tmp.min_y = 0; tmp.max_x = 0; tmp.max_y = 0; tmp.pvertices = null; tmp.num_vertices = 0; return tmp; }; kha_graphics2_truetype_StbTruetype.stbtt__track_vertex = function(c,x,y) { if(x > c.max_x || !c.started) { c.max_x = x; } if(y > c.max_y || !c.started) { c.max_y = y; } if(x < c.min_x || !c.started) { c.min_x = x; } if(y < c.min_y || !c.started) { c.min_y = y; } c.started = true; }; kha_graphics2_truetype_StbTruetype.stbtt__csctx_v = function(c,type,x,y,cx,cy,cx1,cy1) { if(c.bounds) { if(x > c.max_x || !c.started) { c.max_x = x; } if(y > c.max_y || !c.started) { c.max_y = y; } if(x < c.min_x || !c.started) { c.min_x = x; } if(y < c.min_y || !c.started) { c.min_y = y; } c.started = true; if(type == 4) { if(cx > c.max_x || !c.started) { c.max_x = cx; } if(cy > c.max_y || !c.started) { c.max_y = cy; } if(cx < c.min_x || !c.started) { c.min_x = cx; } if(cy < c.min_y || !c.started) { c.min_y = cy; } c.started = true; if(cx1 > c.max_x || !c.started) { c.max_x = cx1; } if(cy1 > c.max_y || !c.started) { c.max_y = cy1; } if(cx1 < c.min_x || !c.started) { c.min_x = cx1; } if(cy1 < c.min_y || !c.started) { c.min_y = cy1; } c.started = true; } } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],type,x,y,cx,cy); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx1 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy1 , Int); } c.num_vertices++; }; kha_graphics2_truetype_StbTruetype.stbtt__csctx_close_shape = function(ctx) { if(ctx.first_x != ctx.x || ctx.first_y != ctx.y) { var x = ctx.first_x | 0; var y = ctx.first_y | 0; if(ctx.bounds) { if(x > ctx.max_x || !ctx.started) { ctx.max_x = x; } if(y > ctx.max_y || !ctx.started) { ctx.max_y = y; } if(x < ctx.min_x || !ctx.started) { ctx.min_x = x; } if(y < ctx.min_y || !ctx.started) { ctx.min_y = y; } ctx.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(ctx.pvertices[ctx.num_vertices],2,x,y,0,0); ctx.pvertices[ctx.num_vertices].cx1 = js_Boot.__cast(0 , Int); ctx.pvertices[ctx.num_vertices].cy1 = js_Boot.__cast(0 , Int); } ctx.num_vertices++; } }; kha_graphics2_truetype_StbTruetype.stbtt__csctx_rmove_to = function(ctx,dx,dy) { if(ctx.first_x != ctx.x || ctx.first_y != ctx.y) { var x = ctx.first_x | 0; var y = ctx.first_y | 0; if(ctx.bounds) { if(x > ctx.max_x || !ctx.started) { ctx.max_x = x; } if(y > ctx.max_y || !ctx.started) { ctx.max_y = y; } if(x < ctx.min_x || !ctx.started) { ctx.min_x = x; } if(y < ctx.min_y || !ctx.started) { ctx.min_y = y; } ctx.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(ctx.pvertices[ctx.num_vertices],2,x,y,0,0); ctx.pvertices[ctx.num_vertices].cx1 = js_Boot.__cast(0 , Int); ctx.pvertices[ctx.num_vertices].cy1 = js_Boot.__cast(0 , Int); } ctx.num_vertices++; } ctx.first_x = ctx.x = ctx.x + dx; ctx.first_y = ctx.y = ctx.y + dy; var x = ctx.x | 0; var y = ctx.y | 0; if(ctx.bounds) { if(x > ctx.max_x || !ctx.started) { ctx.max_x = x; } if(y > ctx.max_y || !ctx.started) { ctx.max_y = y; } if(x < ctx.min_x || !ctx.started) { ctx.min_x = x; } if(y < ctx.min_y || !ctx.started) { ctx.min_y = y; } ctx.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(ctx.pvertices[ctx.num_vertices],1,x,y,0,0); ctx.pvertices[ctx.num_vertices].cx1 = js_Boot.__cast(0 , Int); ctx.pvertices[ctx.num_vertices].cy1 = js_Boot.__cast(0 , Int); } ctx.num_vertices++; }; kha_graphics2_truetype_StbTruetype.stbtt__csctx_rline_to = function(ctx,dx,dy) { ctx.x += dx; ctx.y += dy; var x = ctx.x | 0; var y = ctx.y | 0; if(ctx.bounds) { if(x > ctx.max_x || !ctx.started) { ctx.max_x = x; } if(y > ctx.max_y || !ctx.started) { ctx.max_y = y; } if(x < ctx.min_x || !ctx.started) { ctx.min_x = x; } if(y < ctx.min_y || !ctx.started) { ctx.min_y = y; } ctx.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(ctx.pvertices[ctx.num_vertices],2,x,y,0,0); ctx.pvertices[ctx.num_vertices].cx1 = js_Boot.__cast(0 , Int); ctx.pvertices[ctx.num_vertices].cy1 = js_Boot.__cast(0 , Int); } ctx.num_vertices++; }; kha_graphics2_truetype_StbTruetype.stbtt__csctx_rccurve_to = function(ctx,dx1,dy1,dx2,dy2,dx3,dy3) { var cx1 = ctx.x + dx1; var cy1 = ctx.y + dy1; var cx2 = cx1 + dx2; var cy2 = cy1 + dy2; ctx.x = cx2 + dx3; ctx.y = cy2 + dy3; var x = ctx.x | 0; var y = ctx.y | 0; var cx = cx1 | 0; var cy = cy1 | 0; var cx1 = cx2 | 0; var cy1 = cy2 | 0; if(ctx.bounds) { if(x > ctx.max_x || !ctx.started) { ctx.max_x = x; } if(y > ctx.max_y || !ctx.started) { ctx.max_y = y; } if(x < ctx.min_x || !ctx.started) { ctx.min_x = x; } if(y < ctx.min_y || !ctx.started) { ctx.min_y = y; } ctx.started = true; if(cx > ctx.max_x || !ctx.started) { ctx.max_x = cx; } if(cy > ctx.max_y || !ctx.started) { ctx.max_y = cy; } if(cx < ctx.min_x || !ctx.started) { ctx.min_x = cx; } if(cy < ctx.min_y || !ctx.started) { ctx.min_y = cy; } ctx.started = true; if(cx1 > ctx.max_x || !ctx.started) { ctx.max_x = cx1; } if(cy1 > ctx.max_y || !ctx.started) { ctx.max_y = cy1; } if(cx1 < ctx.min_x || !ctx.started) { ctx.min_x = cx1; } if(cy1 < ctx.min_y || !ctx.started) { ctx.min_y = cy1; } ctx.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(ctx.pvertices[ctx.num_vertices],4,x,y,cx,cy); ctx.pvertices[ctx.num_vertices].cx1 = js_Boot.__cast(cx1 , Int); ctx.pvertices[ctx.num_vertices].cy1 = js_Boot.__cast(cy1 , Int); } ctx.num_vertices++; }; kha_graphics2_truetype_StbTruetype.stbtt__get_subr = function(idx,n) { if(0 > idx.data.get_length()) { throw haxe_Exception.thrown("Error"); } idx.cursor = 0 > idx.data.get_length() ? idx.data.get_length() : 0; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(idx.cursor >= idx.data.get_length()) { v1 = 0; } else { var pos = idx.cursor++; if(pos == null) { pos = 0; } v1 = idx.data.readU8(pos); } v = v << 8 | v1; } var count = v; var bias = 107; if(count >= 33900) { bias = 32768; } else if(count >= 1240) { bias = 1131; } n += bias; if(n < 0 || n >= count) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; return r; } if(0 > idx.data.get_length()) { throw haxe_Exception.thrown("Error"); } idx.cursor = 0 > idx.data.get_length() ? idx.data.get_length() : 0; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(idx.cursor >= idx.data.get_length()) { v1 = 0; } else { var pos = idx.cursor++; if(pos == null) { pos = 0; } v1 = idx.data.readU8(pos); } v = v << 8 | v1; } var count = v; var offsize; if(idx.cursor >= idx.data.get_length()) { offsize = 0; } else { var pos = idx.cursor++; if(pos == null) { pos = 0; } offsize = idx.data.readU8(pos); } if(!(n >= 0 && n < count)) { throw haxe_Exception.thrown("Error"); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = idx.cursor + n * offsize; if(o > idx.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } idx.cursor = o > idx.data.get_length() || o < 0 ? idx.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(idx.cursor >= idx.data.get_length()) { v1 = 0; } else { var pos = idx.cursor++; if(pos == null) { pos = 0; } v1 = idx.data.readU8(pos); } v = v << 8 | v1; } var start = v; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(idx.cursor >= idx.data.get_length()) { v1 = 0; } else { var pos = idx.cursor++; if(pos == null) { pos = 0; } v1 = idx.data.readU8(pos); } v = v << 8 | v1; } var end = v; var o = 2 + (count + 1) * offsize + start; var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(o < 0 || s < 0 || o > idx.data.get_length() || s > idx.data.get_length() - o) { return r1; } else { r1.data = idx.data.sub(o,s); return r1; } }; kha_graphics2_truetype_StbTruetype.stbtt__cid_get_glyph_subrs = function(info,glyph_index) { var fdselect = info.fdselect; var nranges; var start; var end; var v; var fmt; var fdselector = -1; var i; if(0 > fdselect.data.get_length()) { throw haxe_Exception.thrown("Error"); } fdselect.cursor = 0 > fdselect.data.get_length() ? fdselect.data.get_length() : 0; if(fdselect.cursor >= fdselect.data.get_length()) { fmt = 0; } else { var pos = fdselect.cursor++; if(pos == null) { pos = 0; } fmt = fdselect.data.readU8(pos); } if(fmt == 0) { var o = fdselect.cursor + glyph_index; if(o > fdselect.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } fdselect.cursor = o > fdselect.data.get_length() || o < 0 ? fdselect.data.get_length() : o; if(fdselect.cursor >= fdselect.data.get_length()) { fdselector = 0; } else { var pos = fdselect.cursor++; if(pos == null) { pos = 0; } fdselector = fdselect.data.readU8(pos); } } else if(fmt == 3) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v2; if(fdselect.cursor >= fdselect.data.get_length()) { v2 = 0; } else { var pos = fdselect.cursor++; if(pos == null) { pos = 0; } v2 = fdselect.data.readU8(pos); } v1 = v1 << 8 | v2; } nranges = v1; var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v2; if(fdselect.cursor >= fdselect.data.get_length()) { v2 = 0; } else { var pos = fdselect.cursor++; if(pos == null) { pos = 0; } v2 = fdselect.data.readU8(pos); } v1 = v1 << 8 | v2; } start = v1; var _g = 0; var _g1 = nranges; while(_g < _g1) { var i = _g++; if(fdselect.cursor >= fdselect.data.get_length()) { v = 0; } else { var pos = fdselect.cursor++; if(pos == null) { pos = 0; } v = fdselect.data.readU8(pos); } var v1 = 0; var _g2 = 0; var _g3 = 2; while(_g2 < _g3) { var i1 = _g2++; var v2; if(fdselect.cursor >= fdselect.data.get_length()) { v2 = 0; } else { var pos1 = fdselect.cursor++; if(pos1 == null) { pos1 = 0; } v2 = fdselect.data.readU8(pos1); } v1 = v1 << 8 | v2; } end = v1; if(glyph_index >= start && glyph_index < end) { fdselector = v; break; } start = end; } } if(fdselector == -1) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; } var cff = info.cff; var b = info.fontdicts; if(0 > b.data.get_length()) { throw haxe_Exception.thrown("Error"); } b.cursor = 0 > b.data.get_length() ? b.data.get_length() : 0; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var count = v; var offsize; if(b.cursor >= b.data.get_length()) { offsize = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } offsize = b.data.readU8(pos); } if(!(fdselector >= 0 && fdselector < count)) { throw haxe_Exception.thrown("Error"); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b.cursor + fdselector * offsize; if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var start = v; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(b.cursor >= b.data.get_length()) { v1 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } v1 = b.data.readU8(pos); } v = v << 8 | v1; } var end = v; var o = 2 + (count + 1) * offsize + start; var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; var fontdict; if(o < 0 || s < 0 || o > b.data.get_length() || s > b.data.get_length() - o) { fontdict = r1; } else { r1.data = b.data.sub(o,s); fontdict = r1; } var subrsoff = [0]; var private_loc = [0,0]; var i = 0; if(0 > fontdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } fontdict.cursor = 0 > fontdict.data.get_length() ? fontdict.data.get_length() : 0; var ret = null; while(fontdict.cursor < fontdict.data.get_length()) { var start = fontdict.cursor; var op; while(true) { var tmp; if(fontdict.cursor >= fontdict.data.get_length()) { tmp = 0; } else { var pos = fontdict.cursor; if(pos == null) { pos = 0; } tmp = fontdict.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(fontdict.cursor >= fontdict.data.get_length()) { b0 = 0; } else { var pos1 = fontdict.cursor; if(pos1 == null) { pos1 = 0; } b0 = fontdict.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = fontdict.cursor + 1; if(o > fontdict.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } fontdict.cursor = o > fontdict.data.get_length() || o < 0 ? fontdict.data.get_length() : o; while(fontdict.cursor < fontdict.data.get_length()) { if(fontdict.cursor >= fontdict.data.get_length()) { v = 0; } else { var pos2 = fontdict.cursor++; if(pos2 == null) { pos2 = 0; } v = fontdict.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(fontdict.cursor >= fontdict.data.get_length()) { b01 = 0; } else { var pos3 = fontdict.cursor++; if(pos3 == null) { pos3 = 0; } b01 = fontdict.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(fontdict.cursor < fontdict.data.get_length()) { var pos4 = fontdict.cursor++; if(pos4 == null) { pos4 = 0; } fontdict.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(fontdict.cursor < fontdict.data.get_length()) { var pos5 = fontdict.cursor++; if(pos5 == null) { pos5 = 0; } fontdict.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(fontdict.cursor >= fontdict.data.get_length()) { v2 = 0; } else { var pos6 = fontdict.cursor++; if(pos6 == null) { pos6 = 0; } v2 = fontdict.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(fontdict.cursor >= fontdict.data.get_length()) { v4 = 0; } else { var pos7 = fontdict.cursor++; if(pos7 == null) { pos7 = 0; } v4 = fontdict.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = fontdict.cursor; if(fontdict.cursor >= fontdict.data.get_length()) { op = 0; } else { var pos8 = fontdict.cursor++; if(pos8 == null) { pos8 = 0; } op = fontdict.data.readU8(pos8); } if(op == 12) { var op1; if(fontdict.cursor >= fontdict.data.get_length()) { op1 = 0; } else { var pos9 = fontdict.cursor++; if(pos9 == null) { pos9 = 0; } op1 = fontdict.data.readU8(pos9); } op = op1 | 256; } if(op == 18) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > fontdict.data.get_length() || s > fontdict.data.get_length() - start) { ret = r1; } else { r1.data = fontdict.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > fontdict.data.get_length() || 0 > fontdict.data.get_length()) { operands = r1; } else { r1.data = fontdict.data.sub(0,0); operands = r1; } } while(i < 2 && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp; if(b0 >= 32 && b0 <= 246) { tmp = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp1; if(operands.cursor >= operands.data.get_length()) { tmp1 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp1 = operands.data.readU8(pos1); } tmp = (b0 - 247) * 256 + tmp1 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp2 = operands.data.readU8(pos2); } tmp = -(b0 - 251) * 256 - tmp2 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp = v2; } else { throw haxe_Exception.thrown("Error"); } private_loc[i] = tmp; ++i; } if(private_loc[1] == 0 || private_loc[0] == 0) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; return r; } else { var o = private_loc[1]; var s = private_loc[0]; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; var pdict; if(o < 0 || s < 0 || o > cff.data.get_length() || s > cff.data.get_length() - o) { pdict = r1; } else { r1.data = cff.data.sub(o,s); pdict = r1; } var i = 0; if(0 > pdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } pdict.cursor = 0 > pdict.data.get_length() ? pdict.data.get_length() : 0; var ret = null; while(pdict.cursor < pdict.data.get_length()) { var start = pdict.cursor; var op; while(true) { var tmp; if(pdict.cursor >= pdict.data.get_length()) { tmp = 0; } else { var pos = pdict.cursor; if(pos == null) { pos = 0; } tmp = pdict.data.readU8(pos); } if(!(tmp >= 28)) { break; } var v; var b0; if(pdict.cursor >= pdict.data.get_length()) { b0 = 0; } else { var pos1 = pdict.cursor; if(pos1 == null) { pos1 = 0; } b0 = pdict.data.readU8(pos1); } if(b0 < 28) { throw haxe_Exception.thrown("Error"); } if(b0 == 30) { var o = pdict.cursor + 1; if(o > pdict.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } pdict.cursor = o > pdict.data.get_length() || o < 0 ? pdict.data.get_length() : o; while(pdict.cursor < pdict.data.get_length()) { if(pdict.cursor >= pdict.data.get_length()) { v = 0; } else { var pos2 = pdict.cursor++; if(pos2 == null) { pos2 = 0; } v = pdict.data.readU8(pos2); } if((v & 15) == 15 || v >> 4 == 15) { break; } } } else { var b01; if(pdict.cursor >= pdict.data.get_length()) { b01 = 0; } else { var pos3 = pdict.cursor++; if(pos3 == null) { pos3 = 0; } b01 = pdict.data.readU8(pos3); } if(!(b01 >= 32 && b01 <= 246)) { if(b01 >= 247 && b01 <= 250) { if(pdict.cursor < pdict.data.get_length()) { var pos4 = pdict.cursor++; if(pos4 == null) { pos4 = 0; } pdict.data.readU8(pos4); } } else if(b01 >= 251 && b01 <= 254) { if(pdict.cursor < pdict.data.get_length()) { var pos5 = pdict.cursor++; if(pos5 == null) { pos5 = 0; } pdict.data.readU8(pos5); } } else if(b01 == 28) { var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(pdict.cursor >= pdict.data.get_length()) { v2 = 0; } else { var pos6 = pdict.cursor++; if(pos6 == null) { pos6 = 0; } v2 = pdict.data.readU8(pos6); } v1 = v1 << 8 | v2; } } else if(b01 == 29) { var v3 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v4; if(pdict.cursor >= pdict.data.get_length()) { v4 = 0; } else { var pos7 = pdict.cursor++; if(pos7 == null) { pos7 = 0; } v4 = pdict.data.readU8(pos7); } v3 = v3 << 8 | v4; } } else { throw haxe_Exception.thrown("Error"); } } } } var end = pdict.cursor; if(pdict.cursor >= pdict.data.get_length()) { op = 0; } else { var pos8 = pdict.cursor++; if(pos8 == null) { pos8 = 0; } op = pdict.data.readU8(pos8); } if(op == 12) { var op1; if(pdict.cursor >= pdict.data.get_length()) { op1 = 0; } else { var pos9 = pdict.cursor++; if(pos9 == null) { pos9 = 0; } op1 = pdict.data.readU8(pos9); } op = op1 | 256; } if(op == 19) { var s = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > pdict.data.get_length() || s > pdict.data.get_length() - start) { ret = r1; } else { r1.data = pdict.data.sub(start,s); ret = r1; } break; } } var operands; if(ret != null) { operands = ret; } else { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(0 > pdict.data.get_length() || 0 > pdict.data.get_length()) { operands = r1; } else { r1.data = pdict.data.sub(0,0); operands = r1; } } while(i < 1 && operands.cursor < operands.data.get_length()) { var b0; if(operands.cursor >= operands.data.get_length()) { b0 = 0; } else { var pos = operands.cursor++; if(pos == null) { pos = 0; } b0 = operands.data.readU8(pos); } var tmp; if(b0 >= 32 && b0 <= 246) { tmp = b0 - 139; } else if(b0 >= 247 && b0 <= 250) { var tmp1; if(operands.cursor >= operands.data.get_length()) { tmp1 = 0; } else { var pos1 = operands.cursor++; if(pos1 == null) { pos1 = 0; } tmp1 = operands.data.readU8(pos1); } tmp = (b0 - 247) * 256 + tmp1 + 108; } else if(b0 >= 251 && b0 <= 254) { var tmp2; if(operands.cursor >= operands.data.get_length()) { tmp2 = 0; } else { var pos2 = operands.cursor++; if(pos2 == null) { pos2 = 0; } tmp2 = operands.data.readU8(pos2); } tmp = -(b0 - 251) * 256 - tmp2 - 108; } else if(b0 == 28) { var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v1; if(operands.cursor >= operands.data.get_length()) { v1 = 0; } else { var pos3 = operands.cursor++; if(pos3 == null) { pos3 = 0; } v1 = operands.data.readU8(pos3); } v = v << 8 | v1; } tmp = v; } else if(b0 == 29) { var v2 = 0; var _g2 = 0; var _g3 = 4; while(_g2 < _g3) { var i2 = _g2++; var v3; if(operands.cursor >= operands.data.get_length()) { v3 = 0; } else { var pos4 = operands.cursor++; if(pos4 == null) { pos4 = 0; } v3 = operands.data.readU8(pos4); } v2 = v2 << 8 | v3; } tmp = v2; } else { throw haxe_Exception.thrown("Error"); } subrsoff[i] = tmp; ++i; } if(subrsoff[0] == 0) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; return r; } else { var o = private_loc[1] + subrsoff[0]; if(o > cff.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } cff.cursor = o > cff.data.get_length() || o < 0 ? cff.data.get_length() : o; var start = cff.cursor; var v = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i = _g++; var v1; if(cff.cursor >= cff.data.get_length()) { v1 = 0; } else { var pos = cff.cursor++; if(pos == null) { pos = 0; } v1 = cff.data.readU8(pos); } v = v << 8 | v1; } var count = v; if(count > 0) { var offsize; if(cff.cursor >= cff.data.get_length()) { offsize = 0; } else { var pos = cff.cursor++; if(pos == null) { pos = 0; } offsize = cff.data.readU8(pos); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = cff.cursor + offsize * count; if(o > cff.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } cff.cursor = o > cff.data.get_length() || o < 0 ? cff.data.get_length() : o; var v = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i = _g++; var v1; if(cff.cursor >= cff.data.get_length()) { v1 = 0; } else { var pos = cff.cursor++; if(pos == null) { pos = 0; } v1 = cff.data.readU8(pos); } v = v << 8 | v1; } var o = cff.cursor + (v - 1); if(o > cff.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } cff.cursor = o > cff.data.get_length() || o < 0 ? cff.data.get_length() : o; var s = cff.cursor - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(start < 0 || s < 0 || start > cff.data.get_length() || s > cff.data.get_length() - start) { return r1; } else { r1.data = cff.data.sub(start,s); return r1; } } else { return cff; } } } }; kha_graphics2_truetype_StbTruetype.STBTT__CSERR = function(s) { return false; }; kha_graphics2_truetype_StbTruetype.stbtt__run_charstring = function(info,glyph_index,c) { var in_header = true; var maskbits = 0; var subr_stack_height = 0; var sp = 0; var v; var i; var b0; var has_subrs = false; var clear_stack; var _g = []; _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); _g.push(0); var s = _g; var _g = []; _g.push(new kha_graphics2_truetype_Stbtt_$_$buf()); _g.push(new kha_graphics2_truetype_Stbtt_$_$buf()); _g.push(new kha_graphics2_truetype_Stbtt_$_$buf()); _g.push(new kha_graphics2_truetype_Stbtt_$_$buf()); _g.push(new kha_graphics2_truetype_Stbtt_$_$buf()); _g.push(new kha_graphics2_truetype_Stbtt_$_$buf()); _g.push(new kha_graphics2_truetype_Stbtt_$_$buf()); _g.push(new kha_graphics2_truetype_Stbtt_$_$buf()); _g.push(new kha_graphics2_truetype_Stbtt_$_$buf()); _g.push(new kha_graphics2_truetype_Stbtt_$_$buf()); var subr_stack = _g; var subrs = info.subrs; var b; var f; var b1 = info.charstrings; if(0 > b1.data.get_length()) { throw haxe_Exception.thrown("Error"); } b1.cursor = 0 > b1.data.get_length() ? b1.data.get_length() : 0; var v1 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i1 = _g++; var v2; if(b1.cursor >= b1.data.get_length()) { v2 = 0; } else { var pos = b1.cursor++; if(pos == null) { pos = 0; } v2 = b1.data.readU8(pos); } v1 = v1 << 8 | v2; } var count = v1; var offsize; if(b1.cursor >= b1.data.get_length()) { offsize = 0; } else { var pos = b1.cursor++; if(pos == null) { pos = 0; } offsize = b1.data.readU8(pos); } if(!(glyph_index >= 0 && glyph_index < count)) { throw haxe_Exception.thrown("Error"); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o = b1.cursor + glyph_index * offsize; if(o > b1.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b1.cursor = o > b1.data.get_length() || o < 0 ? b1.data.get_length() : o; var v1 = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i1 = _g++; var v2; if(b1.cursor >= b1.data.get_length()) { v2 = 0; } else { var pos = b1.cursor++; if(pos == null) { pos = 0; } v2 = b1.data.readU8(pos); } v1 = v1 << 8 | v2; } var start = v1; var v1 = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g = 0; var _g1 = offsize; while(_g < _g1) { var i1 = _g++; var v2; if(b1.cursor >= b1.data.get_length()) { v2 = 0; } else { var pos = b1.cursor++; if(pos == null) { pos = 0; } v2 = b1.data.readU8(pos); } v1 = v1 << 8 | v2; } var end = v1; var o = 2 + (count + 1) * offsize + start; var s1 = end - start; var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; var r1 = r; if(o < 0 || s1 < 0 || o > b1.data.get_length() || s1 > b1.data.get_length() - o) { b = r1; } else { r1.data = b1.data.sub(o,s1); b = r1; } while(b.cursor < b.data.get_length()) { i = 0; clear_stack = true; if(b.cursor >= b.data.get_length()) { b0 = 0; } else { var pos = b.cursor++; if(pos == null) { pos = 0; } b0 = b.data.readU8(pos); } switch(b0) { case 1:case 3:case 18:case 23: maskbits += sp / 2 | 0; break; case 4: in_header = false; if(sp < 1) { return false; } if(c.first_x != c.x || c.first_y != c.y) { var x = c.first_x | 0; var y = c.first_y | 0; if(c.bounds) { if(x > c.max_x || !c.started) { c.max_x = x; } if(y > c.max_y || !c.started) { c.max_y = y; } if(x < c.min_x || !c.started) { c.min_x = x; } if(y < c.min_y || !c.started) { c.min_y = y; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x,y,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; } c.first_x = c.x = c.x; c.first_y = c.y = c.y + s[sp - 1]; var x1 = c.x | 0; var y1 = c.y | 0; if(c.bounds) { if(x1 > c.max_x || !c.started) { c.max_x = x1; } if(y1 > c.max_y || !c.started) { c.max_y = y1; } if(x1 < c.min_x || !c.started) { c.min_x = x1; } if(y1 < c.min_y || !c.started) { c.min_y = y1; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],1,x1,y1,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; break; case 5: if(sp < 2) { return false; } while(i + 1 < sp) { c.x += s[i]; c.y += s[i + 1]; var x2 = c.x | 0; var y2 = c.y | 0; if(c.bounds) { if(x2 > c.max_x || !c.started) { c.max_x = x2; } if(y2 > c.max_y || !c.started) { c.max_y = y2; } if(x2 < c.min_x || !c.started) { c.min_x = x2; } if(y2 < c.min_y || !c.started) { c.min_y = y2; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x2,y2,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; i += 2; } break; case 6: if(sp < 1) { return false; } while(i < sp) { c.x += s[i]; c.y += 0; var x3 = c.x | 0; var y3 = c.y | 0; if(c.bounds) { if(x3 > c.max_x || !c.started) { c.max_x = x3; } if(y3 > c.max_y || !c.started) { c.max_y = y3; } if(x3 < c.min_x || !c.started) { c.min_x = x3; } if(y3 < c.min_y || !c.started) { c.min_y = y3; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x3,y3,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; ++i; if(i >= sp) { break; } c.x += 0; c.y += s[i]; var x4 = c.x | 0; var y4 = c.y | 0; if(c.bounds) { if(x4 > c.max_x || !c.started) { c.max_x = x4; } if(y4 > c.max_y || !c.started) { c.max_y = y4; } if(x4 < c.min_x || !c.started) { c.min_x = x4; } if(y4 < c.min_y || !c.started) { c.min_y = y4; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x4,y4,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; ++i; } break; case 7: if(sp < 1) { return false; } while(i < sp) { c.x += 0; c.y += s[i]; var x5 = c.x | 0; var y5 = c.y | 0; if(c.bounds) { if(x5 > c.max_x || !c.started) { c.max_x = x5; } if(y5 > c.max_y || !c.started) { c.max_y = y5; } if(x5 < c.min_x || !c.started) { c.min_x = x5; } if(y5 < c.min_y || !c.started) { c.min_y = y5; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x5,y5,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; ++i; if(i >= sp) { break; } c.x += s[i]; c.y += 0; var x6 = c.x | 0; var y6 = c.y | 0; if(c.bounds) { if(x6 > c.max_x || !c.started) { c.max_x = x6; } if(y6 > c.max_y || !c.started) { c.max_y = y6; } if(x6 < c.min_x || !c.started) { c.min_x = x6; } if(y6 < c.min_y || !c.started) { c.min_y = y6; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x6,y6,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; ++i; } break; case 8: if(sp < 6) { return false; } while(i + 5 < sp) { var cx1 = c.x + s[i]; var cy1 = c.y + s[i + 1]; var cx2 = cx1 + s[i + 2]; var cy2 = cy1 + s[i + 3]; c.x = cx2 + s[i + 4]; c.y = cy2 + s[i + 5]; var x7 = c.x | 0; var y7 = c.y | 0; var cx = cx1 | 0; var cy = cy1 | 0; var cx11 = cx2 | 0; var cy11 = cy2 | 0; if(c.bounds) { if(x7 > c.max_x || !c.started) { c.max_x = x7; } if(y7 > c.max_y || !c.started) { c.max_y = y7; } if(x7 < c.min_x || !c.started) { c.min_x = x7; } if(y7 < c.min_y || !c.started) { c.min_y = y7; } c.started = true; if(cx > c.max_x || !c.started) { c.max_x = cx; } if(cy > c.max_y || !c.started) { c.max_y = cy; } if(cx < c.min_x || !c.started) { c.min_x = cx; } if(cy < c.min_y || !c.started) { c.min_y = cy; } c.started = true; if(cx11 > c.max_x || !c.started) { c.max_x = cx11; } if(cy11 > c.max_y || !c.started) { c.max_y = cy11; } if(cx11 < c.min_x || !c.started) { c.min_x = cx11; } if(cy11 < c.min_y || !c.started) { c.min_y = cy11; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x7,y7,cx,cy); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx11 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy11 , Int); } c.num_vertices++; i += 6; } break; case 11: if(subr_stack_height <= 0) { return false; } b = subr_stack[--subr_stack_height]; clear_stack = false; break; case 12: var dx1; var dx2; var dx3; var dx4; var dx5; var dx6; var dy1; var dy2; var dy3; var dy4; var dy5; var dy6; var dx; var dy; var b1; if(b.cursor >= b.data.get_length()) { b1 = 0; } else { var pos1 = b.cursor++; if(pos1 == null) { pos1 = 0; } b1 = b.data.readU8(pos1); } switch(b1) { case 34: if(sp < 7) { return false; } dx1 = s[0]; dx2 = s[1]; dy2 = s[2]; dx3 = s[3]; dx4 = s[4]; dx5 = s[5]; dx6 = s[6]; var cx12 = c.x + dx1; var cy12 = c.y; var cx21 = cx12 + dx2; var cy21 = cy12 + dy2; c.x = cx21 + dx3; c.y = cy21; var x8 = c.x | 0; var y8 = c.y | 0; var cx3 = cx12 | 0; var cy3 = cy12 | 0; var cx13 = cx21 | 0; var cy13 = cy21 | 0; if(c.bounds) { if(x8 > c.max_x || !c.started) { c.max_x = x8; } if(y8 > c.max_y || !c.started) { c.max_y = y8; } if(x8 < c.min_x || !c.started) { c.min_x = x8; } if(y8 < c.min_y || !c.started) { c.min_y = y8; } c.started = true; if(cx3 > c.max_x || !c.started) { c.max_x = cx3; } if(cy3 > c.max_y || !c.started) { c.max_y = cy3; } if(cx3 < c.min_x || !c.started) { c.min_x = cx3; } if(cy3 < c.min_y || !c.started) { c.min_y = cy3; } c.started = true; if(cx13 > c.max_x || !c.started) { c.max_x = cx13; } if(cy13 > c.max_y || !c.started) { c.max_y = cy13; } if(cx13 < c.min_x || !c.started) { c.min_x = cx13; } if(cy13 < c.min_y || !c.started) { c.min_y = cy13; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x8,y8,cx3,cy3); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx13 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy13 , Int); } c.num_vertices++; var cx14 = c.x + dx4; var cy14 = c.y; var cx22 = cx14 + dx5; var cy22 = cy14 + -dy2; c.x = cx22 + dx6; c.y = cy22; var x9 = c.x | 0; var y9 = c.y | 0; var cx4 = cx14 | 0; var cy4 = cy14 | 0; var cx15 = cx22 | 0; var cy15 = cy22 | 0; if(c.bounds) { if(x9 > c.max_x || !c.started) { c.max_x = x9; } if(y9 > c.max_y || !c.started) { c.max_y = y9; } if(x9 < c.min_x || !c.started) { c.min_x = x9; } if(y9 < c.min_y || !c.started) { c.min_y = y9; } c.started = true; if(cx4 > c.max_x || !c.started) { c.max_x = cx4; } if(cy4 > c.max_y || !c.started) { c.max_y = cy4; } if(cx4 < c.min_x || !c.started) { c.min_x = cx4; } if(cy4 < c.min_y || !c.started) { c.min_y = cy4; } c.started = true; if(cx15 > c.max_x || !c.started) { c.max_x = cx15; } if(cy15 > c.max_y || !c.started) { c.max_y = cy15; } if(cx15 < c.min_x || !c.started) { c.min_x = cx15; } if(cy15 < c.min_y || !c.started) { c.min_y = cy15; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x9,y9,cx4,cy4); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx15 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy15 , Int); } c.num_vertices++; break; case 35: if(sp < 13) { return false; } dx1 = s[0]; dy1 = s[1]; dx2 = s[2]; dy2 = s[3]; dx3 = s[4]; dy3 = s[5]; dx4 = s[6]; dy4 = s[7]; dx5 = s[8]; dy5 = s[9]; dx6 = s[10]; dy6 = s[11]; var cx16 = c.x + dx1; var cy16 = c.y + dy1; var cx23 = cx16 + dx2; var cy23 = cy16 + dy2; c.x = cx23 + dx3; c.y = cy23 + dy3; var x10 = c.x | 0; var y10 = c.y | 0; var cx5 = cx16 | 0; var cy5 = cy16 | 0; var cx17 = cx23 | 0; var cy17 = cy23 | 0; if(c.bounds) { if(x10 > c.max_x || !c.started) { c.max_x = x10; } if(y10 > c.max_y || !c.started) { c.max_y = y10; } if(x10 < c.min_x || !c.started) { c.min_x = x10; } if(y10 < c.min_y || !c.started) { c.min_y = y10; } c.started = true; if(cx5 > c.max_x || !c.started) { c.max_x = cx5; } if(cy5 > c.max_y || !c.started) { c.max_y = cy5; } if(cx5 < c.min_x || !c.started) { c.min_x = cx5; } if(cy5 < c.min_y || !c.started) { c.min_y = cy5; } c.started = true; if(cx17 > c.max_x || !c.started) { c.max_x = cx17; } if(cy17 > c.max_y || !c.started) { c.max_y = cy17; } if(cx17 < c.min_x || !c.started) { c.min_x = cx17; } if(cy17 < c.min_y || !c.started) { c.min_y = cy17; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x10,y10,cx5,cy5); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx17 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy17 , Int); } c.num_vertices++; var cx18 = c.x + dx4; var cy18 = c.y + dy4; var cx24 = cx18 + dx5; var cy24 = cy18 + dy5; c.x = cx24 + dx6; c.y = cy24 + dy6; var x11 = c.x | 0; var y11 = c.y | 0; var cx6 = cx18 | 0; var cy6 = cy18 | 0; var cx19 = cx24 | 0; var cy19 = cy24 | 0; if(c.bounds) { if(x11 > c.max_x || !c.started) { c.max_x = x11; } if(y11 > c.max_y || !c.started) { c.max_y = y11; } if(x11 < c.min_x || !c.started) { c.min_x = x11; } if(y11 < c.min_y || !c.started) { c.min_y = y11; } c.started = true; if(cx6 > c.max_x || !c.started) { c.max_x = cx6; } if(cy6 > c.max_y || !c.started) { c.max_y = cy6; } if(cx6 < c.min_x || !c.started) { c.min_x = cx6; } if(cy6 < c.min_y || !c.started) { c.min_y = cy6; } c.started = true; if(cx19 > c.max_x || !c.started) { c.max_x = cx19; } if(cy19 > c.max_y || !c.started) { c.max_y = cy19; } if(cx19 < c.min_x || !c.started) { c.min_x = cx19; } if(cy19 < c.min_y || !c.started) { c.min_y = cy19; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x11,y11,cx6,cy6); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx19 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy19 , Int); } c.num_vertices++; break; case 36: if(sp < 9) { return false; } dx1 = s[0]; dy1 = s[1]; dx2 = s[2]; dy2 = s[3]; dx3 = s[4]; dx4 = s[5]; dx5 = s[6]; dy5 = s[7]; dx6 = s[8]; var cx110 = c.x + dx1; var cy110 = c.y + dy1; var cx25 = cx110 + dx2; var cy25 = cy110 + dy2; c.x = cx25 + dx3; c.y = cy25; var x12 = c.x | 0; var y12 = c.y | 0; var cx7 = cx110 | 0; var cy7 = cy110 | 0; var cx111 = cx25 | 0; var cy111 = cy25 | 0; if(c.bounds) { if(x12 > c.max_x || !c.started) { c.max_x = x12; } if(y12 > c.max_y || !c.started) { c.max_y = y12; } if(x12 < c.min_x || !c.started) { c.min_x = x12; } if(y12 < c.min_y || !c.started) { c.min_y = y12; } c.started = true; if(cx7 > c.max_x || !c.started) { c.max_x = cx7; } if(cy7 > c.max_y || !c.started) { c.max_y = cy7; } if(cx7 < c.min_x || !c.started) { c.min_x = cx7; } if(cy7 < c.min_y || !c.started) { c.min_y = cy7; } c.started = true; if(cx111 > c.max_x || !c.started) { c.max_x = cx111; } if(cy111 > c.max_y || !c.started) { c.max_y = cy111; } if(cx111 < c.min_x || !c.started) { c.min_x = cx111; } if(cy111 < c.min_y || !c.started) { c.min_y = cy111; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x12,y12,cx7,cy7); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx111 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy111 , Int); } c.num_vertices++; var cx112 = c.x + dx4; var cy112 = c.y; var cx26 = cx112 + dx5; var cy26 = cy112 + dy5; c.x = cx26 + dx6; c.y = cy26 + -(dy1 + dy2 + dy5); var x13 = c.x | 0; var y13 = c.y | 0; var cx8 = cx112 | 0; var cy8 = cy112 | 0; var cx113 = cx26 | 0; var cy113 = cy26 | 0; if(c.bounds) { if(x13 > c.max_x || !c.started) { c.max_x = x13; } if(y13 > c.max_y || !c.started) { c.max_y = y13; } if(x13 < c.min_x || !c.started) { c.min_x = x13; } if(y13 < c.min_y || !c.started) { c.min_y = y13; } c.started = true; if(cx8 > c.max_x || !c.started) { c.max_x = cx8; } if(cy8 > c.max_y || !c.started) { c.max_y = cy8; } if(cx8 < c.min_x || !c.started) { c.min_x = cx8; } if(cy8 < c.min_y || !c.started) { c.min_y = cy8; } c.started = true; if(cx113 > c.max_x || !c.started) { c.max_x = cx113; } if(cy113 > c.max_y || !c.started) { c.max_y = cy113; } if(cx113 < c.min_x || !c.started) { c.min_x = cx113; } if(cy113 < c.min_y || !c.started) { c.min_y = cy113; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x13,y13,cx8,cy8); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx113 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy113 , Int); } c.num_vertices++; break; case 37: if(sp < 11) { return false; } dx1 = s[0]; dy1 = s[1]; dx2 = s[2]; dy2 = s[3]; dx3 = s[4]; dy3 = s[5]; dx4 = s[6]; dy4 = s[7]; dx5 = s[8]; dy5 = s[9]; dy6 = s[10]; dx6 = dy6; dx = dx1 + dx2 + dx3 + dx4 + dx5; dy = dy1 + dy2 + dy3 + dy4 + dy5; if(Math.abs(dx) > Math.abs(dy)) { dy6 = -dy; } else { dx6 = -dx; } var cx114 = c.x + dx1; var cy114 = c.y + dy1; var cx27 = cx114 + dx2; var cy27 = cy114 + dy2; c.x = cx27 + dx3; c.y = cy27 + dy3; var x14 = c.x | 0; var y14 = c.y | 0; var cx9 = cx114 | 0; var cy9 = cy114 | 0; var cx115 = cx27 | 0; var cy115 = cy27 | 0; if(c.bounds) { if(x14 > c.max_x || !c.started) { c.max_x = x14; } if(y14 > c.max_y || !c.started) { c.max_y = y14; } if(x14 < c.min_x || !c.started) { c.min_x = x14; } if(y14 < c.min_y || !c.started) { c.min_y = y14; } c.started = true; if(cx9 > c.max_x || !c.started) { c.max_x = cx9; } if(cy9 > c.max_y || !c.started) { c.max_y = cy9; } if(cx9 < c.min_x || !c.started) { c.min_x = cx9; } if(cy9 < c.min_y || !c.started) { c.min_y = cy9; } c.started = true; if(cx115 > c.max_x || !c.started) { c.max_x = cx115; } if(cy115 > c.max_y || !c.started) { c.max_y = cy115; } if(cx115 < c.min_x || !c.started) { c.min_x = cx115; } if(cy115 < c.min_y || !c.started) { c.min_y = cy115; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x14,y14,cx9,cy9); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx115 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy115 , Int); } c.num_vertices++; var cx116 = c.x + dx4; var cy116 = c.y + dy4; var cx28 = cx116 + dx5; var cy28 = cy116 + dy5; c.x = cx28 + dx6; c.y = cy28 + dy6; var x15 = c.x | 0; var y15 = c.y | 0; var cx10 = cx116 | 0; var cy10 = cy116 | 0; var cx117 = cx28 | 0; var cy117 = cy28 | 0; if(c.bounds) { if(x15 > c.max_x || !c.started) { c.max_x = x15; } if(y15 > c.max_y || !c.started) { c.max_y = y15; } if(x15 < c.min_x || !c.started) { c.min_x = x15; } if(y15 < c.min_y || !c.started) { c.min_y = y15; } c.started = true; if(cx10 > c.max_x || !c.started) { c.max_x = cx10; } if(cy10 > c.max_y || !c.started) { c.max_y = cy10; } if(cx10 < c.min_x || !c.started) { c.min_x = cx10; } if(cy10 < c.min_y || !c.started) { c.min_y = cy10; } c.started = true; if(cx117 > c.max_x || !c.started) { c.max_x = cx117; } if(cy117 > c.max_y || !c.started) { c.max_y = cy117; } if(cx117 < c.min_x || !c.started) { c.min_x = cx117; } if(cy117 < c.min_y || !c.started) { c.min_y = cy117; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x15,y15,cx10,cy10); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx117 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy117 , Int); } c.num_vertices++; break; default: return false; } break; case 14: if(c.first_x != c.x || c.first_y != c.y) { var x16 = c.first_x | 0; var y16 = c.first_y | 0; if(c.bounds) { if(x16 > c.max_x || !c.started) { c.max_x = x16; } if(y16 > c.max_y || !c.started) { c.max_y = y16; } if(x16 < c.min_x || !c.started) { c.min_x = x16; } if(y16 < c.min_y || !c.started) { c.min_y = y16; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x16,y16,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; } return true; case 19:case 20: if(in_header) { maskbits += sp / 2 | 0; } in_header = false; var o = b.cursor + ((maskbits + 7) / 8 | 0); if(o > b.data.get_length() || o < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o > b.data.get_length() || o < 0 ? b.data.get_length() : o; break; case 21: in_header = false; if(sp < 2) { return false; } if(c.first_x != c.x || c.first_y != c.y) { var x17 = c.first_x | 0; var y17 = c.first_y | 0; if(c.bounds) { if(x17 > c.max_x || !c.started) { c.max_x = x17; } if(y17 > c.max_y || !c.started) { c.max_y = y17; } if(x17 < c.min_x || !c.started) { c.min_x = x17; } if(y17 < c.min_y || !c.started) { c.min_y = y17; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x17,y17,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; } c.first_x = c.x = c.x + s[sp - 2]; c.first_y = c.y = c.y + s[sp - 1]; var x18 = c.x | 0; var y18 = c.y | 0; if(c.bounds) { if(x18 > c.max_x || !c.started) { c.max_x = x18; } if(y18 > c.max_y || !c.started) { c.max_y = y18; } if(x18 < c.min_x || !c.started) { c.min_x = x18; } if(y18 < c.min_y || !c.started) { c.min_y = y18; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],1,x18,y18,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; break; case 22: in_header = false; if(sp < 1) { return false; } if(c.first_x != c.x || c.first_y != c.y) { var x19 = c.first_x | 0; var y19 = c.first_y | 0; if(c.bounds) { if(x19 > c.max_x || !c.started) { c.max_x = x19; } if(y19 > c.max_y || !c.started) { c.max_y = y19; } if(x19 < c.min_x || !c.started) { c.min_x = x19; } if(y19 < c.min_y || !c.started) { c.min_y = y19; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x19,y19,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; } c.first_x = c.x = c.x + s[sp - 1]; c.first_y = c.y = c.y; var x20 = c.x | 0; var y20 = c.y | 0; if(c.bounds) { if(x20 > c.max_x || !c.started) { c.max_x = x20; } if(y20 > c.max_y || !c.started) { c.max_y = y20; } if(x20 < c.min_x || !c.started) { c.min_x = x20; } if(y20 < c.min_y || !c.started) { c.min_y = y20; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],1,x20,y20,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; break; case 24: if(sp < 8) { return false; } while(i + 5 < sp - 2) { var cx118 = c.x + s[i]; var cy118 = c.y + s[i + 1]; var cx29 = cx118 + s[i + 2]; var cy29 = cy118 + s[i + 3]; c.x = cx29 + s[i + 4]; c.y = cy29 + s[i + 5]; var x21 = c.x | 0; var y21 = c.y | 0; var cx20 = cx118 | 0; var cy20 = cy118 | 0; var cx119 = cx29 | 0; var cy119 = cy29 | 0; if(c.bounds) { if(x21 > c.max_x || !c.started) { c.max_x = x21; } if(y21 > c.max_y || !c.started) { c.max_y = y21; } if(x21 < c.min_x || !c.started) { c.min_x = x21; } if(y21 < c.min_y || !c.started) { c.min_y = y21; } c.started = true; if(cx20 > c.max_x || !c.started) { c.max_x = cx20; } if(cy20 > c.max_y || !c.started) { c.max_y = cy20; } if(cx20 < c.min_x || !c.started) { c.min_x = cx20; } if(cy20 < c.min_y || !c.started) { c.min_y = cy20; } c.started = true; if(cx119 > c.max_x || !c.started) { c.max_x = cx119; } if(cy119 > c.max_y || !c.started) { c.max_y = cy119; } if(cx119 < c.min_x || !c.started) { c.min_x = cx119; } if(cy119 < c.min_y || !c.started) { c.min_y = cy119; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x21,y21,cx20,cy20); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx119 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy119 , Int); } c.num_vertices++; i += 6; } if(i + 1 >= sp) { return false; } c.x += s[i]; c.y += s[i + 1]; var x22 = c.x | 0; var y22 = c.y | 0; if(c.bounds) { if(x22 > c.max_x || !c.started) { c.max_x = x22; } if(y22 > c.max_y || !c.started) { c.max_y = y22; } if(x22 < c.min_x || !c.started) { c.min_x = x22; } if(y22 < c.min_y || !c.started) { c.min_y = y22; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x22,y22,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; break; case 25: if(sp < 8) { return false; } while(i + 1 < sp - 6) { c.x += s[i]; c.y += s[i + 1]; var x23 = c.x | 0; var y23 = c.y | 0; if(c.bounds) { if(x23 > c.max_x || !c.started) { c.max_x = x23; } if(y23 > c.max_y || !c.started) { c.max_y = y23; } if(x23 < c.min_x || !c.started) { c.min_x = x23; } if(y23 < c.min_y || !c.started) { c.min_y = y23; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],2,x23,y23,0,0); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(0 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(0 , Int); } c.num_vertices++; i += 2; } if(i + 5 >= sp) { return false; } var cx120 = c.x + s[i]; var cy120 = c.y + s[i + 1]; var cx210 = cx120 + s[i + 2]; var cy210 = cy120 + s[i + 3]; c.x = cx210 + s[i + 4]; c.y = cy210 + s[i + 5]; var x24 = c.x | 0; var y24 = c.y | 0; var cx30 = cx120 | 0; var cy30 = cy120 | 0; var cx121 = cx210 | 0; var cy121 = cy210 | 0; if(c.bounds) { if(x24 > c.max_x || !c.started) { c.max_x = x24; } if(y24 > c.max_y || !c.started) { c.max_y = y24; } if(x24 < c.min_x || !c.started) { c.min_x = x24; } if(y24 < c.min_y || !c.started) { c.min_y = y24; } c.started = true; if(cx30 > c.max_x || !c.started) { c.max_x = cx30; } if(cy30 > c.max_y || !c.started) { c.max_y = cy30; } if(cx30 < c.min_x || !c.started) { c.min_x = cx30; } if(cy30 < c.min_y || !c.started) { c.min_y = cy30; } c.started = true; if(cx121 > c.max_x || !c.started) { c.max_x = cx121; } if(cy121 > c.max_y || !c.started) { c.max_y = cy121; } if(cx121 < c.min_x || !c.started) { c.min_x = cx121; } if(cy121 < c.min_y || !c.started) { c.min_y = cy121; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x24,y24,cx30,cy30); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx121 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy121 , Int); } c.num_vertices++; break; case 26:case 27: if(sp < 4) { return false; } f = 0.0; if((sp & 1) != 0) { f = s[i]; ++i; } while(i + 3 < sp) { if(b0 == 27) { var cx122 = c.x + s[i]; var cy122 = c.y + f; var cx211 = cx122 + s[i + 1]; var cy211 = cy122 + s[i + 2]; c.x = cx211 + s[i + 3]; c.y = cy211; var x25 = c.x | 0; var y25 = c.y | 0; var cx31 = cx122 | 0; var cy31 = cy122 | 0; var cx123 = cx211 | 0; var cy123 = cy211 | 0; if(c.bounds) { if(x25 > c.max_x || !c.started) { c.max_x = x25; } if(y25 > c.max_y || !c.started) { c.max_y = y25; } if(x25 < c.min_x || !c.started) { c.min_x = x25; } if(y25 < c.min_y || !c.started) { c.min_y = y25; } c.started = true; if(cx31 > c.max_x || !c.started) { c.max_x = cx31; } if(cy31 > c.max_y || !c.started) { c.max_y = cy31; } if(cx31 < c.min_x || !c.started) { c.min_x = cx31; } if(cy31 < c.min_y || !c.started) { c.min_y = cy31; } c.started = true; if(cx123 > c.max_x || !c.started) { c.max_x = cx123; } if(cy123 > c.max_y || !c.started) { c.max_y = cy123; } if(cx123 < c.min_x || !c.started) { c.min_x = cx123; } if(cy123 < c.min_y || !c.started) { c.min_y = cy123; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x25,y25,cx31,cy31); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx123 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy123 , Int); } c.num_vertices++; } else { var cx124 = c.x + f; var cy124 = c.y + s[i]; var cx212 = cx124 + s[i + 1]; var cy212 = cy124 + s[i + 2]; c.x = cx212; c.y = cy212 + s[i + 3]; var x26 = c.x | 0; var y26 = c.y | 0; var cx32 = cx124 | 0; var cy32 = cy124 | 0; var cx125 = cx212 | 0; var cy125 = cy212 | 0; if(c.bounds) { if(x26 > c.max_x || !c.started) { c.max_x = x26; } if(y26 > c.max_y || !c.started) { c.max_y = y26; } if(x26 < c.min_x || !c.started) { c.min_x = x26; } if(y26 < c.min_y || !c.started) { c.min_y = y26; } c.started = true; if(cx32 > c.max_x || !c.started) { c.max_x = cx32; } if(cy32 > c.max_y || !c.started) { c.max_y = cy32; } if(cx32 < c.min_x || !c.started) { c.min_x = cx32; } if(cy32 < c.min_y || !c.started) { c.min_y = cy32; } c.started = true; if(cx125 > c.max_x || !c.started) { c.max_x = cx125; } if(cy125 > c.max_y || !c.started) { c.max_y = cy125; } if(cx125 < c.min_x || !c.started) { c.min_x = cx125; } if(cy125 < c.min_y || !c.started) { c.min_y = cy125; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x26,y26,cx32,cy32); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx125 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy125 , Int); } c.num_vertices++; } f = 0.0; i += 4; } break; case 10:case 29: if(b0 == 10) { if(!has_subrs) { if(info.fdselect.data.get_length() != 0) { var fdselect = info.fdselect; var nranges; var start; var end; var v1; var fmt; var fdselector = -1; var i1; if(0 > fdselect.data.get_length()) { throw haxe_Exception.thrown("Error"); } fdselect.cursor = 0 > fdselect.data.get_length() ? fdselect.data.get_length() : 0; if(fdselect.cursor >= fdselect.data.get_length()) { fmt = 0; } else { var pos2 = fdselect.cursor++; if(pos2 == null) { pos2 = 0; } fmt = fdselect.data.readU8(pos2); } if(fmt == 0) { var o1 = fdselect.cursor + glyph_index; if(o1 > fdselect.data.get_length() || o1 < 0) { throw haxe_Exception.thrown("Error"); } fdselect.cursor = o1 > fdselect.data.get_length() || o1 < 0 ? fdselect.data.get_length() : o1; if(fdselect.cursor >= fdselect.data.get_length()) { fdselector = 0; } else { var pos3 = fdselect.cursor++; if(pos3 == null) { pos3 = 0; } fdselector = fdselect.data.readU8(pos3); } } else if(fmt == 3) { var v2 = 0; var _g = 0; var _g1 = 2; while(_g < _g1) { var i2 = _g++; var v3; if(fdselect.cursor >= fdselect.data.get_length()) { v3 = 0; } else { var pos4 = fdselect.cursor++; if(pos4 == null) { pos4 = 0; } v3 = fdselect.data.readU8(pos4); } v2 = v2 << 8 | v3; } nranges = v2; var v4 = 0; var _g2 = 0; var _g3 = 2; while(_g2 < _g3) { var i3 = _g2++; var v5; if(fdselect.cursor >= fdselect.data.get_length()) { v5 = 0; } else { var pos5 = fdselect.cursor++; if(pos5 == null) { pos5 = 0; } v5 = fdselect.data.readU8(pos5); } v4 = v4 << 8 | v5; } start = v4; var _g4 = 0; var _g5 = nranges; while(_g4 < _g5) { var i4 = _g4++; if(fdselect.cursor >= fdselect.data.get_length()) { v1 = 0; } else { var pos6 = fdselect.cursor++; if(pos6 == null) { pos6 = 0; } v1 = fdselect.data.readU8(pos6); } var v6 = 0; var _g6 = 0; var _g7 = 2; while(_g6 < _g7) { var i5 = _g6++; var v7; if(fdselect.cursor >= fdselect.data.get_length()) { v7 = 0; } else { var pos7 = fdselect.cursor++; if(pos7 == null) { pos7 = 0; } v7 = fdselect.data.readU8(pos7); } v6 = v6 << 8 | v7; } end = v6; if(glyph_index >= start && glyph_index < end) { fdselector = v1; break; } start = end; } } if(fdselector == -1) { var r = new kha_graphics2_truetype_Stbtt_$_$buf(); r.data = null; r.cursor = 0; } var cff = info.cff; var b2 = info.fontdicts; if(0 > b2.data.get_length()) { throw haxe_Exception.thrown("Error"); } b2.cursor = 0 > b2.data.get_length() ? b2.data.get_length() : 0; var v8 = 0; var _g8 = 0; var _g9 = 2; while(_g8 < _g9) { var i6 = _g8++; var v9; if(b2.cursor >= b2.data.get_length()) { v9 = 0; } else { var pos8 = b2.cursor++; if(pos8 == null) { pos8 = 0; } v9 = b2.data.readU8(pos8); } v8 = v8 << 8 | v9; } var count = v8; var offsize; if(b2.cursor >= b2.data.get_length()) { offsize = 0; } else { var pos9 = b2.cursor++; if(pos9 == null) { pos9 = 0; } offsize = b2.data.readU8(pos9); } if(!(fdselector >= 0 && fdselector < count)) { throw haxe_Exception.thrown("Error"); } if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var o2 = b2.cursor + fdselector * offsize; if(o2 > b2.data.get_length() || o2 < 0) { throw haxe_Exception.thrown("Error"); } b2.cursor = o2 > b2.data.get_length() || o2 < 0 ? b2.data.get_length() : o2; var v10 = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g10 = 0; var _g11 = offsize; while(_g10 < _g11) { var i7 = _g10++; var v11; if(b2.cursor >= b2.data.get_length()) { v11 = 0; } else { var pos10 = b2.cursor++; if(pos10 == null) { pos10 = 0; } v11 = b2.data.readU8(pos10); } v10 = v10 << 8 | v11; } var start1 = v10; var v12 = 0; if(!(offsize >= 1 && offsize <= 4)) { throw haxe_Exception.thrown("Error"); } var _g12 = 0; var _g13 = offsize; while(_g12 < _g13) { var i8 = _g12++; var v13; if(b2.cursor >= b2.data.get_length()) { v13 = 0; } else { var pos11 = b2.cursor++; if(pos11 == null) { pos11 = 0; } v13 = b2.data.readU8(pos11); } v12 = v12 << 8 | v13; } var end1 = v12; var o3 = 2 + (count + 1) * offsize + start1; var s1 = end1 - start1; var r1 = new kha_graphics2_truetype_Stbtt_$_$buf(); r1.data = null; r1.cursor = 0; var r2 = r1; var fontdict; if(o3 < 0 || s1 < 0 || o3 > b2.data.get_length() || s1 > b2.data.get_length() - o3) { fontdict = r2; } else { r2.data = b2.data.sub(o3,s1); fontdict = r2; } var subrsoff = [0]; var private_loc = [0,0]; var i9 = 0; if(0 > fontdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } fontdict.cursor = 0 > fontdict.data.get_length() ? fontdict.data.get_length() : 0; var ret = null; while(fontdict.cursor < fontdict.data.get_length()) { var start2 = fontdict.cursor; var op; while(true) { var subrs1; if(fontdict.cursor >= fontdict.data.get_length()) { subrs1 = 0; } else { var pos12 = fontdict.cursor; if(pos12 == null) { pos12 = 0; } subrs1 = fontdict.data.readU8(pos12); } if(!(subrs1 >= 28)) { break; } var v14; var b01; if(fontdict.cursor >= fontdict.data.get_length()) { b01 = 0; } else { var pos13 = fontdict.cursor; if(pos13 == null) { pos13 = 0; } b01 = fontdict.data.readU8(pos13); } if(b01 < 28) { throw haxe_Exception.thrown("Error"); } if(b01 == 30) { var o4 = fontdict.cursor + 1; if(o4 > fontdict.data.get_length() || o4 < 0) { throw haxe_Exception.thrown("Error"); } fontdict.cursor = o4 > fontdict.data.get_length() || o4 < 0 ? fontdict.data.get_length() : o4; while(fontdict.cursor < fontdict.data.get_length()) { if(fontdict.cursor >= fontdict.data.get_length()) { v14 = 0; } else { var pos14 = fontdict.cursor++; if(pos14 == null) { pos14 = 0; } v14 = fontdict.data.readU8(pos14); } if((v14 & 15) == 15 || v14 >> 4 == 15) { break; } } } else { var b02; if(fontdict.cursor >= fontdict.data.get_length()) { b02 = 0; } else { var pos15 = fontdict.cursor++; if(pos15 == null) { pos15 = 0; } b02 = fontdict.data.readU8(pos15); } if(!(b02 >= 32 && b02 <= 246)) { if(b02 >= 247 && b02 <= 250) { if(fontdict.cursor < fontdict.data.get_length()) { var pos16 = fontdict.cursor++; if(pos16 == null) { pos16 = 0; } fontdict.data.readU8(pos16); } } else if(b02 >= 251 && b02 <= 254) { if(fontdict.cursor < fontdict.data.get_length()) { var pos17 = fontdict.cursor++; if(pos17 == null) { pos17 = 0; } fontdict.data.readU8(pos17); } } else if(b02 == 28) { var v15 = 0; var _g14 = 0; var _g15 = 2; while(_g14 < _g15) { var i10 = _g14++; var v16; if(fontdict.cursor >= fontdict.data.get_length()) { v16 = 0; } else { var pos18 = fontdict.cursor++; if(pos18 == null) { pos18 = 0; } v16 = fontdict.data.readU8(pos18); } v15 = v15 << 8 | v16; } } else if(b02 == 29) { var v17 = 0; var _g16 = 0; var _g17 = 4; while(_g16 < _g17) { var i11 = _g16++; var v18; if(fontdict.cursor >= fontdict.data.get_length()) { v18 = 0; } else { var pos19 = fontdict.cursor++; if(pos19 == null) { pos19 = 0; } v18 = fontdict.data.readU8(pos19); } v17 = v17 << 8 | v18; } } else { throw haxe_Exception.thrown("Error"); } } } } var end2 = fontdict.cursor; if(fontdict.cursor >= fontdict.data.get_length()) { op = 0; } else { var pos20 = fontdict.cursor++; if(pos20 == null) { pos20 = 0; } op = fontdict.data.readU8(pos20); } if(op == 12) { var op1; if(fontdict.cursor >= fontdict.data.get_length()) { op1 = 0; } else { var pos21 = fontdict.cursor++; if(pos21 == null) { pos21 = 0; } op1 = fontdict.data.readU8(pos21); } op = op1 | 256; } if(op == 18) { var s2 = end2 - start2; var r3 = new kha_graphics2_truetype_Stbtt_$_$buf(); r3.data = null; r3.cursor = 0; var r4 = r3; if(start2 < 0 || s2 < 0 || start2 > fontdict.data.get_length() || s2 > fontdict.data.get_length() - start2) { ret = r4; } else { r4.data = fontdict.data.sub(start2,s2); ret = r4; } break; } } var operands; if(ret != null) { operands = ret; } else { var r5 = new kha_graphics2_truetype_Stbtt_$_$buf(); r5.data = null; r5.cursor = 0; var r6 = r5; if(0 > fontdict.data.get_length() || 0 > fontdict.data.get_length()) { operands = r6; } else { r6.data = fontdict.data.sub(0,0); operands = r6; } } while(i9 < 2 && operands.cursor < operands.data.get_length()) { var b03; if(operands.cursor >= operands.data.get_length()) { b03 = 0; } else { var pos22 = operands.cursor++; if(pos22 == null) { pos22 = 0; } b03 = operands.data.readU8(pos22); } var subrs2; if(b03 >= 32 && b03 <= 246) { subrs2 = b03 - 139; } else if(b03 >= 247 && b03 <= 250) { var subrs3; if(operands.cursor >= operands.data.get_length()) { subrs3 = 0; } else { var pos23 = operands.cursor++; if(pos23 == null) { pos23 = 0; } subrs3 = operands.data.readU8(pos23); } subrs2 = (b03 - 247) * 256 + subrs3 + 108; } else if(b03 >= 251 && b03 <= 254) { var subrs4; if(operands.cursor >= operands.data.get_length()) { subrs4 = 0; } else { var pos24 = operands.cursor++; if(pos24 == null) { pos24 = 0; } subrs4 = operands.data.readU8(pos24); } subrs2 = -(b03 - 251) * 256 - subrs4 - 108; } else if(b03 == 28) { var v19 = 0; var _g18 = 0; var _g19 = 2; while(_g18 < _g19) { var i12 = _g18++; var v20; if(operands.cursor >= operands.data.get_length()) { v20 = 0; } else { var pos25 = operands.cursor++; if(pos25 == null) { pos25 = 0; } v20 = operands.data.readU8(pos25); } v19 = v19 << 8 | v20; } subrs2 = v19; } else if(b03 == 29) { var v21 = 0; var _g20 = 0; var _g21 = 4; while(_g20 < _g21) { var i13 = _g20++; var v22; if(operands.cursor >= operands.data.get_length()) { v22 = 0; } else { var pos26 = operands.cursor++; if(pos26 == null) { pos26 = 0; } v22 = operands.data.readU8(pos26); } v21 = v21 << 8 | v22; } subrs2 = v21; } else { throw haxe_Exception.thrown("Error"); } private_loc[i9] = subrs2; ++i9; } if(private_loc[1] == 0 || private_loc[0] == 0) { var r7 = new kha_graphics2_truetype_Stbtt_$_$buf(); r7.data = null; r7.cursor = 0; subrs = r7; } else { var o5 = private_loc[1]; var s3 = private_loc[0]; var r8 = new kha_graphics2_truetype_Stbtt_$_$buf(); r8.data = null; r8.cursor = 0; var r9 = r8; var pdict; if(o5 < 0 || s3 < 0 || o5 > cff.data.get_length() || s3 > cff.data.get_length() - o5) { pdict = r9; } else { r9.data = cff.data.sub(o5,s3); pdict = r9; } var i14 = 0; if(0 > pdict.data.get_length()) { throw haxe_Exception.thrown("Error"); } pdict.cursor = 0 > pdict.data.get_length() ? pdict.data.get_length() : 0; var ret1 = null; while(pdict.cursor < pdict.data.get_length()) { var start3 = pdict.cursor; var op2; while(true) { var subrs5; if(pdict.cursor >= pdict.data.get_length()) { subrs5 = 0; } else { var pos27 = pdict.cursor; if(pos27 == null) { pos27 = 0; } subrs5 = pdict.data.readU8(pos27); } if(!(subrs5 >= 28)) { break; } var v23; var b04; if(pdict.cursor >= pdict.data.get_length()) { b04 = 0; } else { var pos28 = pdict.cursor; if(pos28 == null) { pos28 = 0; } b04 = pdict.data.readU8(pos28); } if(b04 < 28) { throw haxe_Exception.thrown("Error"); } if(b04 == 30) { var o6 = pdict.cursor + 1; if(o6 > pdict.data.get_length() || o6 < 0) { throw haxe_Exception.thrown("Error"); } pdict.cursor = o6 > pdict.data.get_length() || o6 < 0 ? pdict.data.get_length() : o6; while(pdict.cursor < pdict.data.get_length()) { if(pdict.cursor >= pdict.data.get_length()) { v23 = 0; } else { var pos29 = pdict.cursor++; if(pos29 == null) { pos29 = 0; } v23 = pdict.data.readU8(pos29); } if((v23 & 15) == 15 || v23 >> 4 == 15) { break; } } } else { var b05; if(pdict.cursor >= pdict.data.get_length()) { b05 = 0; } else { var pos30 = pdict.cursor++; if(pos30 == null) { pos30 = 0; } b05 = pdict.data.readU8(pos30); } if(!(b05 >= 32 && b05 <= 246)) { if(b05 >= 247 && b05 <= 250) { if(pdict.cursor < pdict.data.get_length()) { var pos31 = pdict.cursor++; if(pos31 == null) { pos31 = 0; } pdict.data.readU8(pos31); } } else if(b05 >= 251 && b05 <= 254) { if(pdict.cursor < pdict.data.get_length()) { var pos32 = pdict.cursor++; if(pos32 == null) { pos32 = 0; } pdict.data.readU8(pos32); } } else if(b05 == 28) { var v24 = 0; var _g22 = 0; var _g23 = 2; while(_g22 < _g23) { var i15 = _g22++; var v25; if(pdict.cursor >= pdict.data.get_length()) { v25 = 0; } else { var pos33 = pdict.cursor++; if(pos33 == null) { pos33 = 0; } v25 = pdict.data.readU8(pos33); } v24 = v24 << 8 | v25; } } else if(b05 == 29) { var v26 = 0; var _g24 = 0; var _g25 = 4; while(_g24 < _g25) { var i16 = _g24++; var v27; if(pdict.cursor >= pdict.data.get_length()) { v27 = 0; } else { var pos34 = pdict.cursor++; if(pos34 == null) { pos34 = 0; } v27 = pdict.data.readU8(pos34); } v26 = v26 << 8 | v27; } } else { throw haxe_Exception.thrown("Error"); } } } } var end3 = pdict.cursor; if(pdict.cursor >= pdict.data.get_length()) { op2 = 0; } else { var pos35 = pdict.cursor++; if(pos35 == null) { pos35 = 0; } op2 = pdict.data.readU8(pos35); } if(op2 == 12) { var op3; if(pdict.cursor >= pdict.data.get_length()) { op3 = 0; } else { var pos36 = pdict.cursor++; if(pos36 == null) { pos36 = 0; } op3 = pdict.data.readU8(pos36); } op2 = op3 | 256; } if(op2 == 19) { var s4 = end3 - start3; var r10 = new kha_graphics2_truetype_Stbtt_$_$buf(); r10.data = null; r10.cursor = 0; var r11 = r10; if(start3 < 0 || s4 < 0 || start3 > pdict.data.get_length() || s4 > pdict.data.get_length() - start3) { ret1 = r11; } else { r11.data = pdict.data.sub(start3,s4); ret1 = r11; } break; } } var operands1; if(ret1 != null) { operands1 = ret1; } else { var r12 = new kha_graphics2_truetype_Stbtt_$_$buf(); r12.data = null; r12.cursor = 0; var r13 = r12; if(0 > pdict.data.get_length() || 0 > pdict.data.get_length()) { operands1 = r13; } else { r13.data = pdict.data.sub(0,0); operands1 = r13; } } while(i14 < 1 && operands1.cursor < operands1.data.get_length()) { var b06; if(operands1.cursor >= operands1.data.get_length()) { b06 = 0; } else { var pos37 = operands1.cursor++; if(pos37 == null) { pos37 = 0; } b06 = operands1.data.readU8(pos37); } var subrs6; if(b06 >= 32 && b06 <= 246) { subrs6 = b06 - 139; } else if(b06 >= 247 && b06 <= 250) { var subrs7; if(operands1.cursor >= operands1.data.get_length()) { subrs7 = 0; } else { var pos38 = operands1.cursor++; if(pos38 == null) { pos38 = 0; } subrs7 = operands1.data.readU8(pos38); } subrs6 = (b06 - 247) * 256 + subrs7 + 108; } else if(b06 >= 251 && b06 <= 254) { var subrs8; if(operands1.cursor >= operands1.data.get_length()) { subrs8 = 0; } else { var pos39 = operands1.cursor++; if(pos39 == null) { pos39 = 0; } subrs8 = operands1.data.readU8(pos39); } subrs6 = -(b06 - 251) * 256 - subrs8 - 108; } else if(b06 == 28) { var v28 = 0; var _g26 = 0; var _g27 = 2; while(_g26 < _g27) { var i17 = _g26++; var v29; if(operands1.cursor >= operands1.data.get_length()) { v29 = 0; } else { var pos40 = operands1.cursor++; if(pos40 == null) { pos40 = 0; } v29 = operands1.data.readU8(pos40); } v28 = v28 << 8 | v29; } subrs6 = v28; } else if(b06 == 29) { var v30 = 0; var _g28 = 0; var _g29 = 4; while(_g28 < _g29) { var i18 = _g28++; var v31; if(operands1.cursor >= operands1.data.get_length()) { v31 = 0; } else { var pos41 = operands1.cursor++; if(pos41 == null) { pos41 = 0; } v31 = operands1.data.readU8(pos41); } v30 = v30 << 8 | v31; } subrs6 = v30; } else { throw haxe_Exception.thrown("Error"); } subrsoff[i14] = subrs6; ++i14; } if(subrsoff[0] == 0) { var r14 = new kha_graphics2_truetype_Stbtt_$_$buf(); r14.data = null; r14.cursor = 0; subrs = r14; } else { var o7 = private_loc[1] + subrsoff[0]; if(o7 > cff.data.get_length() || o7 < 0) { throw haxe_Exception.thrown("Error"); } cff.cursor = o7 > cff.data.get_length() || o7 < 0 ? cff.data.get_length() : o7; var start4 = cff.cursor; var v32 = 0; var _g30 = 0; var _g31 = 2; while(_g30 < _g31) { var i19 = _g30++; var v33; if(cff.cursor >= cff.data.get_length()) { v33 = 0; } else { var pos42 = cff.cursor++; if(pos42 == null) { pos42 = 0; } v33 = cff.data.readU8(pos42); } v32 = v32 << 8 | v33; } var count1 = v32; if(count1 > 0) { var offsize1; if(cff.cursor >= cff.data.get_length()) { offsize1 = 0; } else { var pos43 = cff.cursor++; if(pos43 == null) { pos43 = 0; } offsize1 = cff.data.readU8(pos43); } if(!(offsize1 >= 1 && offsize1 <= 4)) { throw haxe_Exception.thrown("Error"); } var o8 = cff.cursor + offsize1 * count1; if(o8 > cff.data.get_length() || o8 < 0) { throw haxe_Exception.thrown("Error"); } cff.cursor = o8 > cff.data.get_length() || o8 < 0 ? cff.data.get_length() : o8; var v34 = 0; if(!(offsize1 >= 1 && offsize1 <= 4)) { throw haxe_Exception.thrown("Error"); } var _g32 = 0; var _g33 = offsize1; while(_g32 < _g33) { var i20 = _g32++; var v35; if(cff.cursor >= cff.data.get_length()) { v35 = 0; } else { var pos44 = cff.cursor++; if(pos44 == null) { pos44 = 0; } v35 = cff.data.readU8(pos44); } v34 = v34 << 8 | v35; } var o9 = cff.cursor + (v34 - 1); if(o9 > cff.data.get_length() || o9 < 0) { throw haxe_Exception.thrown("Error"); } cff.cursor = o9 > cff.data.get_length() || o9 < 0 ? cff.data.get_length() : o9; var s5 = cff.cursor - start4; var r15 = new kha_graphics2_truetype_Stbtt_$_$buf(); r15.data = null; r15.cursor = 0; var r16 = r15; if(start4 < 0 || s5 < 0 || start4 > cff.data.get_length() || s5 > cff.data.get_length() - start4) { subrs = r16; } else { r16.data = cff.data.sub(start4,s5); subrs = r16; } } else { subrs = cff; } } } } has_subrs = true; } } if(sp < 1) { return false; } v = s[--sp] | 0; if(subr_stack_height >= 10) { return false; } subr_stack[subr_stack_height++] = b; var idx = b0 == 10 ? subrs : info.gsubrs; var n = v; if(0 > idx.data.get_length()) { throw haxe_Exception.thrown("Error"); } idx.cursor = 0 > idx.data.get_length() ? idx.data.get_length() : 0; var v36 = 0; var _g34 = 0; var _g35 = 2; while(_g34 < _g35) { var i21 = _g34++; var v37; if(idx.cursor >= idx.data.get_length()) { v37 = 0; } else { var pos45 = idx.cursor++; if(pos45 == null) { pos45 = 0; } v37 = idx.data.readU8(pos45); } v36 = v36 << 8 | v37; } var count2 = v36; var bias = 107; if(count2 >= 33900) { bias = 32768; } else if(count2 >= 1240) { bias = 1131; } n += bias; if(n < 0 || n >= count2) { var r17 = new kha_graphics2_truetype_Stbtt_$_$buf(); r17.data = null; r17.cursor = 0; b = r17; } else { if(0 > idx.data.get_length()) { throw haxe_Exception.thrown("Error"); } idx.cursor = 0 > idx.data.get_length() ? idx.data.get_length() : 0; var v38 = 0; var _g36 = 0; var _g37 = 2; while(_g36 < _g37) { var i22 = _g36++; var v39; if(idx.cursor >= idx.data.get_length()) { v39 = 0; } else { var pos46 = idx.cursor++; if(pos46 == null) { pos46 = 0; } v39 = idx.data.readU8(pos46); } v38 = v38 << 8 | v39; } var count3 = v38; var offsize2; if(idx.cursor >= idx.data.get_length()) { offsize2 = 0; } else { var pos47 = idx.cursor++; if(pos47 == null) { pos47 = 0; } offsize2 = idx.data.readU8(pos47); } if(!(n >= 0 && n < count3)) { throw haxe_Exception.thrown("Error"); } if(!(offsize2 >= 1 && offsize2 <= 4)) { throw haxe_Exception.thrown("Error"); } var o10 = idx.cursor + n * offsize2; if(o10 > idx.data.get_length() || o10 < 0) { throw haxe_Exception.thrown("Error"); } idx.cursor = o10 > idx.data.get_length() || o10 < 0 ? idx.data.get_length() : o10; var v40 = 0; if(!(offsize2 >= 1 && offsize2 <= 4)) { throw haxe_Exception.thrown("Error"); } var _g38 = 0; var _g39 = offsize2; while(_g38 < _g39) { var i23 = _g38++; var v41; if(idx.cursor >= idx.data.get_length()) { v41 = 0; } else { var pos48 = idx.cursor++; if(pos48 == null) { pos48 = 0; } v41 = idx.data.readU8(pos48); } v40 = v40 << 8 | v41; } var start5 = v40; var v42 = 0; if(!(offsize2 >= 1 && offsize2 <= 4)) { throw haxe_Exception.thrown("Error"); } var _g40 = 0; var _g41 = offsize2; while(_g40 < _g41) { var i24 = _g40++; var v43; if(idx.cursor >= idx.data.get_length()) { v43 = 0; } else { var pos49 = idx.cursor++; if(pos49 == null) { pos49 = 0; } v43 = idx.data.readU8(pos49); } v42 = v42 << 8 | v43; } var end4 = v42; var o11 = 2 + (count3 + 1) * offsize2 + start5; var s6 = end4 - start5; var r18 = new kha_graphics2_truetype_Stbtt_$_$buf(); r18.data = null; r18.cursor = 0; var r19 = r18; if(o11 < 0 || s6 < 0 || o11 > idx.data.get_length() || s6 > idx.data.get_length() - o11) { b = r19; } else { r19.data = idx.data.sub(o11,s6); b = r19; } } if(b.data.get_length() == 0) { return false; } b.cursor = 0; clear_stack = false; break; case 30: if(sp < 4) { return false; } while(i + 3 < sp) { var cx126 = c.x; var cy126 = c.y + s[i]; var cx213 = cx126 + s[i + 1]; var cy213 = cy126 + s[i + 2]; c.x = cx213 + s[i + 3]; c.y = cy213 + (sp - i == 5 ? s[i + 4] : 0); var x27 = c.x | 0; var y27 = c.y | 0; var cx33 = cx126 | 0; var cy33 = cy126 | 0; var cx127 = cx213 | 0; var cy127 = cy213 | 0; if(c.bounds) { if(x27 > c.max_x || !c.started) { c.max_x = x27; } if(y27 > c.max_y || !c.started) { c.max_y = y27; } if(x27 < c.min_x || !c.started) { c.min_x = x27; } if(y27 < c.min_y || !c.started) { c.min_y = y27; } c.started = true; if(cx33 > c.max_x || !c.started) { c.max_x = cx33; } if(cy33 > c.max_y || !c.started) { c.max_y = cy33; } if(cx33 < c.min_x || !c.started) { c.min_x = cx33; } if(cy33 < c.min_y || !c.started) { c.min_y = cy33; } c.started = true; if(cx127 > c.max_x || !c.started) { c.max_x = cx127; } if(cy127 > c.max_y || !c.started) { c.max_y = cy127; } if(cx127 < c.min_x || !c.started) { c.min_x = cx127; } if(cy127 < c.min_y || !c.started) { c.min_y = cy127; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x27,y27,cx33,cy33); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx127 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy127 , Int); } c.num_vertices++; i += 4; if(i + 3 >= sp) { break; } var cx128 = c.x + s[i]; var cy128 = c.y; var cx214 = cx128 + s[i + 1]; var cy214 = cy128 + s[i + 2]; c.x = cx214 + (sp - i == 5 ? s[i + 4] : 0); c.y = cy214 + s[i + 3]; var x28 = c.x | 0; var y28 = c.y | 0; var cx34 = cx128 | 0; var cy34 = cy128 | 0; var cx129 = cx214 | 0; var cy129 = cy214 | 0; if(c.bounds) { if(x28 > c.max_x || !c.started) { c.max_x = x28; } if(y28 > c.max_y || !c.started) { c.max_y = y28; } if(x28 < c.min_x || !c.started) { c.min_x = x28; } if(y28 < c.min_y || !c.started) { c.min_y = y28; } c.started = true; if(cx34 > c.max_x || !c.started) { c.max_x = cx34; } if(cy34 > c.max_y || !c.started) { c.max_y = cy34; } if(cx34 < c.min_x || !c.started) { c.min_x = cx34; } if(cy34 < c.min_y || !c.started) { c.min_y = cy34; } c.started = true; if(cx129 > c.max_x || !c.started) { c.max_x = cx129; } if(cy129 > c.max_y || !c.started) { c.max_y = cy129; } if(cx129 < c.min_x || !c.started) { c.min_x = cx129; } if(cy129 < c.min_y || !c.started) { c.min_y = cy129; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x28,y28,cx34,cy34); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx129 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy129 , Int); } c.num_vertices++; i += 4; } break; case 31: if(sp < 4) { return false; } while(i + 3 < sp) { var cx130 = c.x + s[i]; var cy130 = c.y; var cx215 = cx130 + s[i + 1]; var cy215 = cy130 + s[i + 2]; c.x = cx215 + (sp - i == 5 ? s[i + 4] : 0); c.y = cy215 + s[i + 3]; var x29 = c.x | 0; var y29 = c.y | 0; var cx35 = cx130 | 0; var cy35 = cy130 | 0; var cx131 = cx215 | 0; var cy131 = cy215 | 0; if(c.bounds) { if(x29 > c.max_x || !c.started) { c.max_x = x29; } if(y29 > c.max_y || !c.started) { c.max_y = y29; } if(x29 < c.min_x || !c.started) { c.min_x = x29; } if(y29 < c.min_y || !c.started) { c.min_y = y29; } c.started = true; if(cx35 > c.max_x || !c.started) { c.max_x = cx35; } if(cy35 > c.max_y || !c.started) { c.max_y = cy35; } if(cx35 < c.min_x || !c.started) { c.min_x = cx35; } if(cy35 < c.min_y || !c.started) { c.min_y = cy35; } c.started = true; if(cx131 > c.max_x || !c.started) { c.max_x = cx131; } if(cy131 > c.max_y || !c.started) { c.max_y = cy131; } if(cx131 < c.min_x || !c.started) { c.min_x = cx131; } if(cy131 < c.min_y || !c.started) { c.min_y = cy131; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x29,y29,cx35,cy35); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx131 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy131 , Int); } c.num_vertices++; i += 4; if(i + 3 >= sp) { break; } var cx132 = c.x; var cy132 = c.y + s[i]; var cx216 = cx132 + s[i + 1]; var cy216 = cy132 + s[i + 2]; c.x = cx216 + s[i + 3]; c.y = cy216 + (sp - i == 5 ? s[i + 4] : 0); var x30 = c.x | 0; var y30 = c.y | 0; var cx36 = cx132 | 0; var cy36 = cy132 | 0; var cx133 = cx216 | 0; var cy133 = cy216 | 0; if(c.bounds) { if(x30 > c.max_x || !c.started) { c.max_x = x30; } if(y30 > c.max_y || !c.started) { c.max_y = y30; } if(x30 < c.min_x || !c.started) { c.min_x = x30; } if(y30 < c.min_y || !c.started) { c.min_y = y30; } c.started = true; if(cx36 > c.max_x || !c.started) { c.max_x = cx36; } if(cy36 > c.max_y || !c.started) { c.max_y = cy36; } if(cx36 < c.min_x || !c.started) { c.min_x = cx36; } if(cy36 < c.min_y || !c.started) { c.min_y = cy36; } c.started = true; if(cx133 > c.max_x || !c.started) { c.max_x = cx133; } if(cy133 > c.max_y || !c.started) { c.max_y = cy133; } if(cx133 < c.min_x || !c.started) { c.min_x = cx133; } if(cy133 < c.min_y || !c.started) { c.min_y = cy133; } c.started = true; } else { kha_graphics2_truetype_StbTruetype.stbtt_setvertex(c.pvertices[c.num_vertices],4,x30,y30,cx36,cy36); c.pvertices[c.num_vertices].cx1 = js_Boot.__cast(cx133 , Int); c.pvertices[c.num_vertices].cy1 = js_Boot.__cast(cy133 , Int); } c.num_vertices++; i += 4; } break; default: if(b0 != 255 && b0 != 28 && (b0 < 32 || b0 > 254)) { return false; } if(b0 == 255) { var v44 = 0; var _g42 = 0; var _g43 = 4; while(_g42 < _g43) { var i25 = _g42++; var v45; if(b.cursor >= b.data.get_length()) { v45 = 0; } else { var pos50 = b.cursor++; if(pos50 == null) { pos50 = 0; } v45 = b.data.readU8(pos50); } v44 = v44 << 8 | v45; } f = v44 / 65536; } else { var o12 = b.cursor + (-1); if(o12 > b.data.get_length() || o12 < 0) { throw haxe_Exception.thrown("Error"); } b.cursor = o12 > b.data.get_length() || o12 < 0 ? b.data.get_length() : o12; var b07; if(b.cursor >= b.data.get_length()) { b07 = 0; } else { var pos51 = b.cursor++; if(pos51 == null) { pos51 = 0; } b07 = b.data.readU8(pos51); } if(b07 >= 32 && b07 <= 246) { f = b07 - 139; } else if(b07 >= 247 && b07 <= 250) { var f1; if(b.cursor >= b.data.get_length()) { f1 = 0; } else { var pos52 = b.cursor++; if(pos52 == null) { pos52 = 0; } f1 = b.data.readU8(pos52); } f = (b07 - 247) * 256 + f1 + 108; } else if(b07 >= 251 && b07 <= 254) { var f2; if(b.cursor >= b.data.get_length()) { f2 = 0; } else { var pos53 = b.cursor++; if(pos53 == null) { pos53 = 0; } f2 = b.data.readU8(pos53); } f = -(b07 - 251) * 256 - f2 - 108; } else if(b07 == 28) { var v46 = 0; var _g44 = 0; var _g45 = 2; while(_g44 < _g45) { var i26 = _g44++; var v47; if(b.cursor >= b.data.get_length()) { v47 = 0; } else { var pos54 = b.cursor++; if(pos54 == null) { pos54 = 0; } v47 = b.data.readU8(pos54); } v46 = v46 << 8 | v47; } f = v46; } else if(b07 == 29) { var v48 = 0; var _g46 = 0; var _g47 = 4; while(_g46 < _g47) { var i27 = _g46++; var v49; if(b.cursor >= b.data.get_length()) { v49 = 0; } else { var pos55 = b.cursor++; if(pos55 == null) { pos55 = 0; } v49 = b.data.readU8(pos55); } v48 = v48 << 8 | v49; } f = v48; } else { throw haxe_Exception.thrown("Error"); } } if(sp >= 48) { return false; } s[sp++] = f; clear_stack = false; } if(clear_stack) { sp = 0; } } return false; }; kha_graphics2_truetype_StbTruetype.stbtt__GetGlyphShapeT2 = function(info,glyph_index) { var tmp = new kha_graphics2_truetype_Stbtt_$_$csctx(); tmp.bounds = true; tmp.started = false; tmp.first_x = 0; tmp.first_y = 0; tmp.x = 0; tmp.y = 0; tmp.min_x = 0; tmp.min_y = 0; tmp.max_x = 0; tmp.max_y = 0; tmp.pvertices = null; tmp.num_vertices = 0; var count_ctx = tmp; var tmp = new kha_graphics2_truetype_Stbtt_$_$csctx(); tmp.bounds = false; tmp.started = false; tmp.first_x = 0; tmp.first_y = 0; tmp.x = 0; tmp.y = 0; tmp.min_x = 0; tmp.min_y = 0; tmp.max_x = 0; tmp.max_y = 0; tmp.pvertices = null; tmp.num_vertices = 0; var output_ctx = tmp; if(kha_graphics2_truetype_StbTruetype.stbtt__run_charstring(info,glyph_index,count_ctx)) { var this1 = new Array(count_ctx.num_vertices); output_ctx.pvertices = this1; var _g = 0; var _g1 = count_ctx.num_vertices; while(_g < _g1) { var i = _g++; output_ctx.pvertices[i] = new kha_graphics2_truetype_Stbtt_$vertex(); } if(kha_graphics2_truetype_StbTruetype.stbtt__run_charstring(info,glyph_index,output_ctx)) { if(output_ctx.num_vertices != count_ctx.num_vertices) { throw haxe_Exception.thrown("Error"); } return output_ctx.pvertices; } } return null; }; kha_graphics2_truetype_StbTruetype.stbtt__GetGlyphInfoT2 = function(info,glyph_index,rect) { var tmp = new kha_graphics2_truetype_Stbtt_$_$csctx(); tmp.bounds = true; tmp.started = false; tmp.first_x = 0; tmp.first_y = 0; tmp.x = 0; tmp.y = 0; tmp.min_x = 0; tmp.min_y = 0; tmp.max_x = 0; tmp.max_y = 0; tmp.pvertices = null; tmp.num_vertices = 0; var c = tmp; var r = kha_graphics2_truetype_StbTruetype.stbtt__run_charstring(info,glyph_index,c); if(rect != null) { rect.x0 = r ? c.min_x : 0; rect.y0 = r ? c.min_y : 0; rect.x1 = r ? c.max_x : 0; rect.y1 = r ? c.max_y : 0; } if(r) { return c.num_vertices; } else { return 0; } }; kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape = function(info,glyph_index) { if(info.cff.data == null || info.cff.data.get_length() == 0) { return kha_graphics2_truetype_StbTruetype.stbtt__GetGlyphShapeTT(info,glyph_index); } else { return kha_graphics2_truetype_StbTruetype.stbtt__GetGlyphShapeT2(info,glyph_index); } }; kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphHMetrics = function(info,glyph_index) { var p = info.data; var pos = info.hhea + 34; if(pos == null) { pos = 0; } 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 p = info.data; var pos = info.hmtx + 4 * glyph_index; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; metrics.advanceWidth = (n & 32768) != 0 ? n - 65536 : n; var p = info.data; var pos = info.hmtx + 4 * glyph_index + 2; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; metrics.leftSideBearing = (n & 32768) != 0 ? n - 65536 : n; } else { var p = info.data; var pos = info.hmtx + 4 * (numOfLongHorMetrics - 1); if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; metrics.advanceWidth = (n & 32768) != 0 ? n - 65536 : n; var p = info.data; var pos = info.hmtx + 4 * numOfLongHorMetrics + 2 * (glyph_index - numOfLongHorMetrics); if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; metrics.leftSideBearing = (n & 32768) != 0 ? n - 65536 : n; } return metrics; }; kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphKernAdvance = function(info,glyph1,glyph2) { var kern = info.kern; var data = info.data; var straw; var m; if(info.kern == 0) { return 0; } var pos = kern + 2; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); if((ch2 | ch1 << 8) < 1) { return 0; } var pos = kern + 8; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); if((ch2 | ch1 << 8) != 1) { return 0; } var l = 0; var pos = kern + 10; if(pos == null) { pos = 0; } var ch1 = data.readU8(pos); var ch2 = data.readU8(pos + 1); var r = (ch2 | ch1 << 8) - 1; var needle = glyph1 << 16 | glyph2; while(l <= r) { m = l + r >> 1; var pos = kern + 18 + m * 6; if(pos == null) { pos = 0; } var pos1 = pos; if(pos1 == null) { pos1 = 0; } var ch1 = data.readU8(pos1); var ch2 = data.readU8(pos1 + 1); var ch3 = data.readU8(pos1 + 2); var ch4 = data.readU8(pos1 + 3); straw = ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24; if(needle < straw) { r = m - 1; } else if(needle > straw) { l = m + 1; } else { var pos2 = kern + 22 + m * 6; if(pos2 == null) { pos2 = 0; } var ch11 = data.readU8(pos2); var ch21 = data.readU8(pos2 + 1); var n = ch21 | ch11 << 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; if(pos == null) { pos = 0; } 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 p = info.data; var pos = info.hhea + 6; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; metrics.descent = (n & 32768) != 0 ? n - 65536 : n; var p = info.data; var pos = info.hhea + 8; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; metrics.lineGap = (n & 32768) != 0 ? n - 65536 : n; 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; if(pos == null) { pos = 0; } 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 p = info.data; var pos = info.head + 38; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; rect.y0 = (n & 32768) != 0 ? n - 65536 : n; var p = info.data; var pos = info.head + 40; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; rect.x1 = (n & 32768) != 0 ? n - 65536 : n; var p = info.data; var pos = info.head + 42; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; rect.y1 = (n & 32768) != 0 ? n - 65536 : n; return rect; }; kha_graphics2_truetype_StbTruetype.stbtt_ScaleForPixelHeight = function(info,height) { var p = info.data; var pos = info.hhea + 4; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n = ch2 | ch1 << 8; var p = info.data; var pos = info.hhea + 6; if(pos == null) { pos = 0; } var ch1 = p.readU8(pos); var ch2 = p.readU8(pos + 1); var n1 = ch2 | ch1 << 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; if(pos == null) { pos = 0; } 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) { throw haxe_Exception.thrown("Error"); } 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 haxe_Exception.thrown("Error"); } if(!(e.sy <= e.ey)) { throw haxe_Exception.thrown("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 haxe_Exception.thrown("Error"); } } else if(x0 == x + 1) { if(!(x1 >= x)) { throw haxe_Exception.thrown("Error"); } } else if(x0 <= x) { if(!(x1 <= x)) { throw haxe_Exception.thrown("Error"); } } else if(x0 >= x + 1) { if(!(x1 >= x + 1)) { throw haxe_Exception.thrown("Error"); } } else if(!(x1 >= x && x1 <= x + 1)) { throw haxe_Exception.thrown("Error"); } if(x0 <= x && x1 <= x) { scanline[scanlineIndex + x] += e.direction * (y1 - y0); } else if(!(x0 >= x + 1 && x1 >= x + 1)) { if(!(x0 >= x && x0 <= x + 1 && x1 >= x && x1 <= x + 1)) { throw haxe_Exception.thrown("Error"); } scanline[scanlineIndex + x] += 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 haxe_Exception.thrown("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 haxe_Exception.thrown("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 x = x_top | 0; var height = sy1 - sy0; if(!(x >= 0 && x < len)) { throw haxe_Exception.thrown("Error"); } scanline[x] += e.direction * (1 - (x_top - x + (x_bottom - x)) / 2) * height; scanline_fill[scanline_fillIndex + x] += e.direction * height; } else { var x1; if(x_top > x_bottom) { sy0 = y_bottom - (sy0 - y_top); sy1 = y_bottom - (sy1 - y_top); var 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; } var x11 = x_top | 0; var x2 = x_bottom | 0; var y_crossing = (x11 + 1 - x01) * dy + y_top; var sign = e.direction; var area = sign * (y_crossing - sy0); scanline[x11] += area * (1 - (x_top - x11 + (x11 + 1 - x11)) / 2); var step = sign * dy; var _g = x11 + 1; var _g1 = x2; while(_g < _g1) { var x3 = _g++; scanline[x3] += area + step / 2; area += step; } y_crossing += dy * (x2 - (x11 + 1)); if(!(Math.abs(area) <= 1.01)) { throw haxe_Exception.thrown("Error"); } scanline[x2] += area + sign * (1 - (x2 - x2 + (x_bottom - x2)) / 2) * (sy1 - y_crossing); scanline_fill[scanline_fillIndex + x2] += sign * (sy1 - sy0); } } else { var _g2 = 0; var _g3 = len; while(_g2 < _g3) { var x4 = _g2++; var y0 = y_top; var x12 = x4; var x21 = x4 + 1; var x31 = xb; var y3 = y_bottom; var y1 = (x4 - x01) / dx + y_top; var 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 j = 0; var scanline; var scanline2Index = 0; var eIndex = 0; if(result.w > 64) { var this1 = new Array(result.w * 2 + 1); scanline = this1; } else { var this1 = new Array(129); scanline = this1; } var scanline2 = scanline; scanline2Index = result.w; var 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 = active; var step_parent = null; var _g = 0; var _g1 = result.w; while(_g < _g1) { var i = _g++; scanline[i] = 0; } var _g2 = 0; var _g3 = result.w + 1; while(_g2 < _g3) { var i1 = _g2++; scanline2[scanline2Index + i1] = 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 haxe_Exception.thrown("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 haxe_Exception.thrown("Error"); } if(z1 != null) { if(j == 0 && off_y != 0) { if(z1.ey < scan_y_top) { z1.ey = scan_y_top; } } if(!(z1.ey >= scan_y_top)) { throw haxe_Exception.thrown("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 _g4 = 0; var _g5 = result.w; while(_g4 < _g5) { var i2 = _g4++; sum += scanline2[scanline2Index + i2]; var k = scanline[i2] + sum; k = Math.abs(k) * 255.0 + 0.5; var m = k | 0; if(m > 255) { m = 255; } result.pixels.writeU8(result.pixels_offset + j * result.stride + i2,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 _g = 1; var _g1 = n; while(_g < _g1) { var i = _g++; var t = p[i]; var a = t; j = i; 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(i != j) { p[j] = t; } } }; kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_quicksort = function(p,pIndex,n) { while(n > 12) { var t; var c; var m = n >> 1; var c01 = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex],p[pIndex + m]); var c12 = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex + m],p[pIndex + n - 1]); if(c01 != c12) { c = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex],p[pIndex + n - 1]); var z = c == c12 ? 0 : 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; var i = 1; var 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 i; var j; var k; var vsubsample = 1; var ptsIndex = 0; var n = 0; var _g = 0; var _g1 = windings; while(_g < _g1) { var i = _g++; n += wcount[i]; } var this1 = new Array(n + 1); var e = this1; if(e == null) { return; } else { var _g = 0; var _g1 = e.length; while(_g < _g1) { var i = _g++; e[i] = new kha_graphics2_truetype_Stbtt_$_$edge(); } } n = 0; var m = 0; var _g = 0; var _g1 = windings; while(_g < _g1) { var i = _g++; var p = pts; var pIndex = ptsIndex + m; m += wcount[i]; j = wcount[i] - 1; var _g2 = 0; var _g3 = wcount[i]; while(_g2 < _g3) { var k = _g2++; var a = k; var b = j; if(p[pIndex + j].y == p[pIndex + k].y) { j = k; continue; } e[n].invert = false; if(invert ? p[pIndex + j].y > p[pIndex + k].y : p[pIndex + j].y < p[pIndex + k].y) { e[n].invert = true; a = j; b = k; } 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 = k; } } 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__tesselate_cubic = function(points,num_points,x0,y0,x1,y1,x2,y2,x3,y3,objspace_flatness_squared,n) { var dx0 = x1 - x0; var dy0 = y1 - y0; var dx1 = x2 - x1; var dy1 = y2 - y1; var dx2 = x3 - x2; var dy2 = y3 - y2; var dx = x3 - x0; var dy = y3 - y0; var longlen = Math.sqrt(dx0 * dx0 + dy0 * dy0) + Math.sqrt(dx1 * dx1 + dy1 * dy1) + Math.sqrt(dx2 * dx2 + dy2 * dy2); var shortlen = Math.sqrt(dx * dx + dy * dy); var flatness_squared = longlen * longlen - shortlen * shortlen; if(n > 16) { return; } if(flatness_squared > objspace_flatness_squared) { var x01 = (x0 + x1) / 2; var y01 = (y0 + y1) / 2; var x12 = (x1 + x2) / 2; var y12 = (y1 + y2) / 2; var x23 = (x2 + x3) / 2; var y23 = (y2 + y3) / 2; var xa = (x01 + x12) / 2; var ya = (y01 + y12) / 2; var xb = (x12 + x23) / 2; var yb = (y12 + y23) / 2; var mx = (xa + xb) / 2; var my = (ya + yb) / 2; kha_graphics2_truetype_StbTruetype.stbtt__tesselate_cubic(points,num_points,x0,y0,x01,y01,xa,ya,mx,my,objspace_flatness_squared,n + 1); kha_graphics2_truetype_StbTruetype.stbtt__tesselate_cubic(points,num_points,mx,my,xb,yb,x23,y23,x3,y3,objspace_flatness_squared,n + 1); } else { kha_graphics2_truetype_StbTruetype.stbtt__add_point(points,num_points.value,x3,y3); num_points.value += 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 _g = 0; var _g1 = num_verts; while(_g < _g1) { var i = _g++; if(vertices[i].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 _g = 0; while(_g < 2) { var pass = _g++; var x = 0; var y = 0; if(pass == 1) { var this1 = new Array(num_points); points = this1; if(points == null) { contour_lengths.value = null; num_contours.value = 0; return null; } else { var _g1 = 0; var _g2 = points.length; while(_g1 < _g2) { var i = _g1++; points[i] = new kha_graphics2_truetype_Stbtt_$_$point(); } } } num_points = 0; n = -1; var _g3 = 0; var _g4 = num_verts; while(_g3 < _g4) { var i1 = _g3++; switch(vertices[i1].type) { case 1: if(n >= 0) { contour_lengths.value[n] = num_points - start; } ++n; start = num_points; x = vertices[i1].x; y = vertices[i1].y; kha_graphics2_truetype_StbTruetype.stbtt__add_point(points,num_points++,x,y); break; case 2: x = vertices[i1].x; y = vertices[i1].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[i1].cx,vertices[i1].cy,vertices[i1].x,vertices[i1].y,objspace_flatness_squared,0); num_points = num_points_reference.value; x = vertices[i1].x; y = vertices[i1].y; break; case 4: var num_points_reference1 = { value : num_points}; kha_graphics2_truetype_StbTruetype.stbtt__tesselate_cubic(points,num_points_reference1,x,y,vertices[i1].cx,vertices[i1].cy,vertices[i1].cx1,vertices[i1].cy1,vertices[i1].x,vertices[i1].y,objspace_flatness_squared,0); num_points = num_points_reference1.value; x = vertices[i1].x; y = vertices[i1].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 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); var ix0 = rect.x0; var iy0 = rect.y0; var ix1 = rect.x1; var 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 f = new kha_graphics2_truetype_Stbtt_$fontinfo(); if(!kha_graphics2_truetype_StbTruetype.stbtt_InitFont(f,data,offset)) { return -1; } var y = 1; var x = y; var bottom_y = 1; var scale = kha_graphics2_truetype_StbTruetype.stbtt_ScaleForPixelHeight(f,pixel_height); var i = 0; var _g = 0; while(_g < chars.length) { var index = chars[_g]; ++_g; var g = kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(f,index); var metrics = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphHMetrics(f,g); var advance = metrics.advanceWidth; var lsb = metrics.leftSideBearing; var rect = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBox(f,g,scale,scale); var x0 = rect.x0; var y0 = rect.y0; var x1 = rect.x1; var y1 = rect.y1; var gw = x1 - x0; var gh = y1 - y0; if(x + gw + 1 >= pw) { y = bottom_y; x = 1; } if(y + gh + 1 >= ph) { return -i; } if(x + gw >= pw) { throw haxe_Exception.thrown("Error"); } if(y + gh >= ph) { throw haxe_Exception.thrown("Error"); } chardata[i].x0 = x; chardata[i].y0 = y; chardata[i].x1 = x + gw; chardata[i].y1 = y + gh; chardata[i].xadvance = scale * advance; chardata[i].xoff = x0; chardata[i].yoff = y0; x = x + gw + 1; if(y + gh + 1 > bottom_y) { bottom_y = y + gh + 1; } ++i; } var _g = 0; var _g1 = pw * ph; while(_g < _g1) { var i1 = _g++; pixels.writeU8(i1,0); } i = 0; var ch; var _g = 0; while(_g < chars.length) { var index = chars[_g]; ++_g; var g = kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(f,index); ch = chardata[i]; kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmap(f,pixels,ch.x0 + ch.y0 * pw,ch.x1 - ch.x0,ch.y1 - ch.y0,pw,scale,scale,g); ++i; } 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_ConstantLocation = function() { }; $hxClasses["kha.graphics4.ConstantLocation"] = kha_graphics4_ConstantLocation; kha_graphics4_ConstantLocation.__name__ = true; kha_graphics4_ConstantLocation.__isInterface__ = true; var kha_graphics4_CubeMap = function(texture) { this.texture_ = texture; }; $hxClasses["kha.graphics4.CubeMap"] = kha_graphics4_CubeMap; kha_graphics4_CubeMap.__name__ = true; kha_graphics4_CubeMap.__interfaces__ = [kha_Resource,kha_Canvas]; kha_graphics4_CubeMap.getRenderTargetFormat = function(format) { switch(format) { case 0: return 0; case 2: return 3; case 3: return 4; case 4: return 1; default: return 0; } }; kha_graphics4_CubeMap.getDepthBufferBits = function(depthAndStencil) { switch(depthAndStencil) { case 0: return -1; case 1: return 24; case 2: return 24; case 3: return 24; case 4: return 32; case 5: return 16; } }; kha_graphics4_CubeMap.getStencilBufferBits = function(depthAndStencil) { switch(depthAndStencil) { case 0: return -1; case 1: return -1; case 2: return 8; case 3: return 8; case 4: return 8; case 5: return 0; } }; kha_graphics4_CubeMap.getTextureFormat = function(format) { switch(format) { case 0: return 0; case 2: return 3; case 4: return 4; case 5: return 5; default: return 1; } }; kha_graphics4_CubeMap.createRenderTarget = function(size,format,depthStencil) { if(depthStencil == null) { depthStencil = 0; } if(format == null) { format = 0; } var cubeMap = new kha_graphics4_CubeMap(null); cubeMap.format = format; cubeMap.renderTarget_ = Krom.createRenderTargetCubeMap(size,kha_graphics4_CubeMap.getRenderTargetFormat(format),kha_graphics4_CubeMap.getDepthBufferBits(depthStencil),kha_graphics4_CubeMap.getStencilBufferBits(depthStencil)); return cubeMap; }; kha_graphics4_CubeMap.prototype = { texture_: null ,renderTarget_: null ,format: null ,graphics4: null ,unload: function() { } ,lock: function(level) { if(level == null) { level = 0; } return null; } ,unlock: function() { } ,get_width: function() { if(this.texture_ == null) { return this.renderTarget_.width; } else { return this.texture_.width; } } ,get_height: function() { if(this.texture_ == null) { return this.renderTarget_.height; } else { return this.texture_.height; } } ,get_g1: function() { return null; } ,get_g2: function() { return null; } ,get_g4: function() { if(this.graphics4 == null) { this.graphics4 = new kha_krom_Graphics(this); } return this.graphics4; } ,__class__: kha_graphics4_CubeMap ,__properties__: {get_g4:"get_g4",get_g2:"get_g2",get_g1:"get_g1",get_height:"get_height",get_width:"get_width"} }; var kha_graphics4_FragmentShader = function(sources,names) { if(sources != null) { this.shader = Krom.createFragmentShader(sources[0].bytes.b.bufferValue,names[0]); } }; $hxClasses["kha.graphics4.FragmentShader"] = kha_graphics4_FragmentShader; kha_graphics4_FragmentShader.__name__ = true; kha_graphics4_FragmentShader.fromSource = function(source) { var shader = new kha_graphics4_FragmentShader(null,null); shader.shader = Krom.createFragmentShaderFromSource(source); return shader; }; kha_graphics4_FragmentShader.prototype = { shader: null ,'delete': function() { Krom.deleteShader(this.shader); this.shader = null; } ,__class__: kha_graphics4_FragmentShader }; var kha_graphics4_GeometryShader = function(sources,names) { this.shader = Krom.createGeometryShader(sources[0].bytes.b.bufferValue,names[0]); }; $hxClasses["kha.graphics4.GeometryShader"] = kha_graphics4_GeometryShader; kha_graphics4_GeometryShader.__name__ = true; kha_graphics4_GeometryShader.prototype = { shader: null ,'delete': function() { Krom.deleteShader(this.shader); this.shader = null; } ,__class__: kha_graphics4_GeometryShader }; var kha_graphics4_Graphics = function() { }; $hxClasses["kha.graphics4.Graphics"] = kha_graphics4_Graphics; kha_graphics4_Graphics.__name__ = true; kha_graphics4_Graphics.__isInterface__ = 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 ,setTextureArray: null ,setVideoTexture: null ,setImageTexture: null ,setTextureParameters: null ,setTexture3DParameters: null ,setTextureCompareMode: null ,setCubeMapCompareMode: null ,setCubeMap: null ,setCubeMapDepth: null ,maxBoundTextures: null ,setStencilReferenceValue: null ,instancedRenderingAvailable: null ,setPipeline: null ,setBool: null ,setInt: null ,setInt2: null ,setInt3: null ,setInt4: null ,setInts: 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_InternalPipeline = function(pipeline,projectionLocation,textureLocation) { this.pipeline = pipeline; this.projectionLocation = projectionLocation; this.textureLocation = textureLocation; }; $hxClasses["kha.graphics4.InternalPipeline"] = kha_graphics4_InternalPipeline; kha_graphics4_InternalPipeline.__name__ = true; kha_graphics4_InternalPipeline.prototype = { pipeline: null ,projectionLocation: null ,textureLocation: null ,__class__: kha_graphics4_InternalPipeline }; var kha_graphics4_PipelineCache = function() { }; $hxClasses["kha.graphics4.PipelineCache"] = kha_graphics4_PipelineCache; kha_graphics4_PipelineCache.__name__ = true; kha_graphics4_PipelineCache.__isInterface__ = true; kha_graphics4_PipelineCache.prototype = { get: null ,__class__: kha_graphics4_PipelineCache }; var kha_graphics4_SimplePipelineCache = function(pipeline,texture) { var projectionLocation = null; try { projectionLocation = pipeline.getConstantLocation("projectionMatrix"); } catch( _g ) { var x = haxe_Exception.caught(_g).unwrap(); haxe_Log.trace(x,{ fileName : "kha/graphics4/Graphics2.hx", lineNumber : 58, className : "kha.graphics4.SimplePipelineCache", methodName : "new"}); } var textureLocation = null; if(texture) { try { textureLocation = pipeline.getTextureUnit("tex"); } catch( _g ) { var x = haxe_Exception.caught(_g).unwrap(); haxe_Log.trace(x,{ fileName : "kha/graphics4/Graphics2.hx", lineNumber : 67, className : "kha.graphics4.SimplePipelineCache", methodName : "new"}); } } this.pipeline = new kha_graphics4_InternalPipeline(pipeline,projectionLocation,textureLocation); }; $hxClasses["kha.graphics4.SimplePipelineCache"] = kha_graphics4_SimplePipelineCache; kha_graphics4_SimplePipelineCache.__name__ = true; kha_graphics4_SimplePipelineCache.__interfaces__ = [kha_graphics4_PipelineCache]; kha_graphics4_SimplePipelineCache.prototype = { pipeline: null ,get: function(colorFormats,depthStencilFormat) { return this.pipeline; } ,__class__: kha_graphics4_SimplePipelineCache }; var kha_graphics4_PerFramebufferPipelineCache = function(pipeline,texture) { this.pipelines = []; pipeline.compile(); var projectionLocation = null; try { projectionLocation = pipeline.getConstantLocation("projectionMatrix"); } catch( _g ) { var x = haxe_Exception.caught(_g).unwrap(); haxe_Log.trace(x,{ fileName : "kha/graphics4/Graphics2.hx", lineNumber : 90, className : "kha.graphics4.PerFramebufferPipelineCache", methodName : "new"}); } var textureLocation = null; if(texture) { try { textureLocation = pipeline.getTextureUnit("tex"); } catch( _g ) { var x = haxe_Exception.caught(_g).unwrap(); haxe_Log.trace(x,{ fileName : "kha/graphics4/Graphics2.hx", lineNumber : 99, className : "kha.graphics4.PerFramebufferPipelineCache", methodName : "new"}); } } this.pipelines.push(new kha_graphics4_InternalPipeline(pipeline,projectionLocation,textureLocation)); }; $hxClasses["kha.graphics4.PerFramebufferPipelineCache"] = kha_graphics4_PerFramebufferPipelineCache; kha_graphics4_PerFramebufferPipelineCache.__name__ = true; kha_graphics4_PerFramebufferPipelineCache.__interfaces__ = [kha_graphics4_PipelineCache]; kha_graphics4_PerFramebufferPipelineCache.prototype = { pipelines: null ,get: function(colorFormats,depthStencilFormat) { return this.pipelines[this.hash(colorFormats,depthStencilFormat)]; } ,hash: function(colorFormats,depthStencilFormat) { return 0; } ,__class__: kha_graphics4_PerFramebufferPipelineCache }; var kha_graphics4_ImageShaderPainter = function(g4) { this.myPipeline = null; this.bilinearMipmaps = false; this.bilinear = false; this.g = g4; kha_graphics4_ImageShaderPainter.bufferStart = 0; kha_graphics4_ImageShaderPainter.bufferIndex = 0; kha_graphics4_ImageShaderPainter.initShaders(); this.myPipeline = kha_graphics4_ImageShaderPainter.standardImagePipeline; this.initBuffers(); }; $hxClasses["kha.graphics4.ImageShaderPainter"] = kha_graphics4_ImageShaderPainter; kha_graphics4_ImageShaderPainter.__name__ = true; kha_graphics4_ImageShaderPainter.initShaders = function() { if(kha_graphics4_ImageShaderPainter.structure == null) { kha_graphics4_ImageShaderPainter.structure = kha_graphics4_Graphics2.createImageVertexStructure(); } if(kha_graphics4_ImageShaderPainter.standardImagePipeline == null) { var pipeline = kha_graphics4_Graphics2.createImagePipeline(kha_graphics4_ImageShaderPainter.structure); kha_graphics4_ImageShaderPainter.standardImagePipeline = new kha_graphics4_PerFramebufferPipelineCache(pipeline,true); } }; kha_graphics4_ImageShaderPainter.prototype = { projectionMatrix: null ,bilinear: null ,bilinearMipmaps: null ,g: null ,myPipeline: null ,get_pipeline: function() { return this.myPipeline; } ,set_pipeline: function(pipe) { this.myPipeline = pipe != null ? pipe : kha_graphics4_ImageShaderPainter.standardImagePipeline; return this.myPipeline; } ,setProjection: function(projectionMatrix) { this.projectionMatrix = projectionMatrix; } ,initBuffers: function() { if(kha_graphics4_ImageShaderPainter.rectVertexBuffer == null) { kha_graphics4_ImageShaderPainter.rectVertexBuffer = new kha_graphics4_VertexBuffer(6000,kha_graphics4_ImageShaderPainter.structure,1); kha_graphics4_ImageShaderPainter.rectVertices = kha_graphics4_ImageShaderPainter.rectVertexBuffer.lock(); kha_graphics4_ImageShaderPainter.indexBuffer = new kha_graphics4_IndexBuffer(9000,0); var indices = kha_graphics4_ImageShaderPainter.indexBuffer.lock(); var _g = 0; while(_g < 1500) { var i = _g++; var k = i * 3 * 2; indices.setUint32(k * 4,i * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp = k * 4; var k1 = i * 3 * 2 + 1; indices.setUint32(k1 * 4,i * 4 + 1,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp1 = k1 * 4; var k2 = i * 3 * 2 + 2; indices.setUint32(k2 * 4,i * 4 + 2,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp2 = k2 * 4; var k3 = i * 3 * 2 + 3; indices.setUint32(k3 * 4,i * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp3 = k3 * 4; var k4 = i * 3 * 2 + 4; indices.setUint32(k4 * 4,i * 4 + 2,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp4 = k4 * 4; var k5 = i * 3 * 2 + 5; indices.setUint32(k5 * 4,i * 4 + 3,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp5 = k5 * 4; } kha_graphics4_ImageShaderPainter.indexBuffer.unlock(); } } ,setRectVertices: function(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) { var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex,bottomleftx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 4,bottomlefty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 8,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 24,topleftx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 28,toplefty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 32,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 48,toprightx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 52,toprighty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 56,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 72,bottomrightx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 76,bottomrighty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 80,-5.0,true); } ,setRectTexCoords: function(left,top,right,bottom) { var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 12,left,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 16,bottom,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 36,left,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 40,top,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 60,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 64,top,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 84,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 88,bottom,true); } ,setRectColor: function(r,g,b,a) { var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 3,a * 255 | 0); } ,drawBuffer: function(end) { if(kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart == 0) { return; } kha_graphics4_ImageShaderPainter.rectVertexBuffer.unlock((kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 4); var pipeline = this.myPipeline.get(null,3); this.g.setPipeline(pipeline.pipeline); this.g.setVertexBuffer(kha_graphics4_ImageShaderPainter.rectVertexBuffer); this.g.setIndexBuffer(kha_graphics4_ImageShaderPainter.indexBuffer); this.g.setTexture(pipeline.textureLocation,kha_graphics4_ImageShaderPainter.lastTexture); this.g.setTextureParameters(pipeline.textureLocation,2,2,this.bilinear ? 1 : 0,this.bilinear ? 1 : 0,this.bilinearMipmaps ? 2 : 0); this.g.setMatrix(pipeline.projectionLocation,this.projectionMatrix); this.g.drawIndexedVertices(kha_graphics4_ImageShaderPainter.bufferStart * 2 * 3,(kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 2 * 3); this.g.setTexture(pipeline.textureLocation,null); if(end || (kha_graphics4_ImageShaderPainter.bufferStart + kha_graphics4_ImageShaderPainter.bufferIndex + 1) * 4 >= 1500) { kha_graphics4_ImageShaderPainter.bufferStart = 0; kha_graphics4_ImageShaderPainter.bufferIndex = 0; kha_graphics4_ImageShaderPainter.rectVertices = kha_graphics4_ImageShaderPainter.rectVertexBuffer.lock(0); } else { kha_graphics4_ImageShaderPainter.bufferStart = kha_graphics4_ImageShaderPainter.bufferIndex; kha_graphics4_ImageShaderPainter.rectVertices = kha_graphics4_ImageShaderPainter.rectVertexBuffer.lock(kha_graphics4_ImageShaderPainter.bufferStart * 4); } } ,setBilinearFilter: function(bilinear) { this.drawBuffer(false); kha_graphics4_ImageShaderPainter.lastTexture = null; this.bilinear = bilinear; } ,setBilinearMipmapFilter: function(bilinear) { this.drawBuffer(false); kha_graphics4_ImageShaderPainter.lastTexture = null; this.bilinearMipmaps = bilinear; } ,drawImage: function(img,bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty,opacity,color) { var tex = img; if(kha_graphics4_ImageShaderPainter.bufferStart + kha_graphics4_ImageShaderPainter.bufferIndex + 1 >= 1500 || kha_graphics4_ImageShaderPainter.lastTexture != null && tex != kha_graphics4_ImageShaderPainter.lastTexture) { this.drawBuffer(false); } 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 = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 3,a * 255 | 0); var right = tex.get_width() / tex.get_realWidth(); var bottom = tex.get_height() / tex.get_realHeight(); var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 12,0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 16,bottom,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 36,0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 40,0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 60,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 64,0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 84,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 88,bottom,true); var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex,bottomleftx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 4,bottomlefty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 8,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 24,topleftx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 28,toplefty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 32,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 48,toprightx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 52,toprighty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 56,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 72,bottomrightx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 76,bottomrighty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 80,-5.0,true); ++kha_graphics4_ImageShaderPainter.bufferIndex; kha_graphics4_ImageShaderPainter.lastTexture = tex; } ,drawImage2: function(img,sx,sy,sw,sh,bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty,opacity,color) { var tex = img; if(kha_graphics4_ImageShaderPainter.bufferStart + kha_graphics4_ImageShaderPainter.bufferIndex + 1 >= 1500 || kha_graphics4_ImageShaderPainter.lastTexture != null && tex != kha_graphics4_ImageShaderPainter.lastTexture) { this.drawBuffer(false); } 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 = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 12,left,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 16,bottom,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 36,left,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 40,top,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 60,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 64,top,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 84,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 88,bottom,true); 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 = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 3,a * 255 | 0); var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex,bottomleftx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 4,bottomlefty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 8,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 24,topleftx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 28,toplefty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 32,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 48,toprightx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 52,toprighty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 56,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 72,bottomrightx,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 76,bottomrighty,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 80,-5.0,true); ++kha_graphics4_ImageShaderPainter.bufferIndex; kha_graphics4_ImageShaderPainter.lastTexture = tex; } ,drawImageScale: function(img,sx,sy,sw,sh,left,top,right,bottom,opacity,color) { var tex = img; if(kha_graphics4_ImageShaderPainter.bufferStart + kha_graphics4_ImageShaderPainter.bufferIndex + 1 >= 1500 || kha_graphics4_ImageShaderPainter.lastTexture != null && tex != kha_graphics4_ImageShaderPainter.lastTexture) { this.drawBuffer(false); } 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 = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 12,left1,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 16,bottom1,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 36,left1,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 40,top1,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 60,right1,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 64,top1,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 84,right1,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 88,bottom1,true); var r = ((color & 16711680) >>> 16) * 0.00392156862745098; var g = ((color & 65280) >>> 8) * 0.00392156862745098; var b = (color & 255) * 0.00392156862745098; var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 3,opacity * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 3,opacity * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 3,opacity * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 3,opacity * 255 | 0); var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex,left,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 4,bottom,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 8,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 24,left,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 28,top,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 32,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 48,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 52,top,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 56,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 72,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 76,bottom,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 80,-5.0,true); ++kha_graphics4_ImageShaderPainter.bufferIndex; kha_graphics4_ImageShaderPainter.lastTexture = tex; } ,end: function() { if(kha_graphics4_ImageShaderPainter.bufferIndex > 0) { this.drawBuffer(true); } kha_graphics4_ImageShaderPainter.lastTexture = null; } ,__class__: kha_graphics4_ImageShaderPainter ,__properties__: {set_pipeline:"set_pipeline",get_pipeline:"get_pipeline"} }; var kha_graphics4_ColoredShaderPainter = function(g4) { this.myPipeline = null; this.g = g4; kha_graphics4_ColoredShaderPainter.bufferIndex = 0; kha_graphics4_ColoredShaderPainter.triangleBufferIndex = 0; kha_graphics4_ColoredShaderPainter.initShaders(); this.myPipeline = kha_graphics4_ColoredShaderPainter.standardColorPipeline; this.initBuffers(); }; $hxClasses["kha.graphics4.ColoredShaderPainter"] = kha_graphics4_ColoredShaderPainter; kha_graphics4_ColoredShaderPainter.__name__ = true; kha_graphics4_ColoredShaderPainter.initShaders = function() { if(kha_graphics4_ColoredShaderPainter.structure == null) { kha_graphics4_ColoredShaderPainter.structure = kha_graphics4_Graphics2.createColoredVertexStructure(); } if(kha_graphics4_ColoredShaderPainter.standardColorPipeline == null) { var pipeline = kha_graphics4_Graphics2.createColoredPipeline(kha_graphics4_ColoredShaderPainter.structure); kha_graphics4_ColoredShaderPainter.standardColorPipeline = new kha_graphics4_PerFramebufferPipelineCache(pipeline,false); } }; kha_graphics4_ColoredShaderPainter.prototype = { projectionMatrix: null ,g: null ,myPipeline: null ,get_pipeline: function() { return this.myPipeline; } ,set_pipeline: function(pipe) { this.myPipeline = pipe != null ? pipe : kha_graphics4_ColoredShaderPainter.standardColorPipeline; return this.myPipeline; } ,setProjection: function(projectionMatrix) { this.projectionMatrix = projectionMatrix; } ,initBuffers: function() { if(kha_graphics4_ColoredShaderPainter.rectVertexBuffer == null) { kha_graphics4_ColoredShaderPainter.rectVertexBuffer = new kha_graphics4_VertexBuffer(4000,kha_graphics4_ColoredShaderPainter.structure,1); kha_graphics4_ColoredShaderPainter.rectVertices = kha_graphics4_ColoredShaderPainter.rectVertexBuffer.lock(); kha_graphics4_ColoredShaderPainter.indexBuffer = new kha_graphics4_IndexBuffer(6000,0); var indices = kha_graphics4_ColoredShaderPainter.indexBuffer.lock(); var _g = 0; while(_g < 1000) { var i = _g++; var k = i * 3 * 2; indices.setUint32(k * 4,i * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp = k * 4; var k1 = i * 3 * 2 + 1; indices.setUint32(k1 * 4,i * 4 + 1,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp1 = k1 * 4; var k2 = i * 3 * 2 + 2; indices.setUint32(k2 * 4,i * 4 + 2,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp2 = k2 * 4; var k3 = i * 3 * 2 + 3; indices.setUint32(k3 * 4,i * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp3 = k3 * 4; var k4 = i * 3 * 2 + 4; indices.setUint32(k4 * 4,i * 4 + 2,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp4 = k4 * 4; var k5 = i * 3 * 2 + 5; indices.setUint32(k5 * 4,i * 4 + 3,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp5 = k5 * 4; } kha_graphics4_ColoredShaderPainter.indexBuffer.unlock(); kha_graphics4_ColoredShaderPainter.triangleVertexBuffer = new kha_graphics4_VertexBuffer(3000,kha_graphics4_ColoredShaderPainter.structure,1); kha_graphics4_ColoredShaderPainter.triangleVertices = kha_graphics4_ColoredShaderPainter.triangleVertexBuffer.lock(); kha_graphics4_ColoredShaderPainter.triangleIndexBuffer = new kha_graphics4_IndexBuffer(3000,0); var triIndices = kha_graphics4_ColoredShaderPainter.triangleIndexBuffer.lock(); var _g = 0; while(_g < 1000) { var i = _g++; var k = i * 3; triIndices.setUint32(k * 4,i * 3,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp = k * 4; var k1 = i * 3 + 1; triIndices.setUint32(k1 * 4,i * 3 + 1,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp1 = k1 * 4; var k2 = i * 3 + 2; triIndices.setUint32(k2 * 4,i * 3 + 2,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp2 = k2 * 4; } kha_graphics4_ColoredShaderPainter.triangleIndexBuffer.unlock(); } } ,setRectVertices: function(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) { var baseIndex = kha_graphics4_ColoredShaderPainter.bufferIndex * 4 * 4; kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32(baseIndex * 4,bottomleftx,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 1) * 4,bottomlefty,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 2) * 4,-5.0,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 4) * 4,topleftx,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 5) * 4,toplefty,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 6) * 4,-5.0,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 8) * 4,toprightx,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 9) * 4,toprighty,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 10) * 4,-5.0,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 12) * 4,bottomrightx,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 13) * 4,bottomrighty,true); kha_graphics4_ColoredShaderPainter.rectVertices.setFloat32((baseIndex + 14) * 4,-5.0,true); } ,setRectColors: function(opacity,color) { var baseIndex = kha_graphics4_ColoredShaderPainter.bufferIndex * 4 * 4 * 4; var a = opacity * ((color >>> 24) * 0.00392156862745098); var r = a * (((color & 16711680) >>> 16) * 0.00392156862745098); var g = a * (((color & 65280) >>> 8) * 0.00392156862745098); var b = a * ((color & 255) * 0.00392156862745098); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 12,r * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 12 + 1,g * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 12 + 2,b * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 12 + 3,a * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 28,r * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 28 + 1,g * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 28 + 2,b * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 28 + 3,a * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 44,r * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 44 + 1,g * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 44 + 2,b * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 44 + 3,a * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 60,r * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 60 + 1,g * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 60 + 2,b * 255 | 0); kha_graphics4_ColoredShaderPainter.rectVertices.setUint8(baseIndex + 60 + 3,a * 255 | 0); } ,setTriVertices: function(x1,y1,x2,y2,x3,y3) { var baseIndex = kha_graphics4_ColoredShaderPainter.triangleBufferIndex * 4 * 3; kha_graphics4_ColoredShaderPainter.triangleVertices.setFloat32(baseIndex * 4,x1,true); kha_graphics4_ColoredShaderPainter.triangleVertices.setFloat32((baseIndex + 1) * 4,y1,true); kha_graphics4_ColoredShaderPainter.triangleVertices.setFloat32((baseIndex + 2) * 4,-5.0,true); kha_graphics4_ColoredShaderPainter.triangleVertices.setFloat32((baseIndex + 4) * 4,x2,true); kha_graphics4_ColoredShaderPainter.triangleVertices.setFloat32((baseIndex + 5) * 4,y2,true); kha_graphics4_ColoredShaderPainter.triangleVertices.setFloat32((baseIndex + 6) * 4,-5.0,true); kha_graphics4_ColoredShaderPainter.triangleVertices.setFloat32((baseIndex + 8) * 4,x3,true); kha_graphics4_ColoredShaderPainter.triangleVertices.setFloat32((baseIndex + 9) * 4,y3,true); kha_graphics4_ColoredShaderPainter.triangleVertices.setFloat32((baseIndex + 10) * 4,-5.0,true); } ,setTriColors: function(opacity,color) { var baseIndex = kha_graphics4_ColoredShaderPainter.triangleBufferIndex * 4 * 4 * 3; var a = opacity * ((color >>> 24) * 0.00392156862745098); var r = a * (((color & 16711680) >>> 16) * 0.00392156862745098); var g = a * (((color & 65280) >>> 8) * 0.00392156862745098); var b = a * ((color & 255) * 0.00392156862745098); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 12,r * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 12 + 1,g * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 12 + 2,b * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 12 + 3,a * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 28,r * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 28 + 1,g * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 28 + 2,b * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 28 + 3,a * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 44,r * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 44 + 1,g * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 44 + 2,b * 255 | 0); kha_graphics4_ColoredShaderPainter.triangleVertices.setUint8(baseIndex + 44 + 3,a * 255 | 0); } ,drawBuffer: function(trisDone) { if(kha_graphics4_ColoredShaderPainter.bufferIndex == 0) { return; } if(!trisDone) { if(kha_graphics4_ColoredShaderPainter.triangleBufferIndex > 0) { this.drawTriBuffer(true); } } kha_graphics4_ColoredShaderPainter.rectVertexBuffer.unlock(kha_graphics4_ColoredShaderPainter.bufferIndex * 4); var pipeline = this.myPipeline.get(null,3); this.g.setPipeline(pipeline.pipeline); this.g.setVertexBuffer(kha_graphics4_ColoredShaderPainter.rectVertexBuffer); this.g.setIndexBuffer(kha_graphics4_ColoredShaderPainter.indexBuffer); this.g.setMatrix(pipeline.projectionLocation,this.projectionMatrix); this.g.drawIndexedVertices(0,kha_graphics4_ColoredShaderPainter.bufferIndex * 2 * 3); kha_graphics4_ColoredShaderPainter.bufferIndex = 0; kha_graphics4_ColoredShaderPainter.rectVertices = kha_graphics4_ColoredShaderPainter.rectVertexBuffer.lock(); } ,drawTriBuffer: function(rectsDone) { if(!rectsDone) { if(kha_graphics4_ColoredShaderPainter.bufferIndex > 0) { this.drawBuffer(true); } } kha_graphics4_ColoredShaderPainter.triangleVertexBuffer.unlock(kha_graphics4_ColoredShaderPainter.triangleBufferIndex * 3); var pipeline = this.myPipeline.get(null,3); this.g.setPipeline(pipeline.pipeline); this.g.setVertexBuffer(kha_graphics4_ColoredShaderPainter.triangleVertexBuffer); this.g.setIndexBuffer(kha_graphics4_ColoredShaderPainter.triangleIndexBuffer); this.g.setMatrix(pipeline.projectionLocation,this.projectionMatrix); this.g.drawIndexedVertices(0,kha_graphics4_ColoredShaderPainter.triangleBufferIndex * 3); kha_graphics4_ColoredShaderPainter.triangleBufferIndex = 0; kha_graphics4_ColoredShaderPainter.triangleVertices = kha_graphics4_ColoredShaderPainter.triangleVertexBuffer.lock(); } ,fillRect: function(opacity,color,bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) { if(kha_graphics4_ColoredShaderPainter.triangleBufferIndex > 0) { this.drawTriBuffer(true); } if(kha_graphics4_ColoredShaderPainter.bufferIndex + 1 >= 1000) { this.drawBuffer(false); } this.setRectColors(opacity,color); this.setRectVertices(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty); ++kha_graphics4_ColoredShaderPainter.bufferIndex; } ,fillTriangle: function(opacity,color,x1,y1,x2,y2,x3,y3) { if(kha_graphics4_ColoredShaderPainter.bufferIndex > 0) { this.drawBuffer(true); } if(kha_graphics4_ColoredShaderPainter.triangleBufferIndex + 1 >= 1000) { this.drawTriBuffer(false); } this.setTriColors(opacity,color); this.setTriVertices(x1,y1,x2,y2,x3,y3); ++kha_graphics4_ColoredShaderPainter.triangleBufferIndex; } ,endTris: function(rectsDone) { if(kha_graphics4_ColoredShaderPainter.triangleBufferIndex > 0) { this.drawTriBuffer(rectsDone); } } ,endRects: function(trisDone) { if(kha_graphics4_ColoredShaderPainter.bufferIndex > 0) { this.drawBuffer(trisDone); } } ,end: function() { if(kha_graphics4_ColoredShaderPainter.triangleBufferIndex > 0) { this.drawTriBuffer(false); } if(kha_graphics4_ColoredShaderPainter.bufferIndex > 0) { this.drawBuffer(false); } } ,__class__: kha_graphics4_ColoredShaderPainter ,__properties__: {set_pipeline:"set_pipeline",get_pipeline:"get_pipeline"} }; var kha_graphics4_TextShaderPainter = function(g4) { this.bakedQuadCache = new kha_AlignedQuad(); this.bilinear = false; this.myPipeline = null; this.g = g4; kha_graphics4_TextShaderPainter.bufferIndex = 0; kha_graphics4_TextShaderPainter.initShaders(); this.myPipeline = kha_graphics4_TextShaderPainter.standardTextPipeline; this.initBuffers(); }; $hxClasses["kha.graphics4.TextShaderPainter"] = kha_graphics4_TextShaderPainter; kha_graphics4_TextShaderPainter.__name__ = true; kha_graphics4_TextShaderPainter.initShaders = function() { if(kha_graphics4_TextShaderPainter.structure == null) { kha_graphics4_TextShaderPainter.structure = kha_graphics4_Graphics2.createTextVertexStructure(); } if(kha_graphics4_TextShaderPainter.standardTextPipeline == null) { var pipeline = kha_graphics4_Graphics2.createTextPipeline(kha_graphics4_TextShaderPainter.structure); kha_graphics4_TextShaderPainter.standardTextPipeline = new kha_graphics4_PerFramebufferPipelineCache(pipeline,true); } }; kha_graphics4_TextShaderPainter.findIndex = function(charCode) { var blocks = kha_KravurImage.charBlocks; var offset = 0; var _g = 0; var _g1 = blocks.length / 2 | 0; while(_g < _g1) { var i = _g++; var start = blocks[i * 2]; var end = blocks[i * 2 + 1]; if(charCode >= start && charCode <= end) { return offset + charCode - start; } offset += end - start + 1; } return 0; }; kha_graphics4_TextShaderPainter.prototype = { projectionMatrix: null ,font: null ,g: null ,myPipeline: null ,fontSize: null ,bilinear: null ,get_pipeline: function() { return this.myPipeline; } ,set_pipeline: function(pipe) { this.myPipeline = pipe != null ? pipe : kha_graphics4_TextShaderPainter.standardTextPipeline; return this.myPipeline; } ,setProjection: function(projectionMatrix) { this.projectionMatrix = projectionMatrix; } ,initBuffers: function() { if(kha_graphics4_TextShaderPainter.rectVertexBuffer == null) { kha_graphics4_TextShaderPainter.rectVertexBuffer = new kha_graphics4_VertexBuffer(4000,kha_graphics4_TextShaderPainter.structure,1); kha_graphics4_TextShaderPainter.rectVertices = kha_graphics4_TextShaderPainter.rectVertexBuffer.lock(); kha_graphics4_TextShaderPainter.indexBuffer = new kha_graphics4_IndexBuffer(6000,0); var indices = kha_graphics4_TextShaderPainter.indexBuffer.lock(); var _g = 0; while(_g < 1000) { var i = _g++; var k = i * 3 * 2; indices.setUint32(k * 4,i * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp = k * 4; var k1 = i * 3 * 2 + 1; indices.setUint32(k1 * 4,i * 4 + 1,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp1 = k1 * 4; var k2 = i * 3 * 2 + 2; indices.setUint32(k2 * 4,i * 4 + 2,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp2 = k2 * 4; var k3 = i * 3 * 2 + 3; indices.setUint32(k3 * 4,i * 4,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp3 = k3 * 4; var k4 = i * 3 * 2 + 4; indices.setUint32(k4 * 4,i * 4 + 2,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp4 = k4 * 4; var k5 = i * 3 * 2 + 5; indices.setUint32(k5 * 4,i * 4 + 3,kha_arrays_ByteArray.LITTLE_ENDIAN); var tmp5 = k5 * 4; } kha_graphics4_TextShaderPainter.indexBuffer.unlock(); } } ,setRectVertices: function(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) { var baseIndex = kha_graphics4_TextShaderPainter.bufferIndex * 9 * 4; kha_graphics4_TextShaderPainter.rectVertices.setFloat32(baseIndex * 4,bottomleftx,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 1) * 4,bottomlefty,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 2) * 4,-5.0,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 9) * 4,topleftx,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 10) * 4,toplefty,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 11) * 4,-5.0,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 18) * 4,toprightx,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 19) * 4,toprighty,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 20) * 4,-5.0,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 27) * 4,bottomrightx,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 28) * 4,bottomrighty,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 29) * 4,-5.0,true); } ,setRectTexCoords: function(left,top,right,bottom) { var baseIndex = kha_graphics4_TextShaderPainter.bufferIndex * 9 * 4; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 3) * 4,left,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 4) * 4,bottom,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 12) * 4,left,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 13) * 4,top,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 21) * 4,right,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 22) * 4,top,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 30) * 4,right,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 31) * 4,bottom,true); } ,setRectColors: function(opacity,color) { var baseIndex = kha_graphics4_TextShaderPainter.bufferIndex * 9 * 4; var a = opacity * ((color >>> 24) * 0.00392156862745098); var v = ((color & 16711680) >>> 16) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 5) * 4,v,true); var v = ((color & 65280) >>> 8) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 6) * 4,v,true); var v = (color & 255) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 7) * 4,v,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 8) * 4,a,true); var v = ((color & 16711680) >>> 16) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 14) * 4,v,true); var v = ((color & 65280) >>> 8) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 15) * 4,v,true); var v = (color & 255) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 16) * 4,v,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 17) * 4,a,true); var v = ((color & 16711680) >>> 16) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 23) * 4,v,true); var v = ((color & 65280) >>> 8) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 24) * 4,v,true); var v = (color & 255) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 25) * 4,v,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 26) * 4,a,true); var v = ((color & 16711680) >>> 16) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 32) * 4,v,true); var v = ((color & 65280) >>> 8) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 33) * 4,v,true); var v = (color & 255) * 0.00392156862745098; kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 34) * 4,v,true); kha_graphics4_TextShaderPainter.rectVertices.setFloat32((baseIndex + 35) * 4,a,true); } ,drawBuffer: function() { if(kha_graphics4_TextShaderPainter.bufferIndex == 0) { return; } kha_graphics4_TextShaderPainter.rectVertexBuffer.unlock(kha_graphics4_TextShaderPainter.bufferIndex * 4); var pipeline = this.myPipeline.get(null,3); this.g.setPipeline(pipeline.pipeline); this.g.setVertexBuffer(kha_graphics4_TextShaderPainter.rectVertexBuffer); this.g.setIndexBuffer(kha_graphics4_TextShaderPainter.indexBuffer); this.g.setMatrix(pipeline.projectionLocation,this.projectionMatrix); this.g.setTexture(pipeline.textureLocation,kha_graphics4_TextShaderPainter.lastTexture); this.g.setTextureParameters(pipeline.textureLocation,2,2,this.bilinear ? 1 : 0,this.bilinear ? 1 : 0,0); this.g.drawIndexedVertices(0,kha_graphics4_TextShaderPainter.bufferIndex * 2 * 3); this.g.setTexture(pipeline.textureLocation,null); kha_graphics4_TextShaderPainter.bufferIndex = 0; kha_graphics4_TextShaderPainter.rectVertices = kha_graphics4_TextShaderPainter.rectVertexBuffer.lock(); } ,setBilinearFilter: function(bilinear) { this.end(); this.bilinear = bilinear; } ,setFont: function(font) { this.font = js_Boot.__cast(font , kha_Kravur); } ,bakedQuadCache: null ,drawString: function(text,opacity,color,x,y,transformation) { var font = this.font._get(this.fontSize); var tex = font.getTexture(); if(kha_graphics4_TextShaderPainter.lastTexture != null && tex != kha_graphics4_TextShaderPainter.lastTexture) { this.drawBuffer(); } kha_graphics4_TextShaderPainter.lastTexture = tex; var xpos = x; var ypos = y; var _g = 0; var _g1 = text.length; while(_g < _g1) { var i = _g++; var charCode = text.charCodeAt(i); var q = font.getBakedQuad(this.bakedQuadCache,kha_graphics4_TextShaderPainter.findIndex(charCode),xpos,ypos); if(q != null) { if(kha_graphics4_TextShaderPainter.bufferIndex + 1 >= 1000) { 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 x = q.x0; var y = q.y1; if(y == null) { y = 0; } if(x == null) { x = 0; } var value_x = x; var value_y = y; 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; var x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var p0_x = x2; var p0_y = y2; var x3 = q.x0; var y3 = q.y0; if(y3 == null) { y3 = 0; } if(x3 == null) { x3 = 0; } var value_x1 = x3; var value_y1 = y3; var w1 = transformation._02 * value_x1 + transformation._12 * value_y1 + transformation._22; var x4 = (transformation._00 * value_x1 + transformation._10 * value_y1 + transformation._20) / w1; var y4 = (transformation._01 * value_x1 + transformation._11 * value_y1 + transformation._21) / w1; var x5 = x4; var y5 = y4; if(y5 == null) { y5 = 0; } if(x5 == null) { x5 = 0; } var p1_x = x5; var p1_y = y5; var x6 = q.x1; var y6 = q.y0; if(y6 == null) { y6 = 0; } if(x6 == null) { x6 = 0; } var value_x2 = x6; var value_y2 = y6; var w2 = transformation._02 * value_x2 + transformation._12 * value_y2 + transformation._22; var x7 = (transformation._00 * value_x2 + transformation._10 * value_y2 + transformation._20) / w2; var y7 = (transformation._01 * value_x2 + transformation._11 * value_y2 + transformation._21) / w2; var x8 = x7; var y8 = y7; if(y8 == null) { y8 = 0; } if(x8 == null) { x8 = 0; } var p2_x = x8; var p2_y = y8; var x9 = q.x1; var y9 = q.y1; if(y9 == null) { y9 = 0; } if(x9 == null) { x9 = 0; } var value_x3 = x9; var value_y3 = y9; var w3 = transformation._02 * value_x3 + transformation._12 * value_y3 + transformation._22; var x10 = (transformation._00 * value_x3 + transformation._10 * value_y3 + transformation._20) / w3; var y10 = (transformation._01 * value_x3 + transformation._11 * value_y3 + transformation._21) / w3; var x11 = x10; var y11 = y10; if(y11 == null) { y11 = 0; } if(x11 == null) { x11 = 0; } var p3_x = x11; var p3_y = y11; this.setRectVertices(p0_x,p0_y,p1_x,p1_y,p2_x,p2_y,p3_x,p3_y); xpos += q.xadvance; ++kha_graphics4_TextShaderPainter.bufferIndex; } } } ,drawCharacters: function(text,start,length,opacity,color,x,y,transformation) { var font = this.font._get(this.fontSize); var tex = font.getTexture(); if(kha_graphics4_TextShaderPainter.lastTexture != null && tex != kha_graphics4_TextShaderPainter.lastTexture) { this.drawBuffer(); } kha_graphics4_TextShaderPainter.lastTexture = tex; var xpos = x; var ypos = y; var _g = start; var _g1 = start + length; while(_g < _g1) { var i = _g++; var q = font.getBakedQuad(this.bakedQuadCache,kha_graphics4_TextShaderPainter.findIndex(text[i]),xpos,ypos); if(q != null) { if(kha_graphics4_TextShaderPainter.bufferIndex + 1 >= 1000) { 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 x = q.x0; var y = q.y1; if(y == null) { y = 0; } if(x == null) { x = 0; } var value_x = x; var value_y = y; 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; var x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var p0_x = x2; var p0_y = y2; var x3 = q.x0; var y3 = q.y0; if(y3 == null) { y3 = 0; } if(x3 == null) { x3 = 0; } var value_x1 = x3; var value_y1 = y3; var w1 = transformation._02 * value_x1 + transformation._12 * value_y1 + transformation._22; var x4 = (transformation._00 * value_x1 + transformation._10 * value_y1 + transformation._20) / w1; var y4 = (transformation._01 * value_x1 + transformation._11 * value_y1 + transformation._21) / w1; var x5 = x4; var y5 = y4; if(y5 == null) { y5 = 0; } if(x5 == null) { x5 = 0; } var p1_x = x5; var p1_y = y5; var x6 = q.x1; var y6 = q.y0; if(y6 == null) { y6 = 0; } if(x6 == null) { x6 = 0; } var value_x2 = x6; var value_y2 = y6; var w2 = transformation._02 * value_x2 + transformation._12 * value_y2 + transformation._22; var x7 = (transformation._00 * value_x2 + transformation._10 * value_y2 + transformation._20) / w2; var y7 = (transformation._01 * value_x2 + transformation._11 * value_y2 + transformation._21) / w2; var x8 = x7; var y8 = y7; if(y8 == null) { y8 = 0; } if(x8 == null) { x8 = 0; } var p2_x = x8; var p2_y = y8; var x9 = q.x1; var y9 = q.y1; if(y9 == null) { y9 = 0; } if(x9 == null) { x9 = 0; } var value_x3 = x9; var value_y3 = y9; var w3 = transformation._02 * value_x3 + transformation._12 * value_y3 + transformation._22; var x10 = (transformation._00 * value_x3 + transformation._10 * value_y3 + transformation._20) / w3; var y10 = (transformation._01 * value_x3 + transformation._11 * value_y3 + transformation._21) / w3; var x11 = x10; var y11 = y10; if(y11 == null) { y11 = 0; } if(x11 == null) { x11 = 0; } var p3_x = x11; var p3_y = y11; this.setRectVertices(p0_x,p0_y,p1_x,p1_y,p2_x,p2_y,p3_x,p3_y); xpos += q.xadvance; ++kha_graphics4_TextShaderPainter.bufferIndex; } } } ,end: function() { if(kha_graphics4_TextShaderPainter.bufferIndex > 0) { this.drawBuffer(); } kha_graphics4_TextShaderPainter.lastTexture = null; } ,__class__: kha_graphics4_TextShaderPainter ,__properties__: {set_pipeline:"set_pipeline",get_pipeline:"get_pipeline"} }; var kha_graphics4_Graphics2 = function(canvas) { this.scissorH = -1; this.scissorW = -1; this.scissorY = -1; this.scissorX = -1; this.scissorEnabled = false; this.lastPipeline = null; this.pipelineCache = new haxe_ds_ObjectMap(); this.myMipmapScaleQuality = 0; this.myImageScaleQuality = 0; 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.projectionMatrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1); this.setProjection(); if(kha_graphics4_Graphics2.videoPipeline == null) { kha_graphics4_Graphics2.videoPipeline = kha_graphics4_Graphics2.createImagePipeline(kha_graphics4_Graphics2.createImageVertexStructure()); kha_graphics4_Graphics2.videoPipeline.fragmentShader = kha_Shaders.painter_video_frag; kha_graphics4_Graphics2.videoPipeline.vertexShader = kha_Shaders.painter_video_vert; 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.createImageVertexStructure = function() { var structure = new kha_graphics4_VertexStructure(); structure.add("vertexPosition",2); structure.add("vertexUV",1); structure.add("vertexColor",16); return structure; }; kha_graphics4_Graphics2.createImagePipeline = function(structure) { var shaderPipeline = new kha_graphics4_PipelineState(); shaderPipeline.fragmentShader = kha_Shaders.painter_image_frag; shaderPipeline.vertexShader = kha_Shaders.painter_image_vert; shaderPipeline.inputLayout = [structure]; shaderPipeline.blendSource = 1; shaderPipeline.blendDestination = 5; shaderPipeline.alphaBlendSource = 1; shaderPipeline.alphaBlendDestination = 5; return shaderPipeline; }; kha_graphics4_Graphics2.createColoredVertexStructure = function() { var structure = new kha_graphics4_VertexStructure(); structure.add("vertexPosition",2); structure.add("vertexColor",16); return structure; }; kha_graphics4_Graphics2.createColoredPipeline = function(structure) { var shaderPipeline = new kha_graphics4_PipelineState(); shaderPipeline.fragmentShader = kha_Shaders.painter_colored_frag; shaderPipeline.vertexShader = kha_Shaders.painter_colored_vert; shaderPipeline.inputLayout = [structure]; shaderPipeline.blendSource = 1; shaderPipeline.blendDestination = 5; shaderPipeline.alphaBlendSource = 1; shaderPipeline.alphaBlendDestination = 5; return shaderPipeline; }; kha_graphics4_Graphics2.createTextVertexStructure = function() { var structure = new kha_graphics4_VertexStructure(); structure.add("vertexPosition",2); structure.add("vertexUV",1); structure.add("vertexColor",3); return structure; }; kha_graphics4_Graphics2.createTextPipeline = function(structure) { var shaderPipeline = new kha_graphics4_PipelineState(); shaderPipeline.fragmentShader = kha_Shaders.painter_text_frag; shaderPipeline.vertexShader = kha_Shaders.painter_text_vert; shaderPipeline.inputLayout = [structure]; shaderPipeline.blendSource = 3; shaderPipeline.blendDestination = 5; shaderPipeline.alphaBlendSource = 3; shaderPipeline.alphaBlendDestination = 5; return shaderPipeline; }; 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(((this.canvas) instanceof kha_Framebuffer)) { var _this = this.projectionMatrix; var tx = -width / width; var ty = -height / (0 - height); var tz = -1.0002000200020003; var m__00 = 2 / width; var m__10 = 0; var m__20 = 0; var m__30 = tx; var m__01 = 0; var m__11 = 2.0 / (0 - height); var m__21 = 0; var m__31 = ty; var m__02 = 0; var m__12 = 0; var m__22 = -0.002000200020002; var m__32 = tz; var m__03 = 0; var m__13 = 0; var m__23 = 0; var m__33 = 1; _this._00 = m__00; _this._10 = m__10; _this._20 = m__20; _this._30 = m__30; _this._01 = m__01; _this._11 = m__11; _this._21 = m__21; _this._31 = m__31; _this._02 = m__02; _this._12 = m__12; _this._22 = m__22; _this._32 = m__32; _this._03 = m__03; _this._13 = m__13; _this._23 = m__23; _this._33 = m__33; } else { if(!kha_Image.get_nonPow2Supported()) { width = kha_graphics4_Graphics2.upperPowerOfTwo(width); height = kha_graphics4_Graphics2.upperPowerOfTwo(height); } if(kha_Image.renderTargetsInvertedY()) { var _this = this.projectionMatrix; var tx = -width / width; var ty = -height / height; var tz = -1.0002000200020003; var m__00 = 2 / width; var m__10 = 0; var m__20 = 0; var m__30 = tx; var m__01 = 0; var m__11 = 2.0 / height; var m__21 = 0; var m__31 = ty; var m__02 = 0; var m__12 = 0; var m__22 = -0.002000200020002; var m__32 = tz; var m__03 = 0; var m__13 = 0; var m__23 = 0; var m__33 = 1; _this._00 = m__00; _this._10 = m__10; _this._20 = m__20; _this._30 = m__30; _this._01 = m__01; _this._11 = m__11; _this._21 = m__21; _this._31 = m__31; _this._02 = m__02; _this._12 = m__12; _this._22 = m__22; _this._32 = m__32; _this._03 = m__03; _this._13 = m__13; _this._23 = m__23; _this._33 = m__33; } else { var _this = this.projectionMatrix; var tx = -width / width; var ty = -height / (0 - height); var tz = -1.0002000200020003; var m__00 = 2 / width; var m__10 = 0; var m__20 = 0; var m__30 = tx; var m__01 = 0; var m__11 = 2.0 / (0 - height); var m__21 = 0; var m__31 = ty; var m__02 = 0; var m__12 = 0; var m__22 = -0.002000200020002; var m__32 = tz; var m__03 = 0; var m__13 = 0; var m__23 = 0; var m__33 = 1; _this._00 = m__00; _this._10 = m__10; _this._20 = m__20; _this._30 = m__30; _this._01 = m__01; _this._11 = m__11; _this._21 = m__21; _this._31 = m__31; _this._02 = m__02; _this._12 = m__12; _this._22 = m__22; _this._32 = m__32; _this._03 = m__03; _this._13 = m__13; _this._23 = m__23; _this._33 = m__33; } } 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(kha_graphics4_ColoredShaderPainter.triangleBufferIndex > 0) { _this.drawTriBuffer(false); } if(kha_graphics4_ColoredShaderPainter.bufferIndex > 0) { _this.drawBuffer(false); } this.textPainter.end(); var xw = x + img.get_width(); var yh = y + img.get_height(); var _this = this.transformations[this.transformationIndex]; var x1 = x; var y1 = yh; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var p1_x = x2; var p1_y = y2; var _this = this.transformations[this.transformationIndex]; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var 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 y1 = (_this._01 * value_x + _this._11 * value_y + _this._21) / w; var x1 = x; var y2 = y1; if(y2 == null) { y2 = 0; } if(x1 == null) { x1 = 0; } var p2_x = x1; var p2_y = y2; var _this = this.transformations[this.transformationIndex]; var x = xw; var y1 = y; if(y1 == null) { y1 = 0; } if(x == null) { x = 0; } var value_x = x; var 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var p3_x = x1; var p3_y = y1; var _this = this.transformations[this.transformationIndex]; var x = xw; var y = yh; if(y == null) { y = 0; } if(x == null) { x = 0; } var value_x = x; var value_y = y; 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var p4_x = x1; var p4_y = y1; var _this = this.imagePainter; var opacity = this.get_opacity(); var color = this.get_color(); var tex = img; if(kha_graphics4_ImageShaderPainter.bufferStart + kha_graphics4_ImageShaderPainter.bufferIndex + 1 >= 1500 || kha_graphics4_ImageShaderPainter.lastTexture != null && tex != kha_graphics4_ImageShaderPainter.lastTexture) { _this.drawBuffer(false); } 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 = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 3,a * 255 | 0); var right = tex.get_width() / tex.get_realWidth(); var bottom = tex.get_height() / tex.get_realHeight(); var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 12,0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 16,bottom,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 36,0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 40,0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 60,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 64,0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 84,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 88,bottom,true); var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex,p1_x,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 4,p1_y,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 8,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 24,p2_x,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 28,p2_y,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 32,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 48,p3_x,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 52,p3_y,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 56,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 72,p4_x,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 76,p4_y,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 80,-5.0,true); ++kha_graphics4_ImageShaderPainter.bufferIndex; kha_graphics4_ImageShaderPainter.lastTexture = tex; } ,drawScaledSubImage: function(img,sx,sy,sw,sh,dx,dy,dw,dh) { var _this = this.coloredPainter; if(kha_graphics4_ColoredShaderPainter.triangleBufferIndex > 0) { _this.drawTriBuffer(false); } if(kha_graphics4_ColoredShaderPainter.bufferIndex > 0) { _this.drawBuffer(false); } this.textPainter.end(); var _this = this.transformations[this.transformationIndex]; var x = dx; var y = dy + dh; if(y == null) { y = 0; } if(x == null) { x = 0; } var value_x = x; var value_y = y; 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var p1_x = x1; var p1_y = y1; var _this = this.transformations[this.transformationIndex]; var x = dx; var y = dy; if(y == null) { y = 0; } if(x == null) { x = 0; } var value_x = x; var value_y = y; 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var p2_x = x1; var p2_y = y1; var _this = this.transformations[this.transformationIndex]; var x = dx + dw; var y = dy; if(y == null) { y = 0; } if(x == null) { x = 0; } var value_x = x; var value_y = y; 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var p3_x = x1; var p3_y = y1; var _this = this.transformations[this.transformationIndex]; var x = dx + dw; var y = dy + dh; if(y == null) { y = 0; } if(x == null) { x = 0; } var value_x = x; var value_y = y; 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var p4_x = x1; var p4_y = y1; var _this = this.imagePainter; var opacity = this.get_opacity(); var color = this.get_color(); var tex = img; if(kha_graphics4_ImageShaderPainter.bufferStart + kha_graphics4_ImageShaderPainter.bufferIndex + 1 >= 1500 || kha_graphics4_ImageShaderPainter.lastTexture != null && tex != kha_graphics4_ImageShaderPainter.lastTexture) { _this.drawBuffer(false); } 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 = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 12,left,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 16,bottom,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 36,left,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 40,top,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 60,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 64,top,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 84,right,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 88,bottom,true); 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 = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 20 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 44 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 68 + 3,a * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92,r * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 1,g * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 2,b * 255 | 0); kha_graphics4_ImageShaderPainter.rectVertices.setUint8(baseIndex + 92 + 3,a * 255 | 0); var baseIndex = (kha_graphics4_ImageShaderPainter.bufferIndex - kha_graphics4_ImageShaderPainter.bufferStart) * 6 * 4 * 4; kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex,p1_x,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 4,p1_y,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 8,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 24,p2_x,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 28,p2_y,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 32,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 48,p3_x,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 52,p3_y,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 56,-5.0,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 72,p4_x,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 76,p4_y,true); kha_graphics4_ImageShaderPainter.rectVertices.setFloat32(baseIndex + 80,-5.0,true); ++kha_graphics4_ImageShaderPainter.bufferIndex; kha_graphics4_ImageShaderPainter.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.transformationIndex]; var x1 = x - strength / 2; var y1 = y + strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var p1_x = x2; var p1_y = y2; var _this = this.transformations[this.transformationIndex]; var x1 = x - strength / 2; var y1 = y - strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var p2_x = x2; var p2_y = y2; var _this = this.transformations[this.transformationIndex]; var x1 = x + width + strength / 2; var y1 = y - strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var p3_x = x2; var p3_y = y2; var _this = this.transformations[this.transformationIndex]; var x1 = x + width + strength / 2; var y1 = y + strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var p4_x = x2; var p4_y = y2; 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 _this = this.transformations[this.transformationIndex]; var x1 = x - strength / 2; var y1 = y + height - strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p1_x = v_x; p1_y = v_y; var _this = this.transformations[this.transformationIndex]; var x1 = x - strength / 2; var y1 = y + strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p2_x = v_x; p2_y = v_y; var _this = this.transformations[this.transformationIndex]; var x1 = x + strength / 2; var y1 = y + strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p3_x = v_x; p3_y = v_y; var _this = this.transformations[this.transformationIndex]; var x1 = x + strength / 2; var y1 = y + height - strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p4_x = v_x; p4_y = v_y; 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 _this = this.transformations[this.transformationIndex]; var x1 = x - strength / 2; var y1 = y + height + strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p1_x = v_x; p1_y = v_y; var _this = this.transformations[this.transformationIndex]; var x1 = x - strength / 2; var y1 = y + height - strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p2_x = v_x; p2_y = v_y; var _this = this.transformations[this.transformationIndex]; var x1 = x + width + strength / 2; var y1 = y + height - strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p3_x = v_x; p3_y = v_y; var _this = this.transformations[this.transformationIndex]; var x1 = x + width + strength / 2; var y1 = y + height + strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p4_x = v_x; p4_y = v_y; 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 _this = this.transformations[this.transformationIndex]; var x1 = x + width - strength / 2; var y1 = y + height - strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p1_x = v_x; p1_y = v_y; var _this = this.transformations[this.transformationIndex]; var x1 = x + width - strength / 2; var y1 = y + strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p2_x = v_x; p2_y = v_y; var _this = this.transformations[this.transformationIndex]; var x1 = x + width + strength / 2; var y1 = y + strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var v_x = x2; var v_y = y2; p3_x = v_x; p3_y = v_y; var _this = this.transformations[this.transformationIndex]; var x1 = x + width + strength / 2; var y1 = y + height - strength / 2; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var v_x = x1; var v_y = y1; p4_x = v_x; p4_y = v_y; 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 _this = this.transformations[this.transformationIndex]; var x1 = x; var y1 = y + height; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var p1_x = x2; var p1_y = y2; var _this = this.transformations[this.transformationIndex]; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var p2_x = x2; var p2_y = y2; var _this = this.transformations[this.transformationIndex]; var x1 = x + width; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var value_y = y1; 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 x2 = x1; var y2 = y1; if(y2 == null) { y2 = 0; } if(x2 == null) { x2 = 0; } var p3_x = x2; var p3_y = y2; var _this = this.transformations[this.transformationIndex]; var x1 = x + width; var y1 = y + height; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var value_x = x1; var 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var p4_x = x1; var p4_y = y1; 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(kha_graphics4_ColoredShaderPainter.triangleBufferIndex > 0) { _this.drawTriBuffer(false); } if(kha_graphics4_ColoredShaderPainter.bufferIndex > 0) { _this.drawBuffer(false); } this.textPainter.drawString(text,this.get_opacity(),this.get_color(),x,y,this.transformations[this.transformationIndex]); } ,drawCharacters: function(text,start,length,x,y) { this.imagePainter.end(); var _this = this.coloredPainter; if(kha_graphics4_ColoredShaderPainter.triangleBufferIndex > 0) { _this.drawTriBuffer(false); } if(kha_graphics4_ColoredShaderPainter.bufferIndex > 0) { _this.drawBuffer(false); } this.textPainter.drawCharacters(text,start,length,this.get_opacity(),this.get_color(),x,y,this.transformations[this.transformationIndex]); } ,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_x = 0; var vec_y = 0; if(y2 == y1) { var x = 0; var y = -1; if(y == null) { y = 0; } if(x == null) { x = 0; } var v_x = x; var v_y = y; vec_x = v_x; vec_y = v_y; } else { var x = 1; var y = -(x2 - x1) / (y2 - y1); if(y == null) { y = 0; } if(x == null) { x = 0; } var v_x = x; var v_y = y; vec_x = v_x; vec_y = v_y; } var currentLength = Math.sqrt(vec_x * vec_x + vec_y * vec_y); if(currentLength != 0) { var mul = strength / currentLength; vec_x *= mul; vec_y *= mul; } var x = x1 + 0.5 * vec_x; var y = y1 + 0.5 * vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p1_x = x; var p1_y = y; var x = x2 + 0.5 * vec_x; var y = y2 + 0.5 * vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p2_x = x; var p2_y = y; var x = p1_x - vec_x; var y = p1_y - vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p3_x = x; var p3_y = y; var x = p2_x - vec_x; var y = p2_y - vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p4_x = x; var p4_y = y; var _this = this.transformations[this.transformationIndex]; 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var v_x = x1; var v_y = y1; p1_x = v_x; p1_y = v_y; var _this = this.transformations[this.transformationIndex]; var w = _this._02 * p2_x + _this._12 * p2_y + _this._22; var x = (_this._00 * p2_x + _this._10 * p2_y + _this._20) / w; var y = (_this._01 * p2_x + _this._11 * p2_y + _this._21) / w; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var v_x = x1; var v_y = y1; p2_x = v_x; p2_y = v_y; var _this = this.transformations[this.transformationIndex]; var w = _this._02 * p3_x + _this._12 * p3_y + _this._22; var x = (_this._00 * p3_x + _this._10 * p3_y + _this._20) / w; var y = (_this._01 * p3_x + _this._11 * p3_y + _this._21) / w; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var v_x = x1; var v_y = y1; p3_x = v_x; p3_y = v_y; var _this = this.transformations[this.transformationIndex]; var w = _this._02 * p4_x + _this._12 * p4_y + _this._22; var x = (_this._00 * p4_x + _this._10 * p4_y + _this._20) / w; var y = (_this._01 * p4_x + _this._11 * p4_y + _this._21) / w; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var v_x = x1; var v_y = y1; p4_x = v_x; p4_y = v_y; 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 _this = this.transformations[this.transformationIndex]; var x = x1; var y = y1; if(y == null) { y = 0; } if(x == null) { x = 0; } var value_x = x; var value_y = y; 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var p1_x = x1; var p1_y = y1; var _this = this.transformations[this.transformationIndex]; var x = x2; var y = y2; if(y == null) { y = 0; } if(x == null) { x = 0; } var value_x = x; var value_y = y; 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var p2_x = x1; var p2_y = y1; var _this = this.transformations[this.transformationIndex]; var x = x3; var y = y3; if(y == null) { y = 0; } if(x == null) { x = 0; } var value_x = x; var value_y = y; 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; var x1 = x; var y1 = y; if(y1 == null) { y1 = 0; } if(x1 == null) { x1 = 0; } var p3_x = x1; var p3_y = y1; 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) { if(value == this.myImageScaleQuality) { return value; } this.imagePainter.setBilinearFilter(value == 1); this.textPainter.setBilinearFilter(value == 1); return this.myImageScaleQuality = value; } ,myMipmapScaleQuality: null ,get_mipmapScaleQuality: function() { return this.myMipmapScaleQuality; } ,set_mipmapScaleQuality: function(value) { this.imagePainter.setBilinearMipmapFilter(value == 1); return this.myMipmapScaleQuality = value; } ,pipelineCache: null ,lastPipeline: null ,setPipeline: function(pipeline) { if(pipeline == this.lastPipeline) { return; } this.lastPipeline = pipeline; this.flush(); if(pipeline == null) { this.imagePainter.set_pipeline(null); this.coloredPainter.set_pipeline(null); this.textPainter.set_pipeline(null); } else { var cache = this.pipelineCache.h[pipeline.__id__]; if(cache == null) { cache = new kha_graphics4_SimplePipelineCache(pipeline,true); this.pipelineCache.set(pipeline,cache); } this.imagePainter.set_pipeline(cache); this.coloredPainter.set_pipeline(cache); this.textPainter.set_pipeline(cache); } } ,scissorEnabled: null ,scissorX: null ,scissorY: null ,scissorW: null ,scissorH: null ,scissor: function(x,y,width,height) { this.scissorEnabled = true; this.scissorX = x; this.scissorY = y; this.scissorW = width; this.scissorH = height; this.flush(); this.g.scissor(x,y,width,height); } ,disableScissor: function() { this.scissorEnabled = false; this.flush(); this.g.disableScissor(); } ,begin: function(clear,clearColor) { if(clear == null) { clear = true; } if(kha_graphics4_Graphics2.current == null) { kha_graphics4_Graphics2.current = this; } else { throw haxe_Exception.thrown("End before you begin"); } 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(kha_graphics4_ColoredShaderPainter.triangleBufferIndex > 0) { _this.drawTriBuffer(false); } if(kha_graphics4_ColoredShaderPainter.bufferIndex > 0) { _this.drawBuffer(false); } } ,end: function() { this.flush(); this.g.end(); if(kha_graphics4_Graphics2.current == this) { kha_graphics4_Graphics2.current = null; } else { throw haxe_Exception.thrown("Begin before you 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.indexCount = indexCount; this.buffer = Krom.createIndexBuffer(indexCount); }; $hxClasses["kha.graphics4.IndexBuffer"] = kha_graphics4_IndexBuffer; kha_graphics4_IndexBuffer.__name__ = true; kha_graphics4_IndexBuffer.prototype = { _data: null ,buffer: null ,indexCount: null ,'delete': function() { Krom.deleteIndexBuffer(this.buffer); this.buffer = null; } ,lock: function(start,count) { this._data = Krom.lockIndexBuffer(this.buffer); if(start == null) { start = 0; } if(count == null) { count = this.indexCount; } var end = start + count; var start1 = start * 4; var end1 = end != null ? end * 4 : null; return kha_arrays_ByteArray._new(this._data.buffer,start1,end1 != null ? end1 - start1 : null); } ,unlock: function(count) { Krom.unlockIndexBuffer(this.buffer); } ,set: function() { Krom.setIndexBuffer(this.buffer); } ,count: function() { return this.indexCount; } ,__class__: kha_graphics4_IndexBuffer }; 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 = 2; this.depthWrite = false; this.depthMode = 0; this.stencilFrontMode = 0; this.stencilFrontBothPass = 0; this.stencilFrontDepthFail = 0; this.stencilFrontFail = 0; this.stencilBackMode = 0; this.stencilBackBothPass = 0; this.stencilBackDepthFail = 0; this.stencilBackFail = 0; this.stencilReferenceValue = kha_graphics4_StencilValue.Static(0); this.stencilReadMask = 255; this.stencilWriteMask = 255; this.blendSource = 1; this.blendDestination = 2; this.blendOperation = 0; this.alphaBlendSource = 1; this.alphaBlendDestination = 2; this.alphaBlendOperation = 0; this.colorWriteMasksRed = []; this.colorWriteMasksGreen = []; this.colorWriteMasksBlue = []; this.colorWriteMasksAlpha = []; this.colorWriteMasksRed.push(true); this.colorWriteMasksRed.push(true); this.colorWriteMasksRed.push(true); this.colorWriteMasksRed.push(true); this.colorWriteMasksRed.push(true); this.colorWriteMasksRed.push(true); this.colorWriteMasksRed.push(true); this.colorWriteMasksRed.push(true); this.colorWriteMasksGreen.push(true); this.colorWriteMasksGreen.push(true); this.colorWriteMasksGreen.push(true); this.colorWriteMasksGreen.push(true); this.colorWriteMasksGreen.push(true); this.colorWriteMasksGreen.push(true); this.colorWriteMasksGreen.push(true); this.colorWriteMasksGreen.push(true); this.colorWriteMasksBlue.push(true); this.colorWriteMasksBlue.push(true); this.colorWriteMasksBlue.push(true); this.colorWriteMasksBlue.push(true); this.colorWriteMasksBlue.push(true); this.colorWriteMasksBlue.push(true); this.colorWriteMasksBlue.push(true); this.colorWriteMasksBlue.push(true); this.colorWriteMasksAlpha.push(true); this.colorWriteMasksAlpha.push(true); this.colorWriteMasksAlpha.push(true); this.colorWriteMasksAlpha.push(true); this.colorWriteMasksAlpha.push(true); this.colorWriteMasksAlpha.push(true); this.colorWriteMasksAlpha.push(true); this.colorWriteMasksAlpha.push(true); this.colorAttachmentCount = 1; this.colorAttachments = []; this.colorAttachments.push(0); this.colorAttachments.push(0); this.colorAttachments.push(0); this.colorAttachments.push(0); this.colorAttachments.push(0); this.colorAttachments.push(0); this.colorAttachments.push(0); this.colorAttachments.push(0); this.depthStencilAttachment = 0; 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 ,stencilFrontMode: null ,stencilFrontBothPass: null ,stencilFrontDepthFail: null ,stencilFrontFail: null ,stencilBackMode: null ,stencilBackBothPass: null ,stencilBackDepthFail: null ,stencilBackFail: null ,stencilReferenceValue: null ,stencilReadMask: null ,stencilWriteMask: null ,blendSource: null ,blendDestination: null ,blendOperation: null ,alphaBlendSource: null ,alphaBlendDestination: null ,alphaBlendOperation: null ,colorWriteMasksRed: null ,colorWriteMasksGreen: null ,colorWriteMasksBlue: null ,colorWriteMasksAlpha: null ,colorAttachmentCount: null ,colorAttachments: null ,depthStencilAttachment: null ,set_colorWriteMask: function(value) { var value1 = this.colorWriteMasksAlpha[0] = value; var value = this.colorWriteMasksGreen[0] = value1; var value1 = this.colorWriteMasksBlue[0] = value; return this.colorWriteMasksRed[0] = value1; } ,get_colorWriteMaskRed: function() { return this.colorWriteMasksRed[0]; } ,set_colorWriteMaskRed: function(value) { return this.colorWriteMasksRed[0] = value; } ,get_colorWriteMaskGreen: function() { return this.colorWriteMasksGreen[0]; } ,set_colorWriteMaskGreen: function(value) { return this.colorWriteMasksGreen[0] = value; } ,get_colorWriteMaskBlue: function() { return this.colorWriteMasksBlue[0]; } ,set_colorWriteMaskBlue: function(value) { return this.colorWriteMasksBlue[0] = value; } ,get_colorWriteMaskAlpha: function() { return this.colorWriteMasksAlpha[0]; } ,set_colorWriteMaskAlpha: function(value) { return this.colorWriteMasksAlpha[0] = value; } ,conservativeRasterization: null ,__class__: kha_graphics4_PipelineStateBase ,__properties__: {set_colorWriteMaskAlpha:"set_colorWriteMaskAlpha",get_colorWriteMaskAlpha:"get_colorWriteMaskAlpha",set_colorWriteMaskBlue:"set_colorWriteMaskBlue",get_colorWriteMaskBlue:"get_colorWriteMaskBlue",set_colorWriteMaskGreen:"set_colorWriteMaskGreen",get_colorWriteMaskGreen:"get_colorWriteMaskGreen",set_colorWriteMaskRed:"set_colorWriteMaskRed",get_colorWriteMaskRed:"get_colorWriteMaskRed",set_colorWriteMask:"set_colorWriteMask"} }; var kha_graphics4_PipelineState = function() { kha_graphics4_PipelineStateBase.call(this); this.pipeline = Krom.createPipeline(); }; $hxClasses["kha.graphics4.PipelineState"] = kha_graphics4_PipelineState; kha_graphics4_PipelineState.__name__ = true; kha_graphics4_PipelineState.convertBlendingFactor = function(factor) { switch(factor) { case 0:case 1: return 0; case 2: return 1; case 3: return 2; case 4: return 3; case 5: return 4; case 6: return 5; case 7: return 6; case 8: return 7; case 9: return 8; case 10: return 9; } }; kha_graphics4_PipelineState.__super__ = kha_graphics4_PipelineStateBase; kha_graphics4_PipelineState.prototype = $extend(kha_graphics4_PipelineStateBase.prototype,{ pipeline: null ,'delete': function() { Krom.deletePipeline(this.pipeline); this.pipeline = null; } ,compile: function() { var structure0 = this.inputLayout.length > 0 ? this.inputLayout[0] : null; var structure1 = this.inputLayout.length > 1 ? this.inputLayout[1] : null; var structure2 = this.inputLayout.length > 2 ? this.inputLayout[2] : null; var structure3 = this.inputLayout.length > 3 ? this.inputLayout[3] : null; var gs = this.geometryShader != null ? this.geometryShader.shader : null; var tcs = this.tessellationControlShader != null ? this.tessellationControlShader.shader : null; var tes = this.tessellationEvaluationShader != null ? this.tessellationEvaluationShader.shader : null; var stencilReferenceValue = 0; var _g = this.stencilReferenceValue; if(_g._hx_index == 1) { var value = _g.value; stencilReferenceValue = value; } Krom.compilePipeline(this.pipeline,structure0,structure1,structure2,structure3,this.inputLayout.length,this.vertexShader.shader,this.fragmentShader.shader,gs,tcs,tes,{ cullMode : this.cullMode, depthWrite : this.depthWrite, depthMode : this.depthMode, stencilMode : this.stencilFrontMode, stencilBothPass : this.stencilFrontBothPass, stencilDepthFail : this.stencilFrontDepthFail, stencilFail : this.stencilFrontFail, stencilReferenceValue : stencilReferenceValue, stencilReadMask : this.stencilReadMask, stencilWriteMask : this.stencilWriteMask, blendSource : kha_graphics4_PipelineState.convertBlendingFactor(this.blendSource), blendDestination : kha_graphics4_PipelineState.convertBlendingFactor(this.blendDestination), alphaBlendSource : kha_graphics4_PipelineState.convertBlendingFactor(this.alphaBlendSource), alphaBlendDestination : kha_graphics4_PipelineState.convertBlendingFactor(this.alphaBlendDestination), colorWriteMaskRed : this.colorWriteMasksRed, colorWriteMaskGreen : this.colorWriteMasksGreen, colorWriteMaskBlue : this.colorWriteMasksBlue, colorWriteMaskAlpha : this.colorWriteMasksAlpha, conservativeRasterization : this.conservativeRasterization}); } ,set: function() { Krom.setPipeline(this.pipeline); } ,getConstantLocation: function(name) { return Krom.getConstantLocation(this.pipeline,name); } ,getTextureUnit: function(name) { return Krom.getTextureUnit(this.pipeline,name); } ,__class__: kha_graphics4_PipelineState }); var kha_graphics4_StencilValue = $hxEnums["kha.graphics4.StencilValue"] = { __ename__:true,__constructs__:null ,Dynamic: {_hx_name:"Dynamic",_hx_index:0,__enum__:"kha.graphics4.StencilValue",toString:$estr} ,Static: ($_=function(value) { return {_hx_index:1,value:value,__enum__:"kha.graphics4.StencilValue",toString:$estr}; },$_._hx_name="Static",$_.__params__ = ["value"],$_) }; kha_graphics4_StencilValue.__constructs__ = [kha_graphics4_StencilValue.Dynamic,kha_graphics4_StencilValue.Static]; var kha_graphics4_TessellationControlShader = function(sources,names) { this.shader = Krom.createTessellationControlShader(sources[0].bytes.b.bufferValue,names[0]); }; $hxClasses["kha.graphics4.TessellationControlShader"] = kha_graphics4_TessellationControlShader; kha_graphics4_TessellationControlShader.__name__ = true; kha_graphics4_TessellationControlShader.prototype = { shader: null ,'delete': function() { Krom.deleteShader(this.shader); this.shader = null; } ,__class__: kha_graphics4_TessellationControlShader }; var kha_graphics4_TessellationEvaluationShader = function(sources,names) { this.shader = Krom.createTessellationEvaluationShader(sources[0].bytes.b.bufferValue,names[0]); }; $hxClasses["kha.graphics4.TessellationEvaluationShader"] = kha_graphics4_TessellationEvaluationShader; kha_graphics4_TessellationEvaluationShader.__name__ = true; kha_graphics4_TessellationEvaluationShader.prototype = { shader: null ,'delete': function() { Krom.deleteShader(this.shader); this.shader = null; } ,__class__: kha_graphics4_TessellationEvaluationShader }; var kha_graphics4_TextureUnit = function() { }; $hxClasses["kha.graphics4.TextureUnit"] = kha_graphics4_TextureUnit; kha_graphics4_TextureUnit.__name__ = true; kha_graphics4_TextureUnit.__isInterface__ = true; var kha_graphics4_VertexBuffer = function(vertexCount,structure,usage,instanceDataStepRate,canRead) { if(canRead == null) { canRead = false; } if(instanceDataStepRate == null) { instanceDataStepRate = 0; } this.lockEnd = 0; this.lockStart = 0; this.vertexCount = vertexCount; this.structure = structure; this.mySize = vertexCount; this.buffer = Krom.createVertexBuffer(vertexCount,structure.elements,usage,instanceDataStepRate); }; $hxClasses["kha.graphics4.VertexBuffer"] = kha_graphics4_VertexBuffer; kha_graphics4_VertexBuffer.__name__ = true; kha_graphics4_VertexBuffer.prototype = { buffer: null ,_data: null ,vertexCount: null ,structure: null ,mySize: null ,lockStart: null ,lockEnd: null ,'delete': function() { Krom.deleteVertexBuffer(this.buffer); this.buffer = null; } ,lock: function(start,count) { this.lockStart = start != null ? start : 0; this.lockEnd = count != null ? start + count : this.mySize; this._data = kha_arrays_ByteArray._new(Krom.lockVertexBuffer(this.buffer,this.lockStart,this.lockEnd)); return this._data; } ,lockInt16: function(start,count) { return kha_arrays_Int16Array._new(this.lock(start,count).buffer); } ,unlock: function(count) { if(count != null) { this.lockEnd = this.lockStart + count; } Krom.unlockVertexBuffer(this.buffer,this.lockEnd); } ,stride: function() { return this.structure.byteSize(); } ,count: function() { return this.vertexCount; } ,set: function(offset) { Krom.setVertexBuffer(this.buffer); return 0; } ,__class__: kha_graphics4_VertexBuffer }; var kha_graphics4_VertexData = {}; kha_graphics4_VertexData.getStride = function(vertexData) { switch(vertexData) { case 0: return 4; case 1: return 8; case 2: return 12; case 3: return 16; case 4: return 64; case 5: return 1; case 6: return 1; case 7: return 1; case 8: return 1; case 9: return 2; case 10: return 2; case 11: return 2; case 12: return 2; case 13: return 4; case 14: return 4; case 15: return 4; case 16: return 4; case 17: return 2; case 18: return 2; case 19: return 2; case 20: return 2; case 21: return 4; case 22: return 4; case 23: return 4; case 24: return 4; case 25: return 8; case 26: return 8; case 27: return 8; case 28: return 8; case 29: return 4; case 30: return 4; case 31: return 8; case 32: return 8; case 33: return 12; case 34: return 12; case 35: return 16; case 36: return 16; } }; 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,names) { if(sources != null) { this.shader = Krom.createVertexShader(sources[0].bytes.b.bufferValue,names[0]); } }; $hxClasses["kha.graphics4.VertexShader"] = kha_graphics4_VertexShader; kha_graphics4_VertexShader.__name__ = true; kha_graphics4_VertexShader.fromSource = function(source) { var shader = new kha_graphics4_VertexShader(null,null); shader.shader = Krom.createVertexShaderFromSource(source); return shader; }; kha_graphics4_VertexShader.prototype = { shader: null ,'delete': function() { Krom.deleteShader(this.shader); this.shader = null; } ,__class__: kha_graphics4_VertexShader }; var kha_graphics4_VertexStructure = function() { this.elements = []; this.instanced = false; }; $hxClasses["kha.graphics4.VertexStructure"] = kha_graphics4_VertexStructure; kha_graphics4_VertexStructure.__name__ = true; kha_graphics4_VertexStructure.dataByteSize = function(data) { switch(data) { case 0: return 4; case 1: return 8; case 2: return 12; case 3: return 16; case 4: return 64; case 5:case 6:case 7:case 8: return 1; case 9:case 10:case 11:case 12: return 2; case 13:case 14:case 15:case 16: return 4; case 17:case 18:case 19:case 20: return 2; case 21:case 22:case 23:case 24: return 4; case 25:case 26:case 27:case 28: return 8; case 29:case 30: return 4; case 31:case 32: return 8; case 33:case 34: return 12; case 35:case 36: return 16; } }; kha_graphics4_VertexStructure.prototype = { elements: null ,instanced: 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 _g = 0; var _g1 = this.elements.length; while(_g < _g1) { var i = _g++; byteSize += kha_graphics4_VertexStructure.dataByteSize(this.elements[i].data); } return byteSize; } ,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.connected = false; 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.notifyOnConnect = function(connectListener,disconnectListener) { if(connectListener != null) { kha_input_Gamepad.connectListeners.push(connectListener); } if(disconnectListener != null) { kha_input_Gamepad.disconnectListeners.push(disconnectListener); } }; kha_input_Gamepad.removeConnect = function(connectListener,disconnectListener) { if(connectListener != null) { HxOverrides.remove(kha_input_Gamepad.connectListeners,connectListener); } if(disconnectListener != null) { HxOverrides.remove(kha_input_Gamepad.disconnectListeners,disconnectListener); } }; kha_input_Gamepad.sendConnectEvent = function(index) { kha_input_Gamepad.instances[index].connected = true; var _g = 0; var _g1 = kha_input_Gamepad.connectListeners; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(index); } }; kha_input_Gamepad.sendDisconnectEvent = function(index) { kha_input_Gamepad.instances[index].connected = false; var _g = 0; var _g1 = kha_input_Gamepad.disconnectListeners; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(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 ,vendor: null ,connected: null ,rumble: function(leftAmount,rightAmount) { kha_SystemImpl.setGamepadRumble(this.index,leftAmount,rightAmount); } ,get_id: function() { return kha_SystemImpl.getGamepadId(this.index); } ,get_vendor: function() { return kha_SystemImpl.getGamepadVendor(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 ,__properties__: {get_vendor:"get_vendor",get_id:"get_id"} }; var kha_input_BlockInterventions = $hxEnums["kha.input.BlockInterventions"] = { __ename__:true,__constructs__:null ,Default: {_hx_name:"Default",_hx_index:0,__enum__:"kha.input.BlockInterventions",toString:$estr} ,Full: {_hx_name:"Full",_hx_index:1,__enum__:"kha.input.BlockInterventions",toString:$estr} ,None: {_hx_name:"None",_hx_index:2,__enum__:"kha.input.BlockInterventions",toString:$estr} ,Custom: ($_=function(func) { return {_hx_index:3,func:func,__enum__:"kha.input.BlockInterventions",toString:$estr}; },$_._hx_name="Custom",$_.__params__ = ["func"],$_) }; kha_input_BlockInterventions.__constructs__ = [kha_input_BlockInterventions.Default,kha_input_BlockInterventions.Full,kha_input_BlockInterventions.None,kha_input_BlockInterventions.Custom]; var kha_netsync_Controller = function() { this.__id = kha_netsync_ControllerBuilder.nextId++; this._inputBuffer = new haxe_io_Bytes(new ArrayBuffer(1)); }; $hxClasses["kha.netsync.Controller"] = kha_netsync_Controller; kha_netsync_Controller.__name__ = true; kha_netsync_Controller.prototype = { __id: null ,_inputBufferIndex: null ,_inputBuffer: null ,_id: function() { return this.__id; } ,_receive: function(bytes) { } ,__class__: kha_netsync_Controller }; var kha_input_Keyboard = $hx_exports["kha"]["input"]["Keyboard"] = function() { kha_netsync_Controller.call(this); this.downListeners = []; this.upListeners = []; this.pressListeners = []; 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.disableSystemInterventions = function(behavior) { kha_input_Keyboard.keyBehavior = behavior; }; kha_input_Keyboard.__super__ = kha_netsync_Controller; kha_input_Keyboard.prototype = $extend(kha_netsync_Controller.prototype,{ notify: function(downListener,upListener,pressListener) { if(downListener != null) { this.downListeners.push(downListener); } if(upListener != null) { this.upListeners.push(upListener); } if(pressListener != null) { this.pressListeners.push(pressListener); } } ,remove: function(downListener,upListener,pressListener) { if(downListener != null) { HxOverrides.remove(this.downListeners,downListener); } if(upListener != null) { HxOverrides.remove(this.upListeners,upListener); } if(pressListener != null) { HxOverrides.remove(this.pressListeners,pressListener); } } ,show: function() { } ,hide: function() { } ,downListeners: null ,upListeners: null ,pressListeners: null ,sendDownEvent: function(code) { var _g = 0; var _g1 = this.downListeners; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(code); } } ,sendUpEvent: function(code) { var _g = 0; var _g1 = this.upListeners; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(code); } } ,sendPressEvent: function(char) { var _g = 0; var _g1 = this.pressListeners; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(char); } } ,_receive: function(bytes) { } ,__class__: kha_input_Keyboard }); var kha_input_MouseEventBlockBehavior = $hxEnums["kha.input.MouseEventBlockBehavior"] = { __ename__:true,__constructs__:null ,Full: {_hx_name:"Full",_hx_index:0,__enum__:"kha.input.MouseEventBlockBehavior",toString:$estr} ,None: {_hx_name:"None",_hx_index:1,__enum__:"kha.input.MouseEventBlockBehavior",toString:$estr} ,Custom: ($_=function(func) { return {_hx_index:2,func:func,__enum__:"kha.input.MouseEventBlockBehavior",toString:$estr}; },$_._hx_name="Custom",$_.__params__ = ["func"],$_) }; kha_input_MouseEventBlockBehavior.__constructs__ = [kha_input_MouseEventBlockBehavior.Full,kha_input_MouseEventBlockBehavior.None,kha_input_MouseEventBlockBehavior.Custom]; var kha_input_MouseCursor = $hxEnums["kha.input.MouseCursor"] = { __ename__:true,__constructs__:null ,Default: {_hx_name:"Default",_hx_index:0,__enum__:"kha.input.MouseCursor",toString:$estr} ,Pointer: {_hx_name:"Pointer",_hx_index:1,__enum__:"kha.input.MouseCursor",toString:$estr} ,Text: {_hx_name:"Text",_hx_index:2,__enum__:"kha.input.MouseCursor",toString:$estr} ,EastWestResize: {_hx_name:"EastWestResize",_hx_index:3,__enum__:"kha.input.MouseCursor",toString:$estr} ,NorthSouthResize: {_hx_name:"NorthSouthResize",_hx_index:4,__enum__:"kha.input.MouseCursor",toString:$estr} ,NorthEastResize: {_hx_name:"NorthEastResize",_hx_index:5,__enum__:"kha.input.MouseCursor",toString:$estr} ,SouthEastResize: {_hx_name:"SouthEastResize",_hx_index:6,__enum__:"kha.input.MouseCursor",toString:$estr} ,NorthWestResize: {_hx_name:"NorthWestResize",_hx_index:7,__enum__:"kha.input.MouseCursor",toString:$estr} ,SouthWestResize: {_hx_name:"SouthWestResize",_hx_index:8,__enum__:"kha.input.MouseCursor",toString:$estr} ,Grab: {_hx_name:"Grab",_hx_index:9,__enum__:"kha.input.MouseCursor",toString:$estr} ,Grabbing: {_hx_name:"Grabbing",_hx_index:10,__enum__:"kha.input.MouseCursor",toString:$estr} ,NotAllowed: {_hx_name:"NotAllowed",_hx_index:11,__enum__:"kha.input.MouseCursor",toString:$estr} ,Wait: {_hx_name:"Wait",_hx_index:12,__enum__:"kha.input.MouseCursor",toString:$estr} ,Crosshair: {_hx_name:"Crosshair",_hx_index:13,__enum__:"kha.input.MouseCursor",toString:$estr} ,Custom: ($_=function(image) { return {_hx_index:14,image:image,__enum__:"kha.input.MouseCursor",toString:$estr}; },$_._hx_name="Custom",$_.__params__ = ["image"],$_) }; kha_input_MouseCursor.__constructs__ = [kha_input_MouseCursor.Default,kha_input_MouseCursor.Pointer,kha_input_MouseCursor.Text,kha_input_MouseCursor.EastWestResize,kha_input_MouseCursor.NorthSouthResize,kha_input_MouseCursor.NorthEastResize,kha_input_MouseCursor.SouthEastResize,kha_input_MouseCursor.NorthWestResize,kha_input_MouseCursor.SouthWestResize,kha_input_MouseCursor.Grab,kha_input_MouseCursor.Grabbing,kha_input_MouseCursor.NotAllowed,kha_input_MouseCursor.Wait,kha_input_MouseCursor.Crosshair,kha_input_MouseCursor.Custom]; var kha_input_Mouse = $hx_exports["kha"]["input"]["Mouse"] = function() { kha_netsync_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.setWheelEventBlockBehavior = function(behavior) { kha_input_Mouse.wheelEventBlockBehavior = behavior; }; kha_input_Mouse.__super__ = kha_netsync_Controller; kha_input_Mouse.prototype = $extend(kha_netsync_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 : "kha/input/Mouse.hx", lineNumber : 152, className : "kha.input.Mouse", methodName : "removeWindowed"}); } } else { haxe_Log.trace("no downListeners were ever registered",{ fileName : "kha/input/Mouse.hx", lineNumber : 156, 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 : "kha/input/Mouse.hx", lineNumber : 166, className : "kha.input.Mouse", methodName : "removeWindowed"}); } } else { haxe_Log.trace("no upListeners were ever registered",{ fileName : "kha/input/Mouse.hx", lineNumber : 170, 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 : "kha/input/Mouse.hx", lineNumber : 180, className : "kha.input.Mouse", methodName : "removeWindowed"}); } } else { haxe_Log.trace("no moveListeners were ever registered",{ fileName : "kha/input/Mouse.hx", lineNumber : 184, 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 : "kha/input/Mouse.hx", lineNumber : 194, className : "kha.input.Mouse", methodName : "removeWindowed"}); } } else { haxe_Log.trace("no wheelListeners were ever registered",{ fileName : "kha/input/Mouse.hx", lineNumber : 198, 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 : "kha/input/Mouse.hx", lineNumber : 208, className : "kha.input.Mouse", methodName : "removeWindowed"}); } } else { haxe_Log.trace("no leaveListeners were ever registered",{ fileName : "kha/input/Mouse.hx", lineNumber : 212, className : "kha.input.Mouse", methodName : "removeWindowed"}); } } } ,lock: function() { } ,unlock: function() { } ,canLock: function() { return false; } ,isLocked: function() { return false; } ,notifyOnLockChange: function(change,error) { } ,removeFromLockChange: function(change,error) { } ,hideSystemCursor: function() { } ,showSystemCursor: function() { } ,setSystemCursor: function(cursor) { } ,windowDownListeners: null ,windowUpListeners: null ,windowMoveListeners: null ,windowWheelListeners: null ,windowLeaveListeners: null ,sendLeaveEvent: function(windowId) { 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(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(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(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(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) { } ,__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,{ lock: function() { kha_SystemImpl.lockMouse(); } ,unlock: function() { kha_SystemImpl.unlockMouse(); } ,canLock: function() { return kha_SystemImpl.canLockMouse(); } ,isLocked: function() { return kha_SystemImpl.isMouseLocked(); } ,notifyOnLockChange: function(func,error) { kha_SystemImpl.notifyOfMouseLockChange(func,error); } ,removeFromLockChange: function(func,error) { kha_SystemImpl.removeFromMouseLockChange(func,error); } ,hideSystemCursor: function() { kha_SystemImpl.hideSystemCursor(); } ,showSystemCursor: function() { kha_SystemImpl.showSystemCursor(); } ,_receive: function(bytes) { } ,__class__: kha_input_MouseImpl }); var kha_input_Pen = function() { kha_input_Pen.instance = this; }; $hxClasses["kha.input.Pen"] = kha_input_Pen; kha_input_Pen.__name__ = true; kha_input_Pen.get = function(num) { if(num == null) { num = 0; } return kha_SystemImpl.getPen(num); }; kha_input_Pen.prototype = { notify: function(downListener,upListener,moveListener) { this.notifyWindowed(0,downListener,upListener,moveListener); } ,notifyEraser: function(eraserDownListener,eraserUpListener,eraserMoveListener) { this.notifyEraserWindowed(0,eraserDownListener,eraserUpListener,eraserMoveListener); } ,remove: function(downListener,upListener,moveListener) { this.removeWindowed(0,downListener,upListener,moveListener); } ,removeEraser: function(eraserDownListener,eraserUpListener,eraserMoveListener) { this.removeEraserWindowed(0,eraserDownListener,eraserUpListener,eraserMoveListener); } ,notifyWindowed: function(windowId,downListener,upListener,moveListener) { 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); } } ,notifyEraserWindowed: function(windowId,eraserDownListener,eraserUpListener,eraserMoveListener) { if(eraserDownListener != null) { if(this.windowEraserDownListeners == null) { this.windowEraserDownListeners = []; } while(this.windowEraserDownListeners.length <= windowId) this.windowEraserDownListeners.push([]); this.windowEraserDownListeners[windowId].push(eraserDownListener); } if(eraserUpListener != null) { if(this.windowEraserUpListeners == null) { this.windowEraserUpListeners = []; } while(this.windowEraserUpListeners.length <= windowId) this.windowEraserUpListeners.push([]); this.windowEraserUpListeners[windowId].push(eraserUpListener); } if(eraserMoveListener != null) { if(this.windowEraserMoveListeners == null) { this.windowEraserMoveListeners = []; } while(this.windowEraserMoveListeners.length <= windowId) this.windowEraserMoveListeners.push([]); this.windowEraserMoveListeners[windowId].push(eraserMoveListener); } } ,removeWindowed: function(windowId,downListener,upListener,moveListener) { if(downListener != null && this.windowDownListeners != null) { if(windowId < this.windowDownListeners.length) { HxOverrides.remove(this.windowDownListeners[windowId],downListener); } } if(upListener != null && this.windowUpListeners != null) { if(windowId < this.windowUpListeners.length) { HxOverrides.remove(this.windowUpListeners[windowId],upListener); } } if(moveListener != null && this.windowMoveListeners != null) { if(windowId < this.windowMoveListeners.length) { HxOverrides.remove(this.windowMoveListeners[windowId],moveListener); } } } ,removeEraserWindowed: function(windowId,eraserDownListener,eraserUpListener,eraserMoveListener) { if(eraserDownListener != null && this.windowEraserDownListeners != null) { if(windowId < this.windowEraserDownListeners.length) { HxOverrides.remove(this.windowEraserDownListeners[windowId],eraserDownListener); } } if(eraserUpListener != null && this.windowEraserUpListeners != null) { if(windowId < this.windowEraserUpListeners.length) { HxOverrides.remove(this.windowEraserUpListeners[windowId],eraserUpListener); } } if(eraserMoveListener != null && this.windowEraserMoveListeners != null) { if(windowId < this.windowEraserMoveListeners.length) { HxOverrides.remove(this.windowEraserMoveListeners[windowId],eraserMoveListener); } } } ,windowDownListeners: null ,windowUpListeners: null ,windowMoveListeners: null ,windowEraserDownListeners: null ,windowEraserUpListeners: null ,windowEraserMoveListeners: null ,sendDownEvent: function(windowId,x,y,pressure) { if(this.windowDownListeners != null) { var _g = 0; var _g1 = this.windowDownListeners[windowId]; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(x,y,pressure); } } } ,sendUpEvent: function(windowId,x,y,pressure) { if(this.windowUpListeners != null) { var _g = 0; var _g1 = this.windowUpListeners[windowId]; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(x,y,pressure); } } } ,sendMoveEvent: function(windowId,x,y,pressure) { if(this.windowMoveListeners != null) { var _g = 0; var _g1 = this.windowMoveListeners[windowId]; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(x,y,pressure); } } } ,sendEraserDownEvent: function(windowId,x,y,pressure) { if(this.windowEraserDownListeners != null) { var _g = 0; var _g1 = this.windowEraserDownListeners[windowId]; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(x,y,pressure); } } } ,sendEraserUpEvent: function(windowId,x,y,pressure) { if(this.windowEraserUpListeners != null) { var _g = 0; var _g1 = this.windowEraserUpListeners[windowId]; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(x,y,pressure); } } } ,sendEraserMoveEvent: function(windowId,x,y,pressure) { if(this.windowEraserMoveListeners != null) { var _g = 0; var _g1 = this.windowEraserMoveListeners[windowId]; while(_g < _g1.length) { var listener = _g1[_g]; ++_g; listener(x,y,pressure); } } } ,__class__: kha_input_Pen }; var kha_input_TouchDownEventBlockBehavior = $hxEnums["kha.input.TouchDownEventBlockBehavior"] = { __ename__:true,__constructs__:null ,Full: {_hx_name:"Full",_hx_index:0,__enum__:"kha.input.TouchDownEventBlockBehavior",toString:$estr} ,None: {_hx_name:"None",_hx_index:1,__enum__:"kha.input.TouchDownEventBlockBehavior",toString:$estr} ,Custom: ($_=function(func) { return {_hx_index:2,func:func,__enum__:"kha.input.TouchDownEventBlockBehavior",toString:$estr}; },$_._hx_name="Custom",$_.__params__ = ["func"],$_) }; kha_input_TouchDownEventBlockBehavior.__constructs__ = [kha_input_TouchDownEventBlockBehavior.Full,kha_input_TouchDownEventBlockBehavior.None,kha_input_TouchDownEventBlockBehavior.Custom]; 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.setTouchDownEventBlockBehavior = function(behavior) { kha_input_Surface.touchDownEventBlockBehavior = behavior; }; 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) { HxOverrides.remove(this.moveListeners,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.bytes = bytes; }; $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.toText = function(chars,length) { var value = ""; var _g = 0; var _g1 = length; while(_g < _g1) { var i = _g++; value += String.fromCodePoint(chars[i]); } return value; }; kha_internal_BytesBlob.prototype = { bytes: 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; } ,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(); } ,readUtf8String: function() { return this.bytes.toString(); } ,toBytes: function() { return this.bytes; } ,unload: function() { this.bytes = null; } ,__class__: kha_internal_BytesBlob ,__properties__: {get_length:"get_length"} }; var kha_krom_Graphics = function(renderTarget) { this.renderTarget = renderTarget; }; $hxClasses["kha.krom.Graphics"] = kha_krom_Graphics; kha_krom_Graphics.__name__ = true; kha_krom_Graphics.__interfaces__ = [kha_graphics4_Graphics]; kha_krom_Graphics.prototype = { renderTarget: null ,begin: function(additionalRenderTargets) { Krom.begin(this.renderTarget,additionalRenderTargets); } ,beginFace: function(face) { Krom.beginFace(this.renderTarget,face); } ,beginEye: function(eye) { } ,end: function() { Krom.end(); } ,flush: function() { } ,vsynced: function() { return true; } ,refreshRate: function() { return 60; } ,clear: function(color,depth,stencil) { var flags = 0; if(color != null) { flags |= 1; } if(depth != null) { flags |= 2; } if(stencil != null) { flags |= 4; } Krom.clear(flags,color == null ? 0 : color,depth,stencil); } ,viewport: function(x,y,width,height) { Krom.viewport(x,y,width,height); } ,setVertexBuffer: function(vertexBuffer) { vertexBuffer.set(0); } ,setVertexBuffers: function(vertexBuffers) { Krom.setVertexBuffers(vertexBuffers); } ,setIndexBuffer: function(indexBuffer) { indexBuffer.set(); } ,setCubeMap: function(unit,cubeMap) { if(cubeMap == null) { return; } if(cubeMap.texture_ != null) { Krom.setTexture(unit,cubeMap.texture_); } else { Krom.setRenderTarget(unit,cubeMap.renderTarget_); } } ,setCubeMapDepth: function(unit,cubeMap) { if(cubeMap == null) { return; } Krom.setTextureDepth(unit,cubeMap.renderTarget_); } ,setTexture: function(unit,texture) { if(texture == null) { return; } if(texture.texture_ != null) { Krom.setTexture(unit,texture.texture_); } else { Krom.setRenderTarget(unit,texture.renderTarget_); } } ,setTextureDepth: function(unit,texture) { if(texture == null) { return; } Krom.setTextureDepth(unit,texture.renderTarget_); } ,setTextureArray: function(unit,texture) { } ,setVideoTexture: function(unit,texture) { } ,setImageTexture: function(unit,texture) { if(texture == null) { return; } Krom.setImageTexture(unit,texture.texture_); } ,setTextureParameters: function(texunit,uAddressing,vAddressing,minificationFilter,magnificationFilter,mipmapFilter) { Krom.setTextureParameters(texunit,uAddressing,vAddressing,minificationFilter,magnificationFilter,mipmapFilter); } ,setTexture3DParameters: function(texunit,uAddressing,vAddressing,wAddressing,minificationFilter,magnificationFilter,mipmapFilter) { Krom.setTexture3DParameters(texunit,uAddressing,vAddressing,wAddressing,minificationFilter,magnificationFilter,mipmapFilter); } ,setTextureCompareMode: function(texunit,enabled) { Krom.setTextureCompareMode(texunit,enabled); } ,setCubeMapCompareMode: function(texunit,enabled) { Krom.setCubeMapCompareMode(texunit,enabled); } ,maxBoundTextures: function() { return 8; } ,setPipeline: function(pipeline) { pipeline.set(); } ,setStencilReferenceValue: function(value) { } ,setBool: function(location,value) { Krom.setBool(location,value); } ,setInt: function(location,value) { Krom.setInt(location,value); } ,setInt2: function(location,value1,value2) { } ,setInt3: function(location,value1,value2,value3) { } ,setInt4: function(location,value1,value2,value3,value4) { } ,setInts: function(location,values) { } ,setFloat: function(location,value) { Krom.setFloat(location,value); } ,setFloat2: function(location,value1,value2) { Krom.setFloat2(location,value1,value2); } ,setFloat3: function(location,value1,value2,value3) { Krom.setFloat3(location,value1,value2,value3); } ,setFloat4: function(location,value1,value2,value3,value4) { Krom.setFloat4(location,value1,value2,value3,value4); } ,setFloats: function(location,values) { Krom.setFloats(location,values.buffer); } ,setVector2: function(location,value) { Krom.setFloat2(location,value.x,value.y); } ,setVector3: function(location,value) { Krom.setFloat3(location,value.x,value.y,value.z); } ,setVector4: function(location,value) { Krom.setFloat4(location,value.x,value.y,value.z,value.w); } ,setMatrix: function(location,matrix) { var v = matrix._00; kha_krom_Graphics.mat.setFloat32(0,v,true); var v = matrix._01; kha_krom_Graphics.mat.setFloat32(4,v,true); var v = matrix._02; kha_krom_Graphics.mat.setFloat32(8,v,true); var v = matrix._03; kha_krom_Graphics.mat.setFloat32(12,v,true); var v = matrix._10; kha_krom_Graphics.mat.setFloat32(16,v,true); var v = matrix._11; kha_krom_Graphics.mat.setFloat32(20,v,true); var v = matrix._12; kha_krom_Graphics.mat.setFloat32(24,v,true); var v = matrix._13; kha_krom_Graphics.mat.setFloat32(28,v,true); var v = matrix._20; kha_krom_Graphics.mat.setFloat32(32,v,true); var v = matrix._21; kha_krom_Graphics.mat.setFloat32(36,v,true); var v = matrix._22; kha_krom_Graphics.mat.setFloat32(40,v,true); var v = matrix._23; kha_krom_Graphics.mat.setFloat32(44,v,true); var v = matrix._30; kha_krom_Graphics.mat.setFloat32(48,v,true); var v = matrix._31; kha_krom_Graphics.mat.setFloat32(52,v,true); var v = matrix._32; kha_krom_Graphics.mat.setFloat32(56,v,true); var v = matrix._33; kha_krom_Graphics.mat.setFloat32(60,v,true); Krom.setMatrix(location,kha_krom_Graphics.mat.buffer); } ,setMatrix3: function(location,matrix) { var v = matrix._00; kha_krom_Graphics.mat.setFloat32(0,v,true); var v = matrix._01; kha_krom_Graphics.mat.setFloat32(4,v,true); var v = matrix._02; kha_krom_Graphics.mat.setFloat32(8,v,true); var v = matrix._10; kha_krom_Graphics.mat.setFloat32(12,v,true); var v = matrix._11; kha_krom_Graphics.mat.setFloat32(16,v,true); var v = matrix._12; kha_krom_Graphics.mat.setFloat32(20,v,true); var v = matrix._20; kha_krom_Graphics.mat.setFloat32(24,v,true); var v = matrix._21; kha_krom_Graphics.mat.setFloat32(28,v,true); var v = matrix._22; kha_krom_Graphics.mat.setFloat32(32,v,true); Krom.setMatrix3(location,kha_krom_Graphics.mat.buffer); } ,drawIndexedVertices: function(start,count) { if(count == null) { count = -1; } if(start == null) { start = 0; } Krom.drawIndexedVertices(start,count); } ,drawIndexedVerticesInstanced: function(instanceCount,start,count) { if(count == null) { count = -1; } if(start == null) { start = 0; } Krom.drawIndexedVerticesInstanced(instanceCount,start,count); } ,instancedRenderingAvailable: function() { return true; } ,scissor: function(x,y,width,height) { Krom.scissor(x,y,width,height); } ,disableScissor: function() { Krom.disableScissor(); } ,__class__: kha_krom_Graphics }; var kha_krom_Sound = function(bytes) { kha_Sound.call(this); this.sampleRate = 44100; var count = bytes.length / 4 | 0; this.uncompressedData = kha_arrays_Float32Array._new(count); var _g = 0; var _g1 = count; while(_g < _g1) { var i = _g++; var this1 = this.uncompressedData; var v = bytes.getFloat(i * 4); this1.setFloat32(i * 4,v,true); } this.compressedData = null; }; $hxClasses["kha.krom.Sound"] = kha_krom_Sound; kha_krom_Sound.__name__ = true; kha_krom_Sound.__super__ = kha_Sound; kha_krom_Sound.prototype = $extend(kha_Sound.prototype,{ uncompress: function(done) { done(); } ,unload: function() { kha_Sound.prototype.unload.call(this); } ,__class__: kha_krom_Sound }); 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.0 / (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 x = at.x - eye.x; var y = at.y - eye.y; var z = at.z - eye.z; if(z == null) { z = 0; } if(y == null) { y = 0; } if(x == null) { x = 0; } var _this_x = x; var _this_y = y; var _this_z = z; var x = _this_x; var y = _this_y; var z = _this_z; if(z == null) { z = 0; } if(y == null) { y = 0; } if(x == null) { x = 0; } var zaxis_x = x; var zaxis_y = y; var zaxis_z = z; var currentLength = Math.sqrt(zaxis_x * zaxis_x + zaxis_y * zaxis_y + zaxis_z * zaxis_z); if(currentLength != 0) { var mul = 1 / currentLength; zaxis_x *= mul; zaxis_y *= mul; zaxis_z *= mul; } 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 x = _x; var y = _y; var z = _z; if(z == null) { z = 0; } if(y == null) { y = 0; } if(x == null) { x = 0; } var _this_x = x; var _this_y = y; var _this_z = z; var x = _this_x; var y = _this_y; var z = _this_z; if(z == null) { z = 0; } if(y == null) { y = 0; } if(x == null) { x = 0; } var xaxis_x = x; var xaxis_y = y; var xaxis_z = z; var currentLength = Math.sqrt(xaxis_x * xaxis_x + xaxis_y * xaxis_y + xaxis_z * xaxis_z); if(currentLength != 0) { var mul = 1 / currentLength; xaxis_x *= mul; xaxis_y *= mul; xaxis_z *= mul; } var _x = xaxis_y * zaxis_z - xaxis_z * zaxis_y; var _y = xaxis_z * zaxis_x - xaxis_x * zaxis_z; var _z = xaxis_x * zaxis_y - xaxis_y * zaxis_x; var x = _x; var y = _y; var z = _z; if(z == null) { z = 0; } if(y == null) { y = 0; } if(x == null) { x = 0; } var yaxis_x = x; var yaxis_y = y; var yaxis_z = z; 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 = Math.sqrt(this.x * this.x + this.y * this.y); 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 ,__properties__: {set_length:"set_length",get_length:"get_length"} }; 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 = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); 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 ,__properties__: {set_length:"set_length",get_length:"get_length"} }; 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 = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); 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 ,__properties__: {set_length:"set_length",get_length:"get_length"} }; 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.fromFastMatrix3 = function(m) { return new kha_math_Matrix3(m._00,m._10,m._20,m._01,m._11,m._21,m._02,m._12,m._22); }; 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.fromFastMatrix4 = function(m) { return new kha_math_Matrix4(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_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 x = at.x - eye.x; var y = at.y - eye.y; var z = at.z - eye.z; if(z == null) { z = 0; } if(y == null) { y = 0; } if(x == null) { x = 0; } var _this_x = x; var _this_y = y; var _this_z = z; var x = _this_x; var y = _this_y; var z = _this_z; if(z == null) { z = 0; } if(y == null) { y = 0; } if(x == null) { x = 0; } var zaxis_x = x; var zaxis_y = y; var zaxis_z = z; var currentLength = Math.sqrt(zaxis_x * zaxis_x + zaxis_y * zaxis_y + zaxis_z * zaxis_z); if(currentLength != 0) { var mul = 1 / currentLength; zaxis_x *= mul; zaxis_y *= mul; zaxis_z *= mul; } 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 x = _x; var y = _y; var z = _z; if(z == null) { z = 0; } if(y == null) { y = 0; } if(x == null) { x = 0; } var _this_x = x; var _this_y = y; var _this_z = z; var x = _this_x; var y = _this_y; var z = _this_z; if(z == null) { z = 0; } if(y == null) { y = 0; } if(x == null) { x = 0; } var xaxis_x = x; var xaxis_y = y; var xaxis_z = z; var currentLength = Math.sqrt(xaxis_x * xaxis_x + xaxis_y * xaxis_y + xaxis_z * xaxis_z); if(currentLength != 0) { var mul = 1 / currentLength; xaxis_x *= mul; xaxis_y *= mul; xaxis_z *= mul; } var _x = xaxis_y * zaxis_z - xaxis_z * zaxis_y; var _y = xaxis_z * zaxis_x - xaxis_x * zaxis_z; var _z = xaxis_x * zaxis_y - xaxis_y * zaxis_x; var x = _x; var y = _y; var z = _z; if(z == null) { z = 0; } if(y == null) { y = 0; } if(x == null) { x = 0; } var yaxis_x = x; var yaxis_y = y; var yaxis_z = z; 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_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 = Math.sqrt(this.x * this.x + this.y * this.y); if(currentLength == 0) { return 0; } var mul = length / currentLength; this.x *= mul; this.y *= mul; return length; } ,__class__: kha_math_Vector2 ,__properties__: {set_length:"set_length",get_length:"get_length"} }; 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 = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); if(currentLength == 0) { return 0; } var mul = length / currentLength; this.x *= mul; this.y *= mul; this.z *= mul; return length; } ,__class__: kha_math_Vector3 ,__properties__: {set_length:"set_length",get_length:"get_length"} }; 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 = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); 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 ,__properties__: {set_length:"set_length",get_length:"get_length"} }; var kha_netsync_Client = function() { }; $hxClasses["kha.netsync.Client"] = kha_netsync_Client; kha_netsync_Client.__name__ = true; kha_netsync_Client.__isInterface__ = true; kha_netsync_Client.prototype = { get_id: null ,id: null ,send: null ,receive: null ,onClose: null ,__class__: kha_netsync_Client ,__properties__: {get_id:"get_id"} }; var kha_netsync_ControllerBuilder = function() { }; $hxClasses["kha.netsync.ControllerBuilder"] = kha_netsync_ControllerBuilder; kha_netsync_ControllerBuilder.__name__ = true; var kha_netsync_Entity = function() { }; $hxClasses["kha.netsync.Entity"] = kha_netsync_Entity; kha_netsync_Entity.__name__ = true; kha_netsync_Entity.__isInterface__ = true; kha_netsync_Entity.prototype = { _id: null ,_size: null ,_send: null ,_receive: null ,__class__: kha_netsync_Entity }; var kha_netsync_LocalClient = function(id) { this.myId = id; }; $hxClasses["kha.netsync.LocalClient"] = kha_netsync_LocalClient; kha_netsync_LocalClient.__name__ = true; kha_netsync_LocalClient.__interfaces__ = [kha_netsync_Client]; kha_netsync_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_netsync_LocalClient ,__properties__: {get_id:"get_id",get_controllers:"get_controllers"} }; var kha_netsync_State = function(time,data) { this.time = time; this.data = data; }; $hxClasses["kha.netsync.State"] = kha_netsync_State; kha_netsync_State.__name__ = true; kha_netsync_State.prototype = { time: null ,data: null ,__class__: kha_netsync_State }; var kha_netsync_Session = function(maxPlayers,address,port) { this.ping = 1; this.currentPlayers = 0; this.controllers = new haxe_ds_IntMap(); this.entities = new haxe_ds_IntMap(); kha_netsync_Session.instance = this; this.maxPlayers = maxPlayers; this.address = address; this.port = port; }; $hxClasses["kha.netsync.Session"] = kha_netsync_Session; kha_netsync_Session.__name__ = true; kha_netsync_Session.the = function() { return kha_netsync_Session.instance; }; kha_netsync_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 : "kha/netsync/Session.hx", lineNumber : 95, className : "kha.netsync.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) { switch(bytes.b[0]) { case 0: var index = bytes.b[1]; this.localClient = new kha_netsync_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.warp(time); break; case 3: switch(bytes.b[1]) { 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 _g = 0; var _g1 = classnamelength; while(_g < _g1) { var i = _g++; var code = bytes.b[index]; classname += String.fromCodePoint(code); ++index; } var methodnamelength = bytes.getUInt16(index); index += 2; var methodname = ""; var _g = 0; var _g1 = methodnamelength; while(_g < _g1) { var i = _g++; var code = bytes.b[index]; methodname += String.fromCodePoint(code); ++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 : "kha/netsync/Session.hx", lineNumber : 299, className : "kha.netsync.Session", methodName : "executeRPC"}); args.push(value); break; case 70: var value1 = bytes.getDouble(index); index += 8; haxe_Log.trace("Float: " + value1,{ fileName : "kha/netsync/Session.hx", lineNumber : 304, className : "kha.netsync.Session", methodName : "executeRPC"}); args.push(value1); break; case 73: var value2 = bytes.getInt32(index); index += 4; haxe_Log.trace("Int: " + value2,{ fileName : "kha/netsync/Session.hx", lineNumber : 309, className : "kha.netsync.Session", methodName : "executeRPC"}); args.push(value2); break; case 83: var length = bytes.getUInt16(index); index += 2; var str = ""; var _g = 0; var _g1 = length; while(_g < _g1) { var i = _g++; var code = bytes.b[index]; str += String.fromCodePoint(code); ++index; } haxe_Log.trace("String: " + str,{ fileName : "kha/netsync/Session.hx", lineNumber : 319, className : "kha.netsync.Session", methodName : "executeRPC"}); args.push(str); break; default: haxe_Log.trace("Unknown argument type.",{ fileName : "kha/netsync/Session.hx", lineNumber : 322, className : "kha.netsync.Session", methodName : "executeRPC"}); } } if(syncId == -1) { Reflect.field($hxClasses[classname],methodname + "_remotely").apply(null,args); } else { Reflect.field(kha_netsync_SyncBuilder.objects[syncId],methodname + "_remotely").apply(kha_netsync_SyncBuilder.objects[syncId],args); } } ,waitForStart: function(callback,refuseCallback,errorCallback,closeCallback,resCallback) { var _gthis = this; this.startCallback = callback; this.refusedCallback = refuseCallback; this.resetCallback = resCallback; this.network = new kha.netsync.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.time()); bytes.setInt32(13,kha_System.windowWidth(0)); bytes.setInt32(17,kha_System.windowHeight(0)); bytes.b[21] = 0; bytes.blit(22,controller1._inputBuffer,0,controller1._inputBufferIndex); this.sendToServer(bytes); controller1._inputBufferIndex = 0; } } } ,sendToServer: function(bytes) { this.network.send(bytes,false); } ,__class__: kha_netsync_Session ,__properties__: {get_me:"get_me"} }; var kha_netsync_SyncBuilder = function() { }; $hxClasses["kha.netsync.SyncBuilder"] = kha_netsync_SyncBuilder; kha_netsync_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) { 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.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 zui_Ext = function() { }; $hxClasses["zui.Ext"] = zui_Ext; zui_Ext.__name__ = true; zui_Ext.floatInput = function(ui,handle,label,align,precision) { if(precision == null) { precision = 1000.0; } if(align == null) { align = 0; } if(label == null) { label = ""; } handle.text = Std.string(Math.round(handle.value * precision) / precision); var text = ui.textInput(handle,label,align); handle.value = parseFloat(text); return handle.value; }; zui_Ext.initPath = function(handle,systemId) { handle.text = systemId == "Windows" ? "C:\\Users" : "/"; }; zui_Ext.fileBrowser = function(ui,handle,foldersOnly) { if(foldersOnly == null) { foldersOnly = false; } var sep = "/"; var cmd = "ls "; var systemId = kha_System.get_systemId(); if(systemId == "Windows") { cmd = "dir /b "; if(foldersOnly) { cmd += "/ad "; } sep = "\\"; handle.text = StringTools.replace(handle.text,"\\\\","\\"); handle.text = StringTools.replace(handle.text,"\r",""); } if(handle.text == "") { zui_Ext.initPath(handle,systemId); } var save = Krom.getFilesLocation() + sep + zui_Ext.dataPath + "dir.txt"; if(handle.text != zui_Ext.lastPath) { Krom.sysCommand(cmd + "\"" + handle.text + "\"" + " > " + "\"" + save + "\""); } zui_Ext.lastPath = handle.text; var str = haxe_io_Bytes.ofData(Krom.loadBlob(save)).toString(); var files = str.split("\n"); var i1 = handle.text.indexOf("/"); var i2 = handle.text.indexOf("\\"); var nested = i1 > -1 && handle.text.length - 1 > i1 || i2 > -1 && handle.text.length - 1 > i2; handle.changed = false; if(nested && ui.button("..",0)) { handle.changed = ui.changed = true; handle.text = handle.text.substring(0,handle.text.lastIndexOf(sep)); if(handle.text.length == 2 && handle.text.charAt(1) == ":") { handle.text += sep; } } var _g = 0; while(_g < files.length) { var f = files[_g]; ++_g; if(f == "" || f.charAt(0) == ".") { continue; } if(ui.button(f,0)) { handle.changed = ui.changed = true; if(handle.text.charAt(handle.text.length - 1) != sep) { handle.text += sep; } handle.text += f; } } return handle.text; }; zui_Ext.inlineRadio = function(ui,handle,texts,align) { if(align == null) { align = 0; } if(!ui.isVisible(ui.t.ELEMENT_H * ui.ops.scaleFactor)) { ui.endElement(); return handle.position; } var step = ui._w / texts.length; var hovered = -1; if(ui.getHover()) { var ix = ui.inputX - ui._x - ui._windowX | 0; var _g = 0; var _g1 = texts.length; while(_g < _g1) { var i = _g++; if(ix < i * step + step) { hovered = i; break; } } } if(ui.getReleased()) { handle.position = hovered; handle.changed = ui.changed = true; } else { handle.changed = false; } var _g = 0; var _g1 = texts.length; while(_g < _g1) { var i = _g++; if(handle.position == i) { ui.g.set_color(ui.t.ACCENT_HOVER_COL); if(!ui.enabled) { ui.fadeColor(); } ui.g.fillRect(ui._x + step * i,ui._y + ui.buttonOffsetY,step,ui.t.BUTTON_H * ui.ops.scaleFactor); } else if(hovered == i) { ui.g.set_color(ui.t.ACCENT_COL); if(!ui.enabled) { ui.fadeColor(); } ui.g.drawRect(ui._x + step * i,ui._y + ui.buttonOffsetY,step,ui.t.BUTTON_H * ui.ops.scaleFactor); } ui.g.set_color(ui.t.TEXT_COL); ui._x += step * i; var _w = ui._w; ui._w = step | 0; ui.drawString(ui.g,texts[i],null,0,align); ui._x -= step * i; ui._w = _w; } ui.endElement(); return handle.position; }; zui_Ext.colorWheel = function(ui,handle,alpha,w,h,colorPreview,picker) { if(colorPreview == null) { colorPreview = true; } if(alpha == null) { alpha = false; } if(w == null) { w = ui._w; } zui_Ext.rgbToHsv(((handle.color & 16711680) >>> 16) * 0.00392156862745098,((handle.color & 65280) >>> 8) * 0.00392156862745098,(handle.color & 255) * 0.00392156862745098,zui_Ext.ar); var chue = zui_Ext.ar[0]; var csat = zui_Ext.ar[1]; var cval = zui_Ext.ar[2]; var calpha = (handle.color >>> 24) * 0.00392156862745098; var px = ui._x; var py = ui._y; var scroll = ui.currentWindow != null && ui.currentWindow.scrollEnabled; if(!scroll) { w -= ui.t.SCROLL_W * ui.ops.scaleFactor | 0; px += (ui.t.SCROLL_W * ui.ops.scaleFactor | 0) / 2; } var _x = ui._x; var _y = ui._y; var _w = ui._w; ui._w = 28 * ui.ops.scaleFactor | 0; if(picker != null && ui.button("P")) { picker(); ui.changed = false; handle.changed = false; return handle.color; } ui._x = _x; ui._y = _y; ui._w = _w; ui.image(ui.ops.color_wheel,kha_Color.fromFloats(cval,cval,cval)); var ph = ui._y - py; var ox = px + w / 2; var oy = py + ph / 2; var cw = w * 0.7; var cwh = cw / 2; var cx = ox; var cy = oy + csat * cwh; var gradTx = px + 0.897 * w; var gradTy = oy - cwh; var gradW = 0.0777 * w; var gradH = cw; var theta = chue * (Math.PI * 2.0); var cx2 = Math.cos(theta) * (cx - ox) - Math.sin(theta) * (cy - oy) + ox; var cy2 = Math.sin(theta) * (cx - ox) + Math.cos(theta) * (cy - oy) + oy; cx = cx2; cy = cy2; ui._x = px - (scroll ? 0 : (ui.t.SCROLL_W * ui.ops.scaleFactor | 0) / 2); ui._y = py; ui.image(ui.ops.black_white_gradient); ui.g.set_color(-16777216); ui.g.fillRect(cx - 3 * ui.ops.scaleFactor,cy - 3 * ui.ops.scaleFactor,6 * ui.ops.scaleFactor,6 * ui.ops.scaleFactor); ui.g.set_color(-1); ui.g.fillRect(cx - 2 * ui.ops.scaleFactor,cy - 2 * ui.ops.scaleFactor,4 * ui.ops.scaleFactor,4 * ui.ops.scaleFactor); ui.g.set_color(-16777216); ui.g.fillRect(gradTx + gradW / 2 - 3 * ui.ops.scaleFactor,gradTy + (1 - cval) * gradH - 3 * ui.ops.scaleFactor,6 * ui.ops.scaleFactor,6 * ui.ops.scaleFactor); ui.g.set_color(-1); ui.g.fillRect(gradTx + gradW / 2 - 2 * ui.ops.scaleFactor,gradTy + (1 - cval) * gradH - 2 * ui.ops.scaleFactor,4 * ui.ops.scaleFactor,4 * ui.ops.scaleFactor); if(alpha) { var alphaHandle = handle.nest(1,{ value : Math.round(calpha * 100) / 100}); calpha = ui.slider(alphaHandle,"Alpha",0.0,1.0,true); if(alphaHandle.changed) { handle.changed = ui.changed = true; } } var gx = ox + ui._windowX; var gy = oy + ui._windowY; if(ui.inputStarted && ui.getInputInRect(gx - cwh,gy - cwh,cw,cw)) { zui_Ext.wheelSelectedHandle = handle; } if(ui.inputReleased && zui_Ext.wheelSelectedHandle != null) { zui_Ext.wheelSelectedHandle = null; handle.changed = ui.changed = true; } if(ui.inputDown && zui_Ext.wheelSelectedHandle == handle) { var vx = gx - ui.inputX; var vy = gy - ui.inputY; csat = Math.min(Math.sqrt(vx * vx + vy * vy),cwh) / cwh; var angle = Math.atan2(ui.inputX - gx,ui.inputY - gy); if(angle < 0) { angle = Math.PI + (Math.PI - Math.abs(angle)); } angle = Math.PI * 2 - angle; chue = angle / (Math.PI * 2); handle.changed = ui.changed = true; } if(ui.inputStarted && ui.getInputInRect(gradTx + ui._windowX,gradTy + ui._windowY,gradW,gradH)) { zui_Ext.gradientSelectedHandle = handle; } if(ui.inputReleased && zui_Ext.gradientSelectedHandle != null) { zui_Ext.gradientSelectedHandle = null; handle.changed = ui.changed = true; } if(ui.inputDown && zui_Ext.gradientSelectedHandle == handle) { cval = Math.max(0.01,Math.min(1,1 - (ui.inputY - gradTy - ui._windowY) / gradH)); handle.changed = ui.changed = true; } zui_Ext.hsvToRgb(chue,csat,cval,zui_Ext.ar); handle.color = kha_Color.fromFloats(zui_Ext.ar[0],zui_Ext.ar[1],zui_Ext.ar[2],calpha); if(colorPreview) { ui.text("",2,handle.color); } var pos = zui_Ext.inlineRadio(ui,zui_Handle.global.nest(1,null),["RGB","HSV","Hex"]); var h0 = handle.nest(0).nest(0); var h1 = handle.nest(0).nest(1); var h2 = handle.nest(0).nest(2); if(pos == 0) { h0.value = ((handle.color & 16711680) >>> 16) * 0.00392156862745098; var f = ui.slider(h0,"R",0,1,true); handle.color = ((handle.color >>> 24) * 0.00392156862745098 * 255 | 0) << 24 | (f * 255 | 0) << 16 | (((handle.color & 65280) >>> 8) * 0.00392156862745098 * 255 | 0) << 8 | ((handle.color & 255) * 0.00392156862745098 * 255 | 0); h1.value = ((handle.color & 65280) >>> 8) * 0.00392156862745098; var f = ui.slider(h1,"G",0,1,true); handle.color = ((handle.color >>> 24) * 0.00392156862745098 * 255 | 0) << 24 | (((handle.color & 16711680) >>> 16) * 0.00392156862745098 * 255 | 0) << 16 | (f * 255 | 0) << 8 | ((handle.color & 255) * 0.00392156862745098 * 255 | 0); h2.value = (handle.color & 255) * 0.00392156862745098; var f = ui.slider(h2,"B",0,1,true); handle.color = ((handle.color >>> 24) * 0.00392156862745098 * 255 | 0) << 24 | (((handle.color & 16711680) >>> 16) * 0.00392156862745098 * 255 | 0) << 16 | (((handle.color & 65280) >>> 8) * 0.00392156862745098 * 255 | 0) << 8 | (f * 255 | 0); } else if(pos == 1) { zui_Ext.rgbToHsv(((handle.color & 16711680) >>> 16) * 0.00392156862745098,((handle.color & 65280) >>> 8) * 0.00392156862745098,(handle.color & 255) * 0.00392156862745098,zui_Ext.ar); h0.value = zui_Ext.ar[0]; h1.value = zui_Ext.ar[1]; h2.value = zui_Ext.ar[2]; var chue = ui.slider(h0,"H",0,1,true); var csat = ui.slider(h1,"S",0,1,true); var cval = ui.slider(h2,"V",0,1,true); zui_Ext.hsvToRgb(chue,csat,cval,zui_Ext.ar); handle.color = kha_Color.fromFloats(zui_Ext.ar[0],zui_Ext.ar[1],zui_Ext.ar[2]); } else if(pos == 2) { handle.text = (handle.color >>> 0).toString(16); var hexCode = ui.textInput(handle,"#"); if(hexCode.length >= 1 && hexCode.charAt(0) == "#") { hexCode = HxOverrides.substr(hexCode,1,null); } if(hexCode.length == 3) { hexCode = hexCode.charAt(0) + hexCode.charAt(0) + hexCode.charAt(1) + hexCode.charAt(1) + hexCode.charAt(2) + hexCode.charAt(2); } if(hexCode.length == 4) { hexCode = hexCode.charAt(0) + hexCode.charAt(0) + hexCode.charAt(1) + hexCode.charAt(1) + hexCode.charAt(2) + hexCode.charAt(2) + hexCode.charAt(3) + hexCode.charAt(3); } if(hexCode.length == 6) { hexCode = "ff" + hexCode; } handle.color = parseInt(hexCode,16); } if(h0.changed || h1.changed || h2.changed) { handle.changed = ui.changed = true; } if(ui.getInputInRect(ui._windowX + px,ui._windowY + py,w,h == null ? ui._y - py : h) && ui.inputReleased) { ui.changed = true; } return handle.color; }; zui_Ext.rightAlignNumber = function(number,length) { var s = number + ""; while(s.length < length) s = " " + s; return s; }; zui_Ext.textArea = function(ui,handle,align,editable,label,wordWrap) { if(wordWrap == null) { wordWrap = false; } if(label == null) { label = ""; } if(editable == null) { editable = true; } if(align == null) { align = 0; } handle.text = StringTools.replace(handle.text,"\t"," "); var selected = ui.textSelectedHandle == handle; var lines = handle.text.split("\n"); var showLabel = lines.length == 1 && lines[0] == ""; var keyPressed = selected && ui.isKeyPressed; ui.highlightOnSelect = false; ui.tabSwitchEnabled = false; if(wordWrap && handle.text != "") { var cursorSet = false; var cursorPos = ui.cursorX; var _g = 0; var _g1 = handle.position; while(_g < _g1) { var i = _g++; cursorPos += lines[i].length + 1; } var words = lines.join(" ").split(" "); lines = []; var line = ""; var _g = 0; while(_g < words.length) { var w = words[_g]; ++_g; var linew = ui.ops.font.width(ui.fontSize,line + " " + w); var wordw = ui.ops.font.width(ui.fontSize," " + w); if(linew > ui._w - 10 && linew > wordw) { lines.push(line); line = ""; } line = line == "" ? w : line + " " + w; var linesLen = lines.length; var _g1 = 0; while(_g1 < lines.length) { var l = lines[_g1]; ++_g1; linesLen += l.length; } if(selected && !cursorSet && cursorPos <= linesLen + line.length) { cursorSet = true; handle.position = lines.length; ui.cursorX = ui.highlightAnchor = cursorPos - linesLen; } } lines.push(line); if(selected) { ui.textSelected = handle.text = lines[handle.position]; } } var cursorStartX = ui.cursorX; if(zui_Ext.textAreaLineNumbers) { var _y = ui._y; var _TEXT_COL = ui.t.TEXT_COL; ui.t.TEXT_COL = ui.t.ACCENT_COL; var maxLength = Math.ceil(Math.log(lines.length + 0.5) / Math.log(10)); var _g = 0; var _g1 = lines.length; while(_g < _g1) { var i = _g++; ui.text(zui_Ext.rightAlignNumber(i + 1,maxLength)); ui._y -= ui.t.ELEMENT_OFFSET * ui.ops.scaleFactor; } ui.t.TEXT_COL = _TEXT_COL; ui._y = _y; ui._x += (lines.length + "").length * 16 + 4; } ui.g.set_color(ui.t.SEPARATOR_COL); var g = ui.g; var x = ui._x + ui.buttonOffsetY; var y = ui._y + ui.buttonOffsetY; var w = ui._w - ui.buttonOffsetY * 2; var h = lines.length * (ui.t.ELEMENT_H * ui.ops.scaleFactor) - ui.buttonOffsetY * 2; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!ui.enabled) { ui.fadeColor(); } g.fillRect(x,y - 1,w,h + 1); var _textColoring = ui.textColoring; ui.textColoring = zui_Ext.textAreaColoring; var _g = 0; var _g1 = lines.length; while(_g < _g1) { var i = _g++; if(!selected && ui.getHover() || selected && i == handle.position) { handle.position = i; handle.text = lines[i]; ui.submitTextHandle = null; ui.textInput(handle,showLabel ? label : "",align,editable); if(keyPressed && ui.key != 13 && ui.key != 27) { lines[i] = ui.textSelected; } } else if(showLabel) { var TEXT_COL = ui.t.TEXT_COL; ui.t.TEXT_COL = ui.t.LABEL_COL; ui.text(label,2); ui.t.TEXT_COL = TEXT_COL; } else { ui.text(lines[i],align); } ui._y -= ui.t.ELEMENT_OFFSET * ui.ops.scaleFactor; } ui._y += ui.t.ELEMENT_OFFSET * ui.ops.scaleFactor; ui.textColoring = _textColoring; if(zui_Ext.textAreaScrollPastEnd) { ui._y += ui._h - ui.windowHeaderH - ui.t.ELEMENT_H * ui.ops.scaleFactor - ui.t.ELEMENT_OFFSET * ui.ops.scaleFactor; } if(keyPressed) { if(ui.key == 40 && handle.position < lines.length - 1) { handle.position++; zui_Ext.scrollAlign(ui,handle); } if(ui.key == 38 && handle.position > 0) { handle.position--; zui_Ext.scrollAlign(ui,handle); } if(editable && ui.key == 13 && !wordWrap) { handle.position++; lines.splice(handle.position,0,HxOverrides.substr(lines[handle.position - 1],ui.cursorX,null)); lines[handle.position - 1] = HxOverrides.substr(lines[handle.position - 1],0,ui.cursorX); ui.startTextEdit(handle); ui.cursorX = ui.highlightAnchor = 0; zui_Ext.scrollAlign(ui,handle); } if(editable && ui.key == 8 && cursorStartX == 0 && handle.position > 0) { handle.position--; ui.cursorX = ui.highlightAnchor = lines[handle.position].length; lines[handle.position] += lines[handle.position + 1]; lines.splice(handle.position + 1,1); zui_Ext.scrollAlign(ui,handle); } ui.textSelected = lines[handle.position]; } ui.highlightOnSelect = true; ui.tabSwitchEnabled = true; handle.text = lines.join("\n"); return handle.text; }; zui_Ext.scrollAlign = function(ui,handle) { if((handle.position + 1) * (ui.t.ELEMENT_H * ui.ops.scaleFactor) + ui.currentWindow.scrollOffset > ui._h - ui.windowHeaderH) { ui.currentWindow.scrollOffset -= ui.t.ELEMENT_H * ui.ops.scaleFactor; } else if((handle.position + 1) * (ui.t.ELEMENT_H * ui.ops.scaleFactor) + ui.currentWindow.scrollOffset < ui.windowHeaderH) { ui.currentWindow.scrollOffset += ui.t.ELEMENT_H * ui.ops.scaleFactor; } }; zui_Ext.beginMenu = function(ui) { zui_Ext._ELEMENT_OFFSET = ui.t.ELEMENT_OFFSET; zui_Ext._BUTTON_COL = ui.t.BUTTON_COL; ui.t.ELEMENT_OFFSET = 0; ui.t.BUTTON_COL = ui.t.SEPARATOR_COL; ui.g.set_color(ui.t.SEPARATOR_COL); ui.g.fillRect(0,0,ui._windowW,ui.t.BUTTON_H * ui.ops.scaleFactor * 1.1 + 2 + ui.buttonOffsetY); }; zui_Ext.endMenu = function(ui) { ui.t.ELEMENT_OFFSET = zui_Ext._ELEMENT_OFFSET; ui.t.BUTTON_COL = zui_Ext._BUTTON_COL; }; zui_Ext.menuButton = function(ui,text) { ui._w = ui.ops.font.width(ui.fontSize,text) + 25 * ui.ops.scaleFactor | 0; return ui.button(text); }; zui_Ext.MENUBAR_H = function(ui) { return ui.t.BUTTON_H * ui.ops.scaleFactor * 1.1 + 2 + ui.buttonOffsetY; }; zui_Ext.dist = function(x1,y1,x2,y2) { var vx = x1 - x2; var vy = y1 - y2; return Math.sqrt(vx * vx + vy * vy); }; zui_Ext.fract = function(f) { return f - (f | 0); }; zui_Ext.mix = function(x,y,a) { return x * (1.0 - a) + y * a; }; zui_Ext.clamp = function(x,minVal,maxVal) { return Math.min(Math.max(x,minVal),maxVal); }; zui_Ext.step = function(edge,x) { if(x < edge) { return 0.0; } else { return 1.0; } }; zui_Ext.hsvToRgb = function(cR,cG,cB,out) { var f = cR + 1.0; var px = Math.abs((f - (f | 0)) * 6.0 - 3.0); var f = cR + 0.66666666666666663; var py = Math.abs((f - (f | 0)) * 6.0 - 3.0); var f = cR + 0.33333333333333331; var pz = Math.abs((f - (f | 0)) * 6.0 - 3.0); out[0] = cB * (1.0 - cG + Math.min(Math.max(px - 1.0,0.0),1.0) * cG); out[1] = cB * (1.0 - cG + Math.min(Math.max(py - 1.0,0.0),1.0) * cG); out[2] = cB * (1.0 - cG + Math.min(Math.max(pz - 1.0,0.0),1.0) * cG); }; zui_Ext.rgbToHsv = function(cR,cG,cB,out) { var a = cG < cB ? 0.0 : 1.0; var px = cB * (1.0 - a) + cG * a; var a = cG < cB ? 0.0 : 1.0; var py = cG * (1.0 - a) + cB * a; var a = cG < cB ? 0.0 : 1.0; var pz = -1.0 * (1.0 - a) + 0.0 * a; var a = cG < cB ? 0.0 : 1.0; var pw = 0.66666666666666663 * (1.0 - a) + -0.33333333333333331 * a; var a = cR < px ? 0.0 : 1.0; var qx = px * (1.0 - a) + cR * a; var a = cR < px ? 0.0 : 1.0; var qy = py * (1.0 - a) + py * a; var a = cR < px ? 0.0 : 1.0; var qz = pw * (1.0 - a) + pz * a; var a = cR < px ? 0.0 : 1.0; var qw = cR * (1.0 - a) + px * a; var d = qx - Math.min(qw,qy); out[0] = Math.abs(qz + (qw - qy) / (6.0 * d + 1.0e-10)); out[1] = d / (qx + 1.0e-10); out[2] = qx; }; var zui_GraphicsExtension = function() { }; $hxClasses["zui.GraphicsExtension"] = zui_GraphicsExtension; zui_GraphicsExtension.__name__ = true; zui_GraphicsExtension.drawArc = function(g2,cx,cy,radius,sAngle,eAngle,strength,ccw,segments) { if(segments == null) { segments = 0; } if(ccw == null) { ccw = false; } if(strength == null) { strength = 1; } sAngle %= Math.PI * 2; eAngle %= Math.PI * 2; if(ccw) { if(eAngle > sAngle) { eAngle -= Math.PI * 2; } } else if(eAngle < sAngle) { eAngle += Math.PI * 2; } radius += strength / 2; if(segments <= 0) { segments = Math.floor(10 * Math.sqrt(radius)); } var theta = (eAngle - sAngle) / segments; var c = Math.cos(theta); var s = Math.sin(theta); var x = Math.cos(sAngle) * radius; var y = Math.sin(sAngle) * radius; var _g = 0; var _g1 = segments; while(_g < _g1) { var n = _g++; var px = x + cx; var py = y + cy; var t = x; x = c * x - s * y; y = c * y + s * t; zui_GraphicsExtension.drawInnerLine(g2,x + cx,y + cy,px,py,strength); } }; zui_GraphicsExtension.fillArc = function(g2,cx,cy,radius,sAngle,eAngle,ccw,segments) { if(segments == null) { segments = 0; } if(ccw == null) { ccw = false; } sAngle %= Math.PI * 2; eAngle %= Math.PI * 2; if(ccw) { if(eAngle > sAngle) { eAngle -= Math.PI * 2; } } else if(eAngle < sAngle) { eAngle += Math.PI * 2; } if(segments <= 0) { segments = Math.floor(10 * Math.sqrt(radius)); } var theta = (eAngle - sAngle) / segments; var c = Math.cos(theta); var s = Math.sin(theta); var x = Math.cos(sAngle) * radius; var y = Math.sin(sAngle) * radius; var sx = x + cx; var sy = y + cy; var _g = 0; var _g1 = segments; while(_g < _g1) { var n = _g++; var px = x + cx; var py = y + cy; var t = x; x = c * x - s * y; y = c * y + s * t; g2.fillTriangle(px,py,x + cx,y + cy,sx,sy); } }; zui_GraphicsExtension.drawCircle = function(g2,cx,cy,radius,strength,segments) { if(segments == null) { segments = 0; } if(strength == null) { strength = 1; } radius += strength / 2; if(segments <= 0) { segments = Math.floor(10 * Math.sqrt(radius)); } var theta = 2 * Math.PI / segments; var c = Math.cos(theta); var s = Math.sin(theta); var x = radius; var y = 0.0; var _g = 0; var _g1 = segments; while(_g < _g1) { var n = _g++; var px = x + cx; var py = y + cy; var t = x; x = c * x - s * y; y = c * y + s * t; zui_GraphicsExtension.drawInnerLine(g2,x + cx,y + cy,px,py,strength); } }; zui_GraphicsExtension.drawInnerLine = function(g2,x1,y1,x2,y2,strength) { var side = y2 > y1 ? 1 : 0; if(y2 == y1) { side = x2 - x1 > 0 ? 1 : 0; } var vec_x = 0; var vec_y = 0; if(y2 == y1) { var x = 0; var y = -1; if(y == null) { y = 0; } if(x == null) { x = 0; } var v_x = x; var v_y = y; vec_x = v_x; vec_y = v_y; } else { var x = 1; var y = -(x2 - x1) / (y2 - y1); if(y == null) { y = 0; } if(x == null) { x = 0; } var v_x = x; var v_y = y; vec_x = v_x; vec_y = v_y; } var currentLength = Math.sqrt(vec_x * vec_x + vec_y * vec_y); if(currentLength != 0) { var mul = strength / currentLength; vec_x *= mul; vec_y *= mul; } var x = x1 + side * vec_x; var y = y1 + side * vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p1_x = x; var p1_y = y; var x = x2 + side * vec_x; var y = y2 + side * vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p2_x = x; var p2_y = y; var x = p1_x - vec_x; var y = p1_y - vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p3_x = x; var p3_y = y; var x = p2_x - vec_x; var y = p2_y - vec_y; if(y == null) { y = 0; } if(x == null) { x = 0; } var p4_x = x; var p4_y = y; g2.fillTriangle(p1_x,p1_y,p2_x,p2_y,p3_x,p3_y); g2.fillTriangle(p3_x,p3_y,p2_x,p2_y,p4_x,p4_y); }; zui_GraphicsExtension.fillCircle = function(g2,cx,cy,radius,segments) { if(segments == null) { segments = 0; } if(segments <= 0) { segments = Math.floor(10 * Math.sqrt(radius)); } var theta = 2 * Math.PI / segments; var c = Math.cos(theta); var s = Math.sin(theta); var x = radius; var y = 0.0; var _g = 0; var _g1 = segments; while(_g < _g1) { var n = _g++; var px = x + cx; var py = y + cy; var t = x; x = c * x - s * y; y = c * y + s * t; g2.fillTriangle(px,py,x + cx,y + cy,cx,cy); } }; zui_GraphicsExtension.drawPolygon = function(g2,x,y,vertices,strength) { if(strength == null) { strength = 1; } var iterator_current = 0; var iterator_array = vertices; var v0 = iterator_array[iterator_current++]; var v1 = v0; while(iterator_current < iterator_array.length) { var v2 = iterator_array[iterator_current++]; g2.drawLine(v1.x + x,v1.y + y,v2.x + x,v2.y + y,strength); v1 = v2; } g2.drawLine(v1.x + x,v1.y + y,v0.x + x,v0.y + y,strength); }; zui_GraphicsExtension.fillPolygon = function(g2,x,y,vertices) { var iterator_current = 0; var iterator_array = vertices; if(iterator_current >= iterator_array.length) { return; } var v0 = iterator_array[iterator_current++]; if(iterator_current >= iterator_array.length) { return; } var v1 = iterator_array[iterator_current++]; while(iterator_current < iterator_array.length) { var v2 = iterator_array[iterator_current++]; g2.fillTriangle(v0.x + x,v0.y + y,v1.x + x,v1.y + y,v2.x + x,v2.y + y); v1 = v2; } }; zui_GraphicsExtension.drawCubicBezier = function(g2,x,y,segments,strength) { if(strength == null) { strength = 1.0; } if(segments == null) { segments = 20; } var t; var q0 = zui_GraphicsExtension.calculateCubicBezierPoint(0,x,y); var q1; var _g = 1; var _g1 = segments + 1; while(_g < _g1) { var i = _g++; t = i / segments; q1 = zui_GraphicsExtension.calculateCubicBezierPoint(t,x,y); g2.drawLine(q0[0],q0[1],q1[0],q1[1],strength); q0 = q1; } }; zui_GraphicsExtension.drawCubicBezierPath = function(g2,x,y,segments,strength) { if(strength == null) { strength = 1.0; } if(segments == null) { segments = 20; } var i = 0; var t; var q0 = null; var q1 = null; while(i < x.length - 3) { if(i == 0) { q0 = zui_GraphicsExtension.calculateCubicBezierPoint(0,[x[i],x[i + 1],x[i + 2],x[i + 3]],[y[i],y[i + 1],y[i + 2],y[i + 3]]); } var _g = 1; var _g1 = segments + 1; while(_g < _g1) { var j = _g++; t = j / segments; q1 = zui_GraphicsExtension.calculateCubicBezierPoint(t,[x[i],x[i + 1],x[i + 2],x[i + 3]],[y[i],y[i + 1],y[i + 2],y[i + 3]]); g2.drawLine(q0[0],q0[1],q1[0],q1[1],strength); q0 = q1; } i += 3; } }; zui_GraphicsExtension.calculateCubicBezierPoint = function(t,x,y) { var u = 1 - t; var tt = t * t; var uu = u * u; var uuu = uu * u; var ttt = tt * t; var p = [uuu * x[0],uuu * y[0]]; p[0] += 3 * uu * t * x[1]; p[1] += 3 * uu * t * y[1]; p[0] += 3 * u * tt * x[2]; p[1] += 3 * u * tt * y[2]; p[0] += ttt * x[3]; p[1] += ttt * y[3]; return p; }; zui_GraphicsExtension.drawAlignedString = function(g2,text,x,y,horAlign,verAlign) { var xoffset = 0.0; if(horAlign == 1 || horAlign == 2) { var width = g2.get_font().width(g2.get_fontSize(),text); if(horAlign == 1) { xoffset = -width * 0.5; } else { xoffset = -width; } } var yoffset = 0.0; if(verAlign == 1 || verAlign == 2) { var height = g2.get_font().height(g2.get_fontSize()); if(verAlign == 1) { yoffset = -height * 0.5; } else { yoffset = -height; } } g2.drawString(text,x + xoffset,y + yoffset); }; zui_GraphicsExtension.drawAlignedCharacters = function(g2,text,start,length,x,y,horAlign,verAlign) { var xoffset = 0.0; if(horAlign == 1 || horAlign == 2) { var width = g2.get_font().widthOfCharacters(g2.get_fontSize(),text,start,length); if(horAlign == 1) { xoffset = -width * 0.5; } else { xoffset = -width; } } var yoffset = 0.0; if(verAlign == 1 || verAlign == 2) { var height = g2.get_font().height(g2.get_fontSize()); if(verAlign == 1) { yoffset = -height * 0.5; } else { yoffset = -height; } } g2.drawCharacters(text,start,length,x + xoffset,y + yoffset); }; 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.checkSelectImage = null; this.elementsBaked = false; this.scissor = false; this.sticky = false; this.tabVertical = false; this.tabScroll = 0.0; this.tabHandle = null; this.tabColors = null; this.tabNames = null; this.tooltipTime = 0.0; this.tooltipWait = false; this.tooltipShown = false; this.tooltipY = 0.0; this.tooltipX = 0.0; this.tooltipInvertY = false; this.tooltipImgMaxWidth = null; this.tooltipImg = null; this.tooltipText = ""; this.comboInitialValue = 0; this.comboToSubmit = 0; this.submitComboHandle = null; this.comboSearchBar = false; this.comboSelectedWindow = null; this.comboSelectedHandle = null; this.tabPressedHandle = null; this.tabPressed = false; this.textToSubmit = ""; this.submitTextHandle = null; this.textSelectedHandle = null; this.restoreY = -1.0; this.restoreX = -1.0; this.windowHeaderH = 0.0; this.windowHeaderW = 0.0; this.dragHandle = null; this.scrollHandle = null; this.windowEnded = true; this._windowY = 0.0; this._windowX = 0.0; this.imageScrollAlign = true; this.scrollAlign = 0.0; this.curRatio = -1; this.highlightAnchor = 0; this.cursorX = 0; this.inputStartedTime = 0.0; this.key = null; this.isTabDown = false; this.isReturnDown = false; this.isEscapeDown = false; this.isDeleteDown = false; this.isBackspaceDown = false; this.isADown = false; this.isAltDown = false; this.isCtrlDown = false; this.isShiftDown = false; this.isKeyDown = false; this.isKeyPressed = false; this.inputWheelDelta = 0; this.inputEnabled = true; this.inputRegistered = false; this.sliderTooltipW = 0.0; this.sliderTooltipY = 0.0; this.sliderTooltipX = 0.0; this.sliderTooltip = false; this.touchHoldActivated = false; this.highlightFullRow = false; this.windowBorderRight = 0; this.windowBorderLeft = 0; this.windowBorderBottom = 0; this.windowBorderTop = 0; this.textColoring = null; this.tabSwitchEnabled = true; this.highlightOnSelect = true; this.alwaysRedraw = false; this.scrollEnabled = true; this.imageInvertY = false; this.changed = false; this.isReleased = false; this.isHovered = false; this.isPushed = false; this.isStarted = false; this.enabled = true; 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.autoNotifyInput == null) { ops.autoNotifyInput = true; } this.ops = ops; this.setScale(ops.scaleFactor); if(ops.autoNotifyInput) { this.registerInput(); } if(zui_Zui.copyReceiver == null) { zui_Zui.copyReceiver = this; kha_System.notifyOnCutCopyPaste($bind(this,this.onCut),$bind(this,this.onCopy),$bind(this,this.onPaste)); kha_System.notifyOnFrames(function(frames) { if((zui_Zui.isCopy || zui_Zui.isPaste) && ++zui_Zui.copyFrame > 1) { zui_Zui.isCopy = zui_Zui.isCut = zui_Zui.isPaste = false; } else if(zui_Zui.copyFrame > 1 && ++zui_Zui.copyFrame > 2) { zui_Zui.copyFrame = 0; zui_Zui.textToPaste = ""; } }); } var rtTextVS = kha_graphics4_Graphics2.createTextVertexStructure(); this.rtTextPipeline = kha_graphics4_Graphics2.createTextPipeline(rtTextVS); this.rtTextPipeline.alphaBlendSource = 1; this.rtTextPipeline.compile(); }; $hxClasses["zui.Zui"] = zui_Zui; zui_Zui.__name__ = true; zui_Zui.extractColoring = function(text,col) { var res = { colored : "", uncolored : ""}; var coloring = false; var startFrom = 0; var startLength = 0; var _g = 0; var _g1 = text.length; while(_g < _g1) { var i = _g++; var skipFirst = false; var length = zui_Zui.checkStart(i,text,col.start); var separatedLeft; if(i != 0) { var code = HxOverrides.cca(text,i - 1); separatedLeft = !(code >= 65 && code <= 90 || code >= 97 && code <= 122); } else { separatedLeft = true; } var separatedRight; if(i + length < text.length) { var code1 = HxOverrides.cca(text,i + length); separatedRight = !(code1 >= 65 && code1 <= 90 || code1 >= 97 && code1 <= 122); } else { separatedRight = true; } var isSeparated = separatedLeft && separatedRight; if(length > 0 && (!coloring || col.end == "") && (!col.separated || isSeparated)) { coloring = true; startFrom = i; startLength = length; if(col.end != "" && col.end != "\n") { skipFirst = true; } } else if(col.end == "") { if(i == startFrom + startLength) { coloring = false; } } else if(HxOverrides.substr(text,i,col.end.length) == col.end) { coloring = false; } var b = coloring && !skipFirst; res.colored += b ? text.charAt(i) : " "; res.uncolored += b ? " " : text.charAt(i); } return res; }; zui_Zui.isChar = function(code) { if(!(code >= 65 && code <= 90)) { if(code >= 97) { return code <= 122; } else { return false; } } else { return true; } }; zui_Zui.checkStart = function(i,text,start) { var _g = 0; while(_g < start.length) { var s = start[_g]; ++_g; if(HxOverrides.substr(text,i,s.length) == s) { return s.length; } } return 0; }; zui_Zui.prototype = { isScrolling: null ,isTyping: null ,enabled: null ,isStarted: null ,isPushed: null ,isHovered: null ,isReleased: null ,changed: null ,imageInvertY: null ,scrollEnabled: null ,alwaysRedraw: null ,highlightOnSelect: null ,tabSwitchEnabled: null ,textColoring: null ,windowBorderTop: null ,windowBorderBottom: null ,windowBorderLeft: null ,windowBorderRight: null ,highlightFullRow: null ,touchHoldActivated: null ,sliderTooltip: null ,sliderTooltipX: null ,sliderTooltipY: null ,sliderTooltipW: null ,inputRegistered: null ,inputEnabled: null ,inputX: null ,inputY: null ,inputStartedX: null ,inputStartedY: null ,inputDX: null ,inputDY: null ,inputWheelDelta: null ,inputStarted: null ,inputStartedR: null ,inputReleased: null ,inputReleasedR: null ,inputDown: null ,inputDownR: null ,penInUse: null ,isKeyPressed: null ,isKeyDown: null ,isShiftDown: null ,isCtrlDown: null ,isAltDown: null ,isADown: null ,isBackspaceDown: null ,isDeleteDown: null ,isEscapeDown: null ,isReturnDown: null ,isTabDown: null ,key: null ,char: null ,inputStartedTime: null ,cursorX: null ,highlightAnchor: null ,ratios: null ,curRatio: null ,xBeforeSplit: null ,wBeforeSplit: null ,g: null ,t: null ,ops: null ,globalG: null ,rtTextPipeline: null ,fontSize: null ,fontOffsetY: 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 ,imageScrollAlign: null ,_x: null ,_y: null ,_w: null ,_h: null ,_windowX: null ,_windowY: null ,_windowW: null ,_windowH: null ,currentWindow: null ,windowEnded: null ,scrollHandle: null ,dragHandle: null ,windowHeaderW: null ,windowHeaderH: null ,restoreX: null ,restoreY: null ,textSelectedHandle: null ,textSelected: null ,submitTextHandle: null ,textToSubmit: null ,tabPressed: null ,tabPressedHandle: null ,comboSelectedHandle: null ,comboSelectedWindow: null ,comboSelectedAlign: null ,comboSelectedTexts: null ,comboSelectedLabel: null ,comboSelectedX: null ,comboSelectedY: null ,comboSelectedW: null ,comboSearchBar: null ,submitComboHandle: null ,comboToSubmit: null ,comboInitialValue: null ,tooltipText: null ,tooltipImg: null ,tooltipImgMaxWidth: null ,tooltipInvertY: null ,tooltipX: null ,tooltipY: null ,tooltipShown: null ,tooltipWait: null ,tooltipTime: null ,tabNames: null ,tabColors: null ,tabHandle: null ,tabScroll: null ,tabVertical: null ,sticky: null ,scissor: null ,elementsBaked: null ,checkSelectImage: null ,setScale: function(factor) { this.ops.scaleFactor = factor; this.fontSize = this.t.FONT_SIZE * this.ops.scaleFactor | 0; var fontHeight = this.ops.font.height(this.fontSize); this.fontOffsetY = (this.t.ELEMENT_H * this.ops.scaleFactor - fontHeight) / 2; this.arrowOffsetY = (this.t.ELEMENT_H * this.ops.scaleFactor - this.t.ARROW_SIZE * this.ops.scaleFactor) / 2; this.arrowOffsetX = this.arrowOffsetY; this.titleOffsetX = (this.arrowOffsetX * 2 + this.t.ARROW_SIZE * this.ops.scaleFactor) / this.ops.scaleFactor; this.buttonOffsetY = (this.t.ELEMENT_H * this.ops.scaleFactor - this.t.BUTTON_H * this.ops.scaleFactor) / 2; this.checkOffsetY = (this.t.ELEMENT_H * this.ops.scaleFactor - this.t.CHECK_SIZE * this.ops.scaleFactor) / 2; this.checkOffsetX = this.checkOffsetY; this.checkSelectOffsetY = (this.t.CHECK_SIZE * this.ops.scaleFactor - this.t.CHECK_SELECT_SIZE * this.ops.scaleFactor) / 2; this.checkSelectOffsetX = this.checkSelectOffsetY; this.radioOffsetY = (this.t.ELEMENT_H * this.ops.scaleFactor - this.t.CHECK_SIZE * this.ops.scaleFactor) / 2; this.radioOffsetX = this.radioOffsetY; this.radioSelectOffsetY = (this.t.CHECK_SIZE * this.ops.scaleFactor - this.t.CHECK_SELECT_SIZE * this.ops.scaleFactor) / 2; this.radioSelectOffsetX = this.radioSelectOffsetY; this.elementsBaked = false; } ,bakeElements: function() { if(this.checkSelectImage != null) { this.checkSelectImage.unload(); } this.checkSelectImage = kha_Image.createRenderTarget(this.t.CHECK_SELECT_SIZE * this.ops.scaleFactor | 0,this.t.CHECK_SELECT_SIZE * this.ops.scaleFactor | 0,null,0,1); var g = this.checkSelectImage.get_g2(); g.begin(true,0); g.set_color(this.t.ACCENT_SELECT_COL); g.drawLine(0,0,this.checkSelectImage.get_width(),this.checkSelectImage.get_height(),2 * this.ops.scaleFactor); g.drawLine(this.checkSelectImage.get_width(),0,0,this.checkSelectImage.get_height(),2 * this.ops.scaleFactor); g.end(); this.elementsBaked = true; } ,remove: function() { if(this.ops.autoNotifyInput) { this.unregisterInput(); } } ,registerInput: function() { var _gthis = this; if(this.inputRegistered) { return; } kha_input_Mouse.get().notifyWindowed(this.ops.khaWindowId,$bind(this,this.onMouseDown),$bind(this,this.onMouseUp),$bind(this,this.onMouseMove),$bind(this,this.onMouseWheel)); if(kha_input_Pen.get() != null) { kha_input_Pen.get().notify($bind(this,this.onPenDown),$bind(this,this.onPenUp),$bind(this,this.onPenMove)); } kha_input_Keyboard.get().notify($bind(this,this.onKeyDown),$bind(this,this.onKeyUp),$bind(this,this.onKeyPress)); kha_System.notifyOnApplicationState(function() { _gthis.inputDX = _gthis.inputDY = 0; },null,null,null,null); this.inputRegistered = true; } ,unregisterInput: function() { if(!this.inputRegistered) { return; } kha_input_Mouse.get().removeWindowed(this.ops.khaWindowId,$bind(this,this.onMouseDown),$bind(this,this.onMouseUp),$bind(this,this.onMouseMove),$bind(this,this.onMouseWheel)); if(kha_input_Pen.get() != null) { kha_input_Pen.get().remove($bind(this,this.onPenDown),$bind(this,this.onPenUp),$bind(this,this.onPenMove)); } kha_input_Keyboard.get().remove($bind(this,this.onKeyDown),$bind(this,this.onKeyUp),$bind(this,this.onKeyPress)); this.endInput(); this.isShiftDown = this.isCtrlDown = this.isAltDown = false; this.inputX = this.inputY = 0; this.inputRegistered = false; } ,begin: function(g) { if(!this.elementsBaked) { this.bakeElements(); } this.changed = false; this.globalG = g; zui_Zui.current = this; this._x = 0; this._y = 0; this._w = 0; this._h = 0; } ,end: function(last) { if(last == null) { last = true; } if(!this.windowEnded) { this.endWindow(); } this.drawCombo(); this.drawTooltip(true); this.tabPressedHandle = null; if(last) { this.endInput(); } } ,beginRegion: function(g,x,y,w) { if(!this.elementsBaked) { g.end(); this.bakeElements(); g.begin(false); } this.changed = false; this.globalG = g; this.g = g; this.currentWindow = null; this.tooltipText = ""; this.tooltipImg = null; this._windowX = 0; this._windowY = 0; this._windowW = w; this._x = x; this._y = y; this._w = w; } ,endRegion: function(last) { if(last == null) { last = true; } this.drawTooltip(false); this.tabPressedHandle = null; if(last) { this.endInput(); } } ,beginSticky: function() { this.sticky = true; this._y -= this.currentWindow.scrollOffset; } ,endSticky: function() { this.sticky = false; this.scissor = true; this.g.scissor(0,this._y | 0,this._windowW | 0,this._windowH - this._y | 0); this.windowHeaderH += this._y - this.windowHeaderH; this._y += this.currentWindow.scrollOffset; this.isHovered = false; } ,endInput: function() { this.isKeyPressed = false; this.inputStarted = false; this.inputStartedR = false; this.inputReleased = false; this.inputReleasedR = false; this.inputDX = 0; this.inputDY = 0; this.inputWheelDelta = 0; this.penInUse = false; if(zui_Zui.keyRepeat && this.isKeyDown && kha_Scheduler.time() - zui_Zui.keyRepeatTime > 0.05) { if(this.key == 8 || this.key == 46 || this.key == 37 || this.key == 39 || this.key == 38 || this.key == 40) { zui_Zui.keyRepeatTime = kha_Scheduler.time(); this.isKeyPressed = true; } } if(zui_Zui.touchHold && this.inputDown && this.inputX == this.inputStartedX && this.inputY == this.inputStartedY && this.inputStartedTime > 0 && kha_Scheduler.time() - this.inputStartedTime > 0.7) { this.touchHoldActivated = true; this.inputReleasedR = true; this.inputStartedTime = 0; } } ,inputChanged: function() { if(!(this.inputDX != 0 || this.inputDY != 0 || this.inputWheelDelta != 0 || this.inputStarted || this.inputStartedR || this.inputReleased || this.inputReleasedR || this.inputDown || this.inputDownR)) { return this.isKeyPressed; } else { return true; } } ,windowDirty: function(handle,x,y,w,h) { var wx = x + handle.dragX; var wy = y + handle.dragY; var inputChanged = this.getInputInRect(wx,wy,w,h) && this.inputChanged(); if(!(this.alwaysRedraw || this.isScrolling)) { return inputChanged; } else { return true; } } ,window: function(handle,x,y,w,h,drag) { if(drag == null) { drag = false; } if(handle.texture == null || w != handle.texture.get_width() || h != handle.texture.get_height()) { this.resize(handle,w,h); } 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; this.windowHeaderW = 0; this.windowHeaderH = 0; if(this.windowDirty(handle,x,y,w,h)) { handle.redraws = 2; } if(zui_Zui.onBorderHover != null) { if(this.getInputInRect(this._windowX - 4,this._windowY,8,this._windowH)) { zui_Zui.onBorderHover(handle,0); } else if(this.getInputInRect(this._windowX + this._windowW - 4,this._windowY,8,this._windowH)) { zui_Zui.onBorderHover(handle,1); } else if(this.getInputInRect(this._windowX,this._windowY - 4,this._windowW,8)) { zui_Zui.onBorderHover(handle,2); } else if(this.getInputInRect(this._windowX,this._windowY + this._windowH - 4,this._windowW,8)) { zui_Zui.onBorderHover(handle,3); } } if(handle.redraws <= 0) { return false; } this._x = 0; this._y = handle.scrollOffset; if(handle.layout == 1) { w = this.t.ELEMENT_W * this.ops.scaleFactor | 0; } this._w = !handle.scrollEnabled ? w : w - (this.t.SCROLL_W * this.ops.scaleFactor | 0); this._h = h; this.tooltipText = ""; this.tooltipImg = null; this.tabNames = null; 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 * this.ops.scaleFactor | 0)) { this.dragHandle = handle; } else if(this.inputReleased) { this.dragHandle = null; } if(handle == this.dragHandle) { handle.redraws = 2; handle.dragX += this.inputDX | 0; handle.dragY += this.inputDY | 0; } this._y += 15 * this.ops.scaleFactor | 0; this.windowHeaderH += 15 * this.ops.scaleFactor | 0; } return true; } ,endWindow: function(bindGlobalG) { if(bindGlobalG == null) { bindGlobalG = true; } var handle = this.currentWindow; if(handle == null) { return; } if(handle.redraws > 0 || this.isScrolling) { if(this.scissor) { this.scissor = false; this.g.disableScissor(); } if(this.tabNames != null) { this.drawTabs(); } if(handle.dragEnabled) { this.g.set_color(this.t.SEPARATOR_COL); this.g.fillRect(0,0,this._windowW,15 * this.ops.scaleFactor | 0); } var wh = this._windowH - this.windowHeaderH; var fullHeight = this._y - handle.scrollOffset - this.windowHeaderH; if(fullHeight < wh || handle.layout == 1 || !this.scrollEnabled) { handle.scrollEnabled = false; handle.scrollOffset = 0; } else { handle.scrollEnabled = true; if(this.tabScroll < 0) { handle.scrollOffset = this.tabScroll; this.tabScroll = 0; } var wy = this._windowY + this.windowHeaderH; var amountToScroll = fullHeight - wh; var amountScrolled = -handle.scrollOffset; var ratio = amountScrolled / amountToScroll; var barH = wh * Math.abs(wh / fullHeight); barH = Math.max(barH,this.t.ELEMENT_H * this.ops.scaleFactor); var totalScrollableArea = wh - barH; var e = amountToScroll / totalScrollableArea; var barY = totalScrollableArea * ratio + this.windowHeaderH; var barFocus = this.getInputInRect(this._windowX + this._windowW - (this.t.SCROLL_W * this.ops.scaleFactor | 0),barY + this._windowY,this.t.SCROLL_W * this.ops.scaleFactor | 0,barH); if(this.inputStarted && barFocus) { this.scrollHandle = handle; this.isScrolling = true; } var scrollDelta = this.inputWheelDelta; if(zui_Zui.touchScroll && this.inputDown && this.inputDY != 0 && this.inputX > this._windowX + this.windowHeaderW && this.inputY > this._windowY + this.windowHeaderH) { this.isScrolling = true; scrollDelta = -this.inputDY / 20; } if(handle == this.scrollHandle) { this.scroll(this.inputDY * e,fullHeight); } else if(scrollDelta != 0 && this.comboSelectedHandle == null && this.getInputInRect(this._windowX,wy,this._windowW,wh)) { this.scroll(scrollDelta * (this.t.ELEMENT_H * this.ops.scaleFactor),fullHeight); } if(handle.scrollOffset > 0) { handle.scrollOffset = 0; } else if(fullHeight + handle.scrollOffset < wh) { handle.scrollOffset = wh - fullHeight; } this.g.set_color(this.t.ACCENT_COL); var scrollbarFocus = this.getInputInRect(this._windowX + this._windowW - (this.t.SCROLL_W * this.ops.scaleFactor | 0),wy,this.t.SCROLL_W * this.ops.scaleFactor | 0,wh); var barW = scrollbarFocus || handle == this.scrollHandle ? this.t.SCROLL_W * this.ops.scaleFactor | 0 : (this.t.SCROLL_W * this.ops.scaleFactor | 0) / 3; this.g.fillRect(this._windowW - barW - this.scrollAlign,barY,barW,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; if(zui_Zui.alwaysRedrawWindow || handle.redraws > -4) { if(bindGlobalG) { this.globalG.begin(false); } this.globalG.set_color(this.t.WINDOW_TINT_COL); this.globalG.drawImage(handle.texture,this._windowX,this._windowY); if(bindGlobalG) { this.globalG.end(); } if(handle.redraws <= 0) { handle.redraws--; } } } ,scroll: function(delta,fullHeight) { this.currentWindow.scrollOffset -= delta; } ,tab: function(handle,text,vertical,color) { if(color == null) { color = -1; } if(vertical == null) { vertical = false; } if(this.tabNames == null) { this.tabNames = []; this.tabColors = []; this.tabHandle = handle; this.tabVertical = vertical; this._w -= this.tabVertical ? this.t.ELEMENT_OFFSET * this.ops.scaleFactor + this.t.ELEMENT_W * this.ops.scaleFactor - this.ops.scaleFactor | 0 : 0; if(vertical) { this.windowHeaderW += this.t.ELEMENT_W * this.ops.scaleFactor; } else { this.windowHeaderH += this.t.BUTTON_H * this.ops.scaleFactor + this.buttonOffsetY + this.t.ELEMENT_OFFSET * this.ops.scaleFactor; } this.restoreX = this.inputX; this.restoreY = this.inputY; if(!vertical && this.getInputInRect(this._windowX,this._windowY,this._windowW,this.windowHeaderH)) { this.inputX = this.inputY = -1; } if(vertical) { this._x += this.windowHeaderW + 6; this._w -= 6; } else { this._y += this.windowHeaderH + 3; } } this.tabNames.push(text); this.tabColors.push(color); return handle.position == this.tabNames.length - 1; } ,drawTabs: function() { this.inputX = this.restoreX; this.inputY = this.restoreY; if(this.currentWindow == null) { return; } var tabX = 0.0; var tabY = 0.0; var tabHMin = this.t.BUTTON_H * this.ops.scaleFactor * 1.1 | 0; var headerH = this.currentWindow.dragEnabled ? 15 * this.ops.scaleFactor | 0 : 0; var tabH = this.t.FULL_TABS && this.tabVertical ? (this._windowH - headerH) / this.tabNames.length | 0 : tabHMin; var origy = this._y; this._y = headerH; this.tabHandle.changed = false; if(this.isCtrlDown && this.isTabDown) { this.tabHandle.position++; if(this.tabHandle.position >= this.tabNames.length) { this.tabHandle.position = 0; } this.tabHandle.changed = true; this.isTabDown = false; } if(this.tabHandle.position >= this.tabNames.length) { this.tabHandle.position = this.tabNames.length - 1; } this.g.set_color(this.t.SEPARATOR_COL); if(this.tabVertical) { this.g.fillRect(0,this._y,this.t.ELEMENT_W * this.ops.scaleFactor,this._windowH); } else { this.g.fillRect(0,this._y,this._windowW,this.buttonOffsetY + tabH + 2); } this.g.set_color(this.t.ACCENT_COL); if(this.tabVertical) { this.g.fillRect(this.t.ELEMENT_W * this.ops.scaleFactor,this._y,1,this._windowH); } else { this.g.fillRect(this.buttonOffsetY,this._y + this.buttonOffsetY + tabH + 2,this._windowW - this.buttonOffsetY * 2,1); } var basey = this.tabVertical ? this._y : this._y + 2; var _g = 0; var _g1 = this.tabNames.length; while(_g < _g1) { var i = _g++; this._x = tabX; this._y = basey + tabY; this._w = this.tabVertical ? this.t.ELEMENT_W * this.ops.scaleFactor - this.ops.scaleFactor | 0 : this.t.FULL_TABS ? this._windowW / this.tabNames.length | 0 : this.ops.font.width(this.fontSize,this.tabNames[i]) + this.buttonOffsetY * 2 + 18 * this.ops.scaleFactor | 0; var released = this.getReleased(tabH); var pushed = this.getPushed(tabH); var hover = this.getHover(tabH); if(released) { var h = this.tabHandle.nest(this.tabHandle.position); h.scrollOffset = this.currentWindow.scrollOffset; h = this.tabHandle.nest(i); this.tabScroll = h.scrollOffset; this.tabHandle.position = i; this.currentWindow.redraws = 3; this.tabHandle.changed = true; } var selected = this.tabHandle.position == i; this.g.set_color(pushed || hover ? this.t.BUTTON_HOVER_COL : this.tabColors[i] != -1 ? this.tabColors[i] : selected ? this.t.WINDOW_BG_COL : this.t.SEPARATOR_COL); if(this.tabVertical) { tabY += tabH + 1; } else { tabX += this._w + 1; } var g = this.g; var x = this._x + this.buttonOffsetY; var y = this._y + this.buttonOffsetY; var w = this._w; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } g.fillRect(x,y - 1,w,tabH + 1); this.g.set_color(selected ? this.t.BUTTON_TEXT_COL : this.t.LABEL_COL); this.drawString(this.g,this.tabNames[i],null,(tabH - tabHMin) / 2,this.t.FULL_TABS ? 1 : 0); if(selected) { if(this.tabVertical) { this.g.set_color(this.t.HIGHLIGHT_COL); this.g.fillRect(this._x + this.buttonOffsetY,this._y + this.buttonOffsetY - 1,2,tabH + this.buttonOffsetY); } else { this.g.set_color(this.t.WINDOW_BG_COL); this.g.fillRect(this._x + this.buttonOffsetY + 1,this._y + this.buttonOffsetY + tabH,this._w - 1,1); this.g.set_color(this.t.HIGHLIGHT_COL); this.g.fillRect(this._x + this.buttonOffsetY,this._y + this.buttonOffsetY,this._w,2); } } } this._x = 0; this._y = origy; this._w = (!this.currentWindow.scrollEnabled ? this._windowW : this._windowW - (this.t.SCROLL_W * this.ops.scaleFactor | 0)) | 0; } ,panel: function(handle,text,isTree,filled,pack) { if(pack == null) { pack = true; } if(filled == null) { filled = true; } if(isTree == null) { isTree = false; } if(!this.isVisible(this.t.ELEMENT_H * this.ops.scaleFactor)) { this.endElement(); return handle.selected; } if(this.getReleased()) { handle.selected = !handle.selected; handle.changed = this.changed = true; } if(filled) { this.g.set_color(this.t.PANEL_BG_COL); var g = this.g; var x = this._x; var y = this._y; var w = this._w; var h = this.t.ELEMENT_H * this.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } g.fillRect(x,y - 1,w,h + 1); } if(isTree) { this.drawTree(handle.selected); } else { this.drawArrow(handle.selected); } this.g.set_color(this.t.LABEL_COL); this.drawString(this.g,text,this.titleOffsetX,0); this.endElement(); if(pack && !handle.selected) { this._y -= this.t.ELEMENT_OFFSET * this.ops.scaleFactor; } return handle.selected; } ,image: function(image,tint,h,sx,sy,sw,sh) { if(sh == null) { sh = 0; } if(sw == null) { sw = 0; } if(sy == null) { sy = 0; } if(sx == null) { sx = 0; } if(tint == null) { tint = -1; } var iw = (sw > 0 ? sw : image.get_width()) * this.ops.scaleFactor; var ih = (sh > 0 ? sh : image.get_height()) * this.ops.scaleFactor; var w = Math.min(iw,this._w); var x = this._x; var scroll = this.currentWindow != null && this.currentWindow.scrollEnabled; var r; if(this.curRatio == -1) { r = 1.0; } else { var ratio = this.ratios[this.curRatio]; r = ratio < 0 ? -ratio : ratio; } if(this.imageScrollAlign) { w = Math.min(iw,this._w - this.buttonOffsetY * 2); x += this.buttonOffsetY; if(!scroll) { w -= (this.t.SCROLL_W * this.ops.scaleFactor | 0) * r; x += (this.t.SCROLL_W * this.ops.scaleFactor | 0) * r / 2; } } else if(scroll) { w += (this.t.SCROLL_W * this.ops.scaleFactor | 0) * r; } var ratio = h == null ? w / iw : h / ih; if(h == null) { h = ih * ratio; } else { w = iw * ratio; } if(!this.isVisible(h)) { this.endElement(h); return 0; } var started = this.getStarted(h); var down = this.getPushed(h); var released = this.getReleased(h); var hover = this.getHover(h); if(this.curRatio == -1 && (started || down || released || hover)) { if(this.inputX < this._windowX + this._x || this.inputX > this._windowX + this._x + w) { hover = false; released = hover; down = released; started = down; } } this.g.set_color(tint); if(!this.enabled) { this.fadeColor(); } var h_float = h; if(sw > 0) { if(this.imageInvertY) { this.g.drawScaledSubImage(image,sx,sy,sw,sh,x,this._y + h_float,w,-h_float); } else { this.g.drawScaledSubImage(image,sx,sy,sw,sh,x,this._y,w,h_float); } } else if(this.imageInvertY) { this.g.drawScaledImage(image,x,this._y + h_float,w,-h_float); } else { this.g.drawScaledImage(image,x,this._y,w,h_float); } this.endElement(h); if(started) { return 1; } else if(released) { return 3; } else if(down) { return 2; } else if(hover) { return 4; } else { return 0; } } ,text: function(text,align,bg) { if(bg == null) { bg = 0; } if(align == null) { align = 0; } if(text.indexOf("\n") >= 0) { var align1 = align; var bg1 = bg; if(bg1 == null) { bg1 = 0; } if(align1 == null) { align1 = 0; } var _g = 0; var _g1 = text.split("\n"); while(_g < _g1.length) { var line = _g1[_g]; ++_g; this.text(line,align1,bg1); } return 0; } var h = Math.max(this.t.ELEMENT_H * this.ops.scaleFactor,this.ops.font.height(this.fontSize)); if(!this.isVisible(h)) { this.endElement(h + this.t.ELEMENT_OFFSET * this.ops.scaleFactor); return 0; } var started = this.getStarted(h); var down = this.getPushed(h); var released = this.getReleased(h); var hover = this.getHover(h); 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.ops.scaleFactor); } this.g.set_color(this.t.TEXT_COL); this.drawString(this.g,text,null,0,align); this.endElement(h + this.t.ELEMENT_OFFSET * this.ops.scaleFactor); if(started) { return 1; } else if(released) { return 3; } else if(down) { return 2; } else { return 0; } } ,splitText: function(lines,align,bg) { if(bg == null) { bg = 0; } if(align == null) { align = 0; } var _g = 0; var _g1 = lines.split("\n"); while(_g < _g1.length) { var line = _g1[_g]; ++_g; this.text(line,align,bg); } } ,startTextEdit: function(handle,align) { if(align == null) { align = 0; } this.isTyping = true; this.submitTextHandle = this.textSelectedHandle; this.textToSubmit = this.textSelected; this.textSelectedHandle = handle; this.textSelected = handle.text; this.cursorX = handle.text.length; if(this.tabPressed) { this.tabPressed = false; this.isKeyPressed = false; } else if(!this.highlightOnSelect) { this.setCursorToInput(align); } this.tabPressedHandle = handle; this.highlightAnchor = this.highlightOnSelect ? 0 : this.cursorX; if(kha_input_Keyboard.get() != null) { kha_input_Keyboard.get().show(); } } ,submitTextEdit: function() { this.submitTextHandle.changed = this.submitTextHandle.text != this.textToSubmit; this.submitTextHandle.text = this.textToSubmit; this.submitTextHandle = null; this.textToSubmit = ""; this.textSelected = ""; } ,updateTextEdit: function(align,editable,liveUpdate) { if(liveUpdate == null) { liveUpdate = false; } if(editable == null) { editable = true; } if(align == null) { align = 0; } var text = this.textSelected; if(this.isKeyPressed) { if(this.key == 37) { if(this.cursorX > 0) { this.cursorX--; } } else if(this.key == 39) { if(this.cursorX < text.length) { this.cursorX++; } } else if(editable && this.key == 8) { if(this.cursorX > 0 && this.highlightAnchor == this.cursorX) { text = HxOverrides.substr(text,0,this.cursorX - 1) + HxOverrides.substr(text,this.cursorX,text.length); this.cursorX--; } else if(this.highlightAnchor < this.cursorX) { text = HxOverrides.substr(text,0,this.highlightAnchor) + HxOverrides.substr(text,this.cursorX,text.length); this.cursorX = this.highlightAnchor; } else { text = HxOverrides.substr(text,0,this.cursorX) + HxOverrides.substr(text,this.highlightAnchor,text.length); } } else if(editable && this.key == 46) { if(this.highlightAnchor == this.cursorX) { text = HxOverrides.substr(text,0,this.cursorX) + HxOverrides.substr(text,this.cursorX + 1,null); } else if(this.highlightAnchor < this.cursorX) { text = HxOverrides.substr(text,0,this.highlightAnchor) + HxOverrides.substr(text,this.cursorX,text.length); this.cursorX = this.highlightAnchor; } else { text = HxOverrides.substr(text,0,this.cursorX) + HxOverrides.substr(text,this.highlightAnchor,text.length); } } else if(this.key == 13) { this.deselectText(); } else if(this.key == 27) { this.textSelected = this.textSelectedHandle.text; this.deselectText(); } else if(this.key == 9 && this.tabSwitchEnabled && !this.isCtrlDown) { this.tabPressed = true; this.deselectText(); this.key = null; } else if(this.key == 36) { this.cursorX = 0; } else if(this.key == 35) { this.cursorX = text.length; } else if(this.isCtrlDown && this.isADown) { this.cursorX = text.length; this.highlightAnchor = 0; } else if(editable && this.key != 16 && this.key != 20 && this.key != 17 && this.key != 224 && this.key != 18 && this.key != 38 && this.key != 40 && this.char != null && this.char != "" && HxOverrides.cca(this.char,0) >= 32) { text = HxOverrides.substr(text,0,this.highlightAnchor) + this.char + HxOverrides.substr(text,this.cursorX,null); this.cursorX = this.cursorX + 1 > text.length ? text.length : this.cursorX + 1; } var selecting = this.isShiftDown && (this.key == 37 || this.key == 39 || this.key == 16); if(!selecting && (!this.isCtrlDown || this.isCtrlDown && this.isAltDown)) { this.highlightAnchor = this.cursorX; } } if(editable && zui_Zui.textToPaste != "") { text = HxOverrides.substr(text,0,this.highlightAnchor) + zui_Zui.textToPaste + HxOverrides.substr(text,this.cursorX,null); this.cursorX += zui_Zui.textToPaste.length; this.highlightAnchor = this.cursorX; zui_Zui.textToPaste = ""; zui_Zui.isPaste = false; } if(this.highlightAnchor == this.cursorX) { zui_Zui.textToCopy = text; } else if(this.highlightAnchor < this.cursorX) { zui_Zui.textToCopy = text.substring(this.highlightAnchor,this.cursorX); } else { zui_Zui.textToCopy = text.substring(this.cursorX,this.highlightAnchor); } if(editable && zui_Zui.isCut) { if(this.highlightAnchor == this.cursorX) { text = ""; } else if(this.highlightAnchor < this.cursorX) { text = HxOverrides.substr(text,0,this.highlightAnchor) + HxOverrides.substr(text,this.cursorX,text.length); this.cursorX = this.highlightAnchor; } else { text = HxOverrides.substr(text,0,this.cursorX) + HxOverrides.substr(text,this.highlightAnchor,text.length); } } var off = this.t.TEXT_OFFSET * this.ops.scaleFactor; var lineHeight = this.t.ELEMENT_H * this.ops.scaleFactor; var cursorHeight = lineHeight - this.buttonOffsetY * 3.0; if(this.highlightAnchor != this.cursorX) { var istart = this.cursorX; var iend = this.highlightAnchor; if(this.highlightAnchor < this.cursorX) { istart = this.highlightAnchor; iend = this.cursorX; } var hlstr = HxOverrides.substr(text,istart,iend - istart); var hlstrw = this.ops.font.width(this.fontSize,hlstr); var startoff = this.ops.font.width(this.fontSize,HxOverrides.substr(text,0,istart)); var hlStart = align == 0 ? this._x + startoff + off : this._x + this._w - hlstrw - off; if(align == 2) { hlStart -= this.ops.font.width(this.fontSize,HxOverrides.substr(text,iend,text.length)); } this.g.set_color(this.t.ACCENT_SELECT_COL); this.g.fillRect(hlStart,this._y + this.buttonOffsetY * 1.5,hlstrw,cursorHeight); } var str = align == 0 ? HxOverrides.substr(text,0,this.cursorX) : text.substring(this.cursorX,text.length); var strw = this.ops.font.width(this.fontSize,str); var cursorX = align == 0 ? this._x + strw + off : this._x + this._w - strw - off; this.g.set_color(this.t.TEXT_COL); this.g.fillRect(cursorX,this._y + this.buttonOffsetY * 1.5,2 * this.ops.scaleFactor,cursorHeight); this.textSelected = text; if(liveUpdate && this.textSelectedHandle != null) { this.textSelectedHandle.changed = this.textSelectedHandle.text != this.textSelected; this.textSelectedHandle.text = this.textSelected; } } ,textInput: function(handle,label,align,editable,liveUpdate) { if(liveUpdate == null) { liveUpdate = false; } if(editable == null) { editable = true; } if(align == null) { align = 0; } if(label == null) { label = ""; } if(!this.isVisible(this.t.ELEMENT_H * this.ops.scaleFactor)) { this.endElement(); return handle.text; } var hover = this.getHover(); if(hover && zui_Zui.onTextHover != null) { zui_Zui.onTextHover(); } this.g.set_color(hover ? this.t.ACCENT_HOVER_COL : this.t.ACCENT_COL); var g = this.g; var fill = this.t.FILL_ACCENT_BG; 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.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } if(fill) { g.fillRect(x,y - 1,w,h + 1); } else { g.drawRect(x,y,w,h,strength); } var released = this.getReleased(); if(this.submitTextHandle == handle && released) { this.isTyping = true; this.textSelectedHandle = this.submitTextHandle; this.submitTextHandle = null; this.setCursorToInput(align); } var startEdit = released || this.tabPressed; handle.changed = false; if(this.textSelectedHandle != handle && startEdit) { this.startTextEdit(handle,align); } if(this.textSelectedHandle == handle) { this.updateTextEdit(align,editable,liveUpdate); } if(this.submitTextHandle == handle) { this.submitTextEdit(); } if(label != "") { this.g.set_color(this.t.LABEL_COL); var labelAlign = align == 2 ? 0 : 2; this.drawString(this.g,label,labelAlign == 0 ? null : 0,0,labelAlign); } this.g.set_color(this.t.TEXT_COL); if(this.textSelectedHandle != handle) { this.drawString(this.g,handle.text,null,0,align); } else { this.drawString(this.g,this.textSelected,null,0,align,false); } this.endElement(); return handle.text; } ,setCursorToInput: function(align) { var off = align == 0 ? this.t.TEXT_OFFSET * this.ops.scaleFactor : this._w - this.ops.font.width(this.fontSize,this.textSelected); var x = this.inputX - (this._windowX + this._x + off); this.cursorX = 0; while(this.cursorX < this.textSelected.length && this.ops.font.width(this.fontSize,HxOverrides.substr(this.textSelected,0,this.cursorX)) < x) this.cursorX++; this.highlightAnchor = this.cursorX; } ,deselectText: function() { if(this.textSelectedHandle == null) { return; } this.submitTextHandle = this.textSelectedHandle; this.textToSubmit = this.textSelected; 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(); } this.highlightAnchor = this.cursorX; if(zui_Zui.onDeselectText != null) { zui_Zui.onDeselectText(); } } ,button: function(text,align,label) { if(label == null) { label = ""; } if(align == null) { align = 1; } if(!this.isVisible(this.t.ELEMENT_H * this.ops.scaleFactor)) { this.endElement(); return false; } var released = this.getReleased(); var pushed = this.getPushed(); var hover = this.getHover(); if(released) { this.changed = true; } this.g.set_color(pushed ? this.t.BUTTON_PRESSED_COL : hover ? this.t.BUTTON_HOVER_COL : this.t.BUTTON_COL); var g = this.g; var fill = this.t.FILL_BUTTON_BG; 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.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } if(fill) { g.fillRect(x,y - 1,w,h + 1); } else { g.drawRect(x,y,w,h,strength); } this.g.set_color(this.t.BUTTON_TEXT_COL); this.drawString(this.g,text,null,0,align); if(label != "") { this.g.set_color(this.t.LABEL_COL); this.drawString(this.g,label,null,0,align == 2 ? 0 : 2); } this.endElement(); return released; } ,check: function(handle,text,label) { if(label == null) { label = ""; } if(!this.isVisible(this.t.ELEMENT_H * this.ops.scaleFactor)) { this.endElement(); return handle.selected; } if(this.getReleased()) { handle.selected = !handle.selected; handle.changed = this.changed = true; } else { handle.changed = false; } var hover = this.getHover(); this.drawCheck(handle.selected,hover); this.g.set_color(this.t.TEXT_COL); this.drawString(this.g,text,this.titleOffsetX,0,0); if(label != "") { this.g.set_color(this.t.LABEL_COL); this.drawString(this.g,label,null,0,2); } this.endElement(); return handle.selected; } ,radio: function(handle,position,text,label) { if(label == null) { label = ""; } if(!this.isVisible(this.t.ELEMENT_H * this.ops.scaleFactor)) { this.endElement(); return handle.position == position; } if(position == 0) { handle.changed = false; } if(this.getReleased()) { handle.position = position; handle.changed = this.changed = true; } var hover = this.getHover(); this.drawRadio(handle.position == position,hover); this.g.set_color(this.t.TEXT_COL); this.drawString(this.g,text,this.titleOffsetX,0); if(label != "") { this.g.set_color(this.t.LABEL_COL); this.drawString(this.g,label,null,0,2); } this.endElement(); return handle.position == position; } ,combo: function(handle,texts,label,showLabel,align,searchBar) { if(searchBar == null) { searchBar = true; } if(align == null) { align = 0; } if(showLabel == null) { showLabel = false; } if(label == null) { label = ""; } if(!this.isVisible(this.t.ELEMENT_H * this.ops.scaleFactor)) { this.endElement(); return handle.position; } if(this.getReleased()) { if(this.comboSelectedHandle == null) { this.inputEnabled = false; this.comboSelectedHandle = handle; this.comboSelectedWindow = this.currentWindow; this.comboSelectedAlign = align; this.comboSelectedTexts = texts; this.comboSelectedLabel = label; this.comboSelectedX = this._x + this._windowX | 0; this.comboSelectedY = this._y + this._windowY + this.t.ELEMENT_H * this.ops.scaleFactor | 0; this.comboSelectedW = this._w | 0; this.comboSearchBar = searchBar; var _g = 0; while(_g < texts.length) { var t = texts[_g]; ++_g; var w = (this.ops.font.width(this.fontSize,t) | 0) + 10; if(this.comboSelectedW < w) { this.comboSelectedW = w; } } if(this.comboSelectedW > this._w * 2) { this.comboSelectedW = this._w * 2 | 0; } if(this.comboSelectedW > this._w) { this.comboSelectedW += this.t.TEXT_OFFSET * this.ops.scaleFactor | 0; } this.comboToSubmit = handle.position; this.comboInitialValue = handle.position; } } if(handle == this.comboSelectedHandle && (this.isEscapeDown || this.inputReleasedR)) { handle.position = this.comboInitialValue; handle.changed = this.changed = true; this.submitComboHandle = null; } else if(handle == this.submitComboHandle) { handle.position = this.comboToSubmit; this.submitComboHandle = null; handle.changed = this.changed = true; } else { handle.changed = false; } var hover = this.getHover(); if(hover) { this.g.set_color(this.t.ACCENT_HOVER_COL); var g = this.g; var fill = this.t.FILL_ACCENT_BG; 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.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } if(fill) { g.fillRect(x,y - 1,w,h + 1); } else { g.drawRect(x,y,w,h,strength); } } else { this.g.set_color(this.t.ACCENT_COL); var g = this.g; var fill = this.t.FILL_ACCENT_BG; 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.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } if(fill) { g.fillRect(x,y - 1,w,h + 1); } else { g.drawRect(x,y,w,h,strength); } } var x = this._x + this._w - this.arrowOffsetX - 8; var y = this._y + this.arrowOffsetY + 3; this.g.fillTriangle(x,y,x + this.t.ARROW_SIZE * this.ops.scaleFactor,y,x + this.t.ARROW_SIZE * this.ops.scaleFactor / 2,y + this.t.ARROW_SIZE * this.ops.scaleFactor / 2); if(showLabel && label != "") { if(align == 0) { this._x -= 15; } this.g.set_color(this.t.LABEL_COL); this.drawString(this.g,label,null,0,align == 0 ? 2 : 0); if(align == 0) { this._x += 15; } } if(align == 2) { this._x -= 15; } this.g.set_color(this.t.TEXT_COL); if(handle.position < texts.length) { this.drawString(this.g,texts[handle.position],null,0,align); } if(align == 2) { this._x += 15; } this.endElement(); return handle.position; } ,slider: function(handle,text,from,to,filled,precision,displayValue,align,textEdit) { if(textEdit == null) { textEdit = true; } if(align == null) { align = 2; } if(displayValue == null) { displayValue = true; } if(precision == null) { precision = 100.0; } if(filled == null) { filled = false; } if(to == null) { to = 1.0; } if(from == null) { from = 0.0; } if(!this.isVisible(this.t.ELEMENT_H * this.ops.scaleFactor)) { this.endElement(); return handle.value; } if(this.getStarted()) { this.scrollHandle = handle; this.isScrolling = true; this.changed = handle.changed = true; if(zui_Zui.touchTooltip) { this.sliderTooltip = true; this.sliderTooltipX = this._x + this._windowX; this.sliderTooltipY = this._y + this._windowY; this.sliderTooltipW = this._w; } } else { handle.changed = false; } if(handle == this.scrollHandle && this.inputDX != 0) { 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 = Math.round(value * precision) / precision; if(handle.value < from) { handle.value = from; } else if(handle.value > to) { handle.value = to; } handle.changed = this.changed = true; } var hover = this.getHover(); this.drawSlider(handle.value,from,to,filled,hover); var startEdit = (this.getReleased() || this.tabPressed) && textEdit; if(startEdit) { handle.text = handle.value + ""; this.startTextEdit(handle); handle.changed = this.changed = true; } var lalign = align == 0 ? 2 : 0; if(this.textSelectedHandle == handle) { this.updateTextEdit(lalign); } if(this.submitTextHandle == handle) { this.submitTextEdit(); try { var code = handle.text; handle.value = eval(code); } catch( _g ) { } handle.changed = this.changed = true; } this.g.set_color(this.t.LABEL_COL); this.drawString(this.g,text,null,0,align); if(displayValue) { this.g.set_color(this.t.TEXT_COL); if(this.textSelectedHandle != handle) { this.drawString(this.g,Math.round(handle.value * precision) / precision + "",null,0,lalign); } else { this.drawString(this.g,this.textSelected,null,0,lalign); } } this.endElement(); return handle.value; } ,separator: function(h,fill) { if(fill == null) { fill = true; } if(h == null) { h = 4; } if(!this.isVisible(this.t.ELEMENT_H * this.ops.scaleFactor)) { this._y += h * this.ops.scaleFactor; return; } if(fill) { this.g.set_color(this.t.SEPARATOR_COL); this.g.fillRect(this._x,this._y,this._w,h * this.ops.scaleFactor); } this._y += h * this.ops.scaleFactor; } ,tooltip: function(text) { this.tooltipText = text; this.tooltipY = this._y + this._windowY; } ,tooltipImage: function(image,maxWidth) { this.tooltipImg = image; this.tooltipImgMaxWidth = maxWidth; this.tooltipInvertY = this.imageInvertY; this.tooltipY = this._y + this._windowY; } ,drawArrow: function(selected) { var x = this._x + this.arrowOffsetX; var y = this._y + this.arrowOffsetY; this.g.set_color(this.t.TEXT_COL); if(selected) { this.g.fillTriangle(x,y,x + this.t.ARROW_SIZE * this.ops.scaleFactor,y,x + this.t.ARROW_SIZE * this.ops.scaleFactor / 2,y + this.t.ARROW_SIZE * this.ops.scaleFactor); } else { this.g.fillTriangle(x,y,x,y + this.t.ARROW_SIZE * this.ops.scaleFactor,x + this.t.ARROW_SIZE * this.ops.scaleFactor,y + this.t.ARROW_SIZE * this.ops.scaleFactor / 2); } } ,drawTree: function(selected) { var SIGN_W = 7 * this.ops.scaleFactor; var x = this._x + this.arrowOffsetX + 1; var y = this._y + this.arrowOffsetY + 1; this.g.set_color(this.t.TEXT_COL); if(selected) { this.g.fillRect(x,y + SIGN_W / 2 - 1,SIGN_W,SIGN_W / 8); } else { this.g.fillRect(x,y + SIGN_W / 2 - 1,SIGN_W,SIGN_W / 8); this.g.fillRect(x + SIGN_W / 2 - 1,y,SIGN_W / 8,SIGN_W); } } ,drawCheck: function(selected,hover) { var x = this._x + this.checkOffsetX; var y = this._y + this.checkOffsetY; this.g.set_color(hover ? this.t.ACCENT_HOVER_COL : this.t.ACCENT_COL); var g = this.g; var fill = this.t.FILL_ACCENT_BG; var w = this.t.CHECK_SIZE * this.ops.scaleFactor; var h = this.t.CHECK_SIZE * this.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } if(fill) { g.fillRect(x,y - 1,w,h + 1); } else { g.drawRect(x,y,w,h,strength); } if(selected) { this.g.set_color(-1); if(!this.enabled) { this.fadeColor(); } var size = this.t.CHECK_SELECT_SIZE * this.ops.scaleFactor | 0; this.g.drawScaledImage(this.checkSelectImage,x + this.checkSelectOffsetX,y + this.checkSelectOffsetY,size,size); } } ,drawRadio: function(selected,hover) { var x = this._x + this.radioOffsetX; var y = this._y + this.radioOffsetY; this.g.set_color(hover ? this.t.ACCENT_HOVER_COL : this.t.ACCENT_COL); var g = this.g; var fill = this.t.FILL_ACCENT_BG; var w = this.t.CHECK_SIZE * this.ops.scaleFactor; var h = this.t.CHECK_SIZE * this.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } if(fill) { g.fillRect(x,y - 1,w,h + 1); } else { g.drawRect(x,y,w,h,strength); } if(selected) { this.g.set_color(this.t.ACCENT_SELECT_COL); if(!this.enabled) { this.fadeColor(); } this.g.fillRect(x + this.radioSelectOffsetX,y + this.radioSelectOffsetY,this.t.CHECK_SELECT_SIZE * this.ops.scaleFactor,this.t.CHECK_SELECT_SIZE * this.ops.scaleFactor); } } ,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.ACCENT_HOVER_COL : this.t.ACCENT_COL); var g = this.g; var fill = this.t.FILL_ACCENT_BG; var h = this.t.BUTTON_H * this.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } if(fill) { g.fillRect(x,y - 1,w,h + 1); } else { g.drawRect(x,y,w,h,strength); } this.g.set_color(hover ? this.t.ACCENT_HOVER_COL : this.t.ACCENT_COL); var offset = (value - from) / (to - from); var barW = 8 * this.ops.scaleFactor; var sliderX = filled ? x : x + (w - barW) * offset; sliderX = Math.max(Math.min(sliderX,x + (w - barW)),x); var sliderW = filled ? w * offset : barW; sliderW = Math.max(Math.min(sliderW,w),0); var g = this.g; var h = this.t.BUTTON_H * this.ops.scaleFactor; var strength = 0.0; if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } g.fillRect(sliderX,y - 1,sliderW,h + 1); } ,drawCombo: function() { if(this.comboSelectedHandle == null) { return; } var _g = this.g; this.globalG.set_color(this.t.SEPARATOR_COL); this.globalG.begin(false); var comboH = (this.comboSelectedTexts.length + (this.comboSelectedLabel != "" ? 1 : 0) + (this.comboSearchBar ? 1 : 0)) * (this.t.ELEMENT_H * this.ops.scaleFactor | 0); var distTop = this.comboSelectedY - comboH - (this.t.ELEMENT_H * this.ops.scaleFactor | 0) - this.windowBorderTop; var distBottom = kha_System.windowHeight() - this.windowBorderBottom - (this.comboSelectedY + comboH); var unrollUp = distBottom < 0 && distBottom < distTop; this.beginRegion(this.globalG,this.comboSelectedX,this.comboSelectedY,this.comboSelectedW); if(this.isKeyPressed || this.inputWheelDelta != 0) { var arrowUp = this.isKeyPressed && this.key == (unrollUp ? 40 : 38); var arrowDown = this.isKeyPressed && this.key == (unrollUp ? 38 : 40); var wheelUp = unrollUp && this.inputWheelDelta > 0 || !unrollUp && this.inputWheelDelta < 0; var wheelDown = unrollUp && this.inputWheelDelta < 0 || !unrollUp && this.inputWheelDelta > 0; if((arrowUp || wheelUp) && this.comboToSubmit > 0) { var step = 1; if(this.comboSearchBar && this.textSelected.length > 0) { var search = this.textSelected.toLowerCase(); while(this.comboSelectedTexts[this.comboToSubmit - step].toLowerCase().indexOf(search) < 0 && this.comboToSubmit - step > 0) ++step; if(this.comboSelectedTexts[this.comboToSubmit - step].toLowerCase().indexOf(search) < 0) { step = 0; } } this.comboToSubmit -= step; this.submitComboHandle = this.comboSelectedHandle; } else if((arrowDown || wheelDown) && this.comboToSubmit < this.comboSelectedTexts.length - 1) { var step = 1; if(this.comboSearchBar && this.textSelected.length > 0) { var search = this.textSelected.toLowerCase(); while(this.comboSelectedTexts[this.comboToSubmit + step].toLowerCase().indexOf(search) < 0 && this.comboToSubmit + step < this.comboSelectedTexts.length - 1) ++step; if(this.comboSelectedTexts[this.comboToSubmit + step].toLowerCase().indexOf(search) < 0) { step = 0; } } this.comboToSubmit += step; this.submitComboHandle = this.comboSelectedHandle; } if(this.comboSelectedWindow != null) { this.comboSelectedWindow.redraws = 2; } } this.inputEnabled = true; var _BUTTON_COL = this.t.BUTTON_COL; var _ELEMENT_OFFSET = this.t.ELEMENT_OFFSET; this.t.ELEMENT_OFFSET = 0; var unrollRight = this._x + this.comboSelectedW * 2 < kha_System.windowWidth() - this.windowBorderRight ? 1 : -1; var resetPosition = false; var search = ""; if(this.comboSearchBar) { if(unrollUp) { this._y -= this.t.ELEMENT_H * this.ops.scaleFactor * 2; } var comboSearchHandle = zui_Handle.global.nest(0,null); if(zui_Zui.comboFirst) { comboSearchHandle.text = ""; } this.fill(0,0,this._w / this.ops.scaleFactor,this.t.ELEMENT_H * this.ops.scaleFactor / this.ops.scaleFactor,this.t.SEPARATOR_COL); search = this.textInput(comboSearchHandle,"",0,true,true).toLowerCase(); if(this.isReleased) { zui_Zui.comboFirst = true; } if(zui_Zui.comboFirst) { this.startTextEdit(comboSearchHandle); } resetPosition = comboSearchHandle.changed; } var _g1 = 0; var _g2 = this.comboSelectedTexts.length; while(_g1 < _g2) { var i = _g1++; if(search.length > 0 && this.comboSelectedTexts[i].toLowerCase().indexOf(search) < 0) { continue; } if(resetPosition) { this.comboToSubmit = this.comboSelectedHandle.position = i; this.submitComboHandle = this.comboSelectedHandle; resetPosition = false; } if(unrollUp) { this._y -= this.t.ELEMENT_H * this.ops.scaleFactor * 2; } this.t.BUTTON_COL = i == this.comboSelectedHandle.position ? this.t.ACCENT_SELECT_COL : this.t.SEPARATOR_COL; this.fill(0,0,this._w / this.ops.scaleFactor,this.t.ELEMENT_H * this.ops.scaleFactor / this.ops.scaleFactor,this.t.SEPARATOR_COL); if(this.button(this.comboSelectedTexts[i],this.comboSelectedAlign)) { this.comboToSubmit = i; this.submitComboHandle = this.comboSelectedHandle; if(this.comboSelectedWindow != null) { this.comboSelectedWindow.redraws = 2; } break; } if(this._y + this.t.ELEMENT_H * this.ops.scaleFactor > kha_System.windowHeight() - this.windowBorderBottom || this._y - this.t.ELEMENT_H * this.ops.scaleFactor * 2 < this.windowBorderTop) { this._x += this.comboSelectedW * unrollRight; this._y = this.comboSelectedY; } } this.t.BUTTON_COL = _BUTTON_COL; this.t.ELEMENT_OFFSET = _ELEMENT_OFFSET; if(this.comboSelectedLabel != "") { if(unrollUp) { this._y -= this.t.ELEMENT_H * this.ops.scaleFactor * 2; this.fill(0,0,this._w / this.ops.scaleFactor,this.t.ELEMENT_H * this.ops.scaleFactor / this.ops.scaleFactor,this.t.SEPARATOR_COL); this.g.set_color(this.t.LABEL_COL); this.drawString(this.g,this.comboSelectedLabel,null,0,2); this._y += this.t.ELEMENT_H * this.ops.scaleFactor; this.fill(0,0,this._w / this.ops.scaleFactor,this.ops.scaleFactor,this.t.ACCENT_SELECT_COL); } else { this.fill(0,0,this._w / this.ops.scaleFactor,this.t.ELEMENT_H * this.ops.scaleFactor / this.ops.scaleFactor,this.t.SEPARATOR_COL); this.fill(0,0,this._w / this.ops.scaleFactor,this.ops.scaleFactor,this.t.ACCENT_SELECT_COL); this.g.set_color(this.t.LABEL_COL); this.drawString(this.g,this.comboSelectedLabel,null,0,2); } } if((this.inputReleased || this.inputReleasedR || this.isEscapeDown || this.isReturnDown) && !zui_Zui.comboFirst) { this.comboSelectedHandle = null; zui_Zui.comboFirst = true; } else { zui_Zui.comboFirst = false; } this.inputEnabled = this.comboSelectedHandle == null; this.endRegion(false); this.globalG.end(); this.g = _g; } ,drawTooltip: function(bindGlobalG) { if(this.sliderTooltip) { if(bindGlobalG) { this.globalG.begin(false); } this.globalG.set_font(this.ops.font); this.globalG.set_fontSize(this.fontSize * 2); var text = Math.round(this.scrollHandle.value * 100) / 100 + ""; var xoff = this.ops.font.width(this.globalG.get_fontSize(),text) / 2; var yoff = this.ops.font.height(this.globalG.get_fontSize()); var x = Math.min(Math.max(this.sliderTooltipX,this.inputX),this.sliderTooltipX + this.sliderTooltipW); this.globalG.set_color(this.t.ACCENT_COL); this.globalG.fillRect(x - xoff,this.sliderTooltipY - yoff,xoff * 2,yoff); this.globalG.set_color(this.t.TEXT_COL); this.globalG.drawString(text,x - xoff,this.sliderTooltipY - yoff); if(bindGlobalG) { this.globalG.end(); } } if(zui_Zui.touchTooltip && this.textSelectedHandle != null) { if(bindGlobalG) { this.globalG.begin(false); } this.globalG.set_font(this.ops.font); this.globalG.set_fontSize(this.fontSize * 2); var xoff = this.ops.font.width(this.globalG.get_fontSize(),this.textSelected) / 2; var yoff = this.ops.font.height(this.globalG.get_fontSize()) / 2; var x = kha_System.windowWidth() / 2; var y = kha_System.windowHeight() / 3; this.globalG.set_color(this.t.ACCENT_COL); this.globalG.fillRect(x - xoff,y - yoff,xoff * 2,yoff * 2); this.globalG.set_color(this.t.TEXT_COL); this.globalG.drawString(this.textSelected,x - xoff,y - yoff); if(bindGlobalG) { this.globalG.end(); } } if(this.tooltipText != "" || this.tooltipImg != null) { if(this.inputChanged()) { this.tooltipShown = false; this.tooltipWait = this.inputDX == 0 && this.inputDY == 0; } if(!this.tooltipShown) { this.tooltipShown = true; this.tooltipX = this.inputX; this.tooltipTime = kha_Scheduler.time(); } if(!this.tooltipWait && kha_Scheduler.time() - this.tooltipTime > 1.0) { if(this.tooltipImg != null) { this.drawTooltipImage(bindGlobalG); } if(this.tooltipText != "") { this.drawTooltipText(bindGlobalG); } } } else { this.tooltipShown = false; } } ,drawTooltipText: function(bindGlobalG) { this.globalG.set_color(this.t.TEXT_COL); var lines = this.tooltipText.split("\n"); var tooltipW = 0.0; var _g = 0; while(_g < lines.length) { var line = lines[_g]; ++_g; var lineTooltipW = this.ops.font.width(this.fontSize,line); if(lineTooltipW > tooltipW) { tooltipW = lineTooltipW; } } this.tooltipX = Math.min(this.tooltipX,kha_System.windowWidth() - tooltipW - 20); if(bindGlobalG) { this.globalG.begin(false); } var fontHeight = this.ops.font.height(this.fontSize); var off = 0; if(this.tooltipImg != null) { var w = this.tooltipImg.get_width(); if(this.tooltipImgMaxWidth != null && w > this.tooltipImgMaxWidth) { w = this.tooltipImgMaxWidth; } off = this.tooltipImg.get_height() * (w / this.tooltipImg.get_width()) | 0; } this.globalG.fillRect(this.tooltipX,this.tooltipY + off,tooltipW + 20,fontHeight * lines.length); this.globalG.set_font(this.ops.font); this.globalG.set_fontSize(this.fontSize); this.globalG.set_color(this.t.ACCENT_COL); var _g = 0; var _g1 = lines.length; while(_g < _g1) { var i = _g++; this.globalG.drawString(lines[i],this.tooltipX + 5,this.tooltipY + off + i * this.fontSize); } if(bindGlobalG) { this.globalG.end(); } } ,drawTooltipImage: function(bindGlobalG) { var w = this.tooltipImg.get_width(); if(this.tooltipImgMaxWidth != null && w > this.tooltipImgMaxWidth) { w = this.tooltipImgMaxWidth; } var h = this.tooltipImg.get_height() * (w / this.tooltipImg.get_width()); this.tooltipX = Math.min(this.tooltipX,kha_System.windowWidth() - w - 20); this.tooltipY = Math.min(this.tooltipY,kha_System.windowHeight() - h - 20); if(bindGlobalG) { this.globalG.begin(false); } this.globalG.set_color(-16777216); this.globalG.fillRect(this.tooltipX,this.tooltipY,w,h); this.globalG.set_color(-1); if(this.tooltipInvertY) { this.globalG.drawScaledImage(this.tooltipImg,this.tooltipX,this.tooltipY + h,w,-h); } else { this.globalG.drawScaledImage(this.tooltipImg,this.tooltipX,this.tooltipY,w,h); } if(bindGlobalG) { this.globalG.end(); } } ,drawString: function(g,text,xOffset,yOffset,align,truncation) { if(truncation == null) { truncation = true; } if(align == null) { align = 0; } if(yOffset == null) { yOffset = 0; } var fullText = text; if(truncation) { while(text.length > 0 && this.ops.font.width(this.fontSize,text) > this._w - 6 * this.ops.scaleFactor) text = HxOverrides.substr(text,0,text.length - 1); if(text.length < fullText.length) { text += ".."; while(text.length > 2 && this.ops.font.width(this.fontSize,text) > this._w - 10 * this.ops.scaleFactor) text = HxOverrides.substr(text,0,text.length - 3) + ".."; if(this.isHovered) { this.tooltip(fullText); } } } if(zui_Zui.dynamicGlyphLoad) { var _g = 0; var _g1 = text.length; while(_g < _g1) { var i = _g++; if(HxOverrides.cca(text,i) > 126 && kha_graphics2_Graphics.fontGlyphs.indexOf(HxOverrides.cca(text,i)) == -1) { kha_graphics2_Graphics.fontGlyphs.push(HxOverrides.cca(text,i)); kha_graphics2_Graphics.fontGlyphs = kha_graphics2_Graphics.fontGlyphs.slice(); } } } if(xOffset == null) { xOffset = this.t.TEXT_OFFSET; } xOffset *= this.ops.scaleFactor; 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.TEXT_OFFSET * this.ops.scaleFactor; } if(!this.enabled) { this.fadeColor(); } g.set_pipeline(this.rtTextPipeline); if(this.textColoring == null) { g.drawString(text,this._x + xOffset,this._y + this.fontOffsetY + yOffset); } else { var _g = 0; var _g1 = this.textColoring.colorings; while(_g < _g1.length) { var coloring = _g1[_g]; ++_g; var result = zui_Zui.extractColoring(text,coloring); if(result.colored != "") { g.set_color(coloring.color); g.drawString(result.colored,this._x + xOffset,this._y + this.fontOffsetY + yOffset); } text = result.uncolored; } g.set_color(this.textColoring.default_color); g.drawString(text,this._x + xOffset,this._y + this.fontOffsetY + yOffset); } g.set_pipeline(null); } ,endElement: function(elementSize) { if(elementSize == null) { elementSize = this.t.ELEMENT_H * this.ops.scaleFactor + this.t.ELEMENT_OFFSET * this.ops.scaleFactor; } if(this.currentWindow == null || this.currentWindow.layout == 0) { if(this.curRatio == -1 || this.ratios != null && this.curRatio == this.ratios.length - 1) { 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; this.highlightFullRow = false; } } else { this.curRatio++; this._x += this._w; var ratio = this.ratios[this.curRatio]; this._w = (ratio < 0 ? -ratio : ratio * this.wBeforeSplit) | 0; } } else { this._x += this._w + this.t.ELEMENT_OFFSET * this.ops.scaleFactor; } } ,highlightNextRow: function() { this.highlightFullRow = true; } ,getRatio: function(ratio,dyn) { if(ratio < 0) { return -ratio; } else { return ratio * dyn; } } ,row: function(ratios) { this.ratios = ratios; this.curRatio = 0; this.xBeforeSplit = this._x; this.wBeforeSplit = this._w; var ratio = ratios[this.curRatio]; this._w = (ratio < 0 ? -ratio : ratio * this._w) | 0; } ,indent: function(bothSides) { if(bothSides == null) { bothSides = true; } this._x += this.t.TAB_W * this.ops.scaleFactor | 0; this._w -= this.t.TAB_W * this.ops.scaleFactor | 0; if(bothSides) { this._w -= this.t.TAB_W * this.ops.scaleFactor | 0; } } ,unindent: function(bothSides) { if(bothSides == null) { bothSides = true; } this._x -= this.t.TAB_W * this.ops.scaleFactor | 0; this._w += this.t.TAB_W * this.ops.scaleFactor | 0; if(bothSides) { this._w += this.t.TAB_W * this.ops.scaleFactor | 0; } } ,fadeColor: function() { this.g.set_color(kha_Color.fromFloats(((this.g.get_color() & 16711680) >>> 16) * 0.00392156862745098,((this.g.get_color() & 65280) >>> 8) * 0.00392156862745098,(this.g.get_color() & 255) * 0.00392156862745098,0.25)); } ,fill: function(x,y,w,h,color) { this.g.set_color(color); if(!this.enabled) { this.fadeColor(); } this.g.fillRect(this._x + x * this.ops.scaleFactor,this._y + y * this.ops.scaleFactor - 1,w * this.ops.scaleFactor,h * this.ops.scaleFactor); this.g.set_color(-1); } ,rect: function(x,y,w,h,color,strength) { if(strength == null) { strength = 1.0; } this.g.set_color(color); if(!this.enabled) { this.fadeColor(); } this.g.drawRect(this._x + x * this.ops.scaleFactor,this._y + y * this.ops.scaleFactor,w * this.ops.scaleFactor,h * this.ops.scaleFactor,strength); this.g.set_color(-1); } ,drawRect: function(g,fill,x,y,w,h,strength) { if(strength == null) { strength = 0.0; } if(strength == 0.0) { strength = 1; } if(!this.enabled) { this.fadeColor(); } if(fill) { g.fillRect(x,y - 1,w,h + 1); } else { g.drawRect(x,y,w,h,strength); } } ,isVisible: function(elemH) { if(this.currentWindow == null) { return true; } if(this._y + elemH > this.windowHeaderH) { return this._y < this.currentWindow.texture.get_height(); } else { return false; } } ,getReleased: function(elemH) { if(elemH == null) { elemH = -1.0; } this.isReleased = this.enabled && this.inputEnabled && this.inputReleased && this.getHover(elemH) && this.getInitialHover(elemH); return this.isReleased; } ,getPushed: function(elemH) { if(elemH == null) { elemH = -1.0; } this.isPushed = this.enabled && this.inputEnabled && this.inputDown && this.getHover(elemH) && this.getInitialHover(elemH); return this.isPushed; } ,getStarted: function(elemH) { if(elemH == null) { elemH = -1.0; } this.isStarted = this.enabled && this.inputEnabled && this.inputStarted && this.getHover(elemH); return this.isStarted; } ,getInitialHover: function(elemH) { if(elemH == null) { elemH = -1.0; } if(this.scissor && this.inputY < this._windowY + this.windowHeaderH) { return false; } if(elemH == -1.0) { elemH = this.t.ELEMENT_H * this.ops.scaleFactor; } if(this.enabled && this.inputEnabled && this.inputStartedX >= this._windowX + this._x && this.inputStartedX < this._windowX + this._x + this._w && this.inputStartedY >= this._windowY + this._y) { return this.inputStartedY < this._windowY + this._y + elemH; } else { return false; } } ,getHover: function(elemH) { if(elemH == null) { elemH = -1.0; } if(this.scissor && this.inputY < this._windowY + this.windowHeaderH) { return false; } if(elemH == -1.0) { elemH = this.t.ELEMENT_H * this.ops.scaleFactor; } this.isHovered = this.enabled && this.inputEnabled && this.inputX >= this._windowX + (this.highlightFullRow ? 0 : this._x) && this.inputX < this._windowX + this._x + (this.highlightFullRow ? this._windowW : this._w) && this.inputY >= this._windowY + this._y && this.inputY < this._windowY + this._y + elemH; return this.isHovered; } ,getInputInRect: function(x,y,w,h,scale) { if(scale == null) { scale = 1.0; } if(this.enabled && this.inputEnabled && 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) { if(this.penInUse) { return; } if(button == 0) { this.inputStarted = true; } else { this.inputStartedR = true; } if(button == 0) { this.inputDown = true; } else { this.inputDownR = true; } this.inputStartedTime = kha_Scheduler.time(); this.inputStartedX = x; this.inputStartedY = y; } ,onMouseUp: function(button,x,y) { if(this.penInUse) { return; } if(this.touchHoldActivated) { this.touchHoldActivated = false; return; } if(this.isScrolling) { this.isScrolling = false; this.scrollHandle = null; this.sliderTooltip = false; if(x == this.inputStartedX && y == this.inputStartedY) { if(button == 0) { this.inputReleased = true; } else { this.inputReleasedR = true; } } } else if(button == 0) { this.inputReleased = true; } else { this.inputReleasedR = true; } if(button == 0) { this.inputDown = false; } else { this.inputDownR = false; } this.deselectText(); } ,onMouseMove: function(x,y,movementX,movementY) { this.setInputPosition(x,y); } ,onMouseWheel: function(delta) { this.inputWheelDelta = delta; } ,setInputPosition: function(x,y) { this.inputDX += x - this.inputX; this.inputDY += y - this.inputY; this.inputX = x; this.inputY = y; } ,onPenDown: function(x,y,pressure) { this.onMouseDown(0,x,y); } ,onPenUp: function(x,y,pressure) { if(this.inputStarted) { this.inputStarted = false; this.penInUse = true; return; } this.onMouseUp(0,x,y); this.penInUse = true; } ,onPenMove: function(x,y,pressure) { this.onMouseMove(x,y,0,0); } ,onKeyDown: function(code) { this.key = code; this.isKeyPressed = true; this.isKeyDown = true; zui_Zui.keyRepeatTime = kha_Scheduler.time() + 0.4; switch(code) { case 8: this.isBackspaceDown = true; break; case 9: this.isTabDown = true; break; case 13: this.isReturnDown = true; break; case 16: this.isShiftDown = true; break; case 17: this.isCtrlDown = true; break; case 18: this.isAltDown = true; break; case 27: this.isEscapeDown = true; break; case 32: this.char = " "; break; case 46: this.isDeleteDown = true; break; case 65: this.isADown = true; break; default: } } ,onKeyUp: function(code) { this.isKeyDown = false; switch(code) { case 8: this.isBackspaceDown = false; break; case 9: this.isTabDown = false; break; case 13: this.isReturnDown = false; break; case 16: this.isShiftDown = false; break; case 17: this.isCtrlDown = false; break; case 18: this.isAltDown = false; break; case 27: this.isEscapeDown = false; break; case 46: this.isDeleteDown = false; break; case 65: this.isADown = false; break; default: } } ,onKeyPress: function(char) { this.char = char; this.isKeyPressed = true; } ,onCut: function() { zui_Zui.isCut = true; return this.onCopy(); } ,onCopy: function() { zui_Zui.isCopy = true; return zui_Zui.textToCopy; } ,onPaste: function(s) { zui_Zui.isPaste = true; zui_Zui.textToPaste = s; } ,ELEMENT_W: function() { return this.t.ELEMENT_W * this.ops.scaleFactor; } ,ELEMENT_H: function() { return this.t.ELEMENT_H * this.ops.scaleFactor; } ,ELEMENT_OFFSET: function() { return this.t.ELEMENT_OFFSET * this.ops.scaleFactor; } ,ARROW_SIZE: function() { return this.t.ARROW_SIZE * this.ops.scaleFactor; } ,BUTTON_H: function() { return this.t.BUTTON_H * this.ops.scaleFactor; } ,CHECK_SIZE: function() { return this.t.CHECK_SIZE * this.ops.scaleFactor; } ,CHECK_SELECT_SIZE: function() { return this.t.CHECK_SELECT_SIZE * this.ops.scaleFactor; } ,FONT_SIZE: function() { return this.t.FONT_SIZE * this.ops.scaleFactor | 0; } ,SCROLL_W: function() { return this.t.SCROLL_W * this.ops.scaleFactor | 0; } ,TEXT_OFFSET: function() { return this.t.TEXT_OFFSET * this.ops.scaleFactor; } ,TAB_W: function() { return this.t.TAB_W * this.ops.scaleFactor | 0; } ,HEADER_DRAG_H: function() { return 15 * this.ops.scaleFactor | 0; } ,SCALE: function() { return this.ops.scaleFactor; } ,TOOLTIP_DELAY: function() { return 1.0; } ,resize: function(handle,w,h) { handle.redraws = 2; if(handle.texture != null) { handle.texture.unload(); } if(w < 1) { w = 1; } if(h < 1) { h = 1; } handle.texture = kha_Image.createRenderTarget(w,h,0,0,1); handle.texture.get_g2().set_imageScaleQuality(1); } ,__class__: zui_Zui }; function $getIterator(o) { if( o instanceof Array ) return new haxe_iterators_ArrayIterator(o); else return o.iterator(); } function $bind(o,m) { if( m == null ) return null; if( m.__id__ == null ) m.__id__ = $global.$haxeUID++; var f; if( o.hx__closures__ == null ) o.hx__closures__ = {}; else f = o.hx__closures__[m.__id__]; if( f == null ) { f = m.bind(o); o.hx__closures__[m.__id__] = f; } return f; } $global.$haxeUID |= 0; if(typeof(performance) != "undefined" ? typeof(performance.now) == "function" : false) { HxOverrides.now = performance.now.bind(performance); } $hxClasses["Math"] = Math; if( String.fromCodePoint == null ) String.fromCodePoint = function(c) { return c < 0x10000 ? String.fromCharCode(c) : String.fromCharCode((c>>10)+0xD7C0)+String.fromCharCode((c&0x3FF)+0xDC00); } 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 = { }; var Dynamic = { }; var Float = Number; var Bool = Boolean; var Class = { }; var Enum = { }; haxe_ds_ObjectMap.count = 0; js_Boot.__toStr = ({ }).toString; if(ArrayBuffer.prototype.slice == null) { ArrayBuffer.prototype.slice = js_lib__$ArrayBuffer_ArrayBufferCompat.sliceImpl; } Main.cwd = ""; lnx2d_Editor.defaultWindowW = 240; lnx2d_Editor.windowW = lnx2d_Editor.defaultWindowW; lnx2d_Editor.coffX = 160.0; lnx2d_Editor.coffY = 40.0; lnx2d_Editor.currentOperation = ""; lnx2d_Editor.assetNames = [""]; lnx2d_Editor.showFiles = false; lnx2d_Editor.foldersOnly = false; lnx2d_Editor.gridSnapBounds = false; lnx2d_Editor.gridSnapPos = true; lnx2d_Editor.gridUseRelative = true; lnx2d_Editor.useRotationSteps = false; lnx2d_Editor.rotationSteps = 0.261799386; lnx2d_Editor.gridSize = 20; lnx2d_Editor.redrawGrid = false; lnx2d_Editor.modalW = 625; lnx2d_Editor.modalH = 545; lnx2d_Editor.modalHeaderH = 66; lnx2d_Editor.modalRectW = 625; lnx2d_Editor.modalRectH = 545; lnx2d_Editor.path = "/"; lnx2d_ElementController.isManipulating = false; lnx2d_ElementController.transformStartedMouse = false; lnx2d_ElementController.drag = false; lnx2d_ElementController.dragLeft = false; lnx2d_ElementController.dragTop = false; lnx2d_ElementController.dragRight = false; lnx2d_ElementController.dragBottom = false; lnx2d_ElementController.grab = false; lnx2d_ElementController.grabX = false; lnx2d_ElementController.grabY = false; lnx2d_ElementController.rotate = false; lnx2d_ElementController.newElementSelected = false; zui_Handle.global = new zui_Handle(); lnx2d_ui_UIProperties.hwin = zui_Handle.global.nest(2,null); leenkx_system_AssertLevel.Warning = 0; leenkx_system_AssertLevel.Error = 1; leenkx_system_AssertLevel.NoAssertions = 2; leenkx_ui_Canvas.defaultFontName = "font_default.ttf"; leenkx_ui_Canvas.assetMap = new haxe_ds_IntMap(); leenkx_ui_Canvas.themes = []; leenkx_ui_Canvas.events = []; leenkx_ui_Canvas.screenW = -1; leenkx_ui_Canvas.screenH = -1; leenkx_ui_Canvas.locale = "en"; leenkx_ui_Canvas.imageScaleQuality = 0; leenkx_ui_Canvas.h = new zui_Handle(); leenkx_ui_Canvas.elemId = -1; leenkx_ui_Canvas.assetId = -1; leenkx_ui_Popup.show = false; leenkx_ui_Popup.hwnd = new zui_Handle(); leenkx_ui_Popup.boxTitle = ""; leenkx_ui_Popup.boxText = ""; leenkx_ui_Popup.modalX = 0; leenkx_ui_Popup.modalY = 0; leenkx_ui_Popup.modalW = 400; leenkx_ui_Popup.modalH = 160; leenkx_ui_Themes.light = { NAME : "Default Light", WINDOW_BG_COL : -1052689, WINDOW_TINT_COL : -14540254, ACCENT_COL : -1118482, ACCENT_HOVER_COL : -4473925, ACCENT_SELECT_COL : -5592406, BUTTON_COL : -3355444, BUTTON_TEXT_COL : -14540254, BUTTON_HOVER_COL : -5000269, BUTTON_PRESSED_COL : -5131855, TEXT_COL : -6710887, LABEL_COL : -5592406, SEPARATOR_COL : -6710887, HIGHLIGHT_COL : -14656100, CONTEXT_COL : -5592406, PANEL_BG_COL : -5592406, FONT_SIZE : 26, ELEMENT_W : 200, ELEMENT_H : 48, ELEMENT_OFFSET : 8, ARROW_SIZE : 10, BUTTON_H : 44, CHECK_SIZE : 30, CHECK_SELECT_SIZE : 16, SCROLL_W : 12, TEXT_OFFSET : 16, TAB_W : 24, FILL_WINDOW_BG : false, FILL_BUTTON_BG : true, FILL_ACCENT_BG : false, LINK_STYLE : 0, FULL_TABS : false}; haxe_Unserializer.DEFAULT_RESOLVER = new haxe__$Unserializer_DefaultResolver(); haxe_Unserializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:"; haxe_io_FPHelper.helper = new DataView(new ArrayBuffer(8)); 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.Black = -16777216; kha_Color.White = -1; kha_Color.Red = -65536; kha_Color.Blue = -16776961; kha_Color.Green = -16711936; kha_Color.Magenta = -65281; kha_Color.Yellow = -256; kha_Color.Cyan = -16711681; kha_Color.Purple = -8388480; kha_Color.Pink = -16181; kha_Color.Orange = -23296; kha_Color.Transparent = 0; kha_Color.invMaxChannelValue = 0.00392156862745098; kha_FontStyle.Default = new kha_FontStyle(false,false,false); kha_Scheduler.timeWarpSaveTime = 10.0; kha_Scheduler.DIF_COUNT = 3; kha_Scheduler.maxframetime = 0.5; kha_Scheduler.startTime = 0; kha_Shaders.painter_colored_fragData0 = "s142:I3ZlcnNpb24gMzMwCgpvdXQgdmVjNCBGcmFnQ29sb3I7CmluIHZlYzQgZnJhZ21lbnRDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIEZyYWdDb2xvciA9IGZyYWdtZW50Q29sb3I7Cn0KCg"; kha_Shaders.painter_colored_vertData0 = "s307:I3ZlcnNpb24gMzMwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmluIHZlYzMgdmVydGV4UG9zaXRpb247Cm91dCB2ZWM0IGZyYWdtZW50Q29sb3I7CmluIHZlYzQgdmVydGV4Q29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2ZWM0KHZlcnRleFBvc2l0aW9uLCAxLjApOwogICAgZnJhZ21lbnRDb2xvciA9IHZlcnRleENvbG9yOwp9Cgo"; kha_Shaders.painter_image_fragData0 = "s374:I3ZlcnNpb24gMzMwCgp1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CgppbiB2ZWMyIHRleENvb3JkOwppbiB2ZWM0IGNvbG9yOwpvdXQgdmVjNCBGcmFnQ29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICB2ZWM0IHRleGNvbG9yID0gdGV4dHVyZSh0ZXgsIHRleENvb3JkKSAqIGNvbG9yOwogICAgdmVjMyBfMzIgPSB0ZXhjb2xvci54eXogKiBjb2xvci53OwogICAgdGV4Y29sb3IgPSB2ZWM0KF8zMi54LCBfMzIueSwgXzMyLnosIHRleGNvbG9yLncpOwogICAgRnJhZ0NvbG9yID0gdGV4Y29sb3I7Cn0KCg"; kha_Shaders.painter_image_vertData0 = "s368:I3ZlcnNpb24gMzMwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmluIHZlYzMgdmVydGV4UG9zaXRpb247Cm91dCB2ZWMyIHRleENvb3JkOwppbiB2ZWMyIHZlcnRleFVWOwpvdXQgdmVjNCBjb2xvcjsKaW4gdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICB0ZXhDb29yZCA9IHZlcnRleFVWOwogICAgY29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK"; kha_Shaders.painter_text_fragData0 = "s270:I3ZlcnNpb24gMzMwCgp1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CgpvdXQgdmVjNCBGcmFnQ29sb3I7CmluIHZlYzQgZnJhZ21lbnRDb2xvcjsKaW4gdmVjMiB0ZXhDb29yZDsKCnZvaWQgbWFpbigpCnsKICAgIEZyYWdDb2xvciA9IHZlYzQoZnJhZ21lbnRDb2xvci54eXosIHRleHR1cmUodGV4LCB0ZXhDb29yZCkueCAqIGZyYWdtZW50Q29sb3Iudyk7Cn0KCg"; kha_Shaders.painter_text_vertData0 = "s390:I3ZlcnNpb24gMzMwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmluIHZlYzMgdmVydGV4UG9zaXRpb247Cm91dCB2ZWMyIHRleENvb3JkOwppbiB2ZWMyIHZlcnRleFVWOwpvdXQgdmVjNCBmcmFnbWVudENvbG9yOwppbiB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdmVydGV4VVY7CiAgICBmcmFnbWVudENvbG9yID0gdmVydGV4Q29sb3I7Cn0KCg"; kha_Shaders.painter_video_fragData0 = "s374:I3ZlcnNpb24gMzMwCgp1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CgppbiB2ZWMyIHRleENvb3JkOwppbiB2ZWM0IGNvbG9yOwpvdXQgdmVjNCBGcmFnQ29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICB2ZWM0IHRleGNvbG9yID0gdGV4dHVyZSh0ZXgsIHRleENvb3JkKSAqIGNvbG9yOwogICAgdmVjMyBfMzIgPSB0ZXhjb2xvci54eXogKiBjb2xvci53OwogICAgdGV4Y29sb3IgPSB2ZWM0KF8zMi54LCBfMzIueSwgXzMyLnosIHRleGNvbG9yLncpOwogICAgRnJhZ0NvbG9yID0gdGV4Y29sb3I7Cn0KCg"; kha_Shaders.painter_video_vertData0 = "s368:I3ZlcnNpb24gMzMwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmluIHZlYzMgdmVydGV4UG9zaXRpb247Cm91dCB2ZWMyIHRleENvb3JkOwppbiB2ZWMyIHZlcnRleFVWOwpvdXQgdmVjNCBjb2xvcjsKaW4gdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICB0ZXhDb29yZCA9IHZlcnRleFVWOwogICAgY29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK"; kha_System.renderListeners = []; kha_System.foregroundListeners = []; kha_System.resumeListeners = []; kha_System.pauseListeners = []; kha_System.backgroundListeners = []; kha_System.shutdownListeners = []; kha_System.dropFilesListeners = []; kha_SystemImpl.maxGamepads = 4; kha_SystemImpl.mouseLockListeners = []; kha_Window.windows = []; kha_WindowFeatures.None = 0; kha_WindowFeatures.FeatureResizable = 1; kha_WindowFeatures.FeatureMinimizable = 2; kha_WindowFeatures.FeatureMaximizable = 4; kha_WindowFeatures.FeatureBorderless = 8; kha_WindowFeatures.FeatureOnTop = 16; kha_arrays_ByteArray.LITTLE_ENDIAN = new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x78; kha_audio2_Audio.disableGcInteractions = false; kha_audio2_Audio.intBox = new kha_internal_IntBox(0); kha_audio2_Audio1.channelCount = 32; kha_audio2_Audio1.lastAllocationCount = 0; 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_Graphics.fontGlyphs = (function($this) { var $r; var _g = []; { var _g1 = 32; while(_g1 < 256) { var i = _g1++; _g.push(i); } } $r = _g; return $r; }(this)); 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_vcubic = 4; 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_ImageShaderPainter.bufferSize = 1500; kha_graphics4_ImageShaderPainter.vertexSize = 6; kha_graphics4_ColoredShaderPainter.bufferSize = 1000; kha_graphics4_ColoredShaderPainter.triangleBufferSize = 1000; kha_graphics4_TextShaderPainter.bufferSize = 1000; kha_graphics4_VertexData.Float32_1X = 0; kha_graphics4_VertexData.Float32_2X = 1; kha_graphics4_VertexData.Float32_3X = 2; kha_graphics4_VertexData.Float32_4X = 3; kha_graphics4_VertexData.Float32_4X4 = 4; kha_graphics4_VertexData.Int8_1X = 5; kha_graphics4_VertexData.UInt8_1X = 6; kha_graphics4_VertexData.Int8_1X_Normalized = 7; kha_graphics4_VertexData.UInt8_1X_Normalized = 8; kha_graphics4_VertexData.Int8_2X = 9; kha_graphics4_VertexData.UInt8_2X = 10; kha_graphics4_VertexData.Int8_2X_Normalized = 11; kha_graphics4_VertexData.UInt8_2X_Normalized = 12; kha_graphics4_VertexData.Int8_4X = 13; kha_graphics4_VertexData.UInt8_4X = 14; kha_graphics4_VertexData.Int8_4X_Normalized = 15; kha_graphics4_VertexData.UInt8_4X_Normalized = 16; kha_graphics4_VertexData.Int16_1X = 17; kha_graphics4_VertexData.UInt16_1X = 18; kha_graphics4_VertexData.Int16_1X_Normalized = 19; kha_graphics4_VertexData.UInt16_1X_Normalized = 20; kha_graphics4_VertexData.Int16_2X = 21; kha_graphics4_VertexData.UInt16_2X = 22; kha_graphics4_VertexData.Int16_2X_Normalized = 23; kha_graphics4_VertexData.UInt16_2X_Normalized = 24; kha_graphics4_VertexData.Int16_4X = 25; kha_graphics4_VertexData.UInt16_4X = 26; kha_graphics4_VertexData.Int16_4X_Normalized = 27; kha_graphics4_VertexData.UInt16_4X_Normalized = 28; kha_graphics4_VertexData.Int32_1X = 29; kha_graphics4_VertexData.UInt32_1X = 30; kha_graphics4_VertexData.Int32_2X = 31; kha_graphics4_VertexData.UInt32_2X = 32; kha_graphics4_VertexData.Int32_3X = 33; kha_graphics4_VertexData.UInt32_3X = 34; kha_graphics4_VertexData.Int32_4X = 35; kha_graphics4_VertexData.UInt32_4X = 36; kha_graphics4_VertexData.Float1 = 0; kha_graphics4_VertexData.Float2 = 1; kha_graphics4_VertexData.Float3 = 2; kha_graphics4_VertexData.Float4 = 3; kha_graphics4_VertexData.Float4x4 = 4; kha_graphics4_VertexData.Short2Norm = 23; kha_graphics4_VertexData.Short4Norm = 27; kha_input_Gamepad.__meta__ = { statics : { sendConnectEvent : { input : null}, sendDisconnectEvent : { input : null}}, fields : { sendAxisEvent : { input : null}, sendButtonEvent : { input : null}}}; kha_input_Gamepad.instances = []; kha_input_Gamepad.connectListeners = []; kha_input_Gamepad.disconnectListeners = []; kha_input_Keyboard.__meta__ = { fields : { sendDownEvent : { input : null}, sendUpEvent : { input : null}, sendPressEvent : { input : null}}}; kha_input_Keyboard.keyBehavior = kha_input_BlockInterventions.Default; kha_input_Mouse.__meta__ = { fields : { sendLeaveEvent : { input : null}, sendDownEvent : { input : null}, sendUpEvent : { input : null}, sendMoveEvent : { input : null}, sendWheelEvent : { input : null}}}; kha_input_Mouse.wheelEventBlockBehavior = kha_input_MouseEventBlockBehavior.Full; kha_input_Surface.touchDownEventBlockBehavior = kha_input_TouchDownEventBlockBehavior.Full; kha_internal_BytesBlob.bufferSize = 2000; kha_krom_Graphics.mat = kha_arrays_Float32Array._new(16); 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_netsync_ControllerBuilder.nextId = 0; kha_netsync_Session.START = 0; kha_netsync_Session.ENTITY_UPDATES = 1; kha_netsync_Session.CONTROLLER_UPDATES = 2; kha_netsync_Session.REMOTE_CALL = 3; kha_netsync_Session.PING = 4; kha_netsync_Session.SESSION_ERROR = 5; kha_netsync_Session.PLAYER_UPDATES = 6; kha_netsync_Session.RPC_SERVER = 0; kha_netsync_Session.RPC_ALL = 1; kha_netsync_SyncBuilder.nextId = 0; kha_netsync_SyncBuilder.objects = []; zui_Ext.dataPath = ""; zui_Ext.lastPath = ""; zui_Ext.textAreaLineNumbers = false; zui_Ext.textAreaScrollPastEnd = false; zui_Ext._ELEMENT_OFFSET = 0; zui_Ext._BUTTON_COL = 0; zui_Ext.kx = 1.0; zui_Ext.ky = 0.66666666666666663; zui_Ext.kz = 0.33333333333333331; zui_Ext.kw = 3.0; zui_Ext.ar = [0.0,0.0,0.0]; zui_Ext.Kx = 0.0; zui_Ext.Ky = -0.33333333333333331; zui_Ext.Kz = 0.66666666666666663; zui_Ext.Kw = -1.0; zui_Ext.e = 1.0e-10; zui_Id.i = 0; zui_Themes.dark = { NAME : "Default Dark", WINDOW_BG_COL : -14079703, WINDOW_TINT_COL : -1, ACCENT_COL : -13027015, ACCENT_HOVER_COL : -12369085, ACCENT_SELECT_COL : -11513776, BUTTON_COL : -13092808, BUTTON_TEXT_COL : -1513499, BUTTON_HOVER_COL : -11974327, BUTTON_PRESSED_COL : -15000805, TEXT_COL : -1513499, LABEL_COL : -3618616, SEPARATOR_COL : -14671840, HIGHLIGHT_COL : -14656100, CONTEXT_COL : -14540254, PANEL_BG_COL : -12895429, FONT_SIZE : 13, ELEMENT_W : 100, ELEMENT_H : 24, ELEMENT_OFFSET : 4, ARROW_SIZE : 5, BUTTON_H : 22, CHECK_SIZE : 15, CHECK_SELECT_SIZE : 8, SCROLL_W : 9, TEXT_OFFSET : 8, TAB_W : 6, FILL_WINDOW_BG : false, FILL_BUTTON_BG : true, FILL_ACCENT_BG : false, LINK_STYLE : 0, FULL_TABS : false}; zui_Zui.alwaysRedrawWindow = true; zui_Zui.keyRepeat = true; zui_Zui.dynamicGlyphLoad = true; zui_Zui.touchScroll = false; zui_Zui.touchHold = false; zui_Zui.touchTooltip = false; zui_Zui.keyRepeatTime = 0.0; zui_Zui.textToPaste = ""; zui_Zui.textToCopy = ""; zui_Zui.isCut = false; zui_Zui.isCopy = false; zui_Zui.isPaste = false; zui_Zui.copyFrame = 0; zui_Zui.comboFirst = true; 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);