Files
nothoughts/node_modules/pixi.js/lib/rendering/renderers/shared/texture/CanvasPool.mjs.map
2025-08-04 18:57:35 +02:00

1 line
5.3 KiB
Plaintext

{"version":3,"file":"CanvasPool.mjs","sources":["../../../../../src/rendering/renderers/shared/texture/CanvasPool.ts"],"sourcesContent":["import { DOMAdapter } from '../../../../environment/adapter';\nimport { nextPow2 } from '../../../../maths/misc/pow2';\n\nimport type { ICanvas, ICanvasRenderingContext2DSettings } from '../../../../environment/canvas/ICanvas';\nimport type { ICanvasRenderingContext2D } from '../../../../environment/canvas/ICanvasRenderingContext2D';\n\nexport interface CanvasAndContext\n{\n canvas: ICanvas;\n context: ICanvasRenderingContext2D;\n}\n\n/**\n * Texture pool, used by FilterSystem and plugins.\n *\n * Stores collection of temporary pow2 or screen-sized renderTextures\n *\n * If you use custom RenderTexturePool for your filters, you can use methods\n * `getFilterTexture` and `returnFilterTexture` same as in\n * @name CanvasPool\n * @memberof rendering\n */\nexport class CanvasPoolClass\n{\n public canvasOptions: ICanvasRenderingContext2DSettings;\n\n /**\n * Allow renderTextures of the same size as screen, not just pow2\n *\n * Automatically sets to true after `setScreenSize`\n * @default false\n */\n public enableFullScreen: boolean;\n private _canvasPool: {[x in string | number]: CanvasAndContext[]};\n\n constructor(canvasOptions?: ICanvasRenderingContext2DSettings)\n {\n this._canvasPool = Object.create(null);\n this.canvasOptions = canvasOptions || {};\n this.enableFullScreen = false;\n }\n\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param pixelWidth - Width of texture in pixels.\n * @param pixelHeight - Height of texture in pixels.\n */\n private _createCanvasAndContext(pixelWidth: number, pixelHeight: number): CanvasAndContext\n {\n const canvas = DOMAdapter.get().createCanvas();\n\n canvas.width = pixelWidth;\n canvas.height = pixelHeight;\n\n const context = canvas.getContext('2d');\n\n return { canvas, context };\n }\n\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @returns The new render texture.\n */\n public getOptimalCanvasAndContext(minWidth: number, minHeight: number, resolution = 1): CanvasAndContext\n {\n minWidth = Math.ceil((minWidth * resolution) - 1e-6);\n minHeight = Math.ceil((minHeight * resolution) - 1e-6);\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n\n const key = (minWidth << 17) + (minHeight << 1);\n\n if (!this._canvasPool[key])\n {\n this._canvasPool[key] = [];\n }\n\n let canvasAndContext = this._canvasPool[key].pop();\n\n if (!canvasAndContext)\n {\n canvasAndContext = this._createCanvasAndContext(minWidth, minHeight);\n }\n\n return canvasAndContext;\n }\n\n /**\n * Place a render texture back into the pool.\n * @param canvasAndContext\n */\n public returnCanvasAndContext(canvasAndContext: CanvasAndContext): void\n {\n const canvas = canvasAndContext.canvas;\n const { width, height } = canvas;\n\n const key = (width << 17) + (height << 1);\n\n this._canvasPool[key].push(canvasAndContext);\n }\n\n public clear(): void\n {\n this._canvasPool = {};\n }\n}\n\nexport const CanvasPool = new CanvasPoolClass();\n"],"names":[],"mappings":";;;;AAsBO,MAAM,eACb,CAAA;AAAA,EAYI,YAAY,aACZ,EAAA;AACI,IAAK,IAAA,CAAA,WAAA,mBAAqB,MAAA,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACrC,IAAK,IAAA,CAAA,aAAA,GAAgB,iBAAiB,EAAC,CAAA;AACvC,IAAA,IAAA,CAAK,gBAAmB,GAAA,KAAA,CAAA;AAAA,GAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,uBAAA,CAAwB,YAAoB,WACpD,EAAA;AACI,IAAA,MAAM,MAAS,GAAA,UAAA,CAAW,GAAI,EAAA,CAAE,YAAa,EAAA,CAAA;AAE7C,IAAA,MAAA,CAAO,KAAQ,GAAA,UAAA,CAAA;AACf,IAAA,MAAA,CAAO,MAAS,GAAA,WAAA,CAAA;AAEhB,IAAM,MAAA,OAAA,GAAU,MAAO,CAAA,UAAA,CAAW,IAAI,CAAA,CAAA;AAEtC,IAAO,OAAA,EAAE,QAAQ,OAAQ,EAAA,CAAA;AAAA,GAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,0BAA2B,CAAA,QAAA,EAAkB,SAAmB,EAAA,UAAA,GAAa,CACpF,EAAA;AACI,IAAA,QAAA,GAAW,IAAK,CAAA,IAAA,CAAM,QAAW,GAAA,UAAA,GAAc,IAAI,CAAA,CAAA;AACnD,IAAA,SAAA,GAAY,IAAK,CAAA,IAAA,CAAM,SAAY,GAAA,UAAA,GAAc,IAAI,CAAA,CAAA;AACrD,IAAA,QAAA,GAAW,SAAS,QAAQ,CAAA,CAAA;AAC5B,IAAA,SAAA,GAAY,SAAS,SAAS,CAAA,CAAA;AAE9B,IAAM,MAAA,GAAA,GAAA,CAAO,QAAY,IAAA,EAAA,KAAO,SAAa,IAAA,CAAA,CAAA,CAAA;AAE7C,IAAA,IAAI,CAAC,IAAA,CAAK,WAAY,CAAA,GAAG,CACzB,EAAA;AACI,MAAK,IAAA,CAAA,WAAA,CAAY,GAAG,CAAA,GAAI,EAAC,CAAA;AAAA,KAC7B;AAEA,IAAA,IAAI,gBAAmB,GAAA,IAAA,CAAK,WAAY,CAAA,GAAG,EAAE,GAAI,EAAA,CAAA;AAEjD,IAAA,IAAI,CAAC,gBACL,EAAA;AACI,MAAmB,gBAAA,GAAA,IAAA,CAAK,uBAAwB,CAAA,QAAA,EAAU,SAAS,CAAA,CAAA;AAAA,KACvE;AAEA,IAAO,OAAA,gBAAA,CAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,uBAAuB,gBAC9B,EAAA;AACI,IAAA,MAAM,SAAS,gBAAiB,CAAA,MAAA,CAAA;AAChC,IAAM,MAAA,EAAE,KAAO,EAAA,MAAA,EAAW,GAAA,MAAA,CAAA;AAE1B,IAAM,MAAA,GAAA,GAAA,CAAO,KAAS,IAAA,EAAA,KAAO,MAAU,IAAA,CAAA,CAAA,CAAA;AAEvC,IAAA,IAAA,CAAK,WAAY,CAAA,GAAG,CAAE,CAAA,IAAA,CAAK,gBAAgB,CAAA,CAAA;AAAA,GAC/C;AAAA,EAEO,KACP,GAAA;AACI,IAAA,IAAA,CAAK,cAAc,EAAC,CAAA;AAAA,GACxB;AACJ,CAAA;AAEa,MAAA,UAAA,GAAa,IAAI,eAAgB;;;;"}