starling-framework
Version:
A fast, productive library for 2D cross-platform development.
166 lines (149 loc) • 6.94 kB
JavaScript
// Class: starling.assets.BitmapTextureFactory
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;
var $extend = require("./../../extend_stub").default;
function starling_assets_AssetFactory() {return require("./../../starling/assets/AssetFactory");}
function openfl_display_Bitmap() {return $import(require("openfl/display/Bitmap"));}
function openfl_display_BitmapData() {return $import(require("openfl/display/BitmapData"));}
function openfl_utils_ByteArray() {return $import(require("openfl/utils/ByteArray"));}
function starling_utils_ByteArrayUtil() {return require("./../../starling/utils/ByteArrayUtil");}
function starling_textures_Texture() {return require("./../../starling/textures/Texture");}
function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");}
function starling_utils_Execute() {return require("./../../starling/utils/Execute");}
function Std() {return require("./../../Std");}
function js_Boot() {return require("./../../js/Boot");}
function openfl_display_Loader() {return $import(require("openfl/display/Loader"));}
function openfl_system_LoaderContext() {return $import(require("openfl/system/LoaderContext"));}
// Constructor
var BitmapTextureFactory = function() {
(starling_assets_AssetFactory().default).call(this);
this.addMimeTypes(["image/png","image/jpg","image/jpeg","image/gif"]);
this.addExtensions(["png","jpg","jpeg","gif"]);
}
// Meta
BitmapTextureFactory.__name__ = "starling.assets.BitmapTextureFactory";
BitmapTextureFactory.__isInterface__ = false;
BitmapTextureFactory.__super__ = (starling_assets_AssetFactory().default);
BitmapTextureFactory.prototype = $extend((starling_assets_AssetFactory().default).prototype, {
canHandle: function(reference) {
if((starling_assets_AssetFactory().default).prototype.canHandle.call(this,reference) || ((reference.get_data()) instanceof (openfl_display_Bitmap().default)) || ((reference.get_data()) instanceof (openfl_display_BitmapData().default))) {
return true;
} else if(((reference.get_data()) instanceof (openfl_utils_ByteArray().default))) {
var byteData = reference.get_data();
if(!((starling_utils_ByteArrayUtil().default).startsWithBytes(byteData,BitmapTextureFactory.MAGIC_NUMBERS_PNG) || (starling_utils_ByteArrayUtil().default).startsWithBytes(byteData,BitmapTextureFactory.MAGIC_NUMBERS_JPG))) {
return (starling_utils_ByteArrayUtil().default).startsWithBytes(byteData,BitmapTextureFactory.MAGIC_NUMBERS_GIF);
} else {
return true;
}
} else {
return false;
}
},
create: function(reference,helper,onComplete,onError) {
var _gthis = this;
var texture = null;
var url = reference.get_url();
var data = reference.get_data();
var name = reference.get_name();
var options = reference.get_textureOptions();
var onReady = reference.get_textureOptions().get_onReady();
var onBitmapDataCreated = null;
var createFromBitmapData = null;
var complete = null;
var restoreTexture = null;
var reload = null;
var onReloadError = null;
onBitmapDataCreated = function(bitmapData) {
helper.executeWhenContextReady(createFromBitmapData,[bitmapData]);
};
createFromBitmapData = function(bitmapData1) {
options.set_onReady(complete);
try {
texture = (starling_textures_Texture().default).fromData(bitmapData1,options);
} catch( e ) {
onError(((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e);
}
if(texture != null && url != null) {
texture.get_root().set_onRestore(restoreTexture);
}
};
complete = function(_) {
(starling_utils_Execute().default).execute(onReady,[texture]);
onComplete(name,texture);
};
restoreTexture = function(_1) {
helper.onBeginRestore();
reload(url,function(bitmapData2) {
helper.executeWhenContextReady(function() {
try {
texture.get_root().uploadBitmapData(bitmapData2);
} catch( e1 ) {
helper.log("Texture restoration failed: " + (Std().default).string(((e1) instanceof (js__$Boot_HaxeError().default)) ? e1.val : e1));
}
helper.onEndRestore();
});
});
};
reload = function(url1,onComplete1) {
helper.loadDataFromUrl(url1,function(data1,mimeType,name1,extension) {
_gthis.createBitmapDataFromByteArray(data1,onComplete1,onReloadError);
},onReloadError);
};
onReloadError = function(error) {
helper.log("Texture restoration failed for " + url + ". " + error);
helper.onEndRestore();
};
if(((data) instanceof (openfl_display_Bitmap().default)) && ((js_Boot().default).__cast(data , (openfl_display_Bitmap().default))).get_bitmapData() != null) {
onBitmapDataCreated(((js_Boot().default).__cast(data , (openfl_display_Bitmap().default))).get_bitmapData());
} else if(((data) instanceof (openfl_display_BitmapData().default))) {
onBitmapDataCreated(data);
} else if(((data) instanceof (openfl_utils_ByteArray().default))) {
this.createBitmapDataFromByteArray(data,onBitmapDataCreated,onError);
}
data = null;
reference.set_data(data);
},
createBitmapDataFromByteArray: function(data,onComplete,onError) {
var loaderInfo = null;
var onIoError = null;
var onLoaderComplete = null;
var complete = null;
var cleanup = null;
onIoError = function(event) {
cleanup();
(starling_utils_Execute().default).execute(onError,[event.text]);
};
onLoaderComplete = function(event1) {
var onLoaderComplete1 = ((js_Boot().default).__cast(event1.target.content , (openfl_display_Bitmap().default))).get_bitmapData();
complete(onLoaderComplete1);
};
complete = function(bitmapData) {
cleanup();
(starling_utils_Execute().default).execute(onComplete,[bitmapData]);
};
cleanup = function() {
loaderInfo.removeEventListener("ioError",onIoError);
loaderInfo.removeEventListener("complete",onLoaderComplete);
};
var loader = new (openfl_display_Loader().default)();
loaderInfo = loader.contentLoaderInfo;
loaderInfo.addEventListener("ioError",onIoError);
loaderInfo.addEventListener("complete",onLoaderComplete);
var loaderContext = new (openfl_system_LoaderContext().default)();
loader.loadBytes(data,loaderContext);
}
});
BitmapTextureFactory.prototype.__class__ = BitmapTextureFactory.prototype.constructor = $hxClasses["starling.assets.BitmapTextureFactory"] = BitmapTextureFactory;
// Init
// Statics
BitmapTextureFactory.MAGIC_NUMBERS_JPG = [255,216]
BitmapTextureFactory.MAGIC_NUMBERS_PNG = [137,80,78,71,13,10,26,10]
BitmapTextureFactory.MAGIC_NUMBERS_GIF = [71,73,70,56]
BitmapTextureFactory.MAGIC_NUMBERS_WEBP = [82,73,70,70]
// Export
exports.default = BitmapTextureFactory;