maplibre-gl-layers 0.14.0 → 0.16.0

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.
Files changed (42) hide show
  1. package/dist/SpriteLayer.d.ts +5 -22
  2. package/dist/config.d.ts +2 -2
  3. package/dist/const.d.ts +7 -3
  4. package/dist/default.d.ts +2 -2
  5. package/dist/{atlas.d.ts → gl/atlas.d.ts} +3 -3
  6. package/dist/gl/hitTest.d.ts +54 -0
  7. package/dist/gl/shader.d.ts +115 -0
  8. package/dist/gl/text.d.ts +17 -0
  9. package/dist/{calculationHost.d.ts → host/calculationHost.d.ts} +27 -5
  10. package/dist/{mapLibreProjectionHost.d.ts → host/mapLibreProjectionHost.d.ts} +3 -3
  11. package/dist/{projectionHost.d.ts → host/projectionHost.d.ts} +10 -8
  12. package/dist/{runtime.d.ts → host/runtime.d.ts} +4 -3
  13. package/dist/{wasmCalculationHost.d.ts → host/wasmCalculationHost.d.ts} +18 -14
  14. package/dist/{wasmHost.d.ts → host/wasmHost.d.ts} +7 -5
  15. package/dist/{wasmProjectionHost.d.ts → host/wasmProjectionHost.d.ts} +3 -3
  16. package/dist/index.cjs +5185 -2836
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.ts +4 -4
  19. package/dist/index.mjs +5185 -2836
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/internalTypes.d.ts +127 -23
  22. package/dist/{degreeInterpolation.d.ts → interpolation/degreeInterpolation.d.ts} +19 -4
  23. package/dist/interpolation/distanceInterpolation.d.ts +46 -0
  24. package/dist/interpolation/easing.d.ts +24 -0
  25. package/dist/{interpolation.d.ts → interpolation/interpolation.d.ts} +5 -27
  26. package/dist/{interpolationChannels.d.ts → interpolation/interpolationChannels.d.ts} +16 -7
  27. package/dist/{rotationInterpolation.d.ts → interpolation/rotationInterpolation.d.ts} +5 -10
  28. package/dist/types.d.ts +152 -29
  29. package/dist/utils/color.d.ts +25 -0
  30. package/dist/{image.d.ts → utils/image.d.ts} +3 -3
  31. package/dist/{looseQuadTree.d.ts → utils/looseQuadTree.d.ts} +2 -2
  32. package/dist/{math.d.ts → utils/math.d.ts} +28 -16
  33. package/dist/{utils.d.ts → utils/utils.d.ts} +3 -3
  34. package/dist/wasm/config.json.d.ts +2 -2
  35. package/dist/wasm/offloads-nosimd.wasm +0 -0
  36. package/dist/wasm/offloads-simd-mt.js +1 -1
  37. package/dist/wasm/offloads-simd-mt.wasm +0 -0
  38. package/dist/wasm/offloads-simd.wasm +0 -0
  39. package/package.json +6 -8
  40. package/dist/distanceInterpolation.d.ts +0 -33
  41. package/dist/easing.d.ts +0 -19
  42. package/dist/shader.d.ts +0 -101
@@ -1,14 +1,14 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
- import { SpriteLayerInterface, SpriteLayerOptions, SpriteAnchor, SpriteLocation, SpriteImageDefinitionInit, SpriteImageOffset, SpriteInterpolationOptions } from './types';
11
+ import { SpriteLayerInterface, SpriteLayerOptions, SpriteLocation, SpriteImageDefinitionInit } from './types';
12
12
  import { InternalSpriteImageState, InternalSpriteCurrentState, SpriteOriginReference } from './internalTypes';
13
13
  /**
14
14
  * Applies auto-rotation to all images within a sprite when movement exceeds the configured threshold.
@@ -18,33 +18,16 @@ import { InternalSpriteImageState, InternalSpriteCurrentState, SpriteOriginRefer
18
18
  * @returns {boolean} `true` when auto-rotation was applied, `false` otherwise.
19
19
  */
20
20
  export declare const applyAutoRotation: <T>(sprite: InternalSpriteCurrentState<T>, nextLocation: SpriteLocation) => boolean;
