@allmaps/render
Version:
Render functions for WebGL and image buffers
340 lines (338 loc) • 15.2 kB
TypeScript
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>);
}