UNPKG

starling-framework

Version:

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

166 lines (149 loc) 6.94 kB
// 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;