21
- /**
22
- * Clones a sprite anchor, defaulting to the origin when none supplied.
23
- * @param {SpriteAnchor} [anchor] - Anchor to clone.
24
- * @returns {SpriteAnchor} Safe copy for mutation within the layer state.
25
- */
26
- export declare const cloneAnchor: (anchor?: SpriteAnchor) => SpriteAnchor;
27
- /**
28
- * Clones an image offset, applying defaults when missing.
29
- * @param {SpriteImageOffset} [offset] - Offset definition to copy.
30
- * @returns {SpriteImageOffset} Cloned offset structure.
31
- */
32
- export declare const cloneOffset: (offset?: SpriteImageOffset) => SpriteImageOffset;
33
- /**
34
- * Deep-clones interpolation options to prevent shared references between sprites.
35
- * @param {SpriteInterpolationOptions} options - Options provided by the user.
36
- * @returns {SpriteInterpolationOptions} Cloned options object.
37
- */
38
- export declare const cloneInterpolationOptions: (options: SpriteInterpolationOptions) => SpriteInterpolationOptions;
39
21
  /**
40
22
  * Creates internal sprite image state from initialization data and layer bookkeeping fields.
41
23
  * @param {SpriteImageDefinitionInit} imageInit - Caller-provided image definition.
42
24
  * @param {number} subLayer - Sub-layer index the image belongs to.
43
25
  * @param {number} order - Ordering slot within the sub-layer.
44
26
  * @param {SpriteOriginReference} originReference - Encode/Decode origin reference.
27
+ * @param {boolean} invalidated - Initially invalidate state.
45
28
  * @returns {InternalSpriteImageState} Normalized internal state ready for rendering.
46
29
  */
47
- export declare const createImageStateFromInit: (imageInit: SpriteImageDefinitionInit, subLayer: number, order: number, originReference: SpriteOriginReference) => InternalSpriteImageState;
30
+ export declare const createImageStateFromInit: (imageInit: SpriteImageDefinitionInit, subLayer: number, order: number, originReference: SpriteOriginReference, invalidated: boolean) => InternalSpriteImageState;
48
31
  /**
49
32
  * Factory that creates the MapLibre layer interface for the sprite layer.
50
33
  * Implements the CustomLayerInterface lifecycle (init -> render -> dispose), packing thousands
package/dist/config.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
11
  /** Debug flag */
package/dist/const.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
- import { Rect } from './looseQuadTree';
11
+ import { Rect } from './utils/looseQuadTree';
12
12
  import { SpriteAnchor, SpriteImageOffset, SpriteTextGlyphHorizontalAlign } from './types';
13
13
  /** Default sprite anchor centered at the image origin. */
14
14
  export declare const DEFAULT_ANCHOR: Readonly<SpriteAnchor>;
@@ -21,6 +21,10 @@ export declare const DEFAULT_TEXT_GLYPH_COLOR = "#000000";
21
21
  export declare const DEFAULT_TEXT_GLYPH_ALIGN: SpriteTextGlyphHorizontalAlign;
22
22
  export declare const DEFAULT_TEXT_GLYPH_FONT_SIZE = 32;
23
23
  export declare const DEFAULT_TEXT_GLYPH_RENDER_PIXEL_RATIO = 1;
