UNPKG

openfl

Version:

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

368 lines (351 loc) 12.1 kB
// Class: openfl.text.StyleSheet 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 openfl_events_EventDispatcher() {return require("./../../openfl/events/EventDispatcher");} function haxe_ds_StringMap() {return require("./../../haxe/ds/StringMap");} function openfl_text__$internal_CSSParser() {return require("./../../openfl/text/_internal/CSSParser");} function Std() {return require("./../../Std");} function Reflect() {return require("./../../Reflect");} function StringTools() {return require("./../../StringTools");} function openfl_text_TextFormat() {return require("./../../openfl/text/TextFormat");} function EReg() {return require("./../../EReg");} function openfl_utils__$Object_Object_$Impl_$() {return require("./../../openfl/utils/_Object/Object_Impl_");} function HxOverrides() {return require("./../../HxOverrides");} // Constructor var StyleSheet = function() { (openfl_events_EventDispatcher().default).call(this); this.clear(); } // Meta StyleSheet.__name__ = "openfl.text.StyleSheet"; StyleSheet.__isInterface__ = false; StyleSheet.__super__ = (openfl_events_EventDispatcher().default); StyleSheet.prototype = $extend((openfl_events_EventDispatcher().default).prototype, { clear: function() { this.__styleNamesDirty = false; this.__styleNames = null; this.__styles = new (haxe_ds_StringMap().default)(); }, getStyle: function(styleName) { styleName = styleName.toLowerCase(); if(this.__styles.exists(styleName)) { return this.__styles.get(styleName); } else { return null; } }, parseCSS: function(CSSText) { var _g = new (haxe_ds_StringMap().default)(); _g.set("silent",true); var parser = new (openfl_text__$internal_CSSParser().default)(_g); var ast = parser.parse(CSSText); if(ast != null) { var rules = ast.get("rules"); var _g1 = 0; while(_g1 < rules.length) { var rule = rules[_g1]; ++_g1; var styleName = rule.exists("selectors") ? rule.get("selectors") : null; if(styleName != null) { styleName = styleName.toLowerCase(); if(!this.__styles.exists(styleName)) { var this1 = { }; this.__styles.set(styleName,this1); this.__styleNamesDirty = true; } var object = this.__styles.get(styleName); var declarations = rule.get("declarations"); if(declarations != null) { var _g11 = 0; while(_g11 < declarations.length) { var declaration = declarations[_g11]; ++_g11; var property = declaration.get("property"); var value = (Std().default).string(declaration.get("value")); if(property != null) { if(property == null) { (Reflect().default).setField(object,property,value); } else { switch(property) { case "font-family": var value1 = (StringTools().default).replace(value,"\"",""); var this2 = object; if(this2 != null) { (Reflect().default).setProperty(this2,"fontFamily",value1); } break; case "font-size": var this3 = object; if(this3 != null) { (Reflect().default).setProperty(this3,"fontSize",value); } break; case "font-style": var this4 = object; if(this4 != null) { (Reflect().default).setProperty(this4,"fontStyle",value); } break; case "font-weight": var this5 = object; if(this5 != null) { (Reflect().default).setProperty(this5,"fontWeight",value); } break; case "letter-spacing": var this6 = object; if(this6 != null) { (Reflect().default).setProperty(this6,"letterSpacing",value); } break; case "margin-left": var this7 = object; if(this7 != null) { (Reflect().default).setProperty(this7,"marginLeft",value); } break; case "text-align": var this8 = object; if(this8 != null) { (Reflect().default).setProperty(this8,"textAlign",value); } break; case "text-decoration": var this9 = object; if(this9 != null) { (Reflect().default).setProperty(this9,"textDecoration",value); } break; case "text-indent": var this10 = object; if(this10 != null) { (Reflect().default).setProperty(this10,"textIndent",value); } break; default: (Reflect().default).setField(object,property,value); } } } } } } } } }, setStyle: function(styleName,styleObject) { styleName = styleName.toLowerCase(); if(styleObject == null) { if(this.__styles.exists(styleName)) { this.__styles.remove(styleName); } } else { var this1 = { }; var object = this1; var _g = 0; var _g1 = (Reflect().default).fields(styleObject); while(_g < _g1.length) { var field = _g1[_g]; ++_g; (Reflect().default).setField(object,field,(Reflect().default).field(styleObject,field)); } this.__styles.set(styleName,object); } }, transform: function(formatObject) { var format = new (openfl_text_TextFormat().default)(); this.__applyStyleObject(formatObject,format); return format; }, __applyStyle: function(styleName,textFormat) { styleName = styleName.toLowerCase(); if(this.__styles.exists(styleName)) { var style = this.__styles.get(styleName); this.__applyStyleObject(style,textFormat); } }, __applyStyleObject: function(styleObject,textFormat) { if(styleObject != null) { var hex = new (EReg().default)("[0-9A-Fa-f]+",""); var numeric = new (EReg().default)("[0-9]+",""); var tmp; var this1 = styleObject; if(this1 != null && (Reflect().default).hasField(this1,"color")) { var this2 = (openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"color"); tmp = hex.match(this2 == null ? null : (Std().default).string(this2)); } else { tmp = false; } if(tmp) { textFormat.color = (Std().default).parseInt("0x" + hex.matched(0)); } var this3 = styleObject; if(this3 != null && (Reflect().default).hasField(this3,"fontFamily")) { var this4 = (openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"fontFamily"); textFormat.font = this.__parseFont(this4 == null ? null : (Std().default).string(this4)); } var tmp1; var this5 = styleObject; if(this5 != null && (Reflect().default).hasField(this5,"fontSize")) { var this6 = (openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"fontSize"); tmp1 = numeric.match(this6 == null ? null : (Std().default).string(this6)); } else { tmp1 = false; } if(tmp1) { textFormat.size = (Std().default).parseInt(numeric.matched(0)); } var this7 = styleObject; if(this7 != null && (Reflect().default).hasField(this7,"fontStyle")) { switch((openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"fontStyle")) { case "italic": textFormat.italic = true; break; case "normal": textFormat.italic = false; break; default: } } var this8 = styleObject; if(this8 != null && (Reflect().default).hasField(this8,"fontWeight")) { switch((openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"fontWeight")) { case "bold": textFormat.bold = true; break; case "normal": textFormat.bold = false; break; default: } } var tmp2; var this9 = styleObject; if(this9 != null && (Reflect().default).hasField(this9,"leading")) { var this10 = (openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"leading"); tmp2 = numeric.match(this10 == null ? null : (Std().default).string(this10)); } else { tmp2 = false; } if(tmp2) { textFormat.leading = (Std().default).parseInt(numeric.matched(0)); } var tmp3; var this11 = styleObject; if(this11 != null && (Reflect().default).hasField(this11,"letterSpacing")) { var this12 = (openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"letterSpacing"); tmp3 = numeric.match(this12 == null ? null : (Std().default).string(this12)); } else { tmp3 = false; } if(tmp3) { textFormat.letterSpacing = (Std().default).parseFloat(numeric.matched(0)); } var tmp4; var this13 = styleObject; if(this13 != null && (Reflect().default).hasField(this13,"marginLeft")) { var this14 = (openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"marginLeft"); tmp4 = numeric.match(this14 == null ? null : (Std().default).string(this14)); } else { tmp4 = false; } if(tmp4) { textFormat.leftMargin = (Std().default).parseInt(numeric.matched(0)); } var tmp5; var this15 = styleObject; if(this15 != null && (Reflect().default).hasField(this15,"marginRight")) { var this16 = (openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"marginRight"); tmp5 = numeric.match(this16 == null ? null : (Std().default).string(this16)); } else { tmp5 = false; } if(tmp5) { textFormat.rightMargin = (Std().default).parseInt(numeric.matched(0)); } var this17 = styleObject; if(this17 != null && (Reflect().default).hasField(this17,"textAlign")) { switch((openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"textAlign")) { case "center": textFormat.align = "center"; break; case "justify": textFormat.align = "justify"; break; case "left": textFormat.align = "left"; break; case "right": textFormat.align = "right"; break; default: } } var this18 = styleObject; if(this18 != null && (Reflect().default).hasField(this18,"textDecoration")) { switch((openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"textDecoration")) { case "none": textFormat.underline = false; break; case "underline": textFormat.underline = true; break; default: } } var tmp6; var this19 = styleObject; if(this19 != null && (Reflect().default).hasField(this19,"textIndent")) { var this20 = (openfl_utils__$Object_Object_$Impl_$().default).__get(styleObject,"textIndent"); tmp6 = numeric.match(this20 == null ? null : (Std().default).string(this20)); } else { tmp6 = false; } if(tmp6) { textFormat.blockIndent = (Std().default).parseInt(numeric.matched(0)); } } }, __parseFont: function(fontFamily) { if(fontFamily == null) { return null; } if(fontFamily.indexOf(",") > -1) { fontFamily = (HxOverrides().default).substr(fontFamily,0,fontFamily.indexOf(",")); } switch(fontFamily) { case "mono": return "_typewriter"; case "sans-serif": return "_sans"; case "serif": return "_serif"; default: return fontFamily; } }, get_styleNames: function() { if(this.__styleNames == null || this.__styleNamesDirty) { this.__styleNames = []; var style = this.__styles.keys(); while(style.hasNext()) { var style1 = style.next(); this.__styleNames.push(style1); } this.__styleNamesDirty = false; } return this.__styleNames; } }); StyleSheet.prototype.__class__ = StyleSheet.prototype.constructor = $hxClasses["openfl.text.StyleSheet"] = StyleSheet; // Init // Statics StyleSheet.__supportedStyles = ["color","display","font-family","font-size","font-style","font-weight","kerning","leading","letter-spacing","margin-left","margin-right","text-align","text-decoration","text-indent"] // Export exports.default = StyleSheet;