@visactor/vrender-core
Version:
## Description
84 lines (78 loc) • 4.21 kB
JavaScript
;
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