import { Tile } from '../../core/TileTextureSource'; /** * Options for the TileLayer construction */ interface TileLayerOptions { /** * Minimum zoom of the tile pyramids that will be added into this layer. */ minZoom?: number; /** * Maximum zoom. */ maxZoom?: number; /** * Limited bounds of the tile pyramids -- tiles outside this will not be loaded. * * `[west, south, east, north]` in degrees */ bounds?: [number, number, number, number]; /** * Rendering areas with opacity < 1.0 * Default value is false. */ renderTransparentArea?: boolean; /** * Indicated whether the the function `map.triggerRepaint()` should be called * when the animation is paused. */ repaintOnPausedAnimation?: boolean; /** * Linear interpolation between keyframes when true, or jumping from a keyframe to the * next when false; */ timeInterpolation?: boolean; /** * Bilinear interpolation of category color (but not of category value) when true (requires more performance). * No interpolation when false. * Applies only to TileLayers using MultiChannelGradientColoringFragment * (as the other types of Coloring Fragment are not compatible with categories) */ categorySmoothTransition?: boolean; /** * Enables the local smoothing if tue. * Default: false */ localSmoothing?: boolean; /** * Number of adjacent texture reads used to compute a smooth average for each pixel on screen. * If `0`, then only the central point is read, which does the same as `localSmoothing = false`. * If very high (32 or more), will have a performance impact on low-end devices. * Default: 16 */ nbSmoothingBins?: number; /** * The distance of the smoothing bins are dependant of the zoom-level. The distance is the longest at z0 * and decays. maxSmoothingDistance is the distance at z0. * Default: 10 */ maxSmoothingDistance?: number; /** * The decay factor has an influence on how the distance between the reference texture and its adjacent bins * diminishes as the zoom level gets higher. * If smoothingDistanceDecayFactor is closer to `0`, the decaying function will have the shape of the inverse * function (fast decay very quickly). If smoothingDistanceDecayFactor is closer to `100`, * the decay is considered linear. * Default: 12 */ smoothingDistanceDecayFactor?: number; /** * If `true`, will load the lower zoom level (up to z0) if the tile of requested zoom level * is not ready/loaded. This will lead to visually smoother transitions as zooming in but will * require fetching more tiles at high zoom level. * If `false`, will load only the tile of the requested zoom level. * Default: `true` */ loadLowerZoomLevels?: boolean; /** * If `true` the edges of each tile is will be interpolated with its neighbor tile to obtain * smoother in-between-tile transition. * This requires sending more tiles (textures) to the GPU and perform more texture reads, which could impact performance. * Note: at the moment, this is only implemented for `MultiChannelGradientColoringFragment` * Default: `false` */ interpolateTileEdge?: boolean; } /** * */ interface TilePlacement { /** * The Tile */ tile: Tile; /** * The index along x and y axis */ xy: [number, number]; /** * Texture size in pixel */ size: number; } /** * Coordinates of a tile */ interface TileCoordinates { /** * Index of the tile along x axis (horizontal) */ x: number; /** * Index of the tile along y axis (vertical) */ y: number; /** * Zoom level */ z: number; } /** * Key-value list of tile. The IDs are of the form `"z/x/y"` and the value is true. * See it as a Set. * * TODO: Why not using Set? */ type TileList = { [key: string]: true; }; export type { TilePlacement, TileCoordinates, TileList, TileLayerOptions };