mirror of
https://codeberg.org/demostf/frontend.git
synced 2026-06-03 18:24:12 +02:00
36 lines
686 B
TypeScript
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
|
|
};
|
|
}
|
|
}
|
|
|