starling-framework
Version:
A fast, productive library for 2D cross-platform development.
127 lines (109 loc) • 4.79 kB
JavaScript
// Class: starling.assets.XmlFactory
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_utils_ByteArray() {return $import(require("openfl/utils/ByteArray"));}
function starling_utils_ByteArrayUtil() {return require("./../../starling/utils/ByteArrayUtil");}
function starling_textures_TextureAtlas() {return require("./../../starling/textures/TextureAtlas");}
function starling_text_BitmapFont() {return require("./../../starling/text/BitmapFont");}
function starling_text_TextField() {return require("./../../starling/text/TextField");}
function Xml() {return require("./../../Xml");}
function js_Boot() {return require("./../../js/Boot");}
function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");}
function openfl_errors_Error() {return $import(require("openfl/errors/Error"));}
function Std() {return require("./../../Std");}
// Constructor
var XmlFactory = function() {
(starling_assets_AssetFactory().default).call(this);
this.addMimeTypes(["application/xml","text/xml"]);
this.addExtensions(["xml","fnt"]);
}
// Meta
XmlFactory.__name__ = "starling.assets.XmlFactory";
XmlFactory.__isInterface__ = false;
XmlFactory.__super__ = (starling_assets_AssetFactory().default);
XmlFactory.prototype = $extend((starling_assets_AssetFactory().default).prototype, {
canHandle: function(reference) {
if(!(starling_assets_AssetFactory().default).prototype.canHandle.call(this,reference)) {
if(((reference.get_data()) instanceof (openfl_utils_ByteArray().default))) {
return (starling_utils_ByteArrayUtil().default).startsWithString(reference.get_data(),"<");
} else {
return false;
}
} else {
return true;
}
},
create: function(reference,helper,onComplete,onError) {
var xml = null;
var textureAtlasPostProcessor = null;
var bitmapFontPostProcessor = null;
textureAtlasPostProcessor = function(store) {
var name = xml.firstElement().get("imagePath");
var name1 = helper.getNameFromUrl(name);
var texture = store.getTexture(name1);
if(texture != null) {
store.addAsset(name1,new (starling_textures_TextureAtlas().default)(texture,xml));
} else {
helper.log("Cannot create atlas: texture '" + name1 + "' is missing.");
}
};
bitmapFontPostProcessor = function(store1) {
var textureName = xml.firstElement().elementsNamed("pages").next().elementsNamed("page").next().get("file");
var textureName1 = helper.getNameFromUrl(textureName);
var texture1 = store1.getTexture(textureName1);
var fontName = store1.get_registerBitmapFontsWithFontFace() ? xml.elementsNamed("info").next().get("face") : textureName1;
if(texture1 != null) {
var bitmapFont = new (starling_text_BitmapFont().default)(texture1,xml);
store1.addAsset(fontName,bitmapFont);
(starling_text_TextField().default).registerCompositor(bitmapFont,fontName);
} else {
helper.log("Cannot create bitmap font: texture '" + textureName1 + "' is missing.");
}
};
var bytes = null;
try {
if(((reference.get_data()) instanceof (Xml().default))) {
xml = (js_Boot().default).__cast(reference.get_data() , (Xml().default));
} else {
bytes = ((reference.get_data()) instanceof (openfl_utils_ByteArray().default)) ? reference.get_data() : null;
if(bytes != null) {
xml = (Xml().default).parse(bytes.toString());
}
}
var rootNode = xml.firstElement().get_nodeName();
if(rootNode == "TextureAtlas") {
helper.addPostProcessor(textureAtlasPostProcessor,100);
} else if(rootNode == "font") {
helper.addPostProcessor(bitmapFontPostProcessor);
}
onComplete(reference.get_name(),xml);
bytes = null;
reference.set_data(bytes);
} catch( e ) {
var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e;
if(((e1) instanceof (openfl_errors_Error().default))) {
bytes = null;
reference.set_data(bytes);
onError("Could not parse XML: " + e1.message);
return;
} else {
bytes = null;
reference.set_data(bytes);
onError("Could not parse XML: " + (Std().default).string(e1));
return;
}
}
}
});
XmlFactory.prototype.__class__ = XmlFactory.prototype.constructor = $hxClasses["starling.assets.XmlFactory"] = XmlFactory;
// Init
// Statics
// Export
exports.default = XmlFactory;