pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
1 lines • 3.4 kB
Source Map (JSON)
{"version":3,"file":"MaskEffectManager.mjs","sources":["../../../src/rendering/mask/MaskEffectManager.ts"],"sourcesContent":["import { extensions, ExtensionType } from '../../extensions/Extensions';\nimport { BigPool } from '../../utils/pool/PoolGroup';\n\nimport type { Effect, EffectConstructor } from '../../scene/container/Effect';\nimport type { PoolItem, PoolItemConstructor } from '../../utils/pool/Pool';\n\ninterface MaskConversionTest\n{\n test: (item: any) => boolean;\n maskClass: new (item: any) => Effect & PoolItem;\n}\n\n/**\n * Represents a mask effect that can be applied to a container.\n * @category rendering\n * @advanced\n */\nexport type MaskEffect = {mask: unknown} & Effect;\n\n/**\n * A class that manages the conversion of masks to mask effects.\n * @category rendering\n * @ignore\n */\nexport class MaskEffectManagerClass\n{\n /** @private */\n public readonly _effectClasses: EffectConstructor[] = [];\n private readonly _tests: MaskConversionTest[] = [];\n private _initialized = false;\n\n public init()\n {\n if (this._initialized) return;\n\n this._initialized = true;\n\n this._effectClasses.forEach((test) =>\n {\n this.add({\n test: test.test,\n maskClass: test\n });\n });\n }\n\n public add(test: MaskConversionTest)\n {\n this._tests.push(test);\n }\n\n public getMaskEffect(item: any): MaskEffect\n {\n if (!this._initialized) this.init();\n\n for (let i = 0; i < this._tests.length; i++)\n {\n const test = this._tests[i];\n\n if (test.test(item))\n {\n return BigPool.get(test.maskClass as PoolItemConstructor<MaskEffect & PoolItem>, item);\n }\n }\n\n return item;\n }\n\n public returnMaskEffect(effect: Effect & PoolItem)\n {\n BigPool.return(effect);\n }\n}\n\n/**\n * A class that manages the conversion of masks to mask effects.\n * @class\n * @category rendering\n * @advanced\n */\nexport const MaskEffectManager = new MaskEffectManagerClass();\n\n// Handle registration of extensions\nextensions\n .handleByList(ExtensionType.MaskEffect, MaskEffectManager._effectClasses);\n"],"names":[],"mappings":";;;;AAwBO,MAAM,sBAAA,CACb;AAAA,EADO,WAAA,GAAA;AAGH;AAAA,IAAA,IAAA,CAAgB,iBAAsC,EAAC;AACvD,IAAA,IAAA,CAAiB,SAA+B,EAAC;AACjD,IAAA,IAAA,CAAQ,YAAA,GAAe,KAAA;AAAA,EAAA;AAAA,EAEhB,IAAA,GACP;AACI,IAAA,IAAI,KAAK,YAAA,EAAc;AAEvB,IAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AAEpB,IAAA,IAAA,CAAK,cAAA,CAAe,OAAA,CAAQ,CAAC,IAAA,KAC7B;AACI,MAAA,IAAA,CAAK,GAAA,CAAI;AAAA,QACL,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACd,CAAA;AAAA,IACL,CAAC,CAAA;AAAA,EACL;AAAA,EAEO,IAAI,IAAA,EACX;AACI,IAAA,IAAA,CAAK,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,EACzB;AAAA,EAEO,cAAc,IAAA,EACrB;AACI,IAAA,IAAI,CAAC,IAAA,CAAK,YAAA,EAAc,IAAA,CAAK,IAAA,EAAK;AAElC,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA,EAAA,EACxC;AACI,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AAE1B,MAAA,IAAI,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAClB;AACI,QAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,SAAA,EAAyD,IAAI,CAAA;AAAA,MACzF;AAAA,IACJ;AAEA,IAAA,OAAO,IAAA;AAAA,EACX;AAAA,EAEO,iBAAiB,MAAA,EACxB;AACI,IAAA,OAAA,CAAQ,OAAO,MAAM,CAAA;AAAA,EACzB;AACJ;AAQO,MAAM,iBAAA,GAAoB,IAAI,sBAAA;AAGrC,UAAA,CACK,YAAA,CAAa,aAAA,CAAc,UAAA,EAAY,iBAAA,CAAkB,cAAc,CAAA;;;;"}