@openglobus/og 1.0.0-rc33 → 1.0.0-rc34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Registers the CRS in {@link proj4}, taking its definition from epsg.io. Returns whether the
3
+ * projection became available, i.e. whether the data in that CRS is worth reading again.
4
+ */
5
+ export declare function defineProjection(crsCode: number): Promise<boolean>;
@@ -0,0 +1 @@
1
+ export declare const proj4: any;
@@ -33,6 +33,8 @@ declare class EntityCollectionNode {
33
33
  protected _setExtentBounds(): void;
34
34
  __setLonLat__(entity: Entity): LonLat;
35
35
  buildTree(entities: Entity[], rightNow?: boolean): void;
36
+ protected _addEntitiesToChildNodes(entities: Entity[], rightNow?: boolean): void;
37
+ protected _moveCollectionToChildNodes(): void;
36
38
  isInside(entity: Entity): boolean;
37
39
  createChildNodes(): void;
38
40
  collectRenderCollectionsPASS1(visibleNodes: NodesDict, outArr: EntityCollection[]): void;
@@ -103,6 +103,13 @@ declare class GlobusTerrain extends EmptyTerrain {
103
103
  * @param {boolean} [forceLoading=false] - Forces loading even if default filter would skip it.
104
104
  */
105
105
  loadTerrain(segment: Segment, forceLoading?: boolean): void;
106
+ /**
107
+ * Converts loaded segment data to elevations and applies them.
108
+ * @protected
109
+ * @param {Segment} segment - Segment that requested terrain data.
110
+ * @param {any} data - Loaded data.
111
+ */
112
+ protected _onTerrainLoaded(segment: Segment, data: any): void;
106
113
  protected _getSubdomain(): string;
107
114
  buildURL(x: number, y: number, z: number, tileGroup: number): string;
108
115
  /**
@@ -4,6 +4,7 @@ import { GlobusTerrain } from "./GlobusTerrain";
4
4
  import { LonLat } from "../LonLat";
5
5
  import { Segment } from "../segment/Segment";
6
6
  import type { TypedArray } from "../utils/shared";
7
+ import type { DecodeHeightsRowFunc, IRgbHeightsParams } from "./rgbTerrainGrid";
7
8
  export type RgbTerrainEncoding = "rgb" | "terrarium";
8
9
  export type RgbToHeightFunc = (r: number, g: number, b: number, minHeight: number, resolution: number) => number;
9
10
  export declare function rgbToHeightRgb(r: number, g: number, b: number, minHeight: number, resolution: number): number;
@@ -39,16 +40,37 @@ declare class RgbTerrain extends GlobusTerrain {
39
40
  protected _minHeight: number;
40
41
  protected _resolution: number;
41
42
  protected _rgbToHeight: RgbToHeightFunc;
43
+ protected _encoding: number;
42
44
  constructor(name: string | null, options?: IRgbTerrainParams);
43
45
  static checkNoDataValue(noDataValues: number[] | TypedArray, value: number): boolean;
44
46
  rgb2Height(r: number, g: number, b: number): number;
45
47
  isBlur(segment: Segment): boolean;
46
48
  protected _createTemporalCanvas(size: number): CanvasRenderingContext2D;
49
+ /**
50
+ * Returns true when "rgb" or "terrarium" heights are decoded without rgb2Height calls.
51
+ * @protected
52
+ * @returns {boolean} -
53
+ */
54
+ protected _isBuiltInDecoding(): boolean;
55
+ /**
56
+ * Returns true when the loaded image heights are created in the worker.
57
+ * @protected
58
+ * @param {HTMLImageElement | ImageBitmap} data - Loaded image.
59
+ * @returns {boolean} -
60
+ */
61
+ protected _isWorkerDecoding(data: HTMLImageElement | ImageBitmap): boolean;
62
+ protected _getHeightsParams(segment: Segment | null, tileZoom: number, preventChildren: boolean): IRgbHeightsParams;
63
+ protected _createDecodeRow(rgbaData: number[] | TypedArray, p: IRgbHeightsParams): DecodeHeightsRowFunc;
64
+ /**
65
+ * Saves the tile and its subdivision levels heights to cache.
66
+ * @protected
67
+ * @returns {Float32Array} - Tile heights.
68
+ */
69
+ protected _cacheHeightsLevels(heights: Float32Array, p: IRgbHeightsParams, tileGroup: number, tileX: number, tileY: number, tileZoom: number, extent: Extent): Float32Array;
70
+ protected _onTerrainLoaded(segment: Segment, data: HTMLImageElement | ImageBitmap): void;
47
71
  protected _createHeights(data: HTMLImageElement | ImageBitmap, segment: Segment | null, tileGroup: number, tileX: number, tileY: number, tileZoom: number, extent: Extent, preventChildren: boolean): TypedArray | number[];
48
72
  getHeightAsync(lonLat: LonLat, callback: (h: number) => void, zoom?: number): boolean;
49
- extractElevationSimple(rgbaData: number[] | TypedArray, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentOffsetX: number, availableParentOffsetY: number, availableZoomDiff: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray, heightFactor: number | undefined, imageSize: number): void;
73
+ extractHeightsRgbRow(rgbaData: number[] | TypedArray, row: number, heightFactor: number, noDataValues: number[] | TypedArray, availableParentData: TypedArray | number[] | null, availableParentOffsetX: number, availableParentOffsetY: number, availableZoomDiff: number, skipPositiveHeights: boolean, size: number, parentScale: number, outHeights: Float32Array, noDataHeight: number): void;
50
74
  extractElevationTilesRgbNonPowerOfTwo(rgbaData: number[] | TypedArray, outCurrenElevations: number[] | TypedArray, heightFactor?: number): void;
51
- extractElevationTilesRgb(rgbaData: number[] | TypedArray, heightFactor: number, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentTileX: number, availableParentTileY: number, availableParentTileZoom: number, currentTileX: number, currentTileY: number, currentTileZoom: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray, outChildrenElevations: number[][][] | TypedArray[][]): void;
52
- extractElevationTilesRgbNoChildren(rgbaData: number[] | TypedArray, heightFactor: number, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentTileX: number, availableParentTileY: number, availableParentTileZoom: number, currentTileX: number, currentTileY: number, currentTileZoom: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray): void;
53
75
  }
54
76
  export { RgbTerrain };
@@ -0,0 +1,81 @@
1
+ import type { TypedArray } from "../utils/shared";
2
+ export declare const RGB_ENCODING_CUSTOM = -1;
3
+ export declare const RGB_ENCODING_RGB = 0;
4
+ export declare const RGB_ENCODING_TERRARIUM = 1;
5
+ /** Writes a row of pixel heights, NaN for no data pixels. */
6
+ export type DecodeHeightsRowFunc = (row: number, outHeights: Float32Array) => void;
7
+ export interface IRgbDecodeParams {
8
+ encoding: number;
9
+ minHeight: number;
10
+ resolution: number;
11
+ heightFactor: number;
12
+ noDataValues: number[] | TypedArray;
13
+ parentData: number[] | TypedArray | null;
14
+ parentOffsetX: number;
15
+ parentOffsetY: number;
16
+ parentZoomDiff: number;
17
+ skipPositiveHeights: boolean;
18
+ }
19
+ export interface IRgbHeightsParams {
20
+ decode: IRgbDecodeParams;
21
+ size: number;
22
+ gridSize: number;
23
+ levels: number;
24
+ noDataHeight: number;
25
+ }
26
+ /**
27
+ * Packs heights parameters to the buffer for the worker message.
28
+ * @param {number} id - Worker task id.
29
+ * @param {IRgbHeightsParams} p - Heights parameters, parent data is sent separately.
30
+ * @returns {Float64Array} -
31
+ */
32
+ export declare function packRgbHeightsParams(id: number, p: IRgbHeightsParams): Float64Array;
33
+ /**
34
+ * Unpacks heights parameters from the worker message buffer.
35
+ * @param {Float64Array} params - Packed parameters.
36
+ * @param {Float32Array | null} parentData - Parent segment elevations.
37
+ * @returns {Array} - Task id and parameters (exactly 2 entries).
38
+ */
39
+ export declare function unpackRgbHeightsParams(params: Float64Array, parentData: Float32Array | null): [number, IRgbHeightsParams];
40
+ /**
41
+ * Returns vertex grid cells for the image size, 2^n and (2^n + 1) sizes only.
42
+ * @param {number} size - Image size.
43
+ * @returns {number} -
44
+ */
45
+ export declare function getGridCells(size: number): number;
46
+ export declare function getParentHeight(oneByDz2: number, offsetX: number, offsetY: number, heights: TypedArray | number[], i: number, j: number, skipPositiveHeights?: boolean): number;
47
+ /**
48
+ * Decodes "rgb" or "terrarium" encoded pixel row heights.
49
+ * @param {number[] | TypedArray} rgbaData - Image RGBA data.
50
+ * @param {number} row - Pixel row.
51
+ * @param {number} size - Image size.
52
+ * @param {number} parentScale - Parent grid cells by image grid cells.
53
+ * @param {IRgbDecodeParams} p - Decode parameters.
54
+ * @param {Float32Array} outHeights - Row heights.
55
+ * @param {number} noDataHeight - Height for no data pixels.
56
+ */
57
+ export declare function decodeRgbHeightsRow(rgbaData: number[] | TypedArray, row: number, size: number, parentScale: number, p: IRgbDecodeParams, outHeights: Float32Array, noDataHeight: number): void;
58
+ /**
59
+ * Converts size x size pixel heights to (size + 1) x (size + 1) vertex grid in pixel corners.
60
+ * @param {number} size - Image size.
61
+ * @param {DecodeHeightsRowFunc} decodeRow - Decodes pixel row heights, NaN for no data.
62
+ * @param {number} noDataHeight - Height for vertices without data around.
63
+ * @returns {Float32Array} -
64
+ */
65
+ export declare function createVertexGrid(size: number, decodeRow: DecodeHeightsRowFunc, noDataHeight: number): Float32Array;
66
+ /**
67
+ * Takes (gridSize + 1) x (gridSize + 1) vertices of the cells x cells square starting at
68
+ * the row0, col0 vertex of the (size + 1) x (size + 1) grid. Cells must be gridSize multiplied by a power of two.
69
+ */
70
+ export declare function sampleSubGrid(grid: Float32Array, size: number, row0: number, col0: number, cells: number, gridSize: number, out?: Float32Array, outOffset?: number): Float32Array;
71
+ /**
72
+ * Creates the tile heights grid and its subdivision levels, each tile is (gridSize + 1) x (gridSize + 1).
73
+ * Output order is the tile itself, then 2x2 tiles of the first level, 4x4 of the second and so on, row by row.
74
+ * @param {number} size - Image size, 2^n or (2^n + 1).
75
+ * @param {number} gridSize - Tile grid size.
76
+ * @param {number} levels - Subdivision levels.
77
+ * @param {DecodeHeightsRowFunc} decodeRow - Decodes pixel row heights, NaN for no data.
78
+ * @param {number} noDataHeight - Height for vertices without data.
79
+ * @returns {Float32Array} -
80
+ */
81
+ export declare function createHeightsLevels(size: number, gridSize: number, levels: number, decodeRow: DecodeHeightsRowFunc, noDataHeight: number): Float32Array;
@@ -0,0 +1,21 @@
1
+ import { BaseWorker } from "./BaseWorker";
2
+ import { Segment } from "../segment/Segment";
3
+ import type { IRgbHeightsParams } from "../terrain/rgbTerrainGrid";
4
+ export interface IRgbTerrainWorkerTask {
5
+ segment: Segment;
6
+ bitmap: ImageBitmap;
7
+ params: IRgbHeightsParams;
8
+ callback: (heights: Float32Array | null) => void;
9
+ }
10
+ type MessageEventExt = MessageEvent & {
11
+ data: {
12
+ id: number;
13
+ heights: Float32Array | null;
14
+ };
15
+ };
16
+ declare class RgbTerrainWorker extends BaseWorker<IRgbTerrainWorkerTask> {
17
+ constructor(numWorkers?: number);
18
+ protected _onMessage(e: MessageEventExt): void;
19
+ make(task: IRgbTerrainWorkerTask): void;
20
+ }
21
+ export { RgbTerrainWorker };
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openglobus/og",
3
- "version": "1.0.0-rc33",
3
+ "version": "1.0.0-rc34",
4
4
  "description": "[openglobus](https://www.openglobus.org/) is a javascript/typescript library designed to display interactive 3d maps and planets with map tiles, imagery and vector data, markers, and 3D objects. It uses the WebGL technology, open source, and completely free.",
5
5
  "main": "lib/og.es.js",
6
6
  "types": "lib/index.d.ts",
@@ -55,6 +55,7 @@
55
55
  "@rollup/plugin-terser": "^1.0.0",
56
56
  "@types/draco3d": "^1.4.10",
57
57
  "@types/node": "^22.15.3",
58
+ "@types/proj4": "^2.5.6",
58
59
  "@typescript-eslint/eslint-plugin": "^8.65.0",
59
60
  "@typescript-eslint/parser": "^8.65.0",
60
61
  "clean-jsdoc-theme": "^5.1.0",
@@ -80,8 +81,9 @@
80
81
  "og"
81
82
  ],
82
83
  "dependencies": {
84
+ "@photostructure/tz-lookup": "^11.6.1",
83
85
  "geotiff": "^3.0.5",
84
- "tz-lookup": "^6.1.25",
85
- "@photostructure/tz-lookup": "^11.6.1"
86
+ "proj4": "^2.22.0",
87
+ "tz-lookup": "^6.1.25"
86
88
  }
87
89
  }