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 • 11.5 kB
Source Map (JSON)
{"version":3,"file":"CanvasRenderTargetAdaptor.mjs","sources":["../../../../../src/rendering/renderers/canvas/renderTarget/CanvasRenderTargetAdaptor.ts"],"sourcesContent":["import { Color } from '../../../../color/Color';\nimport { DOMAdapter } from '../../../../environment/adapter';\nimport { CanvasSource } from '../../shared/texture/sources/CanvasSource';\n\nimport type { ICanvas } from '../../../../environment/canvas/ICanvas';\nimport type { ICanvasRenderingContext2D } from '../../../../environment/canvas/ICanvasRenderingContext2D';\nimport type { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport type { CLEAR_OR_BOOL } from '../../gl/const';\nimport type { RenderTarget } from '../../shared/renderTarget/RenderTarget';\nimport type { RenderTargetAdaptor, RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem';\nimport type { TextureSource } from '../../shared/texture/sources/TextureSource';\nimport type { Texture } from '../../shared/texture/Texture';\nimport type { CanvasRenderer } from '../CanvasRenderer';\n\n/**\n * Canvas render target backing store.\n * @internal\n */\nexport type CanvasRenderTarget = {\n /** Backing canvas element. */\n canvas: ICanvas;\n /** 2D context associated with the canvas. */\n context: ICanvasRenderingContext2D;\n /** Pixel width. */\n width: number;\n /** Pixel height. */\n height: number;\n};\n\n/**\n * Canvas adaptor for render targets.\n * @category rendering\n * @advanced\n */\nexport class CanvasRenderTargetAdaptor implements RenderTargetAdaptor<CanvasRenderTarget>\n{\n private _renderer: CanvasRenderer;\n private _renderTargetSystem: RenderTargetSystem<CanvasRenderTarget>;\n\n /**\n * Initializes the adaptor.\n * @param renderer - Canvas renderer instance.\n * @param renderTargetSystem - The render target system.\n * @advanced\n */\n public init(renderer: CanvasRenderer, renderTargetSystem: RenderTargetSystem<CanvasRenderTarget>): void\n {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n }\n\n /**\n * Creates a GPU render target for canvas.\n * @param renderTarget - Render target to initialize.\n * @advanced\n */\n public initGpuRenderTarget(renderTarget: RenderTarget): CanvasRenderTarget\n {\n const colorTexture = renderTarget.colorTexture;\n const { canvas, context } = this._ensureCanvas(colorTexture);\n\n return {\n canvas,\n context,\n width: canvas.width,\n height: canvas.height,\n };\n }\n\n /**\n * Resizes the backing canvas for a render target.\n * @param renderTarget - Render target to resize.\n * @advanced\n */\n public resizeGpuRenderTarget(renderTarget: RenderTarget): void\n {\n const colorTexture = renderTarget.colorTexture;\n const { canvas } = this._ensureCanvas(colorTexture);\n\n canvas.width = renderTarget.pixelWidth;\n canvas.height = renderTarget.pixelHeight;\n }\n\n /**\n * Starts a render pass on the canvas target.\n * @param renderTarget - Target to render to.\n * @param clear - Clear mode.\n * @param clearColor - Optional clear color.\n * @param viewport - Optional viewport.\n * @advanced\n */\n public startRenderPass(\n renderTarget: RenderTarget,\n clear: CLEAR_OR_BOOL,\n clearColor?: number[],\n viewport?: Rectangle\n ): void\n {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n\n this._renderer.canvasContext.activeContext = gpuRenderTarget.context as any;\n this._renderer.canvasContext.activeResolution = renderTarget.resolution;\n\n if (clear)\n {\n this.clear(renderTarget, clear, clearColor, viewport);\n }\n }\n\n /**\n * Clears the render target.\n * @param renderTarget - Target to clear.\n * @param _clear - Clear mode (unused).\n * @param clearColor - Optional clear color.\n * @param viewport - Optional viewport rectangle.\n * @advanced\n */\n public clear(\n renderTarget: RenderTarget,\n _clear: CLEAR_OR_BOOL,\n clearColor?: number[],\n viewport?: Rectangle\n ): void\n {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n const context = gpuRenderTarget.context as ICanvasRenderingContext2D;\n const bounds = viewport || { x: 0, y: 0, width: renderTarget.pixelWidth, height: renderTarget.pixelHeight };\n\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.clearRect(bounds.x, bounds.y, bounds.width, bounds.height);\n\n if (clearColor)\n {\n const color = Color.shared.setValue(clearColor);\n\n if (color.alpha > 0)\n {\n context.globalAlpha = color.alpha;\n context.fillStyle = color.toHex();\n context.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);\n context.globalAlpha = 1;\n }\n }\n }\n\n /**\n * Finishes the render pass (no-op for canvas).\n * @advanced\n */\n public finishRenderPass(): void\n {\n // no-op for canvas\n }\n\n /**\n * Copies a render target into a texture source.\n * @param {RenderTarget} sourceRenderSurfaceTexture - Source render target.\n * @param {Texture} destinationTexture - Destination texture.\n * @param {object} originSrc - Source origin.\n * @param {number} originSrc.x - Source x origin.\n * @param {number} originSrc.y - Source y origin.\n * @param {object} size - Copy size.\n * @param {number} size.width - Copy width.\n * @param {number} size.height - Copy height.\n * @param {object} [originDest] - Destination origin.\n * @param {number} originDest.x - Destination x origin.\n * @param {number} originDest.y - Destination y origin.\n * @advanced\n */\n public copyToTexture(\n sourceRenderSurfaceTexture: RenderTarget,\n destinationTexture: Texture,\n originSrc: { x: number; y: number },\n size: { width: number; height: number },\n originDest?: { x: number; y: number },\n ): Texture\n {\n const sourceGpuTarget = this._renderTargetSystem.getGpuRenderTarget(sourceRenderSurfaceTexture);\n const sourceCanvas = sourceGpuTarget.canvas as CanvasImageSource;\n\n const destSource = destinationTexture.source as TextureSource;\n const { context } = this._ensureCanvas(destSource);\n\n const dx = originDest?.x ?? 0;\n const dy = originDest?.y ?? 0;\n\n context.drawImage(\n sourceCanvas,\n originSrc.x,\n originSrc.y,\n size.width,\n size.height,\n dx,\n dy,\n size.width,\n size.height\n );\n\n destSource.update();\n\n return destinationTexture;\n }\n\n /**\n * Destroys a GPU render target (no-op for canvas).\n * @param _gpuRenderTarget - Target to destroy.\n * @advanced\n */\n public destroyGpuRenderTarget(_gpuRenderTarget: CanvasRenderTarget): void\n {\n // no-op for canvas\n }\n\n private _ensureCanvas(source: TextureSource)\n {\n let canvas = source.resource as ICanvas;\n\n if (!canvas || !(CanvasSource.test(canvas)))\n {\n canvas = DOMAdapter.get().createCanvas(source.pixelWidth, source.pixelHeight);\n source.resource = canvas as any;\n }\n\n if (canvas.width !== source.pixelWidth || canvas.height !== source.pixelHeight)\n {\n canvas.width = source.pixelWidth;\n canvas.height = source.pixelHeight;\n }\n\n const context = canvas.getContext('2d') as ICanvasRenderingContext2D;\n\n return { canvas, context };\n }\n}\n"],"names":[],"mappings":"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"}