UNPKG

6.87 kBTypeScriptView Raw
1import type { MSAA_QUALITY, RENDERER_TYPE } from '@pixi/constants';
2import type { Matrix, Rectangle, Transform } from '@pixi/math';
3import type { ICanvas } from '@pixi/settings';
4import type { IRendererPlugins } from './plugin/PluginSystem';
5import type { IGenerateTextureOptions } from './renderTexture/GenerateTextureSystem';
6import type { RenderTexture } from './renderTexture/RenderTexture';
7import type { SystemManager } from './system/SystemManager';
8import type { BackgroundSystem, BackgroundSystemOptions, ContextSystemOptions, StartupSystemOptions, ViewSystemOptions } from './systems';
9import type { ImageSource } from './textures/BaseTexture';
10/**
11 * Interface for DisplayObject to interface with Renderer.
12 * The minimum APIs needed to implement a renderable object.
13 * @memberof PIXI
14 */
15export interface IRenderableObject extends GlobalMixins.IRenderableObject {
16 /** Object must have a parent container */
17 parent: IRenderableContainer;
18 /** Object must have a transform */
19 transform: Transform;
20 /** Before method for transform updates */
21 enableTempParent(): IRenderableContainer;
22 /** Update the transforms */
23 updateTransform(): void;
24 /** After method for transform updates */
25 disableTempParent(parent: IRenderableContainer): void;
26 /** Render object directly */
27 render(renderer: IRenderer): void;
28}
29/**
30 * Interface for Container to interface with Renderer.
31 * @memberof PIXI
32 */
33export interface IRenderableContainer extends IRenderableObject {
34 /** Get Local bounds for container */
35 getLocalBounds(rect?: Rectangle, skipChildrenUpdate?: boolean): Rectangle;
36}
37/**
38 * Mixed WebGL1 / WebGL2 rendering context. Either it's WebGL2, either it's WebGL1 with PixiJS polyfills on it.
39 * @memberof PIXI
40 */
41export interface IRenderingContext extends WebGL2RenderingContext {
42 texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
43 texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource | ImageSource): void;
44 texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
45 texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource | ImageSource): void;
46 texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
47 texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
48 texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource | ImageSource): void;
49 texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
50 texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, source: TexImageSource | ImageSource): void;
51 texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
52 texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
53 texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, source: TexImageSource | ImageSource): void;
54 texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView | null, srcOffset?: GLuint): void;
55}
56/**
57 * Renderer options supplied to constructor.
58 * @memberof PIXI
59 * @see PIXI.settings.RENDER_OPTIONS
60 */
61export interface IRendererOptions extends GlobalMixins.IRendererOptions, BackgroundSystemOptions, ContextSystemOptions, ViewSystemOptions, StartupSystemOptions {
62}
63/**
64 * @deprecated since 7.2.0
65 * @see PIXI.IRendererOptions
66 */
67export type IRenderOptions = IRendererOptions;
68export interface IRendererRenderOptions {
69 renderTexture?: RenderTexture;
70 blit?: boolean;
71 clear?: boolean;
72 transform?: Matrix;
73 skipUpdateTransform?: boolean;
74}
75/**
76 * Standard Interface for a Pixi renderer.
77 * @memberof PIXI
78 */
79export interface IRenderer<VIEW extends ICanvas = ICanvas> extends SystemManager, GlobalMixins.IRenderer {
80 resize(width: number, height: number): void;
81 render(displayObject: IRenderableObject, options?: IRendererRenderOptions): void;
82 generateTexture(displayObject: IRenderableObject, options?: IGenerateTextureOptions): RenderTexture;
83 destroy(removeView?: boolean): void;
84 clear(): void;
85 reset(): void;
86 /**
87 * The type of the renderer.
88 * @see PIXI.RENDERER_TYPE
89 */
90 readonly type: RENDERER_TYPE;
91 /**
92 * The options passed in to create a new instance of the renderer.
93 * @type {PIXI.IRendererOptions}
94 */
95 readonly options: IRendererOptions;
96 /** When logging Pixi to the console, this is the name we will show */
97 readonly rendererLogId: string;
98 /** The canvas element that everything is drawn to.*/
99 readonly view: VIEW;
100 /** Flag if we are rendering to the screen vs renderTexture */
101 readonly renderingToScreen: boolean;
102 /** The resolution / device pixel ratio of the renderer. */
103 resolution: number;
104 /** The number of MSAA samples of the renderer. */
105 multisample?: MSAA_QUALITY;
106 /** the width of the screen */
107 readonly width: number;
108 /** the height of the screen */
109 readonly height: number;
110 /** Whether CSS dimensions of canvas view should be resized to screen dimensions automatically. */
111 readonly autoDensity: boolean;
112 /**
113 * Measurements of the screen. (0, 0, screenWidth, screenHeight).
114 * Its safe to use as filterArea or hitArea for the whole stage.
115 */
116 readonly screen: Rectangle;
117 /** the last object rendered by the renderer. Useful for other plugins like interaction managers */
118 readonly lastObjectRendered: IRenderableObject;
119 /** Collection of plugins */
120 readonly plugins: IRendererPlugins;
121 /** Background color, alpha and clear behavior */
122 readonly background: BackgroundSystem;
123}