/** * Shared camera / projection helpers. * * Invariant for every geographic renderer (tiles, markers, SVG, canvas, WebGL): * * screen = CRS.project(latLng, zoom) − pixelOrigin(zoom) * * During continuous (fractional) zoom, raster tiles may keep an integer * `paintedZoom` and CSS-scale into the live camera. That warp must use the * same math as reprojecting at `liveZoom`: * * scale = 2 ** (liveZoom − paintedZoom) * translate = paintedOrigin * scale − liveOrigin * transform = translate3d(translate) scale(scale) // origin 0 0 * * Do not round camera geometry to integers before the final paint — sibling * panes must stay within sub-pixel agreement during wheel zoom. */ export interface CameraOrigin { x: number; y: number; } /** * Detached camera snapshot. Every field is readonly because `getCamera()` copies the live * state: writing through a snapshot would change nothing on the map, which is worse than * failing. Move the camera with `setView` / `setZoom`. */ export interface CameraState { readonly center: { readonly lat: number; readonly lng: number; }; readonly zoom: number; readonly pixelOrigin: Readonly; readonly size: { readonly width: number; readonly height: number; }; } /** CSS `translate3d` + optional `scale` without integer rounding. */ export declare function geoTransformCss(x: number, y: number, scale?: number): string; /** * Warp a surface painted at `(paintedZoom, paintedOrigin)` onto the live camera. * Transform origin must be `0 0`. */ export declare function cameraWarpCss(paintedOrigin: CameraOrigin, paintedZoom: number, liveOrigin: CameraOrigin, liveZoom: number): string; /** * Whether a viewport-sized surface painted for one camera still covers the * entire live viewport after the camera warp. * * A zoom-out always shrinks a viewport-sized framebuffer and therefore cannot * cover its own edges. A pure pan has the same problem on the newly exposed * side. Renderers can use this predicate to keep the cheap CSS path for safe * zoom-in gestures, while repainting geometrically unsafe zoom-out / pan * frames before transparent borders become visible. */ export declare function cameraWarpCoversViewport(paintedOrigin: CameraOrigin, paintedZoom: number, liveOrigin: CameraOrigin, liveZoom: number, viewport: { width: number; height: number; }, epsilon?: number, /** * Overdraw around the viewport, in painted CSS pixels, for surfaces painted larger than the * viewport. Ignoring it understates coverage and forces a full repaint the warp could absorb. */ paintedPad?: number): boolean; /** Top-left of tile `(x,y)` at `tileZoom`, expressed in live layer pixels + CSS scale. */ export declare function tileCornerLayerTransform(tileX: number, tileY: number, tileSize: number, tileZoom: number, liveOrigin: CameraOrigin, liveZoom: number): { x: number; y: number; scale: number; css: string; }; /** Level container warp: tiles live in `levelOrigin` space at `levelZoom`. */ export declare function tileLevelWarpCss(levelOrigin: CameraOrigin, levelZoom: number, liveOrigin: CameraOrigin, liveZoom: number): string; //# sourceMappingURL=camera.d.ts.map