UNPKG

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">

47 lines (44 loc) 1.69 kB
import { Matrix } from '../../../../maths/matrix/Matrix.mjs'; import { Rectangle } from '../../../../maths/shapes/Rectangle.mjs'; import { FillGradient } from '../fill/FillGradient.mjs'; "use strict"; const tempTextureMatrix = new Matrix(); const tempRect = new Rectangle(); function generateTextureMatrix(out, style, shape, matrix) { const textureMatrix = style.matrix ? out.copyFrom(style.matrix).invert() : out.identity(); if (style.textureSpace === "local") { const bounds = shape.getBounds(tempRect); if (style.width) { bounds.pad(style.width); } const { x: tx, y: ty } = bounds; const sx = 1 / bounds.width; const sy = 1 / bounds.height; const mTx = -tx * sx; const mTy = -ty * sy; const a1 = textureMatrix.a; const b1 = textureMatrix.b; const c1 = textureMatrix.c; const d1 = textureMatrix.d; textureMatrix.a *= sx; textureMatrix.b *= sx; textureMatrix.c *= sy; textureMatrix.d *= sy; textureMatrix.tx = mTx * a1 + mTy * c1 + textureMatrix.tx; textureMatrix.ty = mTx * b1 + mTy * d1 + textureMatrix.ty; } else { textureMatrix.translate(style.texture.frame.x, style.texture.frame.y); textureMatrix.scale(1 / style.texture.source.width, 1 / style.texture.source.height); } const sourceStyle = style.texture.source.style; if (!(style.fill instanceof FillGradient) && sourceStyle.addressMode === "clamp-to-edge") { sourceStyle.addressMode = "repeat"; sourceStyle.update(); } if (matrix) { textureMatrix.append(tempTextureMatrix.copyFrom(matrix).invert()); } return textureMatrix; } export { generateTextureMatrix }; //# sourceMappingURL=generateTextureFillMatrix.mjs.map