UNPKG

@visactor/vrender-core

Version:
84 lines (78 loc) 4.21 kB
"use strict"; 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); }; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.DefaultLayerService = void 0; const inversify_lite_1 = require("../common/inversify-lite"), layer_1 = require("./layer"), container_1 = require("../container"), constants_1 = require("./constants"), application_1 = require("../application"); let DefaultLayerService = DefaultLayerService_1 = class { static GenerateLayerId() { return `${DefaultLayerService_1.idprefix}_${DefaultLayerService_1.prefix_count++}`; } constructor() { this.layerMap = new Map, this.global = application_1.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_1.container.get(constants_1.StaticLayerHandlerContribution) : "dynamic" === layerMode ? container_1.container.get(constants_1.DynamicLayerHandlerContribution) : container_1.container.get(constants_1.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_1.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([ (0, inversify_lite_1.injectable)(), __metadata("design:paramtypes", []) ], DefaultLayerService), exports.DefaultLayerService = DefaultLayerService; //# sourceMappingURL=layer-service.js.map