UNPKG

@visactor/vrender-core

Version:
87 lines (78 loc) 4.05 kB
var DefaultLayerService_1, __decorate = this && this.__decorate || function(decorators, target, key, desc) { var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r); return c > 3 && r && Object.defineProperty(target, key, r), r; }, __metadata = this && this.__metadata || function(k, v) { if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v); }; import { injectable } from "../common/inversify-lite"; import { Layer } from "./layer"; import { container } from "../container"; import { DynamicLayerHandlerContribution, StaticLayerHandlerContribution, VirtualLayerHandlerContribution } from "./constants"; import { application } from "../application"; let DefaultLayerService = DefaultLayerService_1 = class { static GenerateLayerId() { return `${DefaultLayerService_1.idprefix}_${DefaultLayerService_1.prefix_count++}`; } constructor() { this.layerMap = new Map, this.global = application.global; } tryInit() { this.inited || (this.staticLayerCountInEnv = this.global.getStaticCanvasCount(), this.dynamicLayerCountInEnv = this.global.getDynamicCanvasCount(), this.inited = !0); } getStageLayer(stage) { return this.layerMap.get(stage); } getRecommendedLayerType(layerMode) { return layerMode || (0 !== this.staticLayerCountInEnv ? "static" : 0 !== this.dynamicLayerCountInEnv ? "dynamic" : "virtual"); } getLayerHandler(layerMode) { let layerHandler; return layerHandler = "static" === layerMode ? container.get(StaticLayerHandlerContribution) : "dynamic" === layerMode ? container.get(DynamicLayerHandlerContribution) : container.get(VirtualLayerHandlerContribution), layerHandler; } createLayer(stage, options = { main: !1 }) { var _a; this.tryInit(); let layerMode = this.getRecommendedLayerType(options.layerMode); layerMode = options.main || options.canvasId ? "static" : layerMode; const layerHandler = this.getLayerHandler(layerMode), layer = new Layer(stage, this.global, stage.window, Object.assign(Object.assign({ main: !1 }, options), { layerMode: layerMode, canvasId: null !== (_a = options.canvasId) && void 0 !== _a ? _a : DefaultLayerService_1.GenerateLayerId(), layerHandler: layerHandler })), stageLayers = this.layerMap.get(stage) || []; return stageLayers.push(layer), this.layerMap.set(stage, stageLayers), this.staticLayerCountInEnv--, layer; } prepareStageLayer(stage) { let mainHandler; stage.forEachChildren((l => { const handler = l.getNativeHandler(); "virtual" === handler.type ? (handler.mainHandler = mainHandler, mainHandler.secondaryHandlers.push(handler)) : (mainHandler = handler, mainHandler.secondaryHandlers = []); })); } releaseLayer(stage, layer) { layer.release(); const stageLayers = this.layerMap.get(stage) || []; this.layerMap.set(stage, stageLayers.filter((l => l !== layer))); } layerCount(stage) { return (this.layerMap.get(stage) || []).length; } restLayerCount(stage) { return "browser" === this.global.env ? 10 : 0; } releaseStage(stage) { this.layerMap.delete(stage); } }; DefaultLayerService.idprefix = "visactor_layer", DefaultLayerService.prefix_count = 0, DefaultLayerService = DefaultLayerService_1 = __decorate([ injectable(), __metadata("design:paramtypes", []) ], DefaultLayerService); export { DefaultLayerService }; //# sourceMappingURL=layer-service.js.map