UNPKG

laya-coreui-es

Version:

laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改

109 lines (108 loc) 4.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebGLCacheAsNormalCanvas = void 0; const Matrix_1 = require("../../maths/Matrix"); const SubmitBase_1 = require("../submit/SubmitBase"); const MeshQuadTexture_1 = require("../utils/MeshQuadTexture"); const MeshTexture_1 = require("../utils/MeshTexture"); const MeshVG_1 = require("../utils/MeshVG"); class WebGLCacheAsNormalCanvas { constructor(ctx, sp) { this.submitStartPos = 0; this.submitEndPos = 0; this.touches = []; this.submits = []; this.sprite = null; this.meshlist = []; this.cachedClipInfo = new Matrix_1.Matrix(); this.oldTx = 0; this.oldTy = 0; this.invMat = new Matrix_1.Matrix(); this.context = ctx; this.sprite = sp; ctx._globalClipMatrix.copyTo(this.cachedClipInfo); } startRec() { let context = this.context; if (context._charSubmitCache && context._charSubmitCache._enable) { context._charSubmitCache.enable(false, context); context._charSubmitCache.enable(true, context); } context._incache = true; this.touches.length = 0; context.touches = this.touches; context._globalClipMatrix.copyTo(this.cachedClipInfo); this.submits.length = 0; this.submitStartPos = context._submits._length; for (var i = 0, sz = this.meshlist.length; i < sz; i++) { var curm = this.meshlist[i]; curm.canReuse ? (curm.releaseMesh()) : (curm.destroy()); } this.meshlist.length = 0; this._mesh = MeshQuadTexture_1.MeshQuadTexture.getAMesh(false); this._pathMesh = MeshVG_1.MeshVG.getAMesh(false); this._triangleMesh = MeshTexture_1.MeshTexture.getAMesh(false); this.meshlist.push(this._mesh); this.meshlist.push(this._pathMesh); this.meshlist.push(this._triangleMesh); context._curSubmit = SubmitBase_1.SubmitBase.RENDERBASE; this._oldMesh = context._mesh; this._oldPathMesh = context._pathMesh; this._oldTriMesh = context._triangleMesh; this._oldMeshList = context.meshlist; context._mesh = this._mesh; context._pathMesh = this._pathMesh; context._triangleMesh = this._triangleMesh; context.meshlist = this.meshlist; this.oldTx = context._curMat.tx; this.oldTy = context._curMat.ty; context._curMat.tx = 0; context._curMat.ty = 0; context._curMat.copyTo(this.invMat); this.invMat.invert(); } endRec() { let context = this.context; if (context._charSubmitCache && context._charSubmitCache._enable) { context._charSubmitCache.enable(false, context); context._charSubmitCache.enable(true, context); } var parsubmits = context._submits; this.submitEndPos = parsubmits._length; var num = this.submitEndPos - this.submitStartPos; for (var i = 0; i < num; i++) { this.submits.push(parsubmits[this.submitStartPos + i]); } parsubmits._length -= num; context._mesh = this._oldMesh; context._pathMesh = this._oldPathMesh; context._triangleMesh = this._oldTriMesh; context.meshlist = this._oldMeshList; context._curSubmit = SubmitBase_1.SubmitBase.RENDERBASE; context._curMat.tx = this.oldTx; context._curMat.ty = this.oldTy; context.touches = null; context._incache = false; } isCacheValid() { var curclip = this.context._globalClipMatrix; if (curclip.a != this.cachedClipInfo.a || curclip.b != this.cachedClipInfo.b || curclip.c != this.cachedClipInfo.c || curclip.d != this.cachedClipInfo.d || curclip.tx != this.cachedClipInfo.tx || curclip.ty != this.cachedClipInfo.ty) return false; return true; } flushsubmit() { var curSubmit = SubmitBase_1.SubmitBase.RENDERBASE; this.submits.forEach(function (subm) { if (subm == SubmitBase_1.SubmitBase.RENDERBASE) return; SubmitBase_1.SubmitBase.preRender = curSubmit; curSubmit = subm; subm.renderSubmit(); }); } releaseMem() { } } exports.WebGLCacheAsNormalCanvas = WebGLCacheAsNormalCanvas; WebGLCacheAsNormalCanvas.matI = new Matrix_1.Matrix();