starling-framework
Version:
A fast, productive library for 2D cross-platform development.
106 lines (90 loc) • 3.45 kB
JavaScript
// Class: starling.textures.AtfData
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 _$UInt_UInt_$Impl_$() {return require("./../../_UInt/UInt_Impl_");}
function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");}
function openfl_errors_ArgumentError() {return $import(require("openfl/errors/ArgumentError"));}
function openfl_errors_Error() {return $import(require("openfl/errors/Error"));}
function Std() {return require("./../../Std");}
// Constructor
var AtfData = function(data) {
if(!AtfData.isAtfData(data)) {
throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("Invalid ATF data"));
}
if(data.get(6) == 255) {
data.position = 12;
} else {
data.position = 6;
}
var format = data.readUnsignedByte();
switch(format & 127) {
case 0:case 1:
this._format = "bgra";
break;
case 2:case 3:case 12:
this._format = "compressed";
break;
case 4:case 5:case 13:
this._format = "compressedAlpha";
break;
default:
throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("Invalid ATF format"));
}
this._width = (Std().default).int(Math.pow(2,(_$UInt_UInt_$Impl_$().default).toFloat(data.readUnsignedByte())));
this._height = (Std().default).int(Math.pow(2,(_$UInt_UInt_$Impl_$().default).toFloat(data.readUnsignedByte())));
this._numTextures = data.readUnsignedByte();
this._isCubeMap = (format & 128) != 0;
this._data = data;
if(data.get(5) != 0 && data.get(6) == 255) {
var emptyMipmaps = (data.get(5) & 1) == 1;
var numTextures = data.get(5) >> 1 & 127;
this._numTextures = emptyMipmaps ? 1 : numTextures;
}
}
// Meta
AtfData.__name__ = "starling.textures.AtfData";
AtfData.__isInterface__ = false;
AtfData.prototype = {
get_format: function() {
return this._format;
},
get_width: function() {
return this._width;
},
get_height: function() {
return this._height;
},
get_numTextures: function() {
return this._numTextures;
},
get_isCubeMap: function() {
return this._isCubeMap;
},
get_data: function() {
return this._data;
}
};
AtfData.prototype.__class__ = AtfData.prototype.constructor = $hxClasses["starling.textures.AtfData"] = AtfData;
// Init
Object.defineProperties(AtfData.prototype,{ format : { get : function () { return this.get_format (); }}, width : { get : function () { return this.get_width (); }}, height : { get : function () { return this.get_height (); }}, numTextures : { get : function () { return this.get_numTextures (); }}, isCubeMap : { get : function () { return this.get_isCubeMap (); }}, data : { get : function () { return this.get_data (); }}});
// Statics
AtfData.isAtfData = function(data) {
if((_$UInt_UInt_$Impl_$().default).gt(3,data.length)) {
return false;
} else {
var code = data.get(0);
var signature = String.fromCodePoint(code);
var code1 = data.get(1);
var signature1 = signature + String.fromCodePoint(code1);
var code2 = data.get(2);
var signature2 = signature1 + String.fromCodePoint(code2);
return signature2 == "ATF";
}
}
// Export
exports.default = AtfData;