HTML Standard Tracker

Filter

File a bug

SVNBugCommentTime (UTC)
6134[Gecko] [Internet Explorer] [Opera] [Webkit] Attempt to define canvas.toBlob().2011-05-12 20:40
@@ -37292,23 +37292,22 @@ interface <dfn>TextTrackCue</dfn> {
    <dt>Content attributes:</dt>
    <dd><span>Global attributes</span></dd>
    <dd><code title="attr-canvas-width">width</code></dd>
    <dd><code title="attr-canvas-height">height</code></dd>
    <dt>DOM interface:</dt>
    <dd>
     <pre class="idl">interface <dfn>HTMLCanvasElement</dfn> : <span>HTMLElement</span> {
            attribute unsigned long <span title="dom-canvas-width">width</span>;
            attribute unsigned long <span title="dom-canvas-height">height</span>;
 
-  DOMString <span title="dom-canvas-toDataURL">toDataURL</span>(in optional DOMString type, in any... args);<!--
-  v5:
-  void <span title="dom-canvas-toBlob">toBlob</span>(in <span>FileCallback</span>, in optional DOMString type, in any... args);-->
+  DOMString <span title="dom-canvas-toDataURL">toDataURL</span>(in optional DOMString type, in any... args);
+  void <span title="dom-canvas-toBlob">toBlob</span>(in <span>FileCallback</span>, in optional DOMString type, in any... args);
 
   object <span title="dom-canvas-getContext">getContext</span>(in DOMString contextId, in any... args);
 };</pre>
    </dd>
   </dl>
 
   <p>The <code>canvas</code> element provides scripts with a
   resolution-dependent bitmap canvas, which can be used for rendering
   graphs, game graphics, or other visual images on the fly.</p>
 
@@ -37578,128 +37577,180 @@ interface <dfn>TextTrackCue</dfn> {
     <p>Returns a <span title="data protocol"><code
     title="">data:</code> URL</span> for the image in the canvas.</p>
 
     <p>The first argument, if provided, controls the type of the image
     to be returned (e.g. PNG or JPEG). The default is <code
     title="">image/png</code>; that type is also used if the given
     type isn't supported. The other arguments are specific to the
     type, and control the way that the image is generated, as given in
     the table below.</p>
 
+    <p>When trying to use types other than "<code>image/png</code>",
+    authors can check if the image was really returned in the
+    requested format by checking to see if the returned string starts
+    with one of the exact strings "<code
+    title="">data:image/png,</code>" or "<code
+    title="">data:image/png;</code>". If it does, the image is PNG,
+    and thus the requested type was not supported. (The one exception
+    to this is if the canvas has either no height or no width, in
+    which case the result might simply be "<code
+    title="">data:,</code>".)</p>
+
    </dd>
 
-   <!-- v5: toBlob -->
+   <dt><var title="">canvas</var> . <code title="dom-canvas-toBlob">toBlob</code>(<var title="">callback</var> [, <var title="">type</var>, ... ])</dt>
+
+   <dd>
+
+    <p>Creates a <code>Blob</code> object representing a file
+    containing the image in the canvas, and invokes a callback with a
+    handle to that object.</p>
+
+    <p>The second argument, if provided, controls the type of the
+    image to be returned (e.g. PNG or JPEG). The default is <code
+    title="">image/png</code>; that type is also used if the given
+    type isn't supported. The other arguments are specific to the
+    type, and control the way that the image is generated, as given in
+    the table below.</p>
+
+   </dd>
 
   </dl>
 
   <div class="impl">
 
   <p>The <dfn
   title="dom-canvas-toDataURL"><code>toDataURL()</code></dfn> method
-  must, when called with no arguments, return a <span title="data
-  protocol"><code title="">data:</code> URL</span> containing a
-  representation of the image as a PNG file. <a
-  href="#refsPNG">[PNG]</a> <a href="#refsRFC2397">[RFC2397]</a></p>
+  must run the following steps:</p>
 
-<!--
-  v5:
-  void <span title="dom-canvas-toBlob">toBlob</span>(in <span>FileCallback</span>, in optional DOMString type, in any... args);
--->
+  <ol>
 
-  <p>If the canvas has no pixels (i.e. either its horizontal dimension
-  or its vertical dimension is zero) then the method must return the
-  string "<code title="">data:,</code>". (This is the shortest <span
-  title="data protocol"><code title="">data:</code> URL</span>; it
-  represents the empty string in a <code title="">text/plain</code>
-  resource.)</p>
-
-  <p>When the <code title="dom-canvas-toDataURL">toDataURL(<var
-  title="">type</var>)</code> method is called with one <em>or
-  more</em> arguments, it must return a <span title="data
-  protocol"><code title="">data:</code> URL</span> containing a
-  representation of the image in the format given by <var
-  title="">type</var>. The possible values are <span title="MIME
-  type">MIME types</span> with no parameters, for example
-  <code>image/png</code>, <code>image/jpeg</code>, or even maybe
-  <code>image/svg+xml</code> if the implementation actually keeps
-  enough information to reliably render an SVG image from the
-  canvas.</p>
-
-  <p>For image types that do not support an alpha channel, the image
-  must be composited onto a solid black background using the
-  source-over operator, and the resulting image must be the one used
-  to create the <span title="data protocol"><code
-  title="">data:</code> URL</span>.</p>
-
-  <p>Only support for <code>image/png</code> is required. User agents
-  may support other types. If the user agent does not support the
-  requested type, it must return the image using the PNG format.</p>
+   <li><p>If the canvas has no pixels (i.e. either its horizontal
+   dimension or its vertical dimension is zero) then return the string
+   "<code title="">data:,</code>" and abort these steps. (This is the
+   shortest <span title="data protocol"><code title="">data:</code>
+   URL</span>; it represents the empty string in a <code
+   title="">text/plain</code> resource.)</p></li>
 
-  <p>User agents must <span title="converted to ASCII
-  lowercase">convert the provided type to ASCII lowercase</span>
-  before establishing if they support that type and before creating
-  the <span title="data protocol"><code title="">data:</code>
-  URL</span>.</p>
+   <li><p>Let <var title="">file</var> be <span>a serialization of the
+   image as a file</span>, using the method's arguments (if any) as
+   the <var title="">arguments</var>.</p></li>
 
-  </div>
+   <li><p>Return a <span title="data protocol"><code
+   title="">data:</code> URL</span> representing <var
+   title="">file</var>. <a href="#refsRFC2397">[RFC2397]</a></p>
 
-  <p class="note">When trying to use types other than
-  <code>image/png</code>, authors can check if the image was really
-  returned in the requested format by checking to see if the returned
-  string starts with one of the exact strings "<code
-  title="">data:image/png,</code>" or "<code
-  title="">data:image/png;</code>". If it does, the image is PNG, and
-  thus the requested type was not supported. (The one exception to
-  this is if the canvas has either no height or no width, in which
-  case the result might simply be "<code title="">data:,</code>".)</p>
+   <!-- should we explicitly require the URL to be base64-encoded and
+   not have any parameters, to ensure the same exact URL is generated
+   in each browser? -->
 
-  <div class="impl">
+  </ol>
+
+  <p>The <dfn
+  title="dom-canvas-toBlob"><code>toBlob()</code></dfn> method
+  must run the following steps:</p>
+
+  <ol>
+
+   <li><p>Let <var title="">callback</var> be the first
+   argument.</p></li>
+
+   <li><p>Let <var title="">arguments</var> be the second and
+   subsequent arguments to the method, if any.</p></li>
+
+   <li><p>Let <var title="">file</var> be <span>a serialization of the
+   image as a file</span>, using <var
+   title="">arguments</var>.</p></li>
+
+   <li><p>Return, but continue running these steps
+   asynchronously.</p></li>
+
+   <li><p>If <var title="">callback</var> is null, abort these
+   steps.</p></li>
+
+   <li><p><span>Queue a task</span> to invoke the
+   <code>FileCallback</code> <var title="">callback</var> with a
+   <code>Blob</code> object representing <var title="">file</var> as
+   its argument. The <span>task source</span> for this task is the
+   <dfn>canvas blob serialization task source</dfn>. <a
+   href="#refsFILESYSTEMAPI">[FILESYSTEMAPI]</a> <a
+   href="#refsFILEAPI">[FILEAPI]</a> </p></li>
 
-  <p>If the method is invoked with the first argument giving a type
-  corresponding to one of the types given in the first column of the
-  following table, and the user agent supports that type, then the
+  </ol>
+
+  <p>When a user agent is to create <dfn>a serialization of the image
+  as a file</dfn>, optionally with some given <var
+  title="">arguments</var>, it must create an image file in the format
+  given by the first value of <var title="">arguments</var>, or, if
+  there are no <var title="">arguments</var>, in the PNG format. <a
+  href="#refsPNG">[PNG]</a></p>
+
+  <p>If <var title="">arguments</var> is not empty, the first value
+  must be interpreted as a <span title="MIME type">MIME type</span>
+  giving the format to use. If the type has any parameters, it must be
+  treated as not supported.</p>
+
+  <p class="example">For example, the value "<code>image/png</code>" would
+  mean to generate a PNG image, the value "<code>image/jpeg</code>"
+  would mean to generate a JPEG image, and the value
+  "<code>image/svg+xml</code>" would mean to generate an SVG image
+  (which would probably require that the implementation actually keep
+  enough information to reliably render an SVG image from the canvas).</p>
+
+  <p>User agents must support PNG ("<code>image/png</code>"). User
+  agents may support other types. If the user agent does not support
+  the requested type, it must create the file using the PNG format. <a
+  href="#refsPNG">[PNG]</a></p>
+
+  <p>User agents must <span title="converted to ASCII
+  lowercase">convert the provided type to ASCII lowercase</span>
+  before establishing if they support that type.</p>
+
+  <p>For image types that do not support an alpha channel, the
+  serialized image must be the canvas image composited onto a solid
+  black background using the source-over operator.</p>
+
+  <p>If the first argument in <var title="">arguments</var> gives a
+  type corresponding to one of the types given in the first column of
+  the following table, and the user agent supports that type, then the
   subsequent arguments, if any, must be treated as described in the
   second cell of that row.</p>
 
   </div>
 
   <table>
    <thead>
-    <tr> <th> Type <th> Other arguments
+    <tr> <th> Type <th> Other arguments <th> Reference
    <tbody>
     <tr>
-     <td> image/jpeg
+     <td> <code>image/jpeg</code>
      <td> The second argument<span class="impl">, if it</span> is a
      number in the range 0.0 to 1.0 inclusive<span class="impl">, must
      be</span> treated as the desired quality level. <span
      class="impl">If it is not a number or is outside that range, the
      user agent must use its default value, as if the argument had
      been omitted.</span>
+     <td> <a href="#refsJPEG">[JPEG]</a>
   </table>
 
   <div class="impl">
 
   <p>For the purposes of these rules, an argument is considered to be
   a number if it is converted to an IDL double value by the rules for
   handling arguments of type <code title="">any</code> in the Web IDL
   specification. <a href="#refsWEBIDL">[WEBIDL]</a></p>
 
   <p>Other arguments must be ignored and must not cause the user agent
   to raise an exception. A future version of this specification will
-  probably define other parameters to be passed to <code
-  title="dom-canvas-toDataURL">toDataURL()</code> to allow authors to
-  more carefully control compression settings, image metadata,
-  etc.</p>
-
-  <!-- should we explicitly require the URL to be base64-encoded and
-  not have any parameters, to ensure the same exact URL is generated
-  in each browser? -->
+  probably define other parameters to be passed to these methods to
+  allow authors to more carefully control compression settings, image
+  metadata, etc.</p>
 
   </div>
 
   <!--END w3c-html--><!--2DCONTEXT-->
 
   <div data-component="HTML Canvas 2D Context (editor: Ian Hickson)">
 
   <h5 id="2dcontext">The 2D context</h5>
 
   <!-- v2: we're on v4.1. suggestions for next version are marked v5, v6. -->
@@ -43141,21 +43192,21 @@ side in the right column.&lt;/p>
 
   <p>For tables with large volumes of numeric content, using
   monospaced fonts can help users see patterns, especially in
   situations where a user agent does not render the borders.
   (Unfortunately, for historical reasons, not rendering borders on
   tables is a common default.)</p>
 
   <p>In speech media, table cells can be distinguished by reporting
   the corresponding headers before reading the cell's contents, and by
   allowing users to navigate the table in a grid fashion, rather than
-  serialising the entire contents of the table in source order.</p>
+  serializing the entire contents of the table in source order.</p>
 
   <p>Authors are encouraged to use CSS to achieve these effects.</p>
 
   <div class="impl">
   <p>User agents are encouraged to render tables using these
   techniques whenever the page does not use CSS and the table is not
   classified as a layout table.</p>
   </div>
 
 
@@ -112057,20 +112108,25 @@ interface <span>HTMLDocument</span> {
    -->
    <dd><cite><a
    href="http://dev.w3.org/html5/eventsource/">Server-Sent
    Events</a></cite>, I. Hickson. W3C.</dd>
 
    <dt id="refsFILEAPI">[FILEAPI]</dt>
    <dd><cite><a
    href="http://dev.w3.org/2006/webapi/FileUpload/publish/FileAPI.html">File
    API</a></cite>, A. Ranganathan. W3C.</dd>
 
+   <dt id="refsFILESYSTEMAPI">[FILESYSTEMAPI]</dt>
+   <dd><cite><a
+   href="http://dev.w3.org/2009/dap/file-system/file-dir-sys.html">File
+   API: Directories and System</a></cite>, E. Uhrhane. W3C.</dd>
+
    <dt id="refsGBK">[GBK]</dt>
    <dd><cite>Chinese Internal Code Specification</cite>. Chinese IT
    Standardization Technical Committee.</dd>
    <!-- http://www.iana.org/assignments/charset-reg/GBK -->
 
    <dt id="refsGRAPHICS">[GRAPHICS]</dt>
    <dd>(Non-normative) <cite>Computer Graphics: Principles and
    Practice in C</cite>, Second Edition, J. Foley, A. van Dam,
    S. Feiner, J. Hughes. Addison-Wesley. ISBN
    0-201-84840-6.</dd>
@@ -112159,20 +112215,23 @@ interface <span>HTMLDocument</span> {
    <dt id="refsISO8601">[ISO8601]</dt>
    <dd><cite><a href="http://isotc.iso.org/livelink/livelink/4021199/ISO_8601_2004_E.zip?func=doc.Fetch&amp;nodeid=4021199">ISO8601: Data elements and interchange formats &mdash; Information interchange &mdash; Representation of dates and times</a></cite>. ISO.</dd>
 
    <dt id="refsISO885911">[ISO885911]</dt>
    <dd><cite><a
    href="http://anubis.dkuug.dk/jtc1/sc2/open/02n3333.pdf">ISO-8859-11:
    Information technology &mdash; 8-bit single-byte coded graphic
    character sets &mdash; Part 11: Latin/Thai
    alphabet</a></cite>. ISO.</dd>
 
+   <dt id="refsJPEG">[JPEG]</dt>
+   <dd><cite><a href="http://www.w3.org/Graphics/JPEG/jfif3.pdf">JPEG File Interchange Format</a></cite>, E. Hamilton.</dd>
+
    <dt id="refsJSON">[JSON]</dt>
    <dd><cite><a href="http://tools.ietf.org/html/rfc4627">The
    application/json Media Type for JavaScript Object Notation
    (JSON)</a></cite>, D. Crockford. IETF.</dd>
 
    <dt id="refsJSURL">[JSURL]</dt>
    <dd><cite><a
    href="http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme">The
    'javascript' resource identifier scheme</a></cite>,
    B. H&ouml;hrmann. IETF.</dd>
@@ -113040,20 +113099,21 @@ interface <span>HTMLDocument</span> {
   Kathy Walton,
   Kelly Norton,
   Kevin Benson,
   Korn&eacute;l P&aacute;l,
   Kornel Lesinski,
   Kris Northfield,
   Kristof Zelechovski,
   Krzysztof Maczy&#x0144;ski,
   &#x9ed2;&#x6fa4;&#x525b;&#x5fd7; (Kurosawa Takeshi),
   Kyle Hofmann<!-- Ozob -->,
+  Kyle Huey,
   L&eacute;onard Bouchet,
   Lachlan Hunt,
   Larry Masinter,
   Larry Page,
   Lars Gunther<!-- Keryx Web -->,
   Lars Solberg,
   Laura Carlson,
   Laura Granka,
   Laura L. Carlson,
   Laura Wisewell,

|