ue-too
Version:
pan, zoom, and rotate your html canvas
59 lines (58 loc) • 1.9 kB
TypeScript
import { Observer, SubscriptionOptions } from "../../utils/observable";
export type Position = {
x: number;
y: number;
};
export type Velocity = {
vx: number;
vy: number;
};
export type DestinationUpdate = Position & {
type: 'destination';
};
export type DeltaUpdate = Position & {
type: 'delta';
};
export type PositionUpdate = DestinationUpdate | DeltaUpdate;
export declare class CameraPositionUpdateBatcher {
private nextPosition;
private delta;
private observable;
private queuePositionUpdateCount;
private queuePositionUpdateToCount;
private queuePositionUpdateByCount;
private lastUpdateCount;
constructor();
/**
* Queue an absolute position update to be processed in the next animation frame
*/
queuePositionUpdate(x: number, y: number): void;
/**
* Queue a position update to a specific destination to be processed in the next animation frame
* This will override any pending delta updates
*/
queuePositionUpdateTo(destination: Position): void;
/**
* Queue a position update by delta to be processed in the next animation frame
* This will be ignored if there's a pending destination update
*/
queuePositionUpdateBy(delta: Position): void;
/**
* Process and clear all queued position updates
* @returns the update to apply to the position, with type information
*/
processQueuedUpdates(): PositionUpdate | null;
/**
* Subscribe to position updates
*/
subscribe(observer: Observer<[PositionUpdate]>, options?: SubscriptionOptions): () => void;
/**
* Get debug information about queue method calls since last update
*/
getDebugInfo(): {
lastUpdateTotalCalls: number;
queuePositionUpdateCalls: number;
queuePositionUpdateToCalls: number;
queuePositionUpdateByCalls: number;
};
}