24
+ /** Default threshold in meters for auto-rotation to treat movement as significant. */
25
+ export declare const DEFAULT_AUTO_ROTATION_MIN_DISTANCE_METERS = 20;
26
+ /** Default border width in meters for sprite image outlines. */
27
+ export declare const DEFAULT_BORDER_WIDTH_METERS = 1;
24
28
  /**
25
29
  * WGS84-compatible Earth radius in meters.
26
30
  * Used to convert one radian of longitude into meters when scaling sprites.
package/dist/default.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
11
  import { SpriteScalingOptions, SpriteTextureFilteringOptions } from './types';
@@ -1,15 +1,15 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
- import { Canvas2DSource } from './internalTypes';
12
11
  import { Deferred } from 'async-primitives';
12
+ import { Canvas2DSource } from '../internalTypes';
13
13
  export interface AtlasManagerOptions {
14
14
  readonly pageWidth?: number;
15
15
  readonly pageHeight?: number;
@@ -0,0 +1,54 @@
1
+ /*!
2
+ * name: maplibre-gl-layers
3
+ * version: 0.16.0
4
+ * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
+ * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
+ * license: MIT
7
+ * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
+ */
10
+
11
+ import { Map as MapLibreMap } from 'maplibre-gl';
12
+ import { InternalSpriteCurrentState, InternalSpriteImageState, ProjectionHost, RegisteredImage } from '../internalTypes';
13
+ import { SpriteScreenPoint } from '../types';
14
+ import { ResolvedSpriteScalingOptions } from '../utils/math';
15
+ export interface HitTestEntry<T> {
16
+ readonly sprite: InternalSpriteCurrentState<T>;
17
+ readonly image: InternalSpriteImageState;
18
+ readonly corners: readonly [
19
+ SpriteScreenPoint,
20
+ SpriteScreenPoint,
21
+ SpriteScreenPoint,
22
+ SpriteScreenPoint
23
+ ];
24
+ readonly minX: number;
25
+ readonly maxX: number;
26
+ readonly minY: number;
27
+ readonly maxY: number;
28
+ }
29
+ export interface HitTestResult<T> {
30
+ readonly hitEntry: HitTestEntry<T> | undefined;
31
+ readonly screenPoint: SpriteScreenPoint;
32
+ }
33
+ export interface HitTestControllerParams {
34
+ readonly images: Map<string, RegisteredImage>;
35
+ readonly getResolvedScaling: () => ResolvedSpriteScalingOptions;
36
+ }
37
+ export interface HitTestController<T> {
38
+ readonly beginFrame: () => void;
39
+ readonly clearAll: () => void;
40
+ readonly getHitTestEntries: () => readonly HitTestEntry<T>[];
41
+ readonly registerHitTestEntry: (sprite: Readonly<InternalSpriteCurrentState<T>>, image: Readonly<InternalSpriteImageState>, corners: readonly [
42
+ SpriteScreenPoint,
43
+ SpriteScreenPoint,
44
+ SpriteScreenPoint,
45
+ SpriteScreenPoint
46
+ ], drawIndex: number) => void;
47
+ readonly removeImageBounds: (image: InternalSpriteImageState) => void;
48
+ readonly refreshSpriteHitTestBounds: (projectionHost: ProjectionHost, sprite: Readonly<InternalSpriteCurrentState<T>>) => void;
49
+ readonly findTopmostHitEntry: (point: SpriteScreenPoint, map: MapLibreMap | undefined) => HitTestEntry<T> | undefined;
50
+ readonly resolveHitTestResult: (nativeEvent: MouseEvent | PointerEvent | TouchEvent, canvasElement: HTMLCanvasElement | undefined, map: MapLibreMap | undefined) => HitTestResult<T> | undefined;
51
+ readonly setHitTestEnabled: (enabled: boolean) => boolean;
52
+ readonly isHitTestEnabled: () => boolean;
53
+ }
54
+ export declare const createHitTestController: <T>({ images, getResolvedScaling, }: HitTestControllerParams) => HitTestController<T>;
@@ -0,0 +1,115 @@
1
+ /*!
2
+ * name: maplibre-gl-layers
3
+ * version: 0.16.0
4
+ * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
+ * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
+ * license: MIT
7
+ * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
+ */
10
+
11
+ import { SpriteAnchor, SpriteScreenPoint, SpriteTextureFilteringOptions } from '../types';
12
+ import { ImageHandleBufferController, PreparedDrawSpriteImageParams, RegisteredImage, Releasable, ResolvedTextureFilteringOptions } from '../internalTypes';
13
+ import { AtlasManager, AtlasOperationQueue, AtlasPageState } from './atlas';
14
+ import { RgbaColor } from '../utils/color';
15
+ /** Number of components per vertex (clipPosition.xyzw + uv.xy). */
16
+ export declare const VERTEX_COMPONENT_COUNT = 6;
17
+ /** Component count for clip-space position attributes. */
18
+ export declare const POSITION_COMPONENT_COUNT = 4;
19
+ /** Component count for UV attributes. */
20
+ export declare const UV_COMPONENT_COUNT = 2;
21
+ /** Byte size of a Float32. */
22
+ export declare const FLOAT_SIZE: number;
23
+ /** Stride per vertex in bytes. */
24
+ export declare const VERTEX_STRIDE: number;
25
+ /** Byte offset for the UV attribute. */
26
+ export declare const UV_OFFSET: number;
27
+ /** Vertex count required to draw one sprite as two triangles. */
28
+ export declare const QUAD_VERTEX_COUNT = 6;
29
+ /** Initial vertex data for a unit quad. */
30
+ export declare const INITIAL_QUAD_VERTICES: Float32Array<ArrayBuffer>;
31
+ /** Scratch buffer rewritten for each draw call. */
32
+ export declare const QUAD_VERTEX_SCRATCH: Float32Array<ArrayBuffer>;
33
+ /** Corner traversal order used when outlining a quad without crossing diagonals. */
34
+ export declare const BORDER_OUTLINE_CORNER_ORDER: readonly [0, 1, 3, 2];
35
+ /** Base corner definitions used when expanding billboards in shaders. */
36
+ export declare const BILLBOARD_BASE_CORNERS: ReadonlyArray<readonly [number, number]>;
37
+ /** Base corner definitions used when expanding surface quads in shaders. */
38
+ export declare const SURFACE_BASE_CORNERS: ReadonlyArray<readonly [number, number]>;
39
+ export declare const computeBillboardCornersShaderModel: ({ center, halfWidth, halfHeight, anchor, rotationDeg, }: {
40
+ center: Readonly<SpriteScreenPoint>;
41
+ halfWidth: number;
42
+ halfHeight: number;
43
+ anchor?: Readonly<SpriteAnchor>;
44
+ rotationDeg: number;
45
+ }) => Array<{
46
+ x: number;
47
+ y: number;
48
+ u: number;
49
+ v: number;
50
+ }>;
51
+ /**
52
+ * Compiles a shader from source, throwing if compilation fails.
53
+ * @param {WebGLRenderingContext} glContext - Active WebGL context.
54
+ * @param {number} type - Shader type (`VERTEX_SHADER` or `FRAGMENT_SHADER`).
55
+ * @param {string} source - GLSL source code.
56
+ * @returns {WebGLShader} Compiled shader object.
57
+ * @throws When shader creation or compilation fails.
58
+ */
59
+ export declare const compileShader: (glContext: WebGLRenderingContext, type: number, source: string) => WebGLShader;
60
+ /**
61
+ * Links a vertex and fragment shader into a WebGL program.
62
+ * @param {WebGLRenderingContext} glContext - Active WebGL context.
63
+ * @param {string} vertexSource - Vertex shader GLSL source.
64
+ * @param {string} fragmentSource - Fragment shader GLSL source.
65
+ * @returns {WebGLProgram} Linked shader program ready for use.
66
+ * @throws When linking fails or a program cannot be created.
67
+ */
68
+ export declare const createShaderProgram: (glContext: WebGLRenderingContext, vertexSource: string, fragmentSource: string) => WebGLProgram;
69
+ export interface SpriteDrawProgram<TTag> extends Releasable {
70
+ beginFrame(): void;
71
+ uploadVertexBatch(items: PreparedDrawSpriteImageParams<TTag>[]): void;
72
+ draw(prepared: PreparedDrawSpriteImageParams<TTag>): boolean;
73
+ }
74
+ export declare const createSpriteDrawProgram: <TTag>(glContext: WebGLRenderingContext) => SpriteDrawProgram<TTag>;
75
+ export interface BorderOutlineRenderer extends Releasable {
76
+ begin(screenToClipScaleX: number, screenToClipScaleY: number, screenToClipOffsetX: number, screenToClipOffsetY: number): void;
77
+ drawOutline(corners: readonly [
78
+ SpriteScreenPoint,
79
+ SpriteScreenPoint,
80
+ SpriteScreenPoint,
81
+ SpriteScreenPoint
82
+ ], color: RgbaColor, lineWidth: number): void;
83
+ end(): void;
84
+ }
85
+ export declare const createBorderOutlineRenderer: (glContext: WebGLRenderingContext) => BorderOutlineRenderer;
86
+ export interface LeaderLineRenderer extends Releasable {
87
+ begin(screenToClipScaleX: number, screenToClipScaleY: number, screenToClipOffsetX: number, screenToClipOffsetY: number): void;
88
+ drawLine(from: Readonly<SpriteScreenPoint>, to: Readonly<SpriteScreenPoint>, color: RgbaColor, lineWidth: number): void;
89
+ end(): void;
90
+ }
91
+ export declare const createLeaderLineRenderer: (glContext: WebGLRenderingContext) => LeaderLineRenderer;
92
+ export declare const resolveTextureFilteringOptions: (options?: SpriteTextureFilteringOptions) => ResolvedTextureFilteringOptions;
93
+ export declare const resolveAnisotropyExtension: (glContext: WebGLRenderingContext) => EXT_texture_filter_anisotropic | undefined;
94
+ export interface EnsureTexturesParams {
95
+ readonly glContext: WebGLRenderingContext | undefined;
96
+ readonly atlasQueue: AtlasOperationQueue;
97
+ readonly atlasManager: AtlasManager;
98
+ readonly atlasPageTextures: Map<number, WebGLTexture>;
99
+ readonly atlasNeedsUpload: boolean;
100
+ readonly resolvedTextureFiltering: ResolvedTextureFilteringOptions;
101
+ readonly anisotropyExtension: EXT_texture_filter_anisotropic | undefined;
102
+ readonly maxSupportedAnisotropy: number;
103
+ readonly images: ReadonlyMap<string, RegisteredImage>;
104
+ readonly imageHandleBuffersController: ImageHandleBufferController;
105
+ readonly atlasPageIndexNone: number;
106
+ readonly shouldUploadAtlasPages: (pageStates?: readonly AtlasPageState[]) => boolean;
107
+ }
108
+ /**
109
+ * Creates or refreshes WebGL textures for registered images.
110
+ * Processes only queued entries to avoid unnecessary work.
111
+ * Intended to run just before drawing; returns immediately if the GL context is unavailable.
112
+ * Ensures registerImage calls outside the render loop sync on the next frame.
113
+ * @returns {boolean} Updated atlas upload requirement flag.
114
+ */
115
+ export declare const ensureTextures: ({ glContext, atlasQueue, atlasManager, atlasPageTextures, atlasNeedsUpload, resolvedTextureFiltering, anisotropyExtension, maxSupportedAnisotropy, images, imageHandleBuffersController, atlasPageIndexNone, shouldUploadAtlasPages, }: EnsureTexturesParams) => boolean;
@@ -0,0 +1,17 @@
1
+ /*!
2
+ * name: maplibre-gl-layers
3
+ * version: 0.16.0
4
+ * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
+ * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
+ * license: MIT
7
+ * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
+ */
10
+
11
+ import { SpriteTextGlyphDimensions, SpriteTextGlyphOptions } from '../types';
12
+ export interface TextGlyphRenderResult {
13
+ readonly bitmap: ImageBitmap;
14
+ readonly width: number;
15
+ readonly height: number;
16
+ }
17
+ export declare const renderTextGlyphBitmap: (text: string, dimensions: SpriteTextGlyphDimensions, options?: SpriteTextGlyphOptions) => Promise<TextGlyphRenderResult>;
@@ -1,16 +1,16 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
11
  import { Map as MapLibreMap } from 'maplibre-gl';
