UNPKG

openfl

Version:

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

105 lines (89 loc) 3.31 kB
// Class: openfl.text._internal.ShapeCache 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 haxe_ds_StringMap() {return require("./../../../haxe/ds/StringMap");} function openfl_text__$internal_CacheMeasurement() {return require("./../../../openfl/text/_internal/CacheMeasurement");} function haxe_ds_IntMap() {return require("./../../../haxe/ds/IntMap");} function HxOverrides() {return require("./../../../HxOverrides");} // Constructor var ShapeCache = function() { this.__shortWordMap = new (haxe_ds_StringMap().default)(); this.__longWordMap = new (haxe_ds_StringMap().default)(); } // Meta ShapeCache.__name__ = "openfl.text._internal.ShapeCache"; ShapeCache.__isInterface__ = false; ShapeCache.prototype = { cache: function(formatRange,getPositions,wordKey) { var formatKey = formatRange.format.__cacheKey; if(wordKey.length > 15) { return this.__cacheLongWord(wordKey,formatKey,getPositions); } else { return this.__cacheShortWord(wordKey,formatKey,getPositions); } }, __cacheShortWord: function(wordKey,formatKey,getPositions) { if(this.__shortWordMap.exists(formatKey)) { var formatMap = this.__shortWordMap.get(formatKey); if(formatMap.exists(wordKey)) { return formatMap.get(wordKey); } else { formatMap.set(wordKey,getPositions()); } } else { var formatMap1 = new (haxe_ds_StringMap().default)(); formatMap1.set(wordKey,getPositions()); this.__shortWordMap.set(formatKey,formatMap1); } return getPositions(); }, __cacheLongWord: function(wordKey,formatKey,getPositions) { var hash = ShapeCache.hashFunction(wordKey); if(this.__longWordMap.exists(formatKey)) { var formatMap = this.__longWordMap.get(formatKey); if(formatMap.exists(hash)) { var measurement = formatMap.get(hash); if(measurement.exists(wordKey)) { return measurement.get(wordKey); } else { measurement.set(wordKey,getPositions()); } } else { var measurement1 = new (openfl_text__$internal_CacheMeasurement().default)(wordKey,getPositions()); formatMap.set(hash,measurement1); } } else { var formatMap1 = new (haxe_ds_IntMap().default)(); var measurement2 = new (openfl_text__$internal_CacheMeasurement().default)(wordKey,getPositions()); measurement2.hash = hash; formatMap1.set(hash,measurement2); this.__longWordMap.set(formatKey,formatMap1); } return getPositions(); } }; ShapeCache.prototype.__class__ = ShapeCache.prototype.constructor = $hxClasses["openfl.text._internal.ShapeCache"] = ShapeCache; // Init // Statics ShapeCache.hashFunction = function(key) { var hash = 0; var i; var chr; var _g = 0; var _g1 = key.length; while(_g < _g1) { var i1 = _g++; chr = (HxOverrides().default).cca(key,i1); hash = (hash << 5) - hash + chr; hash |= 0; } return hash; } ShapeCache.__meta__ = { obj : { SuppressWarnings : ["checkstyle:FieldDocComment"]}} // Export exports.default = ShapeCache;