maplibre-gl-layers 0.19.0 → 1.1.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 (41) hide show
  1. package/README.md +1 -1
  2. package/dist/index.cjs +8646 -6335
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.ts +1353 -7
  5. package/dist/index.mjs +8645 -6334
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/wasm/offloads-nosimd.wasm +0 -0
  8. package/dist/wasm/offloads-simd-mt.wasm +0 -0
  9. package/dist/wasm/offloads-simd.wasm +0 -0
  10. package/package.json +10 -9
  11. package/dist/SpriteLayer.d.ts +0 -41
  12. package/dist/config.d.ts +0 -26
  13. package/dist/const.d.ts +0 -98
  14. package/dist/default.d.ts +0 -29
  15. package/dist/gl/atlas.d.ts +0 -64
  16. package/dist/gl/hitTest.d.ts +0 -54
  17. package/dist/gl/mouseEvents.d.ts +0 -36
  18. package/dist/gl/shader.d.ts +0 -114
  19. package/dist/gl/text.d.ts +0 -17
  20. package/dist/gl/tracking.d.ts +0 -36
  21. package/dist/host/calculationHost.d.ts +0 -87
  22. package/dist/host/mapLibreProjectionHost.d.ts +0 -18
  23. package/dist/host/projectionHost.d.ts +0 -62
  24. package/dist/host/runtime.d.ts +0 -38
  25. package/dist/host/wasmCalculationHost.d.ts +0 -72
  26. package/dist/host/wasmHost.d.ts +0 -133
  27. package/dist/host/wasmProjectionHost.d.ts +0 -19
  28. package/dist/internalTypes.d.ts +0 -582
  29. package/dist/interpolation/degreeInterpolation.d.ts +0 -48
  30. package/dist/interpolation/distanceInterpolation.d.ts +0 -31
  31. package/dist/interpolation/easing.d.ts +0 -26
  32. package/dist/interpolation/interpolationChannels.d.ts +0 -59
  33. package/dist/interpolation/locationInterpolation.d.ts +0 -30
  34. package/dist/interpolation/rotationInterpolation.d.ts +0 -40
  35. package/dist/types.d.ts +0 -944
  36. package/dist/utils/color.d.ts +0 -20
  37. package/dist/utils/image.d.ts +0 -32
  38. package/dist/utils/looseQuadTree.d.ts +0 -34
  39. package/dist/utils/math.d.ts +0 -451
  40. package/dist/utils/utils.d.ts +0 -37
  41. package/dist/wasm/config.json.d.ts +0 -16
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "git": {
3
3
  "tags": [
4
- "0.19.0"
4
+ "1.1.0"
5
5
  ],
6
6
  "branches": [
7
7
  "main"
8
8
  ],
9
- "version": "0.19.0",
9
+ "version": "1.1.0",
10
10
  "commit": {
11
- "hash": "7bc93c11d7855dedb8d60f140af4e413252c32a7",
12
- "shortHash": "7bc93c1",
13
- "date": "2025-11-23T22:35:51+09:00Z",
11
+ "hash": "6308f45aa959024297cb716990f16213b89b6bd0",
12
+ "shortHash": "6308f45",
13
+ "date": "2026-01-24T12:44:31+09:00",
14
14
  "message": "Merge branch 'develop'"
15
15
  }
16
16
  },
17
- "version": "0.19.0",
17
+ "version": "1.1.0",
18
18
  "description": "MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images",
19
19
  "author": "Kouji Matsui (@kekyo@mi.kekyo.net)",
20
20
  "license": "MIT",
@@ -64,11 +64,12 @@
64
64
  },
65
65
  "devDependencies": {
66
66
  "@types/node": ">=24.9.0",
67
- "prettier-max": ">=1.11.0",
68
- "screw-up": ">=1.13.0",
67
+ "prettier-max": ">=1.14.0",
68
+ "screw-up": ">=1.26.0",
69
69
  "typescript": ">=5.0.0",
70
70
  "vite": ">=5.0.0",
71
71
  "vite-plugin-dts": ">=4.5.0",
72
72
  "vitest": ">=1.6.0"
73
- }
73
+ },
74
+ "buildDate": "2026-01-24T12:46:06+09:00"
74
75
  }
