@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
74 lines (73 loc) • 2.83 kB
TypeScript
import Map from 'ol/Map.js';
import StateManager from '../../../tools/state/statemanager.js';
import { Size } from 'ol/size.js';
/**
* Independent manager to display a mask layer adapted to the print.
* Listen to print events to auto setup.
*/
declare class PrintMaskManager {
private readonly stateManager;
private readonly printMaskLayer;
private readonly map;
private readonly eventsCallbacks;
private readonly olEventsKeys;
private possibleScales;
private scaleManuallySelected;
constructor(map: Map, stateManager: StateManager);
private get state();
destroy(): void;
/**
* Sets the possible scales to fit the mask/view to.
*/
setPossibleScales(scales: number[]): void;
/**
* Sets the resolution of the map view to the optimal resolution for a given scale.
*/
zoomToScale(scale: number): void;
/**
* Register the events for:
* - printing pageSize and mask visibility changes.
* - set scaleManuallySelected to false when the resolution changes.
*/
private registerEvents;
/**
* Sets the print.scale value.
* Calculate the optimal scale for printing based on the map's current frame state and the possible scales.
* @returns the optimal scale.
* @private
*/
private getScaleFn;
/**
* Display the mask or hide it.
* @private
*/
private onPrintMaskVisibleChanged;
/**
* Update the size (width, height), in pixels of the mask.
* @private
*/
private onPrintFormatChanged;
/**
* Render the mask layer again.
* @private
*/
private renderMask;
/**
* Calculates the optimal scale for printing a map based on the map size, resolution, desired print size, and available map scales.
* @param mapSize - The size of the map in meters. Expressed as an array [width, height].
* @param mapResolution - The resolution of the map in meters per pixel.
* @param printMapSize - The desired size of the printed map in inches. Expressed as an array [width, height].
* @param mapScales - The available map scales.
* @returns The optimal scale for printing the map or -1 if any.
*/
static getOptimalScale(mapSize: Size, mapResolution: number, printMapSize: number[], mapScales: number[]): number;
/**
* Calculates the optimal resolution for printing a map based on the provided parameters.
* @param mapSize - The size of the map in meters.
* @param printMapSize - The size of the map to be printed in dots.
* @param scale - The scale at which the map should be printed.
* @returns The optimal resolution for printing the map.
*/
static getOptimalResolution: (mapSize: Size, printMapSize: number[], scale: number) => number;
}
export default PrintMaskManager;