@@ -65378,12 +65378,15 @@ typedef (<span>HTMLOrSVGImageElement</span> or
65378
65378
65379
65379
enum <dfn enum>PredefinedColorSpace</dfn> { "<span data-x="dom-PredefinedColorSpace-srgb">srgb</span>", "<span data-x="dom-PredefinedColorSpace-display-p3">display-p3</span>" };
65380
65380
65381
+ enum <dfn enum>CanvasColorType</dfn> { "<span data-x="dom-CanvasColorType-unorm8">unorm8</span>", "<span data-x="dom-CanvasColorType-float16">float16</span>" };
65382
+
65381
65383
enum <dfn enum>CanvasFillRule</dfn> { "<span data-x="dom-context-2d-fillRule-nonzero">nonzero</span>", "<span data-x="dom-context-2d-fillRule-evenodd">evenodd</span>" };
65382
65384
65383
65385
dictionary <dfn dictionary>CanvasRenderingContext2DSettings</dfn> {
65384
65386
boolean <span data-x="dom-CanvasRenderingContext2DSettings-alpha">alpha</span> = true;
65385
65387
boolean <span data-x="dom-CanvasRenderingContext2DSettings-desynchronized">desynchronized</span> = false;
65386
65388
<span>PredefinedColorSpace</span> <span data-x="dom-CanvasRenderingContext2DSettings-colorSpace">colorSpace</span> = "<span data-x="dom-PredefinedColorSpace-srgb">srgb</span>";
65389
+ <span>CanvasColorType</span> <span data-x="dom-CanvasRenderingContext2DSettings-colorType">colorType</span> = "<span data-x="dom-CanvasColorType-unorm8">unorm8</span>";
65387
65390
boolean <span data-x="dom-CanvasRenderingContext2DSettings-willReadFrequently">willReadFrequently</span> = false;
65388
65391
};
65389
65392
@@ -65675,6 +65678,10 @@ interface <dfn interface>Path2D</dfn> {
65675
65678
specifies the <span data-x="concept-canvas-color-space">color space</span> of the rendering
65676
65679
context.</p>
65677
65680
65681
+ <p>The <code data-x="dom-CanvasRenderingContext2DSettings-colorType">colorType</code> member
65682
+ specifies the <span data-x="concept-canvas-color-type">color type</span> of the rendering
65683
+ context.</p>
65684
+
65678
65685
<p>If the <code
65679
65686
data-x="dom-CanvasRenderingContext2DSettings-willReadFrequently">willReadFrequently</code>
65680
65687
member is true, then the context is marked for <span
@@ -65699,6 +65706,10 @@ interface <dfn interface>Path2D</dfn> {
65699
65706
a string indicating the context's <span data-x="concept-canvas-color-space">color
65700
65707
space</span>.</li>
65701
65708
65709
+ <li><code data-x="dom-CanvasRenderingContext2DSettings-colorType">colorType</code> member is
65710
+ a string indicating the context's <span data-x="concept-canvas-color-type">color
65711
+ type</span>.</li>
65712
+
65702
65713
<li><code data-x="dom-CanvasRenderingContext2DSettings-willReadFrequently">willReadFrequently</code>
65703
65714
member is true if the context is marked for <span data-x="concept-canvas-will-read-frequently">readback
65704
65715
optimization</span>.</li>
@@ -65832,6 +65843,19 @@ context.fillRect(100,0,50,50); // only this square remains</code></pre>
65832
65843
65833
65844
<hr>
65834
65845
65846
+ <p>The <code>CanvasColorType</code> enumeration is used to specify the <span
65847
+ data-x="concept-canvas-color-type">color type</span> of the canvas's backing store.</p>
65848
+
65849
+ <p>The "<dfn enum-value for="CanvasColorType"><code
65850
+ data-x="dom-CanvasColorType-unorm8">unorm8</code></dfn>" value indicates that the type
65851
+ for all color channels is 8-bit unsigned normalized.</p>
65852
+
65853
+ <p>The "<dfn enum-value for="CanvasColorType"><code
65854
+ data-x="dom-CanvasColorType-float16">float16</code></dfn>" value indicates that the type
65855
+ for all color channels is 16-bit floating point.</p>
65856
+
65857
+ <hr>
65858
+
65835
65859
<p>The <code>CanvasFillRule</code> enumeration is used to select the <dfn>fill rule</dfn>
65836
65860
algorithm by which to determine if a point is inside or outside a path.</p>
65837
65861
@@ -65974,6 +65998,12 @@ context.fillRect(100,0,50,50); // only this square remains</code></pre>
65974
65998
data-x="concept-canvas-color-space">color space</span> indicates the color space for the
65975
65999
<span>output bitmap</span>.</p>
65976
66000
66001
+ <p>The <code>CanvasSettings</code> object also has a <dfn
66002
+ data-x="concept-canvas-color-type">color type</dfn> setting of type
66003
+ <code>CanvasColorType</code>. The <code>CanvasSettings</code> object's <span
66004
+ data-x="concept-canvas-color-type">color type</span> indicates the data type of the
66005
+ color and alpha components of the pixels of the <span>output bitmap</span>.</p>
66006
+
65977
66007
<p>To <dfn data-x="canvas-setting-init-bitmap">initialize a <code>CanvasSettings</code> output
65978
66008
bitmap</dfn>, given a <code>CanvasSettings</code> <var>context</var> and a
65979
66009
<code>CanvasRenderingContext2DSettings</code> <var>settings</var>:</p>
@@ -65992,6 +66022,10 @@ context.fillRect(100,0,50,50); // only this square remains</code></pre>
65992
66022
<var>settings</var>["<dfn dict-member for="CanvasRenderingContext2DSettings"><code
65993
66023
data-x="dom-CanvasRenderingContext2DSettings-colorSpace">colorSpace</code></dfn>"].</p></li>
65994
66024
66025
+ <li><p>Set <var>context</var>'s <span data-x="concept-canvas-color-type">color type</span> to
66026
+ <var>settings</var>["<dfn dict-member for="CanvasRenderingContext2DSettings"><code
66027
+ data-x="dom-CanvasRenderingContext2DSettings-colorType">colorType</code></dfn>"].</p></li>
66028
+
65995
66029
<li><p>Set <var>context</var>'s <span data-x="concept-canvas-will-read-frequently">will read
65996
66030
frequently</span> to <var>settings</var>["<dfn dict-member
65997
66031
for="CanvasRenderingContext2DSettings"><code
@@ -66006,6 +66040,8 @@ context.fillRect(100,0,50,50); // only this square remains</code></pre>
66006
66040
<span>this</span>'s <span data-x="concept-canvas-desynchronized">desynchronized</span>, "<code
66007
66041
data-x="dom-CanvasRenderingContext2DSettings-colorSpace">colorSpace</code>" → <span>this</span>'s
66008
66042
<span data-x="concept-canvas-color-space">color space</span>, "<code
66043
+ data-x="dom-CanvasRenderingContext2DSettings-colorType">colorType</code>" → <span>this</span>'s
66044
+ <span data-x="concept-canvas-color-type">color type</span>, "<code
66009
66045
data-x="dom-CanvasRenderingContext2DSettings-willReadFrequently">willReadFrequently</code>" →
66010
66046
<span>this</span>'s <span data-x="concept-canvas-will-read-frequently">will read frequently</span>
66011
66047
]».</p>
@@ -71844,6 +71880,16 @@ interface <dfn interface>OffscreenCanvasRenderingContext2D</dfn> {
71844
71880
data-x="dom-canvas-toBlob">toBlob()</code> method to the canvas, given the appropriate dimensions,
71845
71881
has no visible effect beyond, at most, clipping colors of the canvas to a more narrow gamut.</p>
71846
71882
71883
+ <p>For image types that support multiple bit depths, the serialized image must use the bit depth
71884
+ that best preserves content of the underlying bitmap.</p>
71885
+
71886
+ <p class="example">For example, when serializing a 2D context that has
71887
+ <span data-x="concept-canvas-color-type">color type</span> of
71888
+ <span data-x="dom-CanvasColorType-float16">float16</span> to <var>type</var>
71889
+ "<code>image/png</code>", the resulting image would have 16 bits per sample.
71890
+ This serialization will still lose significant detail (all values less than 0.5/65535
71891
+ would be clamped to 0, and all values greater than 1 would be clamped to 1).</p>
71892
+
71847
71893
<p>If <var>type</var> is an image format that supports variable quality (such as
71848
71894
"<code>image/jpeg</code>"), <var>quality</var> is given, and <var>type</var> is not
71849
71895
"<code>image/png</code>", then, if <var>quality</var> <span data-x="js-Number">is a Number</span>
@@ -71983,9 +72029,9 @@ interface <dfn interface>OffscreenCanvasRenderingContext2D</dfn> {
71983
72029
<p>As certain colors can only be represented under premultiplied alpha (for instance, additive
71984
72030
colors), and others can only be represented under non-premultiplied alpha (for instance,
71985
72031
"invisible" colors which hold certain red, green, and blue values even with no opacity); and
71986
- division and multiplication on 8-bit integers (which is how canvas's colors are currently stored)
71987
- entails a loss of precision, converting between premultiplied and non-premultiplied alpha is a
71988
- lossy operation on colors that are not fully opaque.</p>
72032
+ division and multiplication using finite precision entails a loss of accuracy, converting between
72033
+ premultiplied and non-premultiplied alpha is a lossy operation on colors that are not fully
72034
+ opaque.</p>
71989
72035
71990
72036
<p>A <code>CanvasRenderingContext2D</code>'s <span>output bitmap</span> and an
71991
72037
<code>OffscreenCanvasRenderingContext2D</code>'s <span>output bitmap</span> must use premultiplied
0 commit comments