hdr-canvas 0.0.12 → 0.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.
@@ -1,3 +1,57 @@
1
+ class HDRImage {
2
+ static DEFAULT_COLORSPACE = "rec2100-hlg";
3
+ static SDR_MULTIPLIER = 2 ** 16 - 1;
4
+ static COLORSPACES = {
5
+ "rec2100-hlg": "rec2100hlg",
6
+ "display-p3": "p3",
7
+ srgb: "sRGB",
8
+ "rec2100-pq": "rec2100pq"
9
+ };
10
+ data;
11
+ height;
12
+ width;
13
+ constructor(width, height) {
14
+ this.height = height;
15
+ this.width = width;
16
+ }
17
+ static fromImageData(imageData) {
18
+ throw new Error("Method not implemented!");
19
+ }
20
+ static fromImageDataArray(width, height, imageDataArray) {
21
+ throw new Error("Method not implemented!");
22
+ }
23
+ static async loadSDRImageData(url) {
24
+ return fetch(url)
25
+ .then((response) => response.blob())
26
+ .then((blob) => {
27
+ return createImageBitmap(blob);
28
+ })
29
+ .then((bitmap) => {
30
+ const { width, height } = bitmap;
31
+ const offscreen = new OffscreenCanvas(width, height);
32
+ const ctx = offscreen.getContext("2d");
33
+ ctx.drawImage(bitmap, 0, 0);
34
+ return ctx.getImageData(0, 0, width, height);
35
+ });
36
+ }
37
+ getPixel(w, h) {
38
+ const pos = (h * this.width + w) * 4;
39
+ return this.data.slice(pos, pos + 4);
40
+ }
41
+ setPixel(w, h, px) {
42
+ const pos = (h * this.width + w) * 4;
43
+ this.data[pos + 0] = px[0];
44
+ this.data[pos + 1] = px[1];
45
+ this.data[pos + 2] = px[2];
46
+ this.data[pos + 3] = px[3];
47
+ }
48
+ clone() {
49
+ const copy = Object.create(Object.getPrototypeOf(this));
50
+ Object.assign(copy, this);
51
+ return copy;
52
+ }
53
+ }
54
+
1
55
  // A is m x n. B is n x p. product is m x p.
