import { WlBufferResource, WlRegionResource, WlSurfaceRequests, WlSurfaceResource } from 'westfield-runtime-server'; import BufferContents from './BufferContents'; import Callback from './Callback'; import { Mat4 } from './math/Mat4'; import { Point } from './math/Point'; import { Rect, RectWithInfo } from './math/Rect'; import { FrameDecoder, H264DecoderContext } from './remotestreaming/buffer-decoder'; import Renderer from './render/Renderer'; import Session from './Session'; import { Size } from './math/Size'; import { SurfaceChild } from './SurfaceChild'; import SurfaceRole from './SurfaceRole'; export interface SurfaceState { damageRects: Rect[]; bufferDamageRects: Rect[]; readonly opaquePixmanRegion: number; readonly inputPixmanRegion: number; dx: number; dy: number; bufferTransform: number; bufferScale: number; bufferResourceDestroyListener: () => void; buffer?: WlBufferResource; bufferContents?: BufferContents; subsurfaceChildren: SurfaceChild[]; frameCallbacks: Callback[]; } export declare function mergeSurfaceState(targetState: SurfaceState, sourceState: SurfaceState): void; declare class Surface implements WlSurfaceRequests { readonly resource: WlSurfaceResource; readonly renderer: Renderer; readonly session: Session; readonly surfaceChildSelf: SurfaceChild; destroyed: boolean; damaged: boolean; readonly state: SurfaceState; pendingState: SurfaceState; hasKeyboardInput: boolean; hasPointerInput: boolean; hasTouchInput: boolean; role?: SurfaceRole; bufferTransformation: Mat4; inverseBufferTransformation: Mat4; readonly pixmanRegion: number; size?: Size; _geometry?: RectWithInfo; hasGeometry: boolean; private _surfaceChildren; mapped: boolean; private constructor(); private _parent?; get parent(): Surface | undefined; private set parent(value); private h264DecoderContext?; getH264DecoderContext(frameDecoder: FrameDecoder): H264DecoderContext; get children(): SurfaceChild[]; static create(wlSurfaceResource: WlSurfaceResource, session: Session): Surface; isWithinInputRegion(surfacePoint: Point): boolean; addSubsurface(surfaceChild: SurfaceChild): void; addChild(surfaceChild: SurfaceChild): void; removeChild(surfaceChild: SurfaceChild): void; destroy(resource: WlSurfaceResource): void; attach(resource: WlSurfaceResource, buffer: WlBufferResource | undefined, x: number, y: number): void; damage(resource: WlSurfaceResource, x: number, y: number, width: number, height: number): void; frame(resource: WlSurfaceResource, callback: number): void; setOpaqueRegion(resource: WlSurfaceResource, regionResource: WlRegionResource | undefined): void; setInputRegion(resource: WlSurfaceResource, regionResource: WlRegionResource | undefined): void; toSurfaceSpace(bufferPoint: Point): Point; commit(resource: WlSurfaceResource, serial?: number): Promise; /** * Called during commit */ commitPending(): void; setBufferTransform(resource: WlSurfaceResource, transform: number): void; setBufferScale(resource: WlSurfaceResource, scale: number): void; damageBuffer(resource: WlSurfaceResource, x: number, y: number, width: number, height: number): void; private _applyBufferTransformWithPositionCorrection; /** * Called during commit * @private */ private calculateDerivedPendingState; private removeChildFromList; private removeSubsurface; private _addChild; private _handleDestruction; get geometry(): RectWithInfo; updateGeometry(rect: Rect): void; boundingRectangle(): Rect; /** * Finds the parent surface that is not a subsurface */ getMainSurface(): Surface; unmap(): void; } export default Surface;