1 line
3.9 KiB
Plaintext
1 line
3.9 KiB
Plaintext
{"version":3,"file":"FillPattern.mjs","sources":["../../../../../src/scene/graphics/shared/fill/FillPattern.ts"],"sourcesContent":["import { Matrix } from '../../../../maths/matrix/Matrix';\nimport { uid } from '../../../../utils/data/uid';\n\nimport type { WRAP_MODE } from '../../../../rendering/renderers/shared/texture/const';\nimport type { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\n\nexport type PatternRepetition = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';\n\nconst repetitionMap = {\n repeat: {\n addressModeU: 'repeat',\n addressModeV: 'repeat',\n },\n 'repeat-x': {\n addressModeU: 'repeat',\n addressModeV: 'clamp-to-edge',\n },\n 'repeat-y': {\n addressModeU: 'clamp-to-edge',\n addressModeV: 'repeat',\n },\n 'no-repeat': {\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge',\n },\n};\n\nexport class FillPattern implements CanvasPattern\n{\n /** unique id for this fill pattern */\n public readonly uid: number = uid('fillPattern');\n public texture: Texture;\n public transform = new Matrix();\n\n private _styleKey: string | null = null;\n\n constructor(texture: Texture, repetition?: PatternRepetition)\n {\n this.texture = texture;\n\n this.transform.scale(\n 1 / texture.frame.width,\n 1 / texture.frame.height\n );\n\n if (repetition)\n {\n texture.source.style.addressModeU = repetitionMap[repetition].addressModeU as WRAP_MODE;\n texture.source.style.addressModeV = repetitionMap[repetition].addressModeV as WRAP_MODE;\n }\n }\n\n public setTransform(transform?: Matrix): void\n {\n const texture = this.texture;\n\n this.transform.copyFrom(transform);\n this.transform.invert();\n // transform.scale\n this.transform.scale(\n 1 / texture.frame.width,\n 1 / texture.frame.height\n );\n\n this._styleKey = null;\n }\n\n public get styleKey(): string\n {\n if (this._styleKey) return this._styleKey;\n\n this._styleKey = `fill-pattern-${this.uid}-${this.texture.uid}-${this.transform.toArray().join('-')}`;\n\n return this._styleKey;\n }\n}\n"],"names":[],"mappings":";;;;AAQA,MAAM,aAAgB,GAAA;AAAA,EAClB,MAAQ,EAAA;AAAA,IACJ,YAAc,EAAA,QAAA;AAAA,IACd,YAAc,EAAA,QAAA;AAAA,GAClB;AAAA,EACA,UAAY,EAAA;AAAA,IACR,YAAc,EAAA,QAAA;AAAA,IACd,YAAc,EAAA,eAAA;AAAA,GAClB;AAAA,EACA,UAAY,EAAA;AAAA,IACR,YAAc,EAAA,eAAA;AAAA,IACd,YAAc,EAAA,QAAA;AAAA,GAClB;AAAA,EACA,WAAa,EAAA;AAAA,IACT,YAAc,EAAA,eAAA;AAAA,IACd,YAAc,EAAA,eAAA;AAAA,GAClB;AACJ,CAAA,CAAA;AAEO,MAAM,WACb,CAAA;AAAA,EAQI,WAAA,CAAY,SAAkB,UAC9B,EAAA;AAPA;AAAA,IAAgB,IAAA,CAAA,GAAA,GAAc,IAAI,aAAa,CAAA,CAAA;AAE/C,IAAO,IAAA,CAAA,SAAA,GAAY,IAAI,MAAO,EAAA,CAAA;AAE9B,IAAA,IAAA,CAAQ,SAA2B,GAAA,IAAA,CAAA;AAI/B,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA,CAAA;AAEf,IAAA,IAAA,CAAK,SAAU,CAAA,KAAA;AAAA,MACX,CAAA,GAAI,QAAQ,KAAM,CAAA,KAAA;AAAA,MAClB,CAAA,GAAI,QAAQ,KAAM,CAAA,MAAA;AAAA,KACtB,CAAA;AAEA,IAAA,IAAI,UACJ,EAAA;AACI,MAAA,OAAA,CAAQ,MAAO,CAAA,KAAA,CAAM,YAAe,GAAA,aAAA,CAAc,UAAU,CAAE,CAAA,YAAA,CAAA;AAC9D,MAAA,OAAA,CAAQ,MAAO,CAAA,KAAA,CAAM,YAAe,GAAA,aAAA,CAAc,UAAU,CAAE,CAAA,YAAA,CAAA;AAAA,KAClE;AAAA,GACJ;AAAA,EAEO,aAAa,SACpB,EAAA;AACI,IAAA,MAAM,UAAU,IAAK,CAAA,OAAA,CAAA;AAErB,IAAK,IAAA,CAAA,SAAA,CAAU,SAAS,SAAS,CAAA,CAAA;AACjC,IAAA,IAAA,CAAK,UAAU,MAAO,EAAA,CAAA;AAEtB,IAAA,IAAA,CAAK,SAAU,CAAA,KAAA;AAAA,MACX,CAAA,GAAI,QAAQ,KAAM,CAAA,KAAA;AAAA,MAClB,CAAA,GAAI,QAAQ,KAAM,CAAA,MAAA;AAAA,KACtB,CAAA;AAEA,IAAA,IAAA,CAAK,SAAY,GAAA,IAAA,CAAA;AAAA,GACrB;AAAA,EAEA,IAAW,QACX,GAAA;AACI,IAAA,IAAI,IAAK,CAAA,SAAA;AAAW,MAAA,OAAO,IAAK,CAAA,SAAA,CAAA;AAEhC,IAAA,IAAA,CAAK,SAAY,GAAA,CAAA,aAAA,EAAgB,IAAK,CAAA,GAAG,IAAI,IAAK,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA,EAAI,KAAK,SAAU,CAAA,OAAA,EAAU,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAEnG,IAAA,OAAO,IAAK,CAAA,SAAA,CAAA;AAAA,GAChB;AACJ;;;;"} |