import { type CameraState } from '../camera/camera' import { type TileStoreStats } from '../tile/tileStore' import { type LonLatPoint } from '../../utils/projection' import { type TileZoomBounds } from '../../utils/remoteMapConfig' export interface MapScene { tileSource: string zoom: number centerTileX: number centerTileY: number tileBoundsByZoom: Record | null 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, } }