/** @packageDocumentation * @module OrbitGT */ declare type int32 = number; declare type float64 = number; import { Bounds } from "../../spatial/geom/Bounds"; import { AList } from "../../system/collection/AList"; import { ALong } from "../../system/runtime/ALong"; import { BlockIndex } from "../model/BlockIndex"; import { PointCloudReader } from "../model/PointCloudReader"; import { PointData } from "../model/PointData"; import { TileIndex } from "../model/TileIndex"; import { FrameData } from "./FrameData"; import { Level } from "./Level"; import { ViewTree } from "./ViewTree"; /** * Class DataManager manages the (shared) data model part of the rendering in multiple layers (see the CLOUD-461 issue). * * @version 1.0 December 2017 */ /** @internal */ export declare class DataManager { /** The name of this module */ private static readonly MODULE; /** The maximum size of a single file-content request */ private static readonly MAX_FILE_CONTENT_SIZE; /** The expire time to unload unused point data (seconds) */ private static readonly POINT_DATA_EXIRE_TIME; /** The reader of the pointcloud */ private _pointCloudReader; /*** The CRS of the pointcloud */ private _pointCloudCRS; /** The data format to read */ private _dataFormat; /** The spatial index */ private _fileTileIndex; /** The data pool */ private _dataPool; /** The set of levels we requested (index) */ private _levelsLoading; /** The set of levels we received (index) */ private _levelsLoaded; /** The set of blocks we requested (key) */ private _blocksLoading; /** The set of blocks we received (key) */ private _blocksLoaded; /** The set of tiles we requested (key) */ private _tilesLoading; /** The set of tiles we received (key) */ private _tilesLoaded; /** Is new data being loaded? */ private _loadingData; /** The time when the data loading stopped */ private _loadedDataTime; /** The total size of data that has been loaded */ private _dataLoadSize; /** The last garbage collection time */ private _lastGarbageCollectTime; /** * Create a new data model (to be shared between different views). * @param pointCloudReader the reader of the pointcloud file. * @param pointCloudCRS the CRS of the point cloud. * @param dataFormat the requested data format to load point data (PointDataRaw.TYPE for example). */ constructor(pointCloudReader: PointCloudReader, pointCloudCRS: string, dataFormat: int32); /** * Close the data model. */ close(): void; /** * Create a spatial index of a pointcloud. * @return the spatial index. */ private createSpatialIndex; /** * Get the pointcloud reader. * @return the pointcloud reader. */ getPointCloudReader(): PointCloudReader; /** * Get the pointcloud CRS. * @return the pointcloud CRS. */ getPointCloudCRS(): string; /** * Get the bounds of the data. * @return the bounds of the data. */ getPointCloudBounds(): Bounds; /** * Get the spatial index. * @return the spatial index. */ getViewTree(): ViewTree; /** * Check if a tile has been loaded to the data pool. * @param tileIndex the index of the tile. * @return the point data if loaded, null otherwise. */ isTileLoaded(tileIndex: TileIndex): PointData; /** * Is the model loading data? * @return true when loading data. */ isLoadingData(): boolean; /** * Get the size of the loaded data. * @return the size of the loaded data. */ getDataLoadSize(): ALong; /** * Filter the list of blocks and tiles that should be loaded. * @param levelsToLoad the list of levels to load. * @param blocksToLoad the list of blocks to load. * @param tilesToLoad the list of tiles to load. * @param levelList the filtered list of levels to load. * @param blockList the filtered list of blocks to load. * @param tileList the filtered list of tiles to load. */ filterLoadList(levelsToLoad: AList, blocksToLoad: AList, tilesToLoad: AList, levelList: AList, blockList: AList, tileList: AList): void; /** * Load blocks and tiles. * @param layer the layer requesting the load. * @param levelList the filtered list of levels to load. * @param blockList the filtered list of blocks to load. * @param tileList the filtered list of tiles to load. * @return the data model. */ loadData(frameData: FrameData): Promise; /** * Do a garbage collect (this method can be called often, it throttles itself to once per minute). * @param time the current time. */ doGarbageCollect(time: float64): void; } export {}; //# sourceMappingURL=DataManager.d.ts.map