UNPKG

@ahmafi/pixi-viewport

Version:

A highly configurable viewport/2D camera designed to work with pixi.js. Features include dragging, pinch-to-zoom, mouse wheel zooming, decelerated dragging, follow target, snap to point, snap to zoom, clamping, bouncing on edges, and move on mouse edges.

131 lines (130 loc) 5.15 kB
import { Container } from '@pixi/display'; import { IPointData, Point, Rectangle, Ticker } from '@pixi/core'; import { InputManager } from './InputManager'; import { PluginManager } from './PluginManager'; import { IAnimateOptions, IBounceOptions, IClampOptions, IClampZoomOptions, IDecelerateOptions, IDragOptions, IFollowOptions, IMouseEdgesOptions, IPinchOptions, ISnapOptions, ISnapZoomOptions, IWheelOptions } from './plugins'; import type { DisplayObject, IDestroyOptions } from '@pixi/display'; import type { IHitArea, EventSystem } from '@pixi/events'; export interface IViewportOptions { screenWidth?: number; screenHeight?: number; worldWidth?: number | null; worldHeight?: number | null; threshold?: number; passiveWheel?: boolean; stopPropagation?: boolean; allowPreserveDragOutside?: boolean; forceHitArea?: Rectangle | null; noTicker?: boolean; events: EventSystem; disableOnContextMenu?: boolean; ticker?: Ticker; } export interface ICompleteViewportOptions extends IViewportOptions { screenWidth: number; screenHeight: number; threshold: number; passiveWheel: boolean; stopPropagation: boolean; noTicker: boolean; ticker: Ticker; } export interface IViewportTransformState { x: number; y: number; scaleX: number; scaleY: number; } export declare class Viewport extends Container { moving?: boolean; screenWidth: number; screenHeight: number; threshold: number; readonly input: InputManager; readonly plugins: PluginManager; zooming?: boolean; lastViewport?: IViewportTransformState | null; readonly options: ICompleteViewportOptions; private _dirty?; private _forceHitArea?; private _hitAreaDefault?; private _pause?; private readonly tickerFunction?; private _worldWidth?; private _worldHeight?; private _disableOnContextMenu; constructor(options: IViewportOptions); destroy(options?: IDestroyOptions): void; update(elapsed: number): void; resize(screenWidth: 400, screenHeight: 400, worldWidth?: number, worldHeight?: number): void; get worldWidth(): number; set worldWidth(value: number); get worldHeight(): number; set worldHeight(value: number); getVisibleBounds(): Rectangle; toWorld<P extends IPointData = Point>(x: number, y: number): P; toWorld<P extends IPointData = Point>(screenPoint: IPointData): P; toScreen<P extends IPointData = Point>(x: number, y: number): P; toScreen<P extends IPointData = Point>(worldPoint: IPointData): P; get worldScreenWidth(): number; get worldScreenHeight(): number; get screenWorldWidth(): number; get screenWorldHeight(): number; get center(): Point; set center(value: Point); moveCenter(x: number, y: number): Viewport; moveCenter(center: IPointData): Viewport; get corner(): Point; set corner(value: Point); moveCorner(x: number, y: number): Viewport; moveCorner(center: Point): Viewport; get screenWidthInWorldPixels(): number; get screenHeightInWorldPixels(): number; findFitWidth(width: number): number; findFitHeight(height: number): number; findFit(width: number, height: number): number; findCover(width: number, height: number): number; fitWidth(width?: number, center?: boolean, scaleY?: boolean, noClamp?: boolean): Viewport; fitHeight(height?: number, center?: boolean, scaleX?: boolean, noClamp?: boolean): Viewport; fitWorld(center?: boolean): Viewport; fit(center?: boolean, width?: number, height?: number): Viewport; setZoom(scale: number, center?: boolean): Viewport; zoomPercent(percent: number, center?: boolean): Viewport; zoom(change: number, center?: boolean): Viewport; get scaled(): number; set scaled(scale: number); snapZoom(options?: ISnapZoomOptions): Viewport; OOB(): { left: boolean; right: boolean; top: boolean; bottom: boolean; cornerPoint: Point; }; get right(): number; set right(value: number); get left(): number; set left(value: number); get top(): number; set top(value: number); get bottom(): number; set bottom(value: number); get dirty(): boolean; set dirty(value: boolean); get forceHitArea(): IHitArea | null | undefined; set forceHitArea(value: IHitArea | null | undefined); drag(options?: IDragOptions): Viewport; clamp(options?: IClampOptions): Viewport; decelerate(options?: IDecelerateOptions): Viewport; bounce(options?: IBounceOptions): Viewport; pinch(options?: IPinchOptions): Viewport; snap(x: number, y: number, options?: ISnapOptions): Viewport; follow(target: DisplayObject, options?: IFollowOptions): Viewport; wheel(options?: IWheelOptions): Viewport; animate(options: IAnimateOptions): Viewport; clampZoom(options: IClampZoomOptions): Viewport; mouseEdges(options: IMouseEdgesOptions): Viewport; get pause(): boolean; set pause(value: boolean); ensureVisible(x: number, y: number, width: number, height: number, resizeToFit?: boolean): void; }