@luma.gl/core 9.1.0-beta.8 → 9.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 (33) hide show
  1. package/dist/adapter/canvas-context.d.ts +30 -73
  2. package/dist/adapter/canvas-context.d.ts.map +1 -1
  3. package/dist/adapter/canvas-context.js +97 -203
  4. package/dist/adapter/canvas-context.js.map +1 -1
  5. package/dist/adapter/device.d.ts +3 -24
  6. package/dist/adapter/device.d.ts.map +1 -1
  7. package/dist/adapter/device.js +10 -22
  8. package/dist/adapter/device.js.map +1 -1
  9. package/dist/adapter/luma.js +1 -1
  10. package/dist/adapter/luma.js.map +1 -1
  11. package/dist/adapter/resources/render-pipeline.d.ts +1 -6
  12. package/dist/adapter/resources/render-pipeline.d.ts.map +1 -1
  13. package/dist/adapter/resources/render-pipeline.js +4 -2
  14. package/dist/adapter/resources/render-pipeline.js.map +1 -1
  15. package/dist/adapter/resources/vertex-array.d.ts +2 -4
  16. package/dist/adapter/resources/vertex-array.d.ts.map +1 -1
  17. package/dist/adapter/resources/vertex-array.js +6 -3
  18. package/dist/adapter/resources/vertex-array.js.map +1 -1
  19. package/dist/dist.dev.js +115 -210
  20. package/dist/dist.min.js +6 -6
  21. package/dist/gpu-type-utils/texture-format-table.js +1 -1
  22. package/dist/gpu-type-utils/texture-format-table.js.map +1 -1
  23. package/dist/gpu-type-utils/texture-formats.d.ts +2 -2
  24. package/dist/gpu-type-utils/texture-formats.d.ts.map +1 -1
  25. package/dist/index.cjs +117 -206
  26. package/dist/index.cjs.map +3 -3
  27. package/package.json +2 -2
  28. package/src/adapter/canvas-context.ts +122 -272
  29. package/src/adapter/device.ts +15 -50
  30. package/src/adapter/resources/render-pipeline.ts +12 -18
  31. package/src/adapter/resources/vertex-array.ts +9 -8
  32. package/src/gpu-type-utils/texture-format-table.ts +1 -1
  33. package/src/gpu-type-utils/texture-formats.ts +1 -2
@@ -1,10 +1,8 @@
1
1
  import type { Device } from "./device.js";
2
2
  import type { Framebuffer } from "./resources/framebuffer.js";
3
- import type { DepthStencilTextureFormat } from "../gpu-type-utils/texture-formats.js";
3
+ import type { TextureFormat } from "../gpu-type-utils/texture-formats.js";
4
4
  /** Properties for a CanvasContext */
