UNPKG

starling-framework

Version:

A fast, productive library for 2D cross-platform development.

154 lines (137 loc) 3.73 kB
// Class: haxe.io.FPHelper var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $hxEnums = require("./../../hxEnums_stub").default; var $import = require("./../../import_stub").default; function haxe__$Int64__$_$_$Int64() {return require("./../../haxe/_Int64/___Int64");} function Std() {return require("./../../Std");} // Constructor var FPHelper = function(){} // Meta FPHelper.__name__ = "haxe.io.FPHelper"; FPHelper.__isInterface__ = false; FPHelper.prototype = { }; FPHelper.prototype.__class__ = FPHelper.prototype.constructor = $hxClasses["haxe.io.FPHelper"] = FPHelper; // Init // Statics FPHelper._i32ToFloat = function(i) { var sign = 1 - (i >>> 31 << 1); var e = i >> 23 & 255; if(e == 255) { if((i & 8388607) == 0) { if(sign > 0) { return Infinity; } else { return -Infinity; } } else { return NaN; } } var m = e == 0 ? (i & 8388607) << 1 : i & 8388607 | 8388608; return sign * m * Math.pow(2,e - 150); } FPHelper._i64ToDouble = function(lo,hi) { var sign = 1 - (hi >>> 31 << 1); var e = hi >> 20 & 2047; if(e == 2047) { if(lo == 0 && (hi & 1048575) == 0) { if(sign > 0) { return Infinity; } else { return -Infinity; } } else { return NaN; } } var m = 2.220446049250313e-16 * ((hi & 1048575) * 4294967296. + (lo >>> 31) * 2147483648. + (lo & 2147483647)); if(e == 0) { m *= 2.0; } else { m += 1.0; } return sign * m * Math.pow(2,e - 1023); } FPHelper._floatToI32 = function(f) { if(f == 0) { return 0; } var af = f < 0 ? -f : f; var exp = Math.floor(Math.log(af) / 0.6931471805599453); if(exp > 127) { return 2139095040; } else { if(exp <= -127) { exp = -127; af *= 7.1362384635298e+44; } else { af = (af / Math.pow(2,exp) - 1.0) * 8388608; } return (f < 0 ? -2147483648 : 0) | exp + 127 << 23 | Math.round(af); } } FPHelper._doubleToI64 = function(v) { var i64 = FPHelper.i64tmp; if(v == 0) { i64.low = 0; i64.high = 0; } else if(!isFinite(v)) { i64.low = 0; i64.high = v > 0 ? 2146435072 : -1048576; } else { var av = v < 0 ? -v : v; var exp = Math.floor(Math.log(av) / 0.6931471805599453); if(exp > 1023) { i64.low = -1; i64.high = 2146435071; } else { if(exp <= -1023) { exp = -1023; av /= 2.2250738585072014e-308; } else { av = av / Math.pow(2,exp) - 1.0; } var sig = Math.round(av * 4503599627370496.); var sig_l = (Std().default).int(sig); var sig_h = (Std().default).int(sig / 4294967296.0); i64.low = sig_l; i64.high = (v < 0 ? -2147483648 : 0) | exp + 1023 << 20 | sig_h; } } return i64; } FPHelper.i32ToFloat = function(i) { FPHelper.helper.setInt32(0,i,true); return FPHelper.helper.getFloat32(0,true); } FPHelper.floatToI32 = function(f) { FPHelper.helper.setFloat32(0,f,true); return FPHelper.helper.getInt32(0,true); } FPHelper.i64ToDouble = function(low,high) { FPHelper.helper.setInt32(0,low,true); FPHelper.helper.setInt32(4,high,true); return FPHelper.helper.getFloat64(0,true); } FPHelper.doubleToI64 = function(v) { var i64 = FPHelper.i64tmp; FPHelper.helper.setFloat64(0,v,true); i64.low = FPHelper.helper.getInt32(0,true); i64.high = FPHelper.helper.getInt32(4,true); return i64; } FPHelper.i64tmp = (function($this) { var $r; var this1 = new (haxe__$Int64__$_$_$Int64().default)(0,0); $r = this1; return $r; }(this)) FPHelper.LN2 = 0.6931471805599453 FPHelper.helper = new DataView(new ArrayBuffer(8)) // Export exports.default = FPHelper;