import { GeoreferencedMap } from '@allmaps/annotation'; import { Point, Line, Size, FetchFn, Bbox, TileZoomLevel, Ring, Gcp, ImageRequest } from '@allmaps/types'; import { DistortionMeasure, TransformationType } from '@allmaps/transform'; import { Projection } from '@allmaps/project'; import { FetchableTile } from '../tilecache/FetchableTile.js'; import { CacheableTile } from '../tilecache/CacheableTile.js'; import { TileCache } from '../tilecache/TileCache.js'; import { WarpedMapList } from '../maps/WarpedMapList.js'; import { WarpedMap, WarpedMapWithImage } from '../maps/WarpedMap.js'; import { WebGL2WarpedMap } from '../webgl2.js'; import { TriangulatedWarpedMap } from '../maps/TriangulatedWarpedMap.js'; export type ShouldRenderOptions = { checkOpacity: boolean; }; export type SelectionOptions = MaskOptions & { onlyVisible?: boolean; mapIds?: Iterable; geoPoint?: Point; geoBbox?: Bbox; projectedGeoPoint?: Point; projectedGeoBbox?: Bbox; }; export type MaskOptions = { applyMask: boolean; }; export type ProjectionOptions = { projection: Projection; }; export type TransformationOptions = { type: TransformationType; options?: unknown; }; export type GeoreferencedMapOptions = { gcps: Gcp[]; resourceMask: Ring; transformationType: TransformationType; internalProjection: Projection; }; export type WarpedMapOptions = { fetchFn?: FetchFn; gcps: Gcp[]; resourceMask: Ring; transformationType: TransformationType; internalProjection: Projection; projection: Projection; visible: boolean; anticipateVisibility: boolean; overviewTilesSelection: 'highest' | 'lowest'; overviewTilesMaxResolution: number | undefined; applyMask: boolean; distortionMeasure: DistortionMeasure | undefined; }; export type WarpedMapWithoutGeoreferencedMapOptions = Omit; export type SpecificTriangulatedWarpedMapOptions = { resourceResolution?: number; distortionMeasures: DistortionMeasure[]; }; export type TriangulatedWarpedMapOptions = SpecificTriangulatedWarpedMapOptions & WarpedMapOptions; export type TriangulatedWarpedMapWithoutGeoreferencedMapOptions = Omit; export type SpecificWebGL2WarpedMapOptions = { renderMaps?: boolean; renderLines?: boolean; renderPoints?: boolean; renderGcps: boolean; renderGcpsColor?: string; renderGcpsSize?: number; renderGcpsBorderColor?: string; renderGcpsBorderSize?: number; renderTransformedGcps: boolean; renderTransformedGcpsColor?: string; renderTransformedGcpsSize?: number; renderTransformedGcpsBorderColor?: string; renderTransformedGcpsBorderSize?: number; renderVectors: boolean; renderVectorsColor?: string; renderVectorsSize?: number; renderVectorsBorderColor?: string; renderVectorsBorderSize?: number; renderFullMask: boolean; renderFullMaskColor?: string; renderFullMaskSize?: number; renderFullMaskBorderColor?: string; renderFullMaskBorderSize?: number; renderMask: boolean; renderMaskColor?: string; renderMaskSize?: number; renderMaskBorderColor?: string; renderMaskBorderSize?: number; renderAppliedMask: boolean; renderAppliedMaskColor?: string; renderAppliedMaskSize?: number; renderAppliedMaskBorderColor?: string; renderAppliedMaskBorderSize?: number; opacity: number; saturation: number; removeColor: boolean; removeColorColor: string; removeColorThreshold: number; removeColorHardness: number; colorize: boolean; colorizeColor: string; distortionColor00: string; distortionColor01: string; distortionColor1: string; distortionColor2: string; distortionColor3: string; renderGrid: boolean; renderGridColor: string; debugTriangles: boolean; debugTiles: boolean; }; export type WebGL2WarpedMapOptions = SpecificWebGL2WarpedMapOptions & TriangulatedWarpedMapOptions; export type WebGL2WarpedMapWithoutGeoreferencedMapOptions = Omit; export type GetWarpedMapOptions = W extends WebGL2WarpedMap ? WebGL2WarpedMapOptions : W extends TriangulatedWarpedMap ? TriangulatedWarpedMapOptions : W extends WarpedMap ? WarpedMapOptions : never; export type SpecificWarpedMapListOptions = { createRTree: boolean; rtreeUpdatedOptions: Array; animatedOptions: Array; projection: Projection; warpedMapFactory: WarpedMapFactory; }; export type WarpedMapListOptions = SpecificWarpedMapListOptions & Partial; export type SpecificBaseRenderOptions = { warpedMapList?: WarpedMapList; anticipateInteraction: boolean; requestViewportBufferRatio: number; overviewRequestViewportBufferRatio: number; pruneViewportBufferRatio: number; overviewPruneViewportBufferRatio: number; scaleFactorCorrection: number; log2ScaleFactorCorrection: number; spritesMaxHigherLog2ScaleFactorDiff: number; spritesMaxLowerLog2ScaleFactorDiff: number; maxTotalOverviewResolutionRatio: number; maxGcpsExactTpsToResource: number; }; export type BaseRenderOptions = SpecificBaseRenderOptions & Partial>; export type SpecificWebGL2RenderOptions = { warpedMapFactory: WarpedMapFactory; }; export type WebGL2RenderOptions = SpecificWebGL2RenderOptions & BaseRenderOptions; export type CanvasRenderOptions = BaseRenderOptions; export type IntArrayRenderOptions = BaseRenderOptions; export type TileCacheOptions = { fetchFn: FetchFn; tileCacheForSprites: TileCache; }; export type AnimationOptions = { animate: boolean; animatedOptions?: Array; duration: number; }; export type AnimationInternalOptions = { stage: AnimationStage; optionKeysPossiblyChanged?: string[]; optionKeysToOmit?: string[]; }; export type AnimationStage = 'init' | 'pre' | 'animate'; export type Renderer = { render: (...params: any[]) => any; }; export type GetImageData = (data: Uint8ClampedArray) => D; export type GetImageDataValue = (data: D, index: number) => number; export type GetImageDataSize = (data: D) => Size; export type WarpedMapFactory = (mapId: string, georeferencedMap: GeoreferencedMap, listOptions?: Partial>, mapOptions?: Partial>) => W; export type CacheableTileFactory = (fetchableTile: FetchableTile, fetchFn?: FetchFn) => CacheableTile; export type FetchableTileOptions = { imageRequest: ImageRequest; spritesInfo: SpritesInfo; warpedMapsByResourceId: Map; }; export type SpritesInfo = { sprites: Sprite[]; imageUrl: string; imageSize: Size; }; export type Sprite = { imageId: string; scaleFactor: number; x: number; y: number; width: number; height: number; spriteTileScale?: number; }; export type RenderLineGroupOptions = { viewportSize: number; color: string; viewportBorderSize: number; borderColor: string; }; export type RenderPointGroupOptions = { viewportSize: number; color: string; viewportBorderSize: number; borderColor: string; }; export type LineGroup = { projectedGeoLines: Line[]; projectedGeoPreviousLines?: Line[]; } & Partial; export type PointGroup = { projectedGeoPoints: Point[]; projectedGeoPreviousPoints?: Point[]; } & Partial; export type MapPruneInfo = { tileZoomLevelForViewport?: TileZoomLevel; overviewTileZoomLevelForViewport?: TileZoomLevel; resourceViewportRingBboxForViewport?: Bbox; }; export type MapPruneConstants = { maxHigherLog2ScaleFactorDiff: number; maxLowerLog2ScaleFactorDiff: number; };