ue-too
Version:
pan, zoom, and rotate your html canvas
49 lines (48 loc) • 1.84 kB
TypeScript
import { Point } from "../utils/misc";
import { UnSubscribe } from "../board-camera/camera-update-publisher";
import { RotationLimits } from "../board-camera/utils/rotation";
import { ZoomLevelLimits } from "../board-camera/utils/zoom";
import { Boundaries } from "../board-camera/utils/position";
import { CameraEventMap, CameraState } from "../board-camera/camera-update-publisher";
import { SubscriptionOptions } from "../utils/observable";
/**
* @description The interface for the observable board camera.
*
* @category Camera
*/
export interface ObservableBoardCamera extends BoardCamera {
on<K extends keyof CameraEventMap>(eventName: K, callback: (event: CameraEventMap[K], cameraState: CameraState) => void, options?: SubscriptionOptions): UnSubscribe;
}
/**
* @description The interface for the board camera.
*
* @category Camera
*/
export interface BoardCamera {
position: Point;
rotation: number;
zoomLevel: number;
viewPortWidth: number;
viewPortHeight: number;
boundaries?: Boundaries;
zoomBoundaries?: ZoomLevelLimits;
rotationBoundaries?: RotationLimits;
setPosition(destination: Point): boolean;
setZoomLevel(zoomLevel: number): boolean;
setRotation(rotation: number): boolean;
setMinZoomLevel(minZoomLevel: number): void;
setMaxZoomLevel(maxZoomLevel: number): void;
setHorizontalBoundaries(min: number, max: number): void;
setVerticalBoundaries(min: number, max: number): void;
getCameraOriginInWindow(centerInWindow: Point): Point;
convertFromViewPort2WorldSpace(point: Point): Point;
convertFromWorld2ViewPort(point: Point): Point;
getTransform(devicePixelRatio: number, alignCoordinateSystem: boolean): {
a: number;
b: number;
c: number;
d: number;
e: number;
f: number;
};
}