2
56
  function multiplyMatrices (A, B) {
3
57
  let m = A.length;
@@ -1610,7 +1664,7 @@ const LMStoXYZ_M$1 = [
1610
1664
  ];
1611
1665
  const LMStoLab_M = [
1612
1666
  [ 0.2104542683093140, 0.7936177747023054, -0.0040720430116193 ],
1613
- [ 1.9779985324311684, -2.4285922420485799, 0.4505937096174110 ],
1667
+ [ 1.9779985324311684, -2.42859224204858, 0.4505937096174110 ],
1614
1668
  [ 0.0259040424655478, 0.7827717124575296, -0.8086757549230774 ],
1615
1669
  ];
1616
1670
  // LMStoIab_M inverted
@@ -1903,7 +1957,7 @@ const d0 = 1.6295499532821566E-11;
1903
1957
 
1904
1958
  const XYZtoCone_M = [
1905
1959
  [ 0.41478972, 0.579999, 0.0146480 ],
1906
- [ -0.2015100, 1.120649, 0.0531008 ],
1960
+ [ -0.20151, 1.120649, 0.0531008 ],
1907
1961
  [ -0.0166008, 0.264800, 0.6684799 ],
1908
1962
  ];
1909
1963
  // XYZtoCone_M inverted
@@ -2106,7 +2160,7 @@ const im2 = 32 / 2523;
2106
2160
  // The matrix below includes the 4% crosstalk components
2107
2161
  // and is from the Dolby "What is ICtCp" paper"
2108
2162
  const XYZtoLMS_M = [
2109
- [ 0.3592832590121217, 0.6976051147779502, -0.0358915932320290 ],
2163
+ [ 0.3592832590121217, 0.6976051147779502, -0.035891593232029 ],
2110
2164
  [ -0.1920808463704993, 1.1004767970374321, 0.0753748658519118 ],
2111
2165
  [ 0.0070797844607479, 0.0748396662186362, 0.8433265453898765 ],
2112
2166
  ];
@@ -2255,7 +2309,7 @@ const tau = 2 * Math.PI;
2255
2309
  const cat16 = [
2256
2310
  [ 0.401288, 0.650173, -0.051461 ],
2257
2311
  [ -0.250268, 1.204414, 0.045854 ],
2258
- [ -0.002079, 0.048952, 0.953127 ],
2312
+ [ -2079e-6, 0.048952, 0.953127 ],
2259
2313
  ];
2260
2314
 
2261
2315
  const cat16Inv = [
@@ -2266,8 +2320,8 @@ const cat16Inv = [
2266
2320
 
2267
2321
  const m1 = [
2268
2322
  [460.0, 451.0, 288.0],
2269
- [460.0, -891.0, -261.0],
2270
- [460.0, -220.0, -6300.0],
2323
+ [460.0, -891, -261],
2324
+ [460.0, -220, -6300],
2271
2325
  ];
2272
2326
 
2273
2327
  const surroundMap = {
@@ -3219,7 +3273,7 @@ const toXYZ_M$5 = [
3219
3273
 
3220
3274
  // from ITU-R BT.2124-0 Annex 2 p.3
3221
3275
  const fromXYZ_M$5 = [
3222
- [ 1.716651187971268, -0.355670783776392, -0.253366281373660 ],
3276
+ [ 1.716651187971268, -0.355670783776392, -0.25336628137366 ],
3223
3277
  [ -0.666684351832489, 1.616481236634939, 0.0157685458139111 ],
3224
3278
  [ 0.017639857445311, -0.042770613257809, 0.942103121235474 ],
3225
3279
  ];
@@ -4578,7 +4632,7 @@ const toXYZ_M$1 = [
4578
4632
 
4579
4633
  const fromXYZ_M$1 = [
4580
4634
  [ 1.34578688164715830, -0.25557208737979464, -0.05110186497554526 ],
4581
- [ -0.54463070512490190, 1.50824774284514680, 0.02052744743642139 ],
4635
+ [ -0.5446307051249019, 1.50824774284514680, 0.02052744743642139 ],
4582
4636
  [ 0.00000000000000000, 0.00000000000000000, 1.21196754563894520 ],
4583
4637
  ];
4584
4638
 
@@ -5228,13 +5282,13 @@ function adapt (W1, W2, id = "Bradford") {
5228
5282
  defineCAT({
5229
5283
  id: "von Kries",
5230
5284
  toCone_M: [
5231
- [ 0.4002400, 0.7076000, -0.0808100 ],
5232
- [ -0.2263000, 1.1653200, 0.0457000 ],
5285
+ [ 0.4002400, 0.7076000, -0.08081 ],
5286
+ [ -0.2263, 1.1653200, 0.0457000 ],
5233
5287
  [ 0.0000000, 0.0000000, 0.9182200 ],
5234
5288
  ],
5235
5289
  fromCone_M: [
5236
5290
  [ 1.8599363874558397, -1.1293816185800916, 0.21989740959619328 ],
5237
- [ 0.3611914362417676, 0.6388124632850422, -0.000006370596838649899 ],
5291
+ [ 0.3611914362417676, 0.6388124632850422, -6370596838649899e-21 ],
5238
5292
  [ 0, 0, 1.0890636230968613 ],
5239
5293
  ],
5240
5294
  });
@@ -5244,9 +5298,9 @@ defineCAT({
5244
5298
  // Convert an array of XYZ values in the range 0.0 - 1.0
5245
5299
  // to cone fundamentals
5246
5300
  toCone_M: [
5247
- [ 0.8951000, 0.2664000, -0.1614000 ],
5248
- [ -0.7502000, 1.7135000, 0.0367000 ],
5249
- [ 0.0389000, -0.0685000, 1.0296000 ],
5301
+ [ 0.8951000, 0.2664000, -0.1614 ],
5302
+ [ -0.7502, 1.7135000, 0.0367000 ],
5303
+ [ 0.0389000, -0.0685, 1.0296000 ],
5250
5304
  ],
5251
5305
  // and back
5252
5306
  fromCone_M: [
@@ -5260,8 +5314,8 @@ defineCAT({
5260
5314
  id: "CAT02",
5261
5315
  // with complete chromatic adaptation to W2, so D = 1.0
5262
5316
  toCone_M: [
5263
- [ 0.7328000, 0.4296000, -0.1624000 ],
5264
- [ -0.7036000, 1.6975000, 0.0061000 ],
5317
+ [ 0.7328000, 0.4296000, -0.1624 ],
5318
+ [ -0.7036, 1.6975000, 0.0061000 ],
5265
5319
  [ 0.0030000, 0.0136000, 0.9834000 ],
5266
5320
  ],
5267
5321
  fromCone_M: [
@@ -5276,7 +5330,7 @@ defineCAT({
5276
5330
  toCone_M: [
5277
5331
  [ 0.401288, 0.650173, -0.051461 ],
5278
5332
  [ -0.250268, 1.204414, 0.045854 ],
5279
- [ -0.002079, 0.048952, 0.953127 ],
5333
+ [ -2079e-6, 0.048952, 0.953127 ],
5280
5334
  ],
5281
5335
  // the extra precision is needed to avoid roundtripping errors
5282
5336
  fromCone_M: [
@@ -5611,14 +5665,14 @@ class Color {
5611
5665
  }
5612
5666
  }
5613
5667
 
5614
- static extend (exports) {
5615
- if (exports.register) {
5616
- exports.register(Color);
5668
+ static extend (exports$1) {
5669
+ if (exports$1.register) {
5670
+ exports$1.register(Color);
5617
5671
  }
5618
5672
  else {
5619
5673
  // No register method, just add the module's functions
5620
- for (let name in exports) {
5621
- Color.defineFunction(name, exports[name]);
5674
+ for (let name in exports$1) {
5675
+ Color.defineFunction(name, exports$1[name]);
5622
5676
  }
5623
5677
  }
5624
5678
  }
@@ -5749,29 +5803,19 @@ Color.extend(luminance);
5749
5803
  Color.extend(interpolation);
5750
5804
  Color.extend(contrastMethods);
5751
5805
 
5752
- class Uint16Image {
5753
- height;
5754
- width;
5806
+ class Uint16Image extends HDRImage {
5755
5807
  data;
5756
- static DEFAULT_COLORSPACE = "rec2100-hlg";
5757
- static SDR_MULTIPLIER = 2 ** 16 - 1;
5758
- static COLORSPACES = {
5759
- "rec2100-hlg": "rec2100hlg",
5760
- "display-p3": "p3",
5761
- srgb: "sRGB",
5762
- "rec2100-pq": "rec2100pq"
5763
- };
5764
5808
  colorSpace;
5765
5809
  constructor(width, height, colorspace) {
5810
+ super(width, height);
5766
5811
  if (colorspace === undefined || colorspace === null) {
5767
- this.colorSpace = Uint16Image.DEFAULT_COLORSPACE;
5812
+ this.colorSpace = HDRImage.DEFAULT_COLORSPACE;
5768
5813
  }
5769
5814
  else {
5770
5815
  this.colorSpace = colorspace;
5771
5816
  }
5772
- this.height = height;
5773
- this.width = width;
5774
5817
  this.data = new Uint16Array(height * width * 4);
5818
+ console.warn("Uint16Image isn't suported anymore, your browser will certainly drop support soon, use Float16Image instead.");
5775
5819
  }
5776
5820
  fill(color) {
5777
5821
  if (color.length != 4) {
@@ -5785,17 +5829,6 @@ class Uint16Image {
5785
5829
  }
5786
5830
  return this;
5787
5831
  }
5788
- getPixel(w, h) {
5789
- const pos = (h * this.width + w) * 4;
5790
- return this.data.slice(pos, pos + 4);
5791
- }
5792
- setPixel(w, h, px) {
5793
- const pos = (h * this.width + w) * 4;
5794
- this.data[pos + 0] = px[0];
5795
- this.data[pos + 1] = px[1];
5796
- this.data[pos + 2] = px[2];
5797
- this.data[pos + 3] = px[3];
5798
- }
5799
5832
  static scaleUint8ToUint16(val) {
5800
5833
  return (val << 8) | val;
5801
5834
  }
@@ -5833,29 +5866,12 @@ class Uint16Image {
5833
5866
  this.data.set(fn(this.data[i], this.data[i + 1], this.data[i + 2], this.data[i + 3]), i);
5834
5867
  }
5835
5868
  }
5836
- static async loadSDRImageData(url) {
5837
- return fetch(url)
5838
- .then((response) => response.blob())
5839
- .then((blob) => {
5840
- return createImageBitmap(blob);
5841
- })
5842
- .then((bitmap) => {
5843
- const { width, height } = bitmap;
5844
- const offscreen = new OffscreenCanvas(width, height);
5845
- const ctx = offscreen.getContext("2d");
5846
- ctx?.drawImage(bitmap, 0, 0);
5847
- return ctx;
5848
- })
5849
- .then((ctx) => {
5850
- return ctx?.getImageData(0, 0, ctx?.canvas.width, ctx?.canvas.height);
5851
- });
5852
- }
5853
5869
  static fromImageData(imageData) {
5854
5870
  const i = new Uint16Image(imageData.width, imageData.height);
5855
5871
  if (imageData.colorSpace == "srgb") {
5856
5872
  i.data = Uint16Image.convertArrayToRec2100_hlg(imageData.data);
5857
5873
  }
5858
- else if (imageData.colorSpace == Uint16Image.DEFAULT_COLORSPACE) {
5874
+ else if (imageData.colorSpace == HDRImage.DEFAULT_COLORSPACE) {
5859
5875
  i.data = imageData.data;
5860
5876
  }
5861
5877
  else {
@@ -5876,19 +5892,180 @@ class Uint16Image {
5876
5892
  if (imageData.colorSpace == "srgb") {
5877
5893
  this.data = Uint16Image.convertArrayToRec2100_hlg(imageData.data);
5878
5894
  }
5879
- else if (imageData.colorSpace == Uint16Image.DEFAULT_COLORSPACE) {
5895
+ else if (imageData.colorSpace == HDRImage.DEFAULT_COLORSPACE) {
5880
5896
  this.data = imageData.data;
5881
5897
  }
5882
5898
  else {
5883
5899
  throw new Error(`ColorSpace ${imageData.colorSpace} isn't supported!`);
5884
5900
  }
5885
- this.colorSpace = Uint16Image.DEFAULT_COLORSPACE;
5901
+ this.colorSpace = HDRImage.DEFAULT_COLORSPACE;
5886
5902
  }
5887
- clone() {
5888
- const i = new Uint16Image(this.width, this.height, this.colorSpace);
5889
- i.data = this.data.slice();
5903
+ }
5904
+
5905
+ class Float16Image extends HDRImage {
5906
+ data;
5907
+ static DEFAULT_PIXELFORMAT = "rgba-float16";
5908
+ colorSpace;
5909
+ pixelFormat;
5910
+ constructor(width, height, colorspace, pixelFormat) {
5911
+ super(width, height);
5912
+ if (colorspace === undefined || colorspace === null) {
5913
+ this.colorSpace = Float16Image.DEFAULT_COLORSPACE;
5914
+ }
5915
+ else {
5916
+ this.colorSpace = colorspace;
5917
+ }
5918
+ if (pixelFormat === undefined || pixelFormat === null || (pixelFormat !== "rgba-unorm8" && pixelFormat !== "rgba-float16")) {
5919
+ pixelFormat = Float16Image.DEFAULT_PIXELFORMAT;
5920
+ }
5921
+ this.pixelFormat = pixelFormat;
5922
+ this.data = new Float16Array(height * width * 4);
5923
+ }
5924
+ fill(color) {
5925
+ if (color.length != 4) {
5926
+ return;
5927
+ }
5928
+ for (let i = 0; i < this.data.length; i += 4) {
5929
+ this.data[i] = color[0];
5930
+ this.data[i + 1] = color[1];
5931
+ this.data[i + 2] = color[2];
5932
+ this.data[i + 3] = color[3];
5933
+ }
5934
+ return this;
5935
+ }
5936
+ static scaleUint8ToFloat16(val) {
5937
+ return (val << 8) | val;
5938
+ }
5939
+ getImageData() {
5940
+ if (this.data === undefined || this.data === null) {
5941
+ return null;
5942
+ }
5943
+ return new ImageData(this.data, this.width, this.height, {
5944
+ colorSpace: this.colorSpace,
5945
+ pixelFormat: this.pixelFormat
5946
+ });
5947
+ }
5948
+ static convertPixelToRec2100_hlg(pixel) {
5949
+ const colorJScolorSpace = Float16Image.COLORSPACES["rec2100-hlg"];
5950
+ const srgbColor = new Color("srgb", Array.from(pixel.slice(0, 3)).map((band) => {
5951
+ return band / 255;
5952
+ }), pixel[3] / 255);
5953
+ const rec2100hlgColor = srgbColor.to(colorJScolorSpace);
5954
+ const hlg = rec2100hlgColor.coords.map((band) => {
5955
+ return Math.round(band * Float16Image.SDR_MULTIPLIER);
5956
+ });
5957
+ hlg.push(rec2100hlgColor.alpha * Float16Image.SDR_MULTIPLIER);
5958
+ return Float16Array.from(hlg);
5959
+ }
5960
+ static convertArrayToRec2100_hlg(data) {
5961
+ const uint16Data = new Float16Array(data.length);
5962
+ for (let i = 0; i < data.length; i += 4) {
5963
+ const rgbPixel = data.slice(i, i + 4);
5964
+ const pixel = Float16Image.convertPixelToRec2100_hlg(rgbPixel);
5965
+ uint16Data.set(pixel, i);
5966
+ }
5967
+ return uint16Data;
5968
+ }
5969
+ pixelCallback(fn) {
5970
+ for (let i = 0; i < this.data.length; i += 4) {
5971
+ this.data.set(fn(this.data[i], this.data[i + 1], this.data[i + 2], this.data[i + 3]), i);
5972
+ }
5973
+ }
5974
+ static fromImageData(imageData) {
5975
+ const i = new Float16Image(imageData.width, imageData.height);
5976
+ if (imageData.colorSpace == "srgb") {
5977
+ i.data = Float16Image.convertArrayToRec2100_hlg(imageData.data);
5978
+ }
5979
+ else if (imageData.colorSpace == HDRImage.DEFAULT_COLORSPACE) {
5980
+ i.data = imageData.data;
5981
+ }
5982
+ else {
5983
+ throw new Error(`ColorSpace ${imageData.colorSpace} isn't supported!`);
5984
+ }
5890
5985
  return i;
5891
5986
  }
5987
+ static fromImageDataArray(width, height, imageDataArray) {
5988
+ const i = new Float16Image(width, height);
5989
+ i.data = Float16Image.convertArrayToRec2100_hlg(imageDataArray);
5990
+ return i;
5991
+ }
5992
+ static async fromURL(url) {
5993
+ return Float16Image.loadSDRImageData(url).then((data) => {
5994
+ if (data !== undefined) {
5995
+ return Float16Image.fromImageData(data);
5996
+ }
5997
+ });
5998
+ }
5999
+ setImageData(imageData) {
6000
+ this.width = imageData.width;
6001
+ this.height = imageData.height;
6002
+ if (imageData.colorSpace == "srgb") {
6003
+ this.data = Float16Image.convertArrayToRec2100_hlg(imageData.data);
6004
+ }
6005
+ else if (imageData.colorSpace == HDRImage.DEFAULT_COLORSPACE) {
6006
+ this.data = imageData.data;
6007
+ }
6008
+ else {
6009
+ throw new Error(`ColorSpace ${imageData.colorSpace} isn't supported!`);
6010
+ }
6011
+ this.colorSpace = HDRImage.DEFAULT_COLORSPACE;
6012
+ }
6013
+ clone() {
6014
+ const c = new Float16Image(this.width, this.height, this.colorSpace, this.pixelFormat);
6015
+ c.data = this.data.slice();
6016
+ return c;
6017
+ }
6018
+ }
6019
+
6020
+ function getBrowserVersion() {
6021
+ const majorVersionStr = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
6022
+ if (majorVersionStr == null) {
6023
+ console.warn(`Unsupported / untested browser (${navigator.userAgent}) detected - using more modern defaults`);
6024
+ }
6025
+ else if (majorVersionStr.length >= 3) {
6026
+ return Number(majorVersionStr[2]);
6027
+ }
6028
+ return null;
6029
+ }
6030
+
6031
+ function getHdrOptions() {
6032
+ const hdrOptions = { colorSpace: HDRImage.DEFAULT_COLORSPACE };
6033
+ const browserMajorVersion = getBrowserVersion();
6034
+ if (browserMajorVersion == null) {
6035
+ console.warn(`Unsupported / untested browser (${navigator.userAgent}) detected - using more modern defaults`);
6036
+ hdrOptions["colorType"] = "float16";
6037
+ }
6038
+ else {
6039
+ if (browserMajorVersion < 134) {
6040
+ console.warn("Older Chrome / chromium based browser detected, using older `pixelFormat`");
6041
+ }
6042
+ else {
6043
+ hdrOptions["pixelFormat"] = "float16";
6044
+ }
6045
+ }
6046
+ return hdrOptions;
6047
+ }
6048
+ function initHDRCanvas(canvas) {
6049
+ canvas.configureHighDynamicRange({ mode: "extended" });
6050
+ const ctx = canvas.getContext("2d", getHdrOptions());
6051
+ return ctx;
6052
+ }
6053
+ function defaultGetContextHDR() {
6054
+ HTMLCanvasElement.prototype._getContext = HTMLCanvasElement.prototype.getContext;
6055
+ HTMLCanvasElement.prototype.getContext = function (type, options) {
6056
+ if (options !== undefined) {
6057
+ options = Object.assign({}, options, getHdrOptions());
6058
+ }
6059
+ else {
6060
+ options = getHdrOptions();
6061
+ }
6062
+ return this._getContext(type, options);
6063
+ };
6064
+ }
6065
+ function resetGetContext() {
6066
+ if (typeof HTMLCanvasElement.prototype._getContext === "function") {
6067
+ HTMLCanvasElement.prototype.getContext = HTMLCanvasElement.prototype._getContext;
6068
+ }
5892
6069
  }
5893
6070
 
5894
6071
  function checkHDR() {
@@ -5911,55 +6088,28 @@ function checkHDR() {
5911
6088
  return false;
5912
6089
  }
5913
6090
  catch (e) {
5914
- console.error("Bad window.screen test", e);
6091
+ console.error("Exception during check for HDR", e);
5915
6092
  return false;
5916
6093
  }
5917
6094
  }
5918
6095
  function checkHDRCanvas() {
5919
- const colorSpace = "rec2100-pq";
5920
6096
  try {
5921
6097
  const canvas = document.createElement("canvas");
5922
6098
  if (!canvas.getContext) {
5923
6099
  return false;
5924
6100
  }
5925
- const ctx = canvas.getContext("2d", {
5926
- colorSpace: colorSpace,
5927
- pixelFormat: "float16"
5928
- });
6101
+ const options = getHdrOptions();
6102
+ const ctx = canvas.getContext("2d", options);
5929
6103
  if (ctx === null) {
5930
6104
  return false;
5931
6105
  }
5932
6106
  return true;
5933
6107
  }
5934
- catch (e) {
6108
+ catch {
5935
6109
  console.error("Bad canvas ColorSpace test - make sure that the Chromium browser flag 'enable-experimental-web-platform-features' has been enabled");
5936
6110
  return false;
5937
6111
  }
5938
6112
  }
5939
6113
 
5940
- const hdr_options = { colorSpace: Uint16Image.DEFAULT_COLORSPACE, pixelFormat: "float16" };
5941
- function initHDRCanvas(canvas) {
5942
- canvas.configureHighDynamicRange({ mode: "extended" });
5943
- const ctx = canvas.getContext("2d", hdr_options);
5944
- return ctx;
5945
- }
5946
- function defaultGetContextHDR() {
5947
- HTMLCanvasElement.prototype._getContext = HTMLCanvasElement.prototype.getContext;
5948
- HTMLCanvasElement.prototype.getContext = function (type, options) {
5949
- if (options !== undefined) {
5950
- options = Object.assign({}, options, hdr_options);
5951
- }
5952
- else {
5953
- options = hdr_options;
5954
- }
5955
- return this._getContext(type, options);
5956
- };
5957
- }
5958
- function resetGetContext() {
5959
- if (typeof HTMLCanvasElement.prototype._getContext === "function") {
5960
- HTMLCanvasElement.prototype.getContext = HTMLCanvasElement.prototype._getContext;
5961
- }
5962
- }
5963
-
5964
- export { Uint16Image, checkHDR, checkHDRCanvas, defaultGetContextHDR, initHDRCanvas, resetGetContext };
6114
+ export { Float16Image, HDRImage, Uint16Image, checkHDR, checkHDRCanvas, defaultGetContextHDR, initHDRCanvas, resetGetContext };
5965
6115
  //# sourceMappingURL=hdr-canvas.js.map