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 • 9.84 kB
Source Map (JSON)
{"version":3,"file":"ViewSystem.mjs","sources":["../../../../../src/rendering/renderers/shared/view/ViewSystem.ts"],"sourcesContent":["import { DOMAdapter } from '../../../../environment/adapter';\nimport { ExtensionType } from '../../../../extensions/Extensions';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation';\nimport { type RendererOptions } from '../../types';\nimport { RenderTarget } from '../renderTarget/RenderTarget';\nimport { getCanvasTexture } from '../texture/utils/getCanvasTexture';\n\nimport type { ICanvas } from '../../../../environment/canvas/ICanvas';\nimport type { TypeOrBool } from '../../../../scene/container/destroyTypes';\nimport type { System } from '../system/System';\nimport type { CanvasSource } from '../texture/sources/CanvasSource';\nimport type { Texture } from '../texture/Texture';\n\n/**\n * Options passed to the ViewSystem\n * @category rendering\n * @advanced\n */\nexport interface ViewSystemOptions\n{\n /**\n * The width of the screen.\n * @default 800\n */\n width?: number;\n /**\n * The height of the screen.\n * @default 600\n */\n height?: number;\n /** The canvas to use as a view, optional. */\n canvas?: ICanvas;\n /**\n * Alias for `canvas`.\n * @deprecated since 8.0.0\n */\n view?: ICanvas;\n /**\n * Resizes renderer view in CSS pixels to allow for resolutions other than 1.\n *\n * This is only supported for HTMLCanvasElement\n * and will be ignored if the canvas is an OffscreenCanvas.\n */\n autoDensity?: boolean;\n /** The resolution / device pixel ratio of the renderer. */\n resolution?: number;\n /** Whether to enable anti-aliasing. This may affect performance. */\n antialias?: boolean;\n /** Whether to ensure the main view has can make use of the depth buffer. Always true for WebGL renderer. */\n depth?: boolean;\n}\n\n/**\n * Options for destroying the ViewSystem.\n * @category rendering\n * @advanced\n */\nexport interface ViewSystemDestroyOptions\n{\n /** Whether to remove the view element from the DOM. Defaults to `false`. */\n removeView?: boolean;\n}\n\n/**\n * The view system manages the main canvas that is attached to the DOM.\n * This main role is to deal with how the holding the view reference and dealing with how it is resized.\n * @category rendering\n * @advanced\n */\nexport class ViewSystem implements System<ViewSystemOptions, TypeOrBool<ViewSystemDestroyOptions> >\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem,\n ],\n name: 'view',\n priority: 0,\n } as const;\n\n /** The default options for the view system. */\n public static defaultOptions: ViewSystemOptions = {\n /**\n * {@link WebGLOptions.width}\n * @default 800\n */\n width: 800,\n /**\n * {@link WebGLOptions.height}\n * @default 600\n */\n height: 600,\n /**\n * {@link WebGLOptions.autoDensity}\n * @default false\n */\n autoDensity: false,\n /**\n * {@link WebGLOptions.antialias}\n * @default false\n */\n antialias: false,\n };\n\n /** The canvas element that everything is drawn to. */\n public canvas!: ICanvas;\n\n /** The texture that is used to draw the canvas to the screen. */\n public texture: Texture<CanvasSource>;\n\n /**\n * Whether CSS dimensions of canvas view should be resized to screen dimensions automatically.\n * This is only supported for HTMLCanvasElement and will be ignored if the canvas is an OffscreenCanvas.\n * @type {boolean}\n */\n public get autoDensity(): boolean\n {\n return this.texture.source.autoDensity;\n }\n public set autoDensity(value: boolean)\n {\n this.texture.source.autoDensity = value;\n }\n\n /** Whether to enable anti-aliasing. This may affect performance. */\n public antialias: boolean;\n\n /**\n * Measurements of the screen. (0, 0, screenWidth, screenHeight).\n *\n * Its safe to use as filterArea or hitArea for the whole stage.\n */\n public screen: Rectangle;\n /** The render target that the view is drawn to. */\n public renderTarget: RenderTarget;\n\n /** The resolution / device pixel ratio of the renderer. */\n get resolution(): number\n {\n return this.texture.source._resolution;\n }\n\n set resolution(value: number)\n {\n this.texture.source.resize(\n this.texture.source.width,\n this.texture.source.height,\n value\n );\n }\n\n /**\n * initiates the view system\n * @param options - the options for the view\n */\n public init(options: ViewSystemOptions): void\n {\n options = {\n ...ViewSystem.defaultOptions,\n ...options,\n };\n\n if (options.view)\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'ViewSystem.view has been renamed to ViewSystem.canvas');\n // #endif\n\n options.canvas = options.view;\n }\n\n this.screen = new Rectangle(0, 0, options.width, options.height);\n this.canvas = options.canvas || DOMAdapter.get().createCanvas();\n this.antialias = !!options.antialias;\n this.texture = getCanvasTexture(this.canvas, options);\n this.renderTarget = new RenderTarget({\n colorTextures: [this.texture],\n depth: !!options.depth,\n isRoot: true,\n });\n\n this.texture.source.transparent = (options as RendererOptions).backgroundAlpha < 1;\n this.resolution = options.resolution;\n }\n\n /**\n * Resizes the screen and canvas to the specified dimensions.\n * @param desiredScreenWidth - The new width of the screen.\n * @param desiredScreenHeight - The new height of the screen.\n * @param resolution\n */\n public resize(desiredScreenWidth: number, desiredScreenHeight: number, resolution: number): void\n {\n this.texture.source.resize(desiredScreenWidth, desiredScreenHeight, resolution);\n\n this.screen.width = this.texture.frame.width;\n this.screen.height = this.texture.frame.height;\n }\n\n /**\n * Destroys this System and optionally removes the canvas from the dom.\n * @param {options | false} options - The options for destroying the view, or \"false\".\n * @example\n * viewSystem.destroy();\n * viewSystem.destroy(true);\n * viewSystem.destroy({ removeView: true });\n */\n public destroy(options: TypeOrBool<ViewSystemDestroyOptions> = false): void\n {\n const removeView = typeof options === 'boolean' ? options : !!options?.removeView;\n\n if (removeView && this.canvas.parentNode)\n {\n this.canvas.parentNode.removeChild(this.canvas);\n }\n\n this.texture.destroy();\n\n // note: don't nullify the element\n // other systems may need to unbind from it during the destroy iteration (eg. GLContextSystem)\n }\n}\n"],"names":[],"mappings":"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"}