@@ -1,41 +0,0 @@
1
- /*!
2
- * name: maplibre-gl-layers
3
- * version: 0.19.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: 7bc93c11d7855dedb8d60f140af4e413252c32a7
9
- */
10
-
11
- import { SpriteLayerInterface, SpriteLayerOptions, SpriteLocation, SpriteImageDefinitionInit } from './types';
12
- import { InternalSpriteImageState, InternalSpriteCurrentState, SpriteOriginReference } from './internalTypes';
13
- /**
14
- * Applies auto-rotation to all images within a sprite when movement exceeds the configured threshold.
15
- * @template T Arbitrary sprite tag type.
16
- * @param {InternalSpriteCurrentState<T>} sprite - Sprite undergoing potential rotation update.
17
- * @param {SpriteLocation} nextLocation - Destination location used to derive bearing and distance.
18
- * @returns {boolean} `true` when auto-rotation was applied, `false` otherwise.
19
- */
20
- export declare const applyAutoRotation: <T>(sprite: InternalSpriteCurrentState<T>, nextLocation: SpriteLocation, forceAutoRotation: boolean) => boolean;
21
- /**
22
- * Creates internal sprite image state from initialization data and layer bookkeeping fields.
23
- * @param {SpriteImageDefinitionInit} imageInit - Caller-provided image definition.
24
- * @param {number} subLayer - Sub-layer index the image belongs to.
25
- * @param {number} order - Ordering slot within the sub-layer.
26
- * @param {SpriteOriginReference} originReference - Encode/Decode origin reference.
27
- * @param {boolean} invalidated - Initially invalidate state.
28
- * @returns {InternalSpriteImageState} Normalized internal state ready for rendering.
29
- */
30
- export declare const createImageStateFromInit: (imageInit: SpriteImageDefinitionInit, subLayer: number, order: number, originReference: SpriteOriginReference, invalidated: boolean, spriteAutoRotationDeg?: number) => InternalSpriteImageState;
31
- /**
32
- * Factory that creates the MapLibre layer interface for the sprite layer.
33
- * Implements the CustomLayerInterface lifecycle (init -> render -> dispose), packing thousands
34
- * of sprites into GPU buffers for efficient rendering. Supports optional scaling controls for
35
- * billboard and surface modes.
36
- *
37
- * @template T Arbitrary tag type for per-sprite metadata.
38
- * @param {SpriteLayerOptions} [options] Initial layer options such as ID or scaling settings.
39
- * @returns {SpriteLayerInterface<T>} Interface for sprite add/update/remove operations and MapLibre hooks.
40
- */
41
- export declare const createSpriteLayer: <T = any>(options?: SpriteLayerOptions) => SpriteLayerInterface<T>;
package/dist/config.d.ts DELETED
@@ -1,26 +0,0 @@
1
- /*!
2
- * name: maplibre-gl-layers
3
- * version: 0.19.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: 7bc93c11d7855dedb8d60f140af4e413252c32a7
9
- */
10
-
11
- /** Debug flag */
12
- export declare const SL_DEBUG = false;
13
- /** Enables the upcoming shader-based billboard corner computation when true. */
14
- export declare const USE_SHADER_BILLBOARD_GEOMETRY = true;
15
- /** Enables the upcoming shader-based surface corner computation when true. */
16
- export declare const USE_SHADER_SURFACE_GEOMETRY = true;
17
- /** Whether to enable the NDC bias for surface rendering (disabled by default). */
18
- export declare const ENABLE_NDC_BIAS_SURFACE = true;
19
- /** Maximum number of atlas operations handled per processing pass. */
20
- export declare const ATLAS_QUEUE_CHUNK_SIZE = 64;
21
- /** Time budget (milliseconds) spent per atlas queue processing pass. */
22
- export declare const ATLAS_QUEUE_TIME_BUDGET_MS = 20;
23
- /** Maximum number of text glyph jobs handled per processing pass. */
24
- export declare const TEXT_GLYPH_QUEUE_CHUNK_SIZE = 16;
25
- /** Time budget (milliseconds) spent on text glyph generation per pass. */
26
- export declare const TEXT_GLYPH_QUEUE_TIME_BUDGET_MS = 20;
package/dist/const.d.ts DELETED
@@ -1,98 +0,0 @@
1
- /*!
2
- * name: maplibre-gl-layers
3
- * version: 0.19.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: 7bc93c11d7855dedb8d60f140af4e413252c32a7
9
- */
10
-
11
- import { Rect } from './utils/looseQuadTree';
12
- import { SpriteAnchor, SpriteTextGlyphHorizontalAlign } from './types';
13
- import { RgbaColor } from './internalTypes';
14
- /** Default sprite anchor centered at the image origin. */
15
- export declare const DEFAULT_ANCHOR: Readonly<SpriteAnchor>;
16
- /** Default image offset applied when none is provided. */
17
- export declare const DEFAULT_IMAGE_OFFSET: {
18
- readonly offsetMeters: 0;
19
- readonly offsetDeg: 0;
20
- };
21
- export declare const DEFAULT_TEXT_GLYPH_FONT_FAMILY = "sans-serif";
22
- export declare const DEFAULT_TEXT_GLYPH_FONT_STYLE: 'normal' | 'italic';
23
- export declare const DEFAULT_TEXT_GLYPH_FONT_WEIGHT = "normal";
24
- export declare const DEFAULT_TEXT_GLYPH_COLOR = "#000000";
25
- export declare const DEFAULT_TEXT_GLYPH_ALIGN: SpriteTextGlyphHorizontalAlign;
26
- export declare const DEFAULT_TEXT_GLYPH_FONT_SIZE = 32;
27
- export declare const DEFAULT_TEXT_GLYPH_RENDER_PIXEL_RATIO = 1;
28
- /** Default threshold in meters for auto-rotation to treat movement as significant. */
29
- export declare const DEFAULT_AUTO_ROTATION_MIN_DISTANCE_METERS = 20;
30
- /** Default border width in meters for sprite image outlines. */
31
- export declare const DEFAULT_BORDER_WIDTH_METERS = 1;
32
- /**
33
- * WGS84-compatible Earth radius in meters.
34
- * Used to convert one radian of longitude into meters when scaling sprites.
35
- * @constant
36
- */
37
- export declare const EARTH_RADIUS_METERS = 6378137;
38
- /**
39
- * Multiplier for converting degrees to radians.
40
- * @constant
41
- */
42
- export declare const DEG2RAD: number;
43
- /**
44
- * Multiplier for converting radians to degrees.
45
- * @constant
46
- */
47
- export declare const RAD2DEG: number;
48
- /**
49
- * Default MapLibre tile size used for Web Mercator calculations.
50
- * @constant
51
- */
52
- export declare const TILE_SIZE = 512;
53
- export declare const MIN_CLIP_Z_EPSILON = 1e-7;
54
- /** Small depth bias applied in NDC space. */
55
- export declare const EPS_NDC = 0.000001;
56
- /** Maximum number of order slots available within a sub-layer (0..ORDER_MAX-1). */
57
- export declare const ORDER_MAX = 16;
58
- /** Bucket width used to encode sub-layer and order into a single number. */
59
- export declare const ORDER_BUCKET = 16;
60
- export declare const MIN_CLIP_W = 0.000001;
61
- export declare const HIT_TEST_WORLD_BOUNDS: Rect;
62
- /** Small tolerance used to handle floating-point error during hit testing. */
63
- export declare const HIT_TEST_EPSILON = 0.001;
64
- export declare const MAX_TEXT_GLYPH_RENDER_PIXEL_RATIO = 4;
65
- export declare const MIN_TEXT_GLYPH_FONT_SIZE = 4;
66
- /**
67
- * Index order used to decompose a quad into two triangles.
68
- * @constant
69
- */
70
- export declare const TRIANGLE_INDICES: readonly [0, 1, 2, 2, 1, 3];
71
- /**
72
- * UV coordinates for each corner of a quad following the index order in {@link TRIANGLE_INDICES}.
73
- * @constant
74
- */
75
- export declare const UV_CORNERS: ReadonlyArray<readonly [number, number]>;
76
- declare const __CSS_KEYWORD_COLORS: {
77
- black: RgbaColor;
78
- silver: RgbaColor;
79
- gray: RgbaColor;
80
- white: RgbaColor;
81
- maroon: RgbaColor;
82
- red: RgbaColor;
83
- purple: RgbaColor;
84
- fuchsia: RgbaColor;
85
- green: RgbaColor;
86
- lime: RgbaColor;
87
- olive: RgbaColor;
88
- yellow: RgbaColor;
89
- navy: RgbaColor;
90
- blue: RgbaColor;
91
- teal: RgbaColor;
92
- aqua: RgbaColor;
93
- transparent: RgbaColor;
94
- };
95
- export declare const CSS_KEYWORD_COLORS: typeof __CSS_KEYWORD_COLORS & Record<string, RgbaColor>;
96
- export declare const DEFAULT_BORDER_COLOR = "red";
97
- export declare const DEFAULT_BORDER_COLOR_RGBA: RgbaColor;
98
- export {};
package/dist/default.d.ts DELETED
@@ -1,29 +0,0 @@
1
- /*!
2
- * name: maplibre-gl-layers
3
- * version: 0.19.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: 7bc93c11d7855dedb8d60f140af4e413252c32a7
9
- */
10
-
11
- import { SpriteScalingOptions, SpriteTextureFilteringOptions } from './types';
12
- /**
13
- * Unlimited (default) values that fill in missing {@link SpriteScalingOptions} fields supplied by callers.
14
- * metersPerPixel is 1.
15
- */
16
- export declare const UNLIMITED_SPRITE_SCALING_OPTIONS: SpriteScalingOptions;
17
- /**
18
- * Standard values that fill in missing {@link SpriteScalingOptions} fields supplied by callers.
19
- * metersPerPixel is 1.
20
- */
21
- export declare const STANDARD_SPRITE_SCALING_OPTIONS: SpriteScalingOptions;
22
- /**
23
- * Defaulted text filtering options.
24
- */
25
- export declare const DEFAULT_TEXTURE_FILTERING_OPTIONS: SpriteTextureFilteringOptions;
26
- /**
27
- * Better text filtering options than default options.
28
- */
29
- export declare const BETTER_TEXTURE_FILTERING_OPTIONS: SpriteTextureFilteringOptions;
@@ -1,64 +0,0 @@
1
- /*!
2
- * name: maplibre-gl-layers
3
- * version: 0.19.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: 7bc93c11d7855dedb8d60f140af4e413252c32a7
9
- */
10
-
11
- import { Deferred } from 'async-primitives';
12
- import { Canvas2DSource } from '../internalTypes';
13
- export interface AtlasManagerOptions {
14
- readonly pageWidth?: number;
15
- readonly pageHeight?: number;
16
- readonly padding?: number;
17
- }
18
- export interface AtlasPlacement {
19
- readonly pageIndex: number;
20
- readonly width: number;
21
- readonly height: number;
22
- readonly x: number;
23
- readonly y: number;
24
- readonly u0: number;
25
- readonly v0: number;
26
- readonly u1: number;
27
- readonly v1: number;
28
- }
29
- export interface AtlasPageState {
30
- readonly index: number;
31
- readonly width: number;
32
- readonly height: number;
33
- readonly canvas: Canvas2DSource;
34
- needsUpload: boolean;
35
- }
36
- export interface AtlasManager {
37
- readonly upsertImage: (id: string, bitmap: ImageBitmap) => AtlasPlacement;
38
- readonly removeImage: (id: string) => boolean;
39
- readonly getImagePlacement: (id: string) => AtlasPlacement | null;
40
- readonly getPages: () => readonly AtlasPageState[];
41
- readonly markPageClean: (pageIndex: number) => void;
42
- readonly clear: () => void;
43
- }
44
- export interface AtlasQueueUpsertEntry {
45
- readonly imageId: string;
46
- readonly bitmap: ImageBitmap;
47
- readonly deferred: Deferred<boolean>;
48
- }
49
- export interface AtlasQueueOptions {
50
- readonly maxOperationsPerPass: number;
51
- readonly timeBudgetMs: number;
52
- }
53
- export interface AtlasQueueCallbacks {
54
- readonly onChunkProcessed: () => void;
55
- }
56
- export interface AtlasOperationQueue {
57
- readonly enqueueUpsert: (entry: AtlasQueueUpsertEntry) => void;
58
- readonly flushPending: () => void;
59
- readonly cancelForImage: (imageId: string, reason?: Error) => void;
60
- readonly rejectAll: (reason: Error) => void;
61
- readonly pendingCount: number;
62
- }
63
- export declare const createAtlasManager: (options?: AtlasManagerOptions) => AtlasManager;
64
- export declare const createAtlasOperationQueue: (atlasManager: AtlasManager, options: AtlasQueueOptions, callbacks: AtlasQueueCallbacks) => AtlasOperationQueue;
@@ -1,54 +0,0 @@
1
- /*!
2
- * name: maplibre-gl-layers
3
- * version: 0.19.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: 7bc93c11d7855dedb8d60f140af4e413252c32a7
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 setHitTestDetection: (enabled: boolean) => boolean;
52
- readonly isHitTestEnabled: () => boolean;
53
- }
54
- export declare const createHitTestController: <T>({ images, getResolvedScaling, }: HitTestControllerParams) => HitTestController<T>;
@@ -1,36 +0,0 @@
1
- /*!
2
- * name: maplibre-gl-layers
3
- * version: 0.19.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: 7bc93c11d7855dedb8d60f140af4e413252c32a7
9
- */
10
-
11
- import { Releasable } from '../internalTypes';
12
- import { SpriteLayerEventListener, SpriteLayerEventMap, SpriteScreenPoint, SpriteImageState, SpriteCurrentState } from '../types';
13
- import { HitTestEntry } from './hitTest';
14
- export interface SpriteMouseEventsController<T> extends Releasable {
15
- readonly canvasElement: HTMLCanvasElement | undefined;
16
- readonly addEventListener: <K extends keyof SpriteLayerEventMap<T>>(type: K, listener: SpriteLayerEventListener<T, K>) => void;
17
- readonly removeEventListener: <K extends keyof SpriteLayerEventMap<T>>(type: K, listener: SpriteLayerEventListener<T, K>) => void;
18
- readonly hasSpriteClickListeners: () => boolean;
19
- readonly hasSpriteHoverListeners: () => boolean;
20
- readonly bindCanvas: (canvasElement: HTMLCanvasElement | undefined) => void;
21
- }
22
- export interface SpriteMouseEventsControllerParams<T> {
23
- readonly resolveHitTestResult: (nativeEvent: MouseEvent | PointerEvent | TouchEvent) => {
24
- hitEntry: HitTestEntry<T> | undefined;
25
- screenPoint: SpriteScreenPoint;
26
- } | undefined;
27
- readonly resolveSpriteEventPayload: (hitEntry: HitTestEntry<T> | undefined) => {
28
- sprite: SpriteCurrentState<T> | undefined;
29
- image: SpriteImageState | undefined;
30
- };
31
- readonly updateVisibilityState: () => void;
32
- }
33
- /**
34
- * Consolidates mouse/touch DOM hooks and SpriteLayer event listener bookkeeping.
35
- */
36
- export declare const createSpriteMouseEventsController: <T>({ resolveHitTestResult, resolveSpriteEventPayload, updateVisibilityState, }: SpriteMouseEventsControllerParams<T>) => SpriteMouseEventsController<T>;
@@ -1,114 +0,0 @@
1
- /*!
2
- * name: maplibre-gl-layers
3
- * version: 0.19.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: 7bc93c11d7855dedb8d60f140af4e413252c32a7
9
- */
10
-
11
- import { SpriteAnchor, SpriteScreenPoint, SpriteTextureFilteringOptions } from '../types';
12
- import { ImageHandleBufferController, PreparedDrawSpriteImageParams, RegisteredImage, Releasable, ResolvedTextureFilteringOptions, RgbaColor } from '../internalTypes';
13
- import { AtlasManager, AtlasOperationQueue, AtlasPageState } from './atlas';
14
- /** Number of components per vertex (clipPosition.xyzw + uv.xy). */
15
- export declare const VERTEX_COMPONENT_COUNT = 6;
16
- /** Component count for clip-space position attributes. */
17
- export declare const POSITION_COMPONENT_COUNT = 4;
18
- /** Component count for UV attributes. */
19
- export declare const UV_COMPONENT_COUNT = 2;
20
- /** Byte size of a Float32. */
21
- export declare const FLOAT_SIZE: number;
22
- /** Stride per vertex in bytes. */
23
- export declare const VERTEX_STRIDE: number;
24
- /** Byte offset for the UV attribute. */
25
- export declare const UV_OFFSET: number;
26
- /** Vertex count required to draw one sprite as two triangles. */
27
- export declare const QUAD_VERTEX_COUNT = 6;
28
- /** Initial vertex data for a unit quad. */
29
- export declare const INITIAL_QUAD_VERTICES: Float32Array<ArrayBuffer>;
30
- /** Scratch buffer rewritten for each draw call. */
31
- export declare const QUAD_VERTEX_SCRATCH: Float32Array<ArrayBuffer>;
32
- /** Corner traversal order used when outlining a quad without crossing diagonals. */
33
- export declare const BORDER_OUTLINE_CORNER_ORDER: readonly [0, 1, 3, 2];
34
- /** Base corner definitions used when expanding billboards in shaders. */
35
- export declare const BILLBOARD_BASE_CORNERS: ReadonlyArray<readonly [number, number]>;
36
- /** Base corner definitions used when expanding surface quads in shaders. */
37
- export declare const SURFACE_BASE_CORNERS: ReadonlyArray<readonly [number, number]>;
38
- export declare const computeBillboardCornersShaderModel: ({ center, halfWidth, halfHeight, anchor, rotationDeg, }: {
39
- center: Readonly<SpriteScreenPoint>;
40
- halfWidth: number;
41
- halfHeight: number;
42
- anchor?: Readonly<SpriteAnchor>;
43
- rotationDeg: number;
44
- }) => Array<{
45
- x: number;
46
- y: number;
47
- u: number;
48
- v: number;
49
- }>;
50
- /**
51
- * Compiles a shader from source, throwing if compilation fails.
52
- * @param {WebGLRenderingContext} glContext - Active WebGL context.
53
- * @param {number} type - Shader type (`VERTEX_SHADER` or `FRAGMENT_SHADER`).
54
- * @param {string} source - GLSL source code.
55
- * @returns {WebGLShader} Compiled shader object.
56
- * @throws When shader creation or compilation fails.
57
- */
58
- export declare const compileShader: (glContext: WebGLRenderingContext, type: number, source: string) => WebGLShader;
59
- /**
60
- * Links a vertex and fragment shader into a WebGL program.
61
- * @param {WebGLRenderingContext} glContext - Active WebGL context.
62
- * @param {string} vertexSource - Vertex shader GLSL source.
63
- * @param {string} fragmentSource - Fragment shader GLSL source.
64
- * @returns {WebGLProgram} Linked shader program ready for use.
65
- * @throws When linking fails or a program cannot be created.
66
- */
67
- export declare const createShaderProgram: (glContext: WebGLRenderingContext, vertexSource: string, fragmentSource: string) => WebGLProgram;
68
- export interface SpriteDrawProgram<TTag> extends Releasable {
69
- beginFrame(): void;
70
- uploadVertexBatch(items: PreparedDrawSpriteImageParams<TTag>[]): void;
71
- draw(prepared: PreparedDrawSpriteImageParams<TTag>): boolean;
72
- }
73
- export declare const createSpriteDrawProgram: <TTag>(glContext: WebGLRenderingContext) => SpriteDrawProgram<TTag>;
74
- export interface BorderOutlineRenderer extends Releasable {
75
- begin(screenToClipScaleX: number, screenToClipScaleY: number, screenToClipOffsetX: number, screenToClipOffsetY: number): void;
76
- drawOutline(corners: readonly [
77
- SpriteScreenPoint,
78
- SpriteScreenPoint,
79
- SpriteScreenPoint,
80
- SpriteScreenPoint
81
- ], color: RgbaColor, lineWidth: number): void;
82
- end(): void;
83
- }
84
- export declare const createBorderOutlineRenderer: (glContext: WebGLRenderingContext) => BorderOutlineRenderer;
85
- export interface LeaderLineRenderer extends Releasable {
86
- begin(screenToClipScaleX: number, screenToClipScaleY: number, screenToClipOffsetX: number, screenToClipOffsetY: number): void;
87
- drawLine(from: Readonly<SpriteScreenPoint>, to: Readonly<SpriteScreenPoint>, color: RgbaColor, lineWidth: number): void;
88
- end(): void;
89
- }
90
- export declare const createLeaderLineRenderer: (glContext: WebGLRenderingContext) => LeaderLineRenderer;
91
- export declare const resolveTextureFilteringOptions: (options?: SpriteTextureFilteringOptions) => ResolvedTextureFilteringOptions;
92
- export declare const resolveAnisotropyExtension: (glContext: WebGLRenderingContext) => EXT_texture_filter_anisotropic | undefined;
93
- export interface EnsureTexturesParams {
94
- readonly glContext: WebGLRenderingContext | undefined;
95
- readonly atlasQueue: AtlasOperationQueue;
96
- readonly atlasManager: AtlasManager;
97
- readonly atlasPageTextures: Map<number, WebGLTexture>;
98
- readonly atlasNeedsUpload: boolean;
99
- readonly resolvedTextureFiltering: ResolvedTextureFilteringOptions;
100
- readonly anisotropyExtension: EXT_texture_filter_anisotropic | undefined;
101
- readonly maxSupportedAnisotropy: number;
102
- readonly images: ReadonlyMap<string, RegisteredImage>;
103
- readonly imageHandleBuffersController: ImageHandleBufferController;
104
- readonly atlasPageIndexNone: number;
105
- readonly shouldUploadAtlasPages: (pageStates?: readonly AtlasPageState[]) => boolean;
106
- }
107
- /**
108
- * Creates or refreshes WebGL textures for registered images.
109
- * Processes only queued entries to avoid unnecessary work.
110
- * Intended to run just before drawing; returns immediately if the GL context is unavailable.
111
- * Ensures registerImage calls outside the render loop sync on the next frame.
112
- * @returns {boolean} Updated atlas upload requirement flag.
113
- */
114
- export declare const ensureTextures: ({ glContext, atlasQueue, atlasManager, atlasPageTextures, atlasNeedsUpload, resolvedTextureFiltering, anisotropyExtension, maxSupportedAnisotropy, images, imageHandleBuffersController, atlasPageIndexNone, shouldUploadAtlasPages, }: EnsureTexturesParams) => boolean;
package/dist/gl/text.d.ts DELETED
@@ -1,17 +0,0 @@
1
- /*!
2
- * name: maplibre-gl-layers
3
- * version: 0.19.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: 7bc93c11d7855dedb8d60f140af4e413252c32a7
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,36 +0,0 @@
1
- /*!
2
- * name: maplibre-gl-layers
3
- * version: 0.19.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: 7bc93c11d7855dedb8d60f140af4e413252c32a7
9
- */
10
-
11
- import { Map as MapLibreMap } from 'maplibre-gl';
12
- import { Releasable } from '../internalTypes';
13
- import { SpriteCurrentState } from '../types';
14
- /**
15
- * Sprite tracking controller.
16
- * @template TTag Tag type.
17
- */
18
- export interface SpriteTrackingController<TTag> extends Releasable {
19
- /**
20
- * Track the sprite
21
- * @param sprite - Target sprite
22
- * @param trackRotation - Track with rotation when true
23
- */
24
- readonly trackSprite: (sprite: SpriteCurrentState<TTag>, trackRotation: boolean) => void;
25
- /**
26
- * Untrack sprite.
27
- */
28
- readonly untrackSprite: () => void;
29
- }
30
- /**
31
- * Drives sprite tracking (centering and optional rotation) with a requestAnimationFrame loop.
32
- * Pauses tracking while the user is manipulating the camera to avoid fighting user input.
33
- * @template TTag Tag type.
34
- * @param mapInstance - MapLibre instance.
35
- */
36
- export declare const createSpriteTrackingController: <TTag>(mapInstance: MapLibreMap) => SpriteTrackingController<TTag>;