ue-too
Version:
pan, zoom, and rotate your html canvas
51 lines (50 loc) • 2.27 kB
TypeScript
import { CameraMux } from "../interface";
import { Point } from "../../utils/misc";
import { ObservableBoardCamera } from "../../board-camera";
import { PanControlStateMachine } from "./pan-control-state-machine";
import { ZoomControlStateMachine } from "./zoom-control-state-machine";
import { RotateControlStateMachine } from "./rotate-control-state-machine";
import { CameraRig } from "../../board-camera/camera-rig";
/**
* @description The flow control with animation and lock input.
*
* This is a customized input flow control that suits a specific use case.
*
* You can use the default one ({@link SimpleRelayFlowControl}) instead or implement your own.
*
* The internal ruleset on which input is used and which is ignored is controlled by the state machines.
*
* @category Input Flow Control
*/
export declare class CameraMuxWithAnimationAndLock implements CameraMux {
private _panStateMachine;
private _zoomStateMachine;
private _rotateStateMachine;
constructor(panStateMachine: PanControlStateMachine, zoomStateMachine: ZoomControlStateMachine, rotateStateMachine: RotateControlStateMachine);
notifyPanToAnimationInput(target: Point): void;
notifyPanInput(delta: Point): void;
notifyZoomInput(delta: number, at: Point): void;
notifyRotateByInput(delta: number): void;
notifyRotateToAnimationInput(target: number): void;
notifyZoomInputAnimation(targetZoom: number, at?: Point): void;
notifyZoomInputAnimationWorld(targetZoom: number, at?: Point): void;
notifyRotationInput(delta: number): void;
initatePanTransition(): void;
initateZoomTransition(): void;
initateRotateTransition(): void;
get rotateStateMachine(): RotateControlStateMachine;
get panStateMachine(): PanControlStateMachine;
get zoomStateMachine(): ZoomControlStateMachine;
}
/**
* @description Create a flow control that allows animation and lock inputs.
*
* @category Input Flow Control
*/
export declare function createCameraMuxWithAnimationAndLock(camera: ObservableBoardCamera): CameraMux;
/**
* @description Create a default flow control with a camera rig.
*
* @category Input Flow Control
*/
export declare function createCameraMuxWithAnimationAndLockWithCameraRig(cameraRig: CameraRig): CameraMux;