5
5
  export type CanvasContextProps = {
6
- /** Identifier, for debugging */
7
- id?: string;
8
6
  /** If a canvas not supplied, one will be created and added to the DOM. If a string, a canvas with that id will be looked up in the DOM */
9
7
  canvas?: HTMLCanvasElement | OffscreenCanvas | string | null;
10
8
  /** If new canvas is created, it will be created in the specified container, otherwise is appended as a child of document.body */
@@ -34,36 +32,20 @@ export type CanvasContextProps = {
34
32
  export declare abstract class CanvasContext {
35
33
  static defaultProps: Required<CanvasContextProps>;
36
34
  abstract readonly device: Device;
37
- abstract readonly handle: unknown;
38
35
  readonly id: string;
39
36
  readonly props: Required<CanvasContextProps>;
40
37
  readonly canvas: HTMLCanvasElement | OffscreenCanvas;
41
38
  readonly htmlCanvas?: HTMLCanvasElement;
42
39
  readonly offscreenCanvas?: OffscreenCanvas;
43
40
  readonly type: 'html-canvas' | 'offscreen-canvas' | 'node';
44
- protected _initializedResolvers: {
45
- promise: Promise<void>;
46
- resolve: (t: void) => void;
47
- reject: (error: Error) => void;
48
- };
49
- /** Promise that resolved once the resize observer has updated the pixel size */
50
- initialized: Promise<void>;
51
- isInitialized: boolean;
52
- /** Visibility is automatically updated (via an IntersectionObserver) */
53
- isVisible: boolean;
54
- /** Device pixel ratio. Automatically updated via media queries */
55
- devicePixelRatio: number;
56
- /** Exact width of canvas in physical pixels (tracked by a ResizeObserver) */
57
- pixelWidth: number;
58
- /** Exact height of canvas in physical pixels (tracked by a ResizeObserver) */
59
- pixelHeight: number;
60
- /** Width of drawing buffer: automatically updated if props.autoResize is true */
61
- drawingBufferWidth: number;
62
- /** Height of drawing buffer: automatically updated if props.autoResize is true */
63
- drawingBufferHeight: number;
64
- protected readonly _resizeObserver: ResizeObserver | undefined;
65
- protected readonly _intersectionObserver: IntersectionObserver | undefined;
66
- /** State used by luma.gl classes: TODO - remove */
41
+ /** Format of returned textures: "bgra8unorm", "rgba8unorm" */
42
+ abstract readonly format: TextureFormat;
43
+ /** Default stencil format for depth textures */
44
+ abstract readonly depthStencilFormat: TextureFormat;
45
+ width: number;
46
+ height: number;
47
+ readonly resizeObserver: ResizeObserver | undefined;
48
+ /** State used by luma.gl classes: TODO - move to canvasContext*/
67
49
  readonly _canvasSizeInfo: {
68
50
  clientWidth: number;
69
51
  clientHeight: number;
@@ -73,35 +55,20 @@ export declare abstract class CanvasContext {
73
55
  toString(): string;
74
56
  constructor(props?: CanvasContextProps);
75
57
  /** Returns a framebuffer with properly resized current 'swap chain' textures */
76
- abstract getCurrentFramebuffer(options?: {
77
- depthStencilFormat?: DepthStencilTextureFormat | false;
78
- }): Framebuffer;
58
+ abstract getCurrentFramebuffer(): Framebuffer;
79
59
  /**
80
- * Returns the size covered by the canvas in CSS pixels
81
- * @note This can be different from the actual device pixel size of a canvas due to DPR scaling, and rounding to integer pixels
82
- * @note This is independent of the canvas' internal drawing buffer size (.width, .height).
60
+ * Returns the current DPR, if props.useDevicePixels is true
61
+ * Device refers to physical
83
62
  */
84
- getCSSSize(): [number, number];
63
+ getDevicePixelRatio(useDevicePixels?: boolean | number): number;
85
64
  /**
86
- * Returns the size covered by the canvas in actual device pixels.
87
- * @note This can be different from the 'CSS' size of a canvas due to DPR scaling, and rounding to integer pixels
88
- * @note This is independent of the canvas' internal drawing buffer size (.width, .height).
65
+ * Returns the size of drawing buffer in device pixels.
66
+ * @note This can be different from the 'CSS' size of a canvas, and also from the
67
+ * canvas' internal drawing buffer size (.width, .height).
68
+ * This is the size required to cover the canvas, adjusted for DPR
89
69
  */
90
70
  getPixelSize(): [number, number];
91
- /** Get the drawing buffer size (number of pixels GPU is rendering into, can be different from CSS size) */
92
- getDrawingBufferSize(): [number, number];
93
- /** Returns the biggest allowed framebuffer size. @todo Allow the application to limit this? */
94
- getMaxDrawingBufferSize(): [number, number];
95
- /** Update the canvas drawing buffer size. Called automatically if props.autoResize is true. */
96
- setDrawingBufferSize(width: number, height: number): void;
97
- /** @deprecated - TODO which values should we use for aspect */
98
71
  getAspect(): number;
99
- /**
100
- * Returns the current DPR (number of physical pixels per CSS pixel), if props.useDevicePixels is true
101
- * @note This can be a fractional (non-integer) number, e.g. when the user zooms in the browser.
102
- * @note This function handles the non-HTML canvas cases
103
- */
104
- getDevicePixelRatio(useDevicePixels?: boolean | number): number;
105
72
  /**
106
73
  * Returns multiplier need to convert CSS size to Device size
107
74
  */
@@ -115,37 +82,27 @@ export declare abstract class CanvasContext {
115
82
  width: number;
116
83
  height: number;
117
84
  };
118
- /** Performs platform specific updates (WebGPU vs WebGL) */
119
- protected abstract updateSize(size: [width: number, height: number]): void;
120
85
  /**
121
- * Allows subclass constructor to override the canvas id for auto created canvases.
122
- * This can really help when debugging DOM in apps that create multiple devices
123
- */
124
- protected _setAutoCreatedCanvasId(id: string): void;
125
- /** reacts to our intersection observer */
126
- protected _handleIntersection(entries: IntersectionObserverEntry[]): void;
127
- /**
128
- * Reacts to an observed resize by using the most accurate pixel size information the browser can provide
129
- * @see https://web.dev/articles/device-pixel-content-box
130
- * @see https://webgpufundamentals.org/webgpu/lessons/webgpu-resizing-the-canvas.html
86
+ * Use devicePixelRatio to set canvas width and height
87
+ * @note this is a raw port of luma.gl v8 code. Might be worth a review
131
88
  */
132
- protected _handleResize(entries: ResizeObserverEntry[]): void;
133
- /** Monitor DPR changes */
134
- _observeDevicePixelRatio(): void;
135
- /** @deprecated Use canvasContext.setDrawingBufferSize()
136
- * Resizes the canvas. Note: Has no effect if props.autoResize is true */
89
+ setDevicePixelRatio(devicePixelRatio: number, options?: {
90
+ width?: number;
91
+ height?: number;
92
+ }): void;
93
+ /** @todo Major hack done to port the CSS methods above, base canvas context should not depend on WebGL */
94
+ getDrawingBufferSize(): [number, number];
137
95
  abstract resize(options?: {
138
96
  width?: number;
139
97
  height?: number;
140
98
  useDevicePixels?: boolean | number;
141
99
  }): void;
100
+ /** Perform platform specific updates (WebGPU vs WebGL) */
101
+ protected abstract update(): void;
142
102
  /**
143
- * @deprecated Use devicePixelRatio to set canvas width and height
144
- * @note this is a raw port of luma.gl v8 code. Might be worth a review
103
+ * Allows subclass constructor to override the canvas id for auto created canvases.
104
+ * This can really help when debugging DOM in apps that create multiple devices
145
105
  */
146
- _setDevicePixelRatio(devicePixelRatio: number, options?: {
147
- width?: number;
148
- height?: number;
149
- }): void;
106
+ protected _setAutoCreatedCanvasId(id: string): void;
150
107
  }
151
108
  //# sourceMappingURL=canvas-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/canvas-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/canvas-context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,MAAM,EAAC,oBAAiB;AACrC,OAAO,KAAK,EAAC,WAAW,EAAC,mCAAgC;AAGzD,OAAO,KAAK,EAAC,aAAa,EAAC,6CAA0C;AAErE,qCAAqC;AACrC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,0IAA0I;IAC1I,MAAM,CAAC,EAAE,iBAAiB,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7D,iIAAiI;IACjI,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;IACxC,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,QAAQ,GAAG,eAAe,CAAC;IACvC,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;GAMG;AACH,8BAAsB,aAAa;IACjC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAU/C;IAEF,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,kBAAkB,GAAG,MAAM,CAAC;IAE3D,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IACxC,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC;IAEpD,KAAK,EAAE,MAAM,CAAK;IAClB,MAAM,EAAE,MAAM,CAAK;IAEnB,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAEpD,iEAAiE;IACjE,QAAQ,CAAC,eAAe;;;;MAA0D;IAElF,QAAQ,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC;IAE5C,QAAQ,IAAI,MAAM;gBAIN,KAAK,CAAC,EAAE,kBAAkB;IAqDtC,gFAAgF;IAChF,QAAQ,CAAC,qBAAqB,IAAI,WAAW;IAE7C;;;OAGG;IACH,mBAAmB,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM;IAoB/D;;;;;OAKG;IACH,YAAY,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAkBhC,SAAS,IAAI,MAAM;IAKnB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAa1B;;OAEG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,OAAc,GACtB;QACD,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB;IAMD;;;OAGG;IACH,mBAAmB,CACjB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAM,GAC9C,IAAI;IA4DP,0GAA0G;IAC1G,oBAAoB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAUxC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;KACpC,GAAG,IAAI;IAER,0DAA0D;IAC1D,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI;IAEjC;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM;CAK7C"}
@@ -13,9 +13,8 @@ import { uid } from "../utils/uid.js";
13
13
  */
14
14
  export class CanvasContext {
15
15
  static defaultProps = {
16
- id: undefined,
17
16
  canvas: null,
18
- width: 800,
17
+ width: 800, // width are height are only used by headless gl
19
18
  height: 600,
20
19
  useDevicePixels: true,
21
20
  autoResize: true,
@@ -30,25 +29,10 @@ export class CanvasContext {
30
29
  htmlCanvas;
31
30
  offscreenCanvas;
32
31
  type;
33
- _initializedResolvers = withResolvers();
34
- /** Promise that resolved once the resize observer has updated the pixel size */
35
- initialized;
36
- isInitialized = false;
37
- /** Visibility is automatically updated (via an IntersectionObserver) */
38
- isVisible = true;
39
- /** Device pixel ratio. Automatically updated via media queries */
40
- devicePixelRatio;
41
- /** Exact width of canvas in physical pixels (tracked by a ResizeObserver) */
42
- pixelWidth;
43
- /** Exact height of canvas in physical pixels (tracked by a ResizeObserver) */
44
- pixelHeight;
45
- /** Width of drawing buffer: automatically updated if props.autoResize is true */
46
- drawingBufferWidth;
47
- /** Height of drawing buffer: automatically updated if props.autoResize is true */
48
- drawingBufferHeight;
49
- _resizeObserver;
50
- _intersectionObserver;
51
- /** State used by luma.gl classes: TODO - remove */
32
+ width = 1;
33
+ height = 1;
34
+ resizeObserver;
35
+ /** State used by luma.gl classes: TODO - move to canvasContext*/
52
36
  _canvasSizeInfo = { clientWidth: 0, clientHeight: 0, devicePixelRatio: 1 };
53
37
  toString() {
54
38
  return `${this[Symbol.toStringTag]}(${this.id})`;
@@ -56,14 +40,23 @@ export class CanvasContext {
56
40
  constructor(props) {
57
41
  this.props = { ...CanvasContext.defaultProps, ...props };
58
42
  props = this.props;
59
- this.initialized = this._initializedResolvers.promise;
60
- // Create a canvas element if needed
61
43
  if (!isBrowser()) {
44
+ this.id = 'node-canvas-context';
45
+ this.type = 'node';
46
+ this.width = this.props.width;
47
+ this.height = this.props.height;
62
48
  // TODO - does this prevent app from using jsdom style polyfills?
63
- this.canvas = { width: props.width || 1, height: props.height || 1 };
49
+ this.canvas = null;
50
+ return;
64
51
  }
65
- else if (!props.canvas) {
66
- this.canvas = createCanvasElement(props);
52
+ if (!props.canvas) {
53
+ const canvas = createCanvas(props);
54
+ const container = getContainer(props?.container || null);
55
+ container.insertBefore(canvas, container.firstChild);
56
+ this.canvas = canvas;
57
+ if (!props?.visible) {
58
+ this.canvas.style.visibility = 'hidden';
59
+ }
67
60
  }
68
61
  else if (typeof props.canvas === 'string') {
69
62
  this.canvas = getCanvasFromDOM(props.canvas);
@@ -71,90 +64,31 @@ export class CanvasContext {
71
64
  else {
72
65
  this.canvas = props.canvas;
73
66
  }
74
- if (typeof HTMLCanvasElement !== 'undefined' && this.canvas instanceof HTMLCanvasElement) {
75
- this.id = props.id || this.canvas.id;
67
+ if (this.canvas instanceof HTMLCanvasElement) {
68
+ this.id = this.canvas.id;
76
69
  this.type = 'html-canvas';
77
70
  this.htmlCanvas = this.canvas;
78
71
  }
79
- else if (typeof OffscreenCanvas !== 'undefined' && this.canvas instanceof OffscreenCanvas) {
80
- this.id = props.id || 'offscreen-canvas';
72
+ else {
73
+ this.id = 'offscreen-canvas';
81
74
  this.type = 'offscreen-canvas';
82
75
  this.offscreenCanvas = this.canvas;
83
76
  }
84
- else {
85
- // TODO - Node.js support is currently untested (was used for headless-gl in luma v8)
86
- this.id = props.id || 'node-canvas-context';
87
- this.type = 'node';
88
- }
89
- // Initialize size variables (these will be updated by ResizeObserver)
90
- this.pixelWidth = this.canvas.width;
91
- this.pixelHeight = this.canvas.height;
92
- this.drawingBufferWidth = this.canvas.width;
93
- this.drawingBufferHeight = this.canvas.height;
94
- this.devicePixelRatio = globalThis.devicePixelRatio || 1;
95
- if (typeof HTMLCanvasElement !== 'undefined' && this.canvas instanceof HTMLCanvasElement) {
96
- // Track visibility changes
97
- this._intersectionObserver = new IntersectionObserver(entries => this._handleIntersection(entries));
98
- this._intersectionObserver.observe(this.canvas);
99
- // Track size changes
100
- this._resizeObserver = new ResizeObserver(entries => this._handleResize(entries));
101
- try {
102
- this._resizeObserver.observe(this.canvas, { box: 'device-pixel-content-box' });
103
- }
104
- catch {
105
- // Safari fallback
106
- this._resizeObserver.observe(this.canvas, { box: 'content-box' });
107
- }
108
- // Track device pixel ratio changes.
109
- // Defer call to after construction completes to ensure `this.device` is available.
110
- setTimeout(() => this._observeDevicePixelRatio(), 0);
111
- }
112
- }
113
- // SIZE METHODS
114
- /**
115
- * Returns the size covered by the canvas in CSS pixels
116
- * @note This can be different from the actual device pixel size of a canvas due to DPR scaling, and rounding to integer pixels
117
- * @note This is independent of the canvas' internal drawing buffer size (.width, .height).
118
- */
119
- getCSSSize() {
120
- if (typeof HTMLCanvasElement !== 'undefined' && this.canvas instanceof HTMLCanvasElement) {
121
- return [this.canvas.clientWidth, this.canvas.clientHeight];
77
+ // React to size changes
78
+ if (this.canvas instanceof HTMLCanvasElement && props.autoResize) {
79
+ this.resizeObserver = new ResizeObserver(entries => {
80
+ for (const entry of entries) {
81
+ if (entry.target === this.canvas) {
82
+ this.update();
83
+ }
84
+ }
85
+ });
86
+ this.resizeObserver.observe(this.canvas);
122
87
  }
123
- return [this.pixelWidth, this.pixelHeight];
124
88
  }
125
89
  /**
126
- * Returns the size covered by the canvas in actual device pixels.
127
- * @note This can be different from the 'CSS' size of a canvas due to DPR scaling, and rounding to integer pixels
128
- * @note This is independent of the canvas' internal drawing buffer size (.width, .height).
129
- */
130
- getPixelSize() {
131
- return [this.pixelWidth, this.pixelHeight];
132
- }
133
- /** Get the drawing buffer size (number of pixels GPU is rendering into, can be different from CSS size) */
134
- getDrawingBufferSize() {
135
- return [this.drawingBufferWidth, this.drawingBufferHeight];
136
- }
137
- /** Returns the biggest allowed framebuffer size. @todo Allow the application to limit this? */
138
- getMaxDrawingBufferSize() {
139
- const maxTextureDimension = this.device.limits.maxTextureDimension2D;
140
- return [maxTextureDimension, maxTextureDimension];
141
- }
142
- /** Update the canvas drawing buffer size. Called automatically if props.autoResize is true. */
143
- setDrawingBufferSize(width, height) {
144
- this.canvas.width = width;
145
- this.canvas.height = height;
146
- this.drawingBufferWidth = width;
147
- this.drawingBufferHeight = height;
148
- }
149
- /** @deprecated - TODO which values should we use for aspect */
150
- getAspect() {
151
- const [width, height] = this.getPixelSize();
152
- return width / height;
153
- }
154
- /**
155
- * Returns the current DPR (number of physical pixels per CSS pixel), if props.useDevicePixels is true
156
- * @note This can be a fractional (non-integer) number, e.g. when the user zooms in the browser.
157
- * @note This function handles the non-HTML canvas cases
90
+ * Returns the current DPR, if props.useDevicePixels is true
91
+ * Device refers to physical
158
92
  */
159
93
  getDevicePixelRatio(useDevicePixels) {
160
94
  if (typeof OffscreenCanvas !== 'undefined' && this.canvas instanceof OffscreenCanvas) {
@@ -171,6 +105,33 @@ export class CanvasContext {
171
105
  }
172
106
  return useDevicePixels;
173
107
  }
108
+ /**
109
+ * Returns the size of drawing buffer in device pixels.
110
+ * @note This can be different from the 'CSS' size of a canvas, and also from the
111
+ * canvas' internal drawing buffer size (.width, .height).
112
+ * This is the size required to cover the canvas, adjusted for DPR
113
+ */
114
+ getPixelSize() {
115
+ switch (this.type) {
116
+ case 'node':
117
+ return [this.width, this.height];
118
+ case 'offscreen-canvas':
119
+ return [this.canvas.width, this.canvas.height];
120
+ case 'html-canvas':
121
+ const dpr = this.getDevicePixelRatio();
122
+ const canvas = this.canvas;
123
+ // If not attached to DOM client size can be 0
124
+ return canvas.parentElement
125
+ ? [canvas.clientWidth * dpr, canvas.clientHeight * dpr]
126
+ : [this.canvas.width, this.canvas.height];
127
+ default:
128
+ throw new Error(this.type);
129
+ }
130
+ }
131
+ getAspect() {
132
+ const [width, height] = this.getPixelSize();
133
+ return width / height;
134
+ }
174
135
  /**
175
136
  * Returns multiplier need to convert CSS size to Device size
176
137
  */
@@ -179,7 +140,8 @@ export class CanvasContext {
179
140
  // For headless gl we might have used custom width and height
180
141
  // hence use cached clientWidth
181
142
  const [drawingBufferWidth] = this.getDrawingBufferSize();
182
- const { clientWidth } = this._canvasSizeInfo;
143
+ // _canvasSizeInfo may not be populated if `setDevicePixelRatio` is never called
144
+ const clientWidth = this._canvasSizeInfo.clientWidth || this.htmlCanvas?.clientWidth;
183
145
  return clientWidth ? drawingBufferWidth / clientWidth : 1;
184
146
  }
185
147
  catch {
@@ -194,79 +156,11 @@ export class CanvasContext {
194
156
  const [width, height] = this.getDrawingBufferSize();
195
157
  return scalePixels(cssPixel, ratio, width, height, yInvert);
196
158
  }
197
- // IMPLEMENTATION
198
159
  /**
199
- * Allows subclass constructor to override the canvas id for auto created canvases.
200
- * This can really help when debugging DOM in apps that create multiple devices
201
- */
202
- _setAutoCreatedCanvasId(id) {
203
- if (this.htmlCanvas?.id === 'lumagl-auto-created-canvas') {
204
- this.htmlCanvas.id = id;
205
- }
206
- }
207
- /** reacts to our intersection observer */
208
- _handleIntersection(entries) {
209
- const entry = entries.find(entry_ => entry_.target === this.canvas);
210
- if (!entry) {
211
- return;
212
- }
213
- // TODO - store intersection rectangle?
214
- const isVisible = entry.isIntersecting;
215
- if (this.isVisible !== isVisible) {
216
- this.isVisible = isVisible;
217
- this.device.props.onVisibilityChange(this);
218
- }
219
- }
220
- /**
221
- * Reacts to an observed resize by using the most accurate pixel size information the browser can provide
222
- * @see https://web.dev/articles/device-pixel-content-box
223
- * @see https://webgpufundamentals.org/webgpu/lessons/webgpu-resizing-the-canvas.html
224
- */
225
- _handleResize(entries) {
226
- const entry = entries.find(entry_ => entry_.target === this.canvas);
227
- if (!entry) {
228
- return;
229
- }
230
- // Use the most accurate drawing buffer size information the current browser can provide
231
- // Note: content box sizes are guaranteed to be integers
232
- // Note: Safari falls back to contentBoxSize
233
- const boxWidth = entry.devicePixelContentBoxSize?.[0].inlineSize ||
234
- entry.contentBoxSize[0].inlineSize * devicePixelRatio;
235
- const boxHeight = entry.devicePixelContentBoxSize?.[0].blockSize ||
236
- entry.contentBoxSize[0].blockSize * devicePixelRatio;
237
- // Update our drawing buffer size variables, saving the old values for logging
238
- const oldPixelSize = this.getPixelSize();
239
- // Make sure we don't overflow the maximum supported texture size
240
- const [maxPixelWidth, maxPixelHeight] = this.getMaxDrawingBufferSize();
241
- this.pixelWidth = Math.max(1, Math.min(boxWidth, maxPixelWidth));
242
- this.pixelHeight = Math.max(1, Math.min(boxHeight, maxPixelHeight));
243
- if (this.props.autoResize) {
244
- // Update the canvas drawing buffer size
245
- // TODO - This does not account for props.useDevicePixels
246
- this.setDrawingBufferSize(this.pixelWidth, this.pixelHeight);
247
- // Inform the subclass
248
- this.updateSize(this.getDrawingBufferSize());
249
- }
250
- // Resolve the initialized promise
251
- this._initializedResolvers.resolve();
252
- this.isInitialized = true;
253
- // Inform the device
254
- this.device.props.onResize(this, { oldPixelSize });
255
- }
256
- /** Monitor DPR changes */
257
- _observeDevicePixelRatio() {
258
- const oldRatio = this.devicePixelRatio;
259
- this.devicePixelRatio = window.devicePixelRatio;
260
- // Inform the device
261
- this.device.props.onDevicePixelRatioChange(this, { oldRatio });
262
- // Set up a one time query against the current resolution.
263
- matchMedia(`(resolution: ${this.devicePixelRatio}dppx)`).addEventListener('change', () => this._observeDevicePixelRatio(), { once: true });
264
- }
265
- /**
266
- * @deprecated Use devicePixelRatio to set canvas width and height
160
+ * Use devicePixelRatio to set canvas width and height
267
161
  * @note this is a raw port of luma.gl v8 code. Might be worth a review
268
162
  */
269
- _setDevicePixelRatio(devicePixelRatio, options = {}) {
163
+ setDevicePixelRatio(devicePixelRatio, options = {}) {
270
164
  if (!this.htmlCanvas) {
271
165
  return;
272
166
  }
@@ -309,9 +203,28 @@ export class CanvasContext {
309
203
  }
310
204
  }
311
205
  }
206
+ // PRIVATE
207
+ /** @todo Major hack done to port the CSS methods above, base canvas context should not depend on WebGL */
208
+ getDrawingBufferSize() {
209
+ // @ts-expect-error This only works for WebGL
210
+ const gl = this.device.gl;
211
+ if (!gl) {
212
+ // use default device pixel ratio
213
+ throw new Error('canvas size');
214
+ }
215
+ return [gl.drawingBufferWidth, gl.drawingBufferHeight];
216
+ }
217
+ /**
218
+ * Allows subclass constructor to override the canvas id for auto created canvases.
219
+ * This can really help when debugging DOM in apps that create multiple devices
220
+ */
221
+ _setAutoCreatedCanvasId(id) {
222
+ if (this.htmlCanvas?.id === 'lumagl-auto-created-canvas') {
223
+ this.htmlCanvas.id = id;
224
+ }
225
+ }
312
226
  }
313
227
  // HELPER FUNCTIONS
314
- /** Get a container element from a string or DOM element */
315
228
  function getContainer(container) {
316
229
  if (typeof container === 'string') {
317
230
  const element = document.getElementById(container);
@@ -320,7 +233,7 @@ function getContainer(container) {
320
233
  }
321
234
  return element;
322
235
  }
323
- if (container) {
236
+ else if (container) {
324
237
  return container;
325
238
  }
326
239
  return document.body;
@@ -328,32 +241,24 @@ function getContainer(container) {
328
241
  /** Get a Canvas element from DOM id */
329
242
  function getCanvasFromDOM(canvasId) {
330
243
  const canvas = document.getElementById(canvasId);
331
- if (typeof canvas !== 'undefined' &&
332
- typeof HTMLCanvasElement !== 'undefined' &&
333
- !(canvas instanceof HTMLCanvasElement)) {
244
+ if (!(canvas instanceof HTMLCanvasElement)) {
334
245
  throw new Error('Object is not a canvas element');
335
246
  }
336
247
  return canvas;
337
248
  }
338
249
  /** Create a new canvas */
339
- function createCanvasElement(props) {
250
+ function createCanvas(props) {
340
251
  const { width, height } = props;
341
- const newCanvas = document.createElement('canvas');
342
- newCanvas.id = uid('lumagl-auto-created-canvas');
343
- newCanvas.width = width || 1;
344
- newCanvas.height = height || 1;
345
- newCanvas.style.width = Number.isFinite(width) ? `${width}px` : '100%';
346
- newCanvas.style.height = Number.isFinite(height) ? `${height}px` : '100%';
347
- if (!props?.visible) {
348
- newCanvas.style.visibility = 'hidden';
349
- }
350
- // Insert the canvas in the DOM
351
- const container = getContainer(props?.container || null);
352
- container.insertBefore(newCanvas, container.firstChild);
353
- return newCanvas;
252
+ const targetCanvas = document.createElement('canvas');
253
+ targetCanvas.id = uid('lumagl-auto-created-canvas');
254
+ targetCanvas.width = width || 1;
255
+ targetCanvas.height = height || 1;
256
+ targetCanvas.style.width = Number.isFinite(width) ? `${width}px` : '100%';
257
+ targetCanvas.style.height = Number.isFinite(height) ? `${height}px` : '100%';
258
+ return targetCanvas;
354
259
  }
355
260
  /**
356
- * Scales pixels linearly, handles edge cases
261
+ *
357
262
  * @param pixel
358
263
  * @param ratio
359
264
  * @param width
@@ -402,15 +307,4 @@ function scaleY(y, ratio, height, yInvert) {
402
307
  ? Math.max(0, height - 1 - Math.round(y * ratio))
403
308
  : Math.min(Math.round(y * ratio), height - 1);
404
309
  }
405
- // TODO - replace with Promise.withResolvers once we upgrade TS baseline
406
- function withResolvers() {
407
- let resolve;
408
- let reject;
409
- const promise = new Promise((_resolve, _reject) => {
410
- resolve = _resolve;
411
- reject = _reject;
412
- });
413
- // @ts-expect-error - in fact these are no used before initialized
414
- return { promise, resolve, reject };
415
- }
416
310
  //# sourceMappingURL=canvas-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-context.js","sourceRoot":"","sources":["../../src/adapter/canvas-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas-context.js","sourceRoot":"","sources":["../../src/adapter/canvas-context.ts"],"names":[],"mappings":"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"}