12
- import { InternalSpriteCurrentState, InternalSpriteImageState, RegisteredImage, ProjectionHost, PreparedDrawSpriteImageParams, RenderCalculationHost, PrepareDrawSpriteImageParamsBefore, PrepareDrawSpriteImageParamsAfter } from './internalTypes';
13
- import { SpritePoint } from './types';
12
+ import { DistanceInterpolationEvaluationParams, DistanceInterpolationEvaluationResult, DegreeInterpolationEvaluationParams, DegreeInterpolationEvaluationResult, InternalSpriteCurrentState, InternalSpriteImageState, RegisteredImage, ProjectionHost, PreparedDrawSpriteImageParams, RenderCalculationHost, PrepareDrawSpriteImageParamsBefore, PrepareDrawSpriteImageParamsAfter, RenderInterpolationParams, RenderInterpolationResult, SpriteInterpolationEvaluationParams, SpriteInterpolationEvaluationResult } from '../internalTypes';
13
+ import { SpritePoint } from '../types';
14
14
  import { ProjectionHostParams } from './projectionHost';
15
15
  /**
16
16
  * Cache entry storing anchor-adjusted and raw centers for a sprite image.
@@ -30,7 +30,8 @@ type ImageCenterCache = Map<string, Map<string, ImageCenterCacheEntry>>;
30
30
  * return `null` when the origin is not available (e.g., the reference was
31
31
  * culled or stored in another bucket).
32
32
  */
