45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { type CameraState } from '../camera/camera'
|
|
import { type TileStoreStats } from '../tile/tileStore'
|
|
import { type LonLatPoint } from '../../utils/projection'
|
|
|
|
export interface MapScene {
|
|
tileSource: string
|
|
zoom: number
|
|
centerTileX: number
|
|
centerTileY: number
|
|
viewportWidth: number
|
|
viewportHeight: number
|
|
visibleColumns: number
|
|
overdraw: number
|
|
translateX: number
|
|
translateY: number
|
|
rotationRad: number
|
|
previewScale: number
|
|
previewOriginX: number
|
|
previewOriginY: number
|
|
track: LonLatPoint[]
|
|
gpsPoint: LonLatPoint
|
|
}
|
|
|
|
export type MapRendererStats = TileStoreStats
|
|
|
|
export interface MapRenderer {
|
|
attachCanvas(canvasNode: any, width: number, height: number, dpr: number): void
|
|
updateScene(scene: MapScene): void
|
|
setAnimationPaused(paused: boolean): void
|
|
destroy(): void
|
|
}
|
|
|
|
export function buildCamera(scene: MapScene): CameraState {
|
|
return {
|
|
centerWorldX: scene.centerTileX,
|
|
centerWorldY: scene.centerTileY,
|
|
viewportWidth: scene.viewportWidth,
|
|
viewportHeight: scene.viewportHeight,
|
|
visibleColumns: scene.visibleColumns,
|
|
translateX: scene.translateX,
|
|
translateY: scene.translateY,
|
|
rotationRad: scene.rotationRad,
|
|
}
|
|
}
|