frontend/script/viewer/Panner/Viewport.ts

36 lines
686 B
TypeScript

export interface ViewPortOptions {
x?: number;
y?: number;
width: number;
height: number;
}
export interface Point {
x: number;
y: number;
}
export class Viewport {
x: number;
y: number;
width: number;
height: number;
constructor(options: ViewPortOptions) {
this.x = options.x || 0;
this.y = options.y || 0;
this.width = options.width;
this.height = options.height;
}
static convert(point: Point, {from, to}: {from: Viewport, to: Viewport}): Point {
const widthScale = from.width / to.width;
const heightScale = from.height / to.height;
return {
x: point.x * widthScale - to.x * widthScale,
y: point.y * heightScale - to.y * heightScale
};
}
}