UNPKG

@allmaps/render

Version:

Render functions for WebGL and image buffers

340 lines (338 loc) 15.2 kB
import { GeoreferencedMap } from '@allmaps/annotation'; import { Image } from '@allmaps/iiif-parser'; import { ProjectedGcpTransformer, ProjectedGcpTransformerOptions, Projection } from '@allmaps/project'; import { WarpedMapOptions } from '../shared/types.js'; import { Gcp, Point, Ring, Rectangle, Bbox, FetchFn, ImageInformations, TileZoomLevel } from '@allmaps/types'; import { TransformationType, DistortionMeasure } from '@allmaps/transform'; import { Viewport } from '../viewport/Viewport.js'; import { FetchableTile } from '../tilecache/FetchableTile.js'; export declare function createWarpedMapFactory(): (mapId: string, georeferencedMap: GeoreferencedMap, options?: Partial<WarpedMapOptions>) => WarpedMap; /** * Class for warped maps. * This class describes how a georeferenced map is warped using a specific transformation. * * @param mapId - ID of the map * @param georeferencedMap - Georeferenced map used to construct the WarpedMap * @param imageInformations - Image informations * @param parsedImage - ID of the image * @param visible - Whether the map is visible * @param applyMask - Whether to apply the mask * @param gcps - Ground control points used for warping this map, from resource coordinates to geospatial coordinates * @param projectedGcps - Projected ground control points, from resource coordinates to projected geospatial coordinates * @param resourcePoints - The resource coordinates of the ground control points * @param geoPoints - The geospatial coordinates of the ground control points * @param projectedGeoPoints - The projected geospatial coordinates of the projected ground control points * @param projectedGeoPreviousTransformedResourcePoints - The projectedGeoTransformedResourcePoints of the previous transformation type, used during transformation transitions * @param projectedGeoTransformedResourcePoints - The resource coordinates of the ground control points, transformed to projected geospatial coordinates using the projected transformer * @param resourcePreviousMask - Resource mask of the previous transformation type * @param resourceMask - Resource mask * @param resourceMaskBbox - Bbox of the resourceMask * @param resourceMaskRectangle - Rectangle of the resourceMaskBbox * @param resourceFullMask - Resource full mask (describing the entire extent of the image) * @param resourceFullMaskBbox - Bbox of the resource full mask * @param resourceFullMaskRectangle - Rectangle of the resource full mask bbox * @param previousTransformationType - Previous transformation type * @param transformationType - Transformation type used in the transfomer. This is loaded from the georeference annotation. * @param previousInternalProjection - Previous internal projection * @param internalProjection - Internal projection used in the projected transformer * @param projection - Projection of the projected geospatial coordinates space * @param projectedPreviousTransformer - Previous transformer used for warping this map from resource coordinates to projected geospatial coordinates * @param projectedTransformer - Transformer used for warping this map from resource coordinates to projected geospatial coordinates * @param projectedTransformerByTransformationType - A Map of projected transformers by transformationType * @param geoMask - resourceMask in geospatial coordinates * @param geoMaskBbox - Bbox of the geoMask * @param geoMaskRectangle - resourceMaskRectangle in geospatial coordinates * @param geoFullMask - resourceFullMask in geospatial coordinates * @param geoFullMaskBbox - Bbox of the geoFullMask * @param geoFullMaskRectangle - resourceFullMaskRectangle in geospatial coordinates * @param projectedGeoPreviousMask - The projectedGeoMask of the previous transformation type, used during transformation transitions * @param projectedGeoMask - resourceMask in projected geospatial coordinates * @param projectedGeoMaskBbox - Bbox of the projectedGeoMask * @param projectedGeoMaskRectangle - resourceMaskRectanglee in projected geospatial coordinates * @param projectedGeoFullMask - resourceFullMask in projected geospatial coordinates * @param projectedGeoFullMaskBbox - Bbox of the projectedGeoFullMask * @param projectedGeoFullMaskRectangle - resourceFullMaskRectangle in projected geospatial coordinates * @param resourceToProjectedGeoScale - Scale of the warped map, in resource pixels per projected geospatial coordinates * @param previousDistortionMeasure - Previous distortion measure displayed for this map * @param distortionMeasure - Distortion measure displayed for this map * @param tileZoomLevelForViewport - The tile zoom level, for the current viewport * @param overviewTileZoomLevelForViewport - The overview tile zoom level, for the current viewport * @param projectedGeoBufferedViewportRectangleForViewport - The (buffered) viewport in projected geospatial coordinates, for the current viewport * @param projectedGeoBufferedViewportRectangleBboxForViewport - Bbox of the projectedGeoBufferedViewportRectangle * @param resourceBufferedViewportRingForViewport - The (buffered) viewport transformed back to resource coordinates, for the current viewport * @param resourceBufferedViewportRingBboxForViewport - Bbox of the resourceViewportRing * @param resourceBufferedViewportRingBboxAndResourceMaskBboxIntersectionForViewport - The intersection of the bbox of the (buffered) viewport transformed back to resource coordinates and the bbox of the resource mask, for the current viewport * @param fetchableTilesForViewport - The fetchable tiles for displaying this map, for the current viewport * @param overviewFetchableTilesForViewport - The overview fetchable tiles, for the current viewport */ export declare class WarpedMap extends EventTarget { mapId: string; georeferencedMap: GeoreferencedMap; imageInformations?: ImageInformations; parsedImage?: Image; loadingImageInfo: boolean; fetchFn?: FetchFn; protected abortController?: AbortController; visible: boolean; applyMask: boolean; mixed: boolean; gcps: Gcp[]; projectedGcps: Gcp[]; resourcePoints: Point[]; geoPoints: Point[]; projectedGeoPoints: Point[]; projectedGeoPreviousTransformedResourcePoints: Point[]; projectedGeoTransformedResourcePoints: Point[]; resourceMask: Ring; resourceMaskBbox: Bbox; resourceMaskRectangle: Rectangle; resourceFullMask: Ring; resourceFullMaskBbox: Bbox; resourceFullMaskRectangle: Rectangle; previousTransformationType: TransformationType; transformationType: TransformationType; previousInternalProjection: Projection; internalProjection: Projection; projection: Projection; projectedPreviousTransformer: ProjectedGcpTransformer; projectedTransformer: ProjectedGcpTransformer; protected projectedTransformerCache: Map<TransformationType, ProjectedGcpTransformer>; geoMask: Ring; geoMaskBbox: Bbox; geoMaskRectangle: Rectangle; geoFullMask: Ring; geoFullMaskBbox: Bbox; geoFullMaskRectangle: Rectangle; projectedGeoMask: Ring; projectedGeoMaskBbox: Bbox; projectedGeoMaskRectangle: Rectangle; projectedGeoFullMask: Ring; projectedGeoFullMaskBbox: Bbox; projectedGeoFullMaskRectangle: Rectangle; resourceToProjectedGeoScale: number; previousDistortionMeasure?: DistortionMeasure; distortionMeasure?: DistortionMeasure; tileZoomLevelForViewport?: TileZoomLevel; overviewTileZoomLevelForViewport?: TileZoomLevel; projectedGeoBufferedViewportRectangleForViewport?: Rectangle; projectedGeoBufferedViewportRectangleBboxForViewport?: Bbox; resourceBufferedViewportRingForViewport?: Ring; resourceBufferedViewportRingBboxForViewport?: Bbox; resourceBufferedViewportRingBboxAndResourceMaskBboxIntersectionForViewport?: Bbox; fetchableTilesForViewport: FetchableTile[]; overviewFetchableTilesForViewport: FetchableTile[]; /** * Creates an instance of WarpedMap. * * @param mapId - ID of the map * @param georeferencedMap - Georeferenced map used to construct the WarpedMap * @param partialWarpedMapOptions - options */ constructor(mapId: string, georeferencedMap: GeoreferencedMap, partialWarpedMapOptions?: Partial<WarpedMapOptions>); /** * Get resourceMask in viewport coordinates * * @param viewport - the current viewport * @returns */ getViewportMask(viewport: Viewport): Ring; /** * Get Bbox of resourceMask in viewport coordinates * * @param viewport - the current viewport * @returns */ getViewportMaskBbox(viewport: Viewport): Bbox; /** * Get resourceMaskRectangle in viewport coordinates * * @param viewport - the current viewport * @returns */ getViewportMaskRectangle(viewport: Viewport): Rectangle; /** * Get resourceFullMask in viewport coordinates * * @param viewport - the current viewport * @returns */ getViewportFullMask(viewport: Viewport): Ring; /** * Get bbox of rresourceFullMask in viewport coordinates * * @param viewport - the current viewport * @returns */ getViewportFullMaskBbox(viewport: Viewport): Bbox; /** * Get resourceFullMaskRectangle in viewport coordinates * * @param viewport - the current viewport * @returns */ getViewportFullMaskRectangle(viewport: Viewport): Rectangle; /** * Get scale of the warped map, in resource pixels per viewport pixels. * * @param viewport - the current viewport * @returns */ getResourceToViewportScale(viewport: Viewport): number; /** * Get scale of the warped map, in resource pixels per canvas pixels. * * @param viewport - the current viewport * @returns */ getResourceToCanvasScale(viewport: Viewport): number; /** * Get the reference scaling from the forward transformation of the projected Helmert transformer * * @returns */ getReferenceScale(): number; /** * Get a projected transformer of the given transformation type. * * Uses cashed projected transformers by transformation type, * and only computes a new projected transformer if none found. * * Returns a projected transformer in the current projection, * even if the cached transformer was computed in a different projection. * * Default settings apply for the options. * * @params transformationType - the transformation type * @params partialProjectedGcpTransformerOptions - options * @params useCache - whether to use the cached projected transformers previously computed * @returns A projected transformer */ getProjectedTransformer(transformationType: TransformationType, partialProjectedGcpTransformerOptions?: Partial<ProjectedGcpTransformerOptions>): ProjectedGcpTransformer; /** * Update the ground control points loaded from a georeferenced map to new ground control points. * * @param gcps */ setGcps(gcps: Gcp[]): void; /** * Update the resource mask loaded from a georeferenced map to a new mask. * * @param resourceMask */ setResourceMask(resourceMask: Ring): void; /** * Set the transformationType * * @param transformationType */ setTransformationType(transformationType: TransformationType): void; /** * Set the distortionMeasure * * @param distortionMeasure - the disortion measure */ setDistortionMeasure(distortionMeasure?: DistortionMeasure): void; /** * Set the internal projection * * @param projection - the internal projection */ setInternalProjection(projection?: Projection): void; /** * Set the projection * * @param projection - the projection */ setProjection(projection?: Projection): void; /** * Set the tile zoom level for the current viewport * * @param tileZoomLevel - tile zoom level for the current viewport */ setTileZoomLevelForViewport(tileZoomLevel?: TileZoomLevel): void; /** * Set the overview tile zoom level for the current viewport * * @param tileZoomLevel - tile zoom level for the current viewport */ setOverviewTileZoomLevelForViewport(tileZoomLevel?: TileZoomLevel): void; /** * Set projectedGeoBufferedViewportRectangle for the current viewport * * @param projectedGeoBufferedViewportRectangle */ setProjectedGeoBufferedViewportRectangleForViewport(projectedGeoBufferedViewportRectangle?: Rectangle): void; /** * Set resourceBufferedViewportRing for the current viewport * * @param resourceBufferedViewportRing */ setResourceBufferedViewportRingForViewport(resourceBufferedViewportRing?: Ring): void; /** * Set resourceBufferedViewportRingBboxAndResourceMaskBboxIntersection for the current viewport * * @param resourceBufferedViewportRingBboxAndResourceMaskBboxIntersection */ setResourceBufferedViewportRingBboxAndResourceMaskBboxIntersectionForViewport(resourceBufferedViewportRingBboxAndResourceMaskBboxIntersection?: Bbox): void; /** * Set tiles for the current viewport * * @param fetchableTiles */ setFetchableTilesForViewport(fetchableTiles: FetchableTile[]): void; /** * Set overview tiles for the current viewport * * @param overviewFetchableTiles */ setOverviewFetchableTilesForViewport(overviewFetchableTiles: FetchableTile[]): void; /** * Reset the properties for the current values */ resetForViewport(): void; /** * Reset previous transform properties to new ones (when completing a transformer transitions). */ resetPrevious(): void; /** * Mix previous transform properties with new ones (when changing an ongoing transformer transition). * * @param t - animation progress */ mixPreviousAndNew(t: number): void; /** * Check if this instance has image info * * @returns */ hasImageInfo(): this is WarpedMapWithImageInfo; /** * Fetch and parse the image info, and generate the image ID * * @returns */ loadImageInfo(): Promise<void>; private updateResourceMaskProperties; private getResourceFullMask; private updateResourceFullMaskProperties; private updateGeoMaskProperties; private updateProjectedGeoMaskProperties; protected updateProjectedTransformerProperties(): void; private updateProjectedTransformer; private updateGeoMask; private updateFullGeoMask; private updateProjectedGeoMask; private updateProjectedFullGeoMask; private updateResourceToProjectedGeoScale; private updateGcpsProperties; protected clearProjectedTransformerCaches(): void; destroy(): void; } /** * Class for warped maps with image ID and parsed IIIF image. */ export declare class WarpedMapWithImageInfo extends WarpedMap { imageId: string; parsedImage: Image; constructor(mapId: string, georeferencedMap: GeoreferencedMap, options?: Partial<WarpedMapOptions>); }