33
- type OriginImageResolver<T> = (sprite: Readonly<InternalSpriteCurrentState<T>>, image: Readonly<InternalSpriteImageState>) => InternalSpriteImageState | null;
33
+ type OriginImageResolver<T> = (sprite: Readonly<InternalSpriteCurrentState<T>>, image: Readonly<InternalSpriteImageState>) => InternalSpriteImageState | undefined;
34
+ export declare const DEFAULT_RENDER_INTERPOLATION_RESULT: RenderInterpolationResult;
34
35
  interface DepthSortedItem<T> {
35
36
  readonly sprite: InternalSpriteCurrentState<T>;
36
37
  readonly image: InternalSpriteImageState;
@@ -43,6 +44,22 @@ export declare const collectDepthSortedItemsInternal: <T>(projectionHost: Projec
43
44
  * Prepares quad data for a single sprite image before issuing the draw call.
44
45
  */
45
46
  export declare const prepareDrawSpriteImageInternal: <TTag>(projectionHost: ProjectionHost, item: DepthSortedItem<TTag>, zoom: number, zoomScaleFactor: number, originCenterCache: ImageCenterCache, { imageResources, baseMetersPerPixel, spriteMinPixel, spriteMaxPixel, drawingBufferWidth, drawingBufferHeight, pixelRatio, clipContext, identityScaleX, identityScaleY, identityOffsetX, identityOffsetY, screenToClipScaleX, screenToClipScaleY, screenToClipOffsetX, screenToClipOffsetY, }: PrepareDrawSpriteImageParamsAfter) => PreparedDrawSpriteImageParams<TTag> | null;
47
+ export declare const applyVisibilityDistanceLod: <TTag>(preparedItems: readonly PreparedDrawSpriteImageParams<TTag>[]) => void;
48
+ export declare const syncPreparedOpacities: <TTag>(preparedItems: readonly PreparedDrawSpriteImageParams<TTag>[]) => void;
49
+ export declare const filterVisiblePreparedItems: <TTag>(preparedItems: readonly PreparedDrawSpriteImageParams<TTag>[]) => PreparedDrawSpriteImageParams<TTag>[];
50
+ export interface ProcessInterpolationPresetRequests {
51
+ readonly distance: readonly DistanceInterpolationEvaluationParams[];
52
+ readonly degree: readonly DegreeInterpolationEvaluationParams[];
53
+ readonly sprite: readonly SpriteInterpolationEvaluationParams[];
54
+ }
55
+ export interface ProcessInterpolationsEvaluationHandlers {
56
+ readonly prepare?: (requests: ProcessInterpolationPresetRequests) => void;
57
+ readonly evaluateDistance: (requests: readonly DistanceInterpolationEvaluationParams[]) => readonly DistanceInterpolationEvaluationResult[];
58
+ readonly evaluateDegree: (requests: readonly DegreeInterpolationEvaluationParams[]) => readonly DegreeInterpolationEvaluationResult[];
59
+ readonly evaluateSprite: (requests: readonly SpriteInterpolationEvaluationParams[]) => readonly SpriteInterpolationEvaluationResult[];
60
+ }
61
+ export declare const processInterpolationsInternal: <TTag>(params: RenderInterpolationParams<TTag>, handlers?: ProcessInterpolationsEvaluationHandlers) => RenderInterpolationResult;
62
+ export declare const processOpacityInterpolationsAfterPreparation: <TTag>(params: RenderInterpolationParams<TTag>, preparedItems: readonly PreparedDrawSpriteImageParams<TTag>[], handlers?: ProcessInterpolationsEvaluationHandlers) => RenderInterpolationResult;
46
63
  /**
47
64
  * Create calculation host that binding MapLibre.
48
65
  * @param TTag Tag type.
@@ -60,4 +77,9 @@ export declare const createCalculationHost: <TTag>(params: ProjectionHostParams)
60
77
  export declare const __wasmProjectionCalculationTestInternals: {
61
78
  __createWasmProjectionCalculationTestHost: <TTag>(params: ProjectionHostParams) => RenderCalculationHost<TTag>;
62
79
  };
80
+ export declare const __calculationHostTestInternals: {
81
+ applyVisibilityDistanceLod: <TTag>(preparedItems: readonly PreparedDrawSpriteImageParams<TTag>[]) => void;
82
+ syncPreparedOpacities: <TTag>(preparedItems: readonly PreparedDrawSpriteImageParams<TTag>[]) => void;
83
+ processOpacityInterpolationsAfterPreparation: <TTag>(params: RenderInterpolationParams<TTag>, preparedItems: readonly PreparedDrawSpriteImageParams<TTag>[], handlers?: ProcessInterpolationsEvaluationHandlers) => RenderInterpolationResult;
84
+ };
63
85
  export {};
@@ -1,15 +1,15 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
11
  import { Map as MapLibreMap } from 'maplibre-gl';
12
- import { ProjectionHost } from './internalTypes';
12
+ import { ProjectionHost } from '../internalTypes';
13
13
  /**
14
14
  * Create a projection host that delegates to MapLibre.
15
15
  * @param map MapLibre map instance
@@ -1,17 +1,17 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
11
  import { mat4 as Mat4 } from 'gl-matrix';
12
12
  import { Map as MapLibreMap } from 'maplibre-gl';
13
- import { SpriteLocation } from './types';
14
- import { ClipContext, ProjectionHost } from './internalTypes';
13
+ import { SpriteLocation } from '../types';
14
+ import { ClipContext, ProjectionHost } from '../internalTypes';
15
15
  /**
16
16
  * Required projection parameters. These correspond to the MapLibre transform state.
17
17
  */
@@ -20,6 +20,7 @@ export interface ProjectionHostParams {
20
20
  readonly width: number;
21
21
  readonly height: number;
22
22
  readonly center: Readonly<SpriteLocation>;
23
+ readonly cameraLocation: SpriteLocation | undefined;
23
24
  readonly pitchDeg?: number;
24
25
  readonly bearingDeg?: number;
25
26
  readonly rollDeg?: number;
@@ -36,13 +37,14 @@ export interface ProjectionHostParams {
36
37
  }
37
38
  export interface PreparedProjectionState {
38
39
  readonly zoom: number;
39
- readonly mercatorMatrix: Mat4 | null;
40
- readonly pixelMatrix: Mat4 | null;
41
- readonly pixelMatrixInverse: Mat4 | null;
40
+ readonly mercatorMatrix: Mat4 | undefined;
41
+ readonly pixelMatrix: Mat4 | undefined;
42
+ readonly pixelMatrixInverse: Mat4 | undefined;
42
43
  readonly worldSize: number;
43
44
  readonly pixelPerMeter: number;
44
45
  readonly cameraToCenterDistance: number;
45
- readonly clipContext: ClipContext | null;
46
+ readonly clipContext: ClipContext | undefined;
47
+ readonly cameraLocation: SpriteLocation | undefined;
46
48
  }
47
49
  export declare const prepareProjectionState: (params: ProjectionHostParams) => PreparedProjectionState;
48
50
  /**
@@ -1,15 +1,16 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
- import { SpriteLayerCalculationVariant, SpriteLayerHostOptions } from './types';
11
+ import { SpriteLayerCalculationVariant, SpriteLayerHostOptions } from '../types';
12
12
  export declare const isSpriteLayerHostEnabled: () => boolean;
13
+ export declare const reportWasmRuntimeFailure: (reason?: unknown) => void;
13
14
  /**
14
15
  * Initialize maplibre-gl-layers runtime host.
15
16
  * @param variantOrOptions Options.
@@ -1,26 +1,24 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
- import { ClipContext, ImageHandleBufferController, IdHandler, InternalSpriteCurrentState, InternalSpriteImageState, PreparedDrawSpriteImageParams, PrepareDrawSpriteImageParams, Releaseable, RegisteredImage, RenderCalculationHost, SpriteOriginReference } from './internalTypes';
12
- import { SurfaceCorner } from './math';
13
- import { SpriteLocation, SpriteScreenPoint } from './types';
11
+ import { DistanceInterpolationEvaluationResult, DegreeInterpolationEvaluationResult, ImageHandleBufferController, IdHandler, InternalSpriteCurrentState, InternalSpriteImageState, PreparedDrawSpriteImageParams, PrepareDrawSpriteImageParams, Releasable, RegisteredImage, RenderCalculationHost, RenderInterpolationParams, RenderInterpolationResult, SpriteOriginReference, SpriteInterpolationEvaluationResult } from '../internalTypes';
12
+ import { SurfaceCorner } from '../utils/math';
13
+ import { SpriteLocation } from '../types';
14
14
  import { BufferHolder, WasmHost } from './wasmHost';
15
+ import { ProcessInterpolationPresetRequests } from './calculationHost';
15
16
  import { PreparedProjectionState, ProjectionHostParams } from './projectionHost';
16
- export declare const createWasmProjectLngLatToClipSpace: () => {
17
- (clipContext: Readonly<ClipContext> | null, location: Readonly<SpriteLocation>): number[] | null;
18
- release(): void;
19
- };
20
- export declare const createWasmCalculateBillboardDepthKey: (preparedState: PreparedProjectionState) => {
21
- (_center: Readonly<SpriteScreenPoint>): number | null;
22
- release(): void;
23
- };
17
+ interface WasmProcessInterpolationResults {
18
+ readonly distance: DistanceInterpolationEvaluationResult[];
19
+ readonly degree: DegreeInterpolationEvaluationResult[];
20
+ readonly sprite: SpriteInterpolationEvaluationResult[];
21
+ }
24
22
  type CalculateSurfaceDepthKeyOptions = {
25
23
  readonly indices?: readonly number[];
26
24
  readonly bias?: {
@@ -32,12 +30,16 @@ export declare const createWasmCalculateSurfaceDepthKey: (preparedState: Prepare
32
30
  (baseLngLat: Readonly<SpriteLocation>, displacements: readonly SurfaceCorner[], options?: CalculateSurfaceDepthKeyOptions): number | null;
33
31
  release(): void;
34
32
  };
35
- interface PreparedInputBuffer extends Releaseable {
33
+ interface PreparedInputBuffer extends Releasable {
36
34
  readonly parameterHolder: BufferHolder<Float64Array>;
37
35
  readonly resultItemCount: number;
38
36
  }
39
37
  interface WritableWasmProjectionState<TTag> {
40
38
  readonly preparedProjection: PreparedProjectionState;
39
+ lastFrameParams?: {
40
+ baseMetersPerPixel: number;
41
+ zoomScaleFactor: number;
42
+ };
41
43
  readonly prepareInputBuffer: (params: PrepareDrawSpriteImageParams<TTag>) => PreparedInputBuffer;
42
44
  readonly getImageRefs: () => readonly InternalSpriteImageState[];
43
45
  readonly getResourceRefs: () => readonly (RegisteredImage | undefined)[];
@@ -64,5 +66,7 @@ export declare const __wasmCalculationTestInternals: {
64
66
  convertToWasmProjectionState: <TTag>(wasm: WasmHost, params: ProjectionHostParams, deps: WasmCalculationInteropDependencies<TTag>) => WritableWasmProjectionState<TTag>;
65
67
  converToPreparedDrawImageParams: <TTag>(state: WritableWasmProjectionState<TTag>, deps: WasmCalculationInteropDependencies<TTag>, resultBuffer: BufferHolder<Float64Array>) => PreparedDrawSpriteImageParams<TTag>[];
66
68
  prepareDrawSpriteImagesInternal: <TTag>(wasm: WasmHost, wasmState: WritableWasmProjectionState<TTag>, deps: WasmCalculationInteropDependencies<TTag>, params: PrepareDrawSpriteImageParams<TTag>) => PreparedDrawSpriteImageParams<TTag>[];
69
+ processInterpolationsViaWasm: (wasm: WasmHost, requests: ProcessInterpolationPresetRequests) => WasmProcessInterpolationResults;
70
+ processInterpolationsWithWasm: <TTag>(wasm: WasmHost, params: RenderInterpolationParams<TTag>) => RenderInterpolationResult;
67
71
  };
68
72
  export {};
@@ -1,14 +1,14 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
- import { SpriteLayerCalculationVariant } from './types';
11
+ import { SpriteLayerCalculationVariant } from '../types';
12
12
  /**
13
13
  * `fromLngLat` function parameter
14
14
  */
@@ -29,6 +29,7 @@ export type WasmProjectLngLatToClipSpace = (lng: number, lat: number, altitude:
29
29
  export type WasmCalculateBillboardDepthKey = (centerX: number, centerY: number, worldSize: number, inverseMatrixPtr: number, mercatorMatrixPtr: number, outPtr: number) => boolean;
30
30
  export type WasmCalculateSurfaceDepthKey = (baseLng: number, baseLat: number, baseAltitude: number, displacementPtr: number, displacementCount: number, indexPtr: number, indexCount: number, mercatorMatrixPtr: number, applyBias: number, biasNdc: number, minClipZEpsilon: number, outPtr: number) => boolean;
31
31
  export type WasmPrepareDrawSpriteImages = (paramsPtr: number, resultPtr: number) => boolean;
32
+ export type WasmProcessInterpolations = (paramsPtr: number, resultPtr: number) => boolean;
32
33
  /**
33
34
  * Wasm raw pointer type.
34
35
  */
@@ -101,7 +102,8 @@ export interface WasmHost {
101
102
  readonly projectLngLatToClipSpace: WasmProjectLngLatToClipSpace;
102
103
  readonly calculateBillboardDepthKey: WasmCalculateBillboardDepthKey;
103
104
  readonly calculateSurfaceDepthKey: WasmCalculateSurfaceDepthKey;
104
- readonly prepareDrawSpriteImages?: WasmPrepareDrawSpriteImages;
105
+ readonly prepareDrawSpriteImages: WasmPrepareDrawSpriteImages;
106
+ readonly processInterpolations: WasmProcessInterpolations;
105
107
  }
106
108
  export type WasmVariant = SpriteLayerCalculationVariant;
107
109
  /**
@@ -119,7 +121,7 @@ export interface InitializeWasmHostOptions {
119
121
  * @param options Options.
120
122
  * @returns Initialized WasmHost.
121
123
  */
122
- export declare const initializeWasmHost: (preferredVariant: WasmVariant, options: InitializeWasmHostOptions | undefined) => Promise<WasmVariant>;
124
+ export declare const initializeWasmHost: (preferredVariant?: WasmVariant, options?: InitializeWasmHostOptions) => Promise<WasmVariant>;
123
125
  /**
124
126
  * Release wasm offload module.
125
127
  */
@@ -1,15 +1,15 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.14.0
3
+ * version: 0.16.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
8
+ * git.commit.hash: 8d2149a6811cac25ed9d8c1d97acde73e1a38e25
9
9
  */
10
10
 
11
11
  import { ProjectionHostParams } from './projectionHost';
12
- import { ProjectionHost } from './internalTypes';
12
+ import { ProjectionHost } from '../internalTypes';
13
13
  /**
14
14
  * Create wasm-based calculation projection host.
15
15
  * @param params Projection parameters