[html5] r819 - /

whatwg at whatwg.org whatwg at whatwg.org
Tue May 15 18:37:35 PDT 2007


Author: ianh
Date: 2007-05-15 18:37:32 -0700 (Tue, 15 May 2007)
New Revision: 819

Modified:
   index
   source
Log:
[agow] (2) Define when infinities are allowed in the canvas APIs

Modified: index
===================================================================
--- index	2007-05-16 01:28:00 UTC (rev 818)
+++ index	2007-05-16 01:37:32 UTC (rev 819)
@@ -15751,6 +15751,20 @@
    the identity transform. It may then be adjusted using the transformation
    methods.
 
+  <p>The transformation matrix can become infinite, at which point nothing is
+   drawn anymore.</p>
+  <!--
+   Philip Taylor wrote:
+   > My experience with some 3d canvas code is that infinities come up in
+   > naturally harmless places, e.g. having a function that scales by x then
+   > translates by 1/x and wanting it to work when x=0 (which ought to draw
+   > nothing, since anything it draws is zero pixels wide), and it's a bit
+   > annoying to track down and fix those issues, so I'd probably like it if
+   > they were harmless in canvas methods. Opera appears to silently not draw
+   > anything if the transformation matrix is not finite, but Firefox throws
+   > exceptions when passing in non-finite arguments.
+  -->
+
   <p>The transformations must be performed in reverse order. For instance, if
    a scale transformation that doubles the width is applied, followed by a
    rotation transformation that rotates drawing operations by a quarter turn,
@@ -15762,7 +15776,9 @@
    scaling transformation described by the arguments to the transformation
    matrix. The <var title="">x</var> argument represents the scale factor in
    the horizontal direction and the <var title="">y</var> argument represents
-   the scale factor in the vertical direction. The factors are multiples.
+   the scale factor in the vertical direction. The factors are multiples. If
+   either argument is Infinity the transformation matrix must be marked as
+   infinite instead of the method throwing an exception.
 
   <p>The <dfn id=rotate title=dom-context-2d-rotate><code>rotate(<var
    title="">angle</var>)</code></dfn> method must add the rotation
@@ -15777,7 +15793,9 @@
    The <var title="">x</var> argument represents the translation distance in
    the horizontal direction and the <var title="">y</var> argument represents
    the translation distance in the vertical direction. The arguments are in
-   coordinate space units.
+   coordinate space units. If either argument is Infinity the transformation
+   matrix must be marked as infinite instead of the method throwing an
+   exception.
 
   <p>The <dfn id=transform
    title=dom-context-2d-transform><code>transform(<var title="">m11</var>,
@@ -15809,6 +15827,9 @@
      <td>1
   </table>
 
+  <p>If any of the arguments are Infinity the transformation matrix must be
+   marked as infinite instead of the method throwing an exception.
+
   <p>The <dfn id=settransform
    title=dom-context-2d-setTransform><code>setTransform(<var
    title="">m11</var>, <var title="">m12</var>, <var title="">m21</var>, <var
@@ -15818,7 +15839,8 @@
    title=dom-context-2d-transform>transform</a>(<var title="">m11</var>, <var
    title="">m12</var>, <var title="">m21</var>, <var title="">m22</var>, <var
    title="">dx</var>, <var title="">dy</var>)</code> method with the same
-   arguments.
+   arguments. If any of the arguments are Infinity the transformation matrix
+   must be marked as infinite instead of the method throwing an exception.
 
   <h6 id=compositing><span class=secno>3.14.11.1.3. </span>Compositing</h6>
 
@@ -16805,6 +16827,9 @@
    in the order given (or act as if they do):
 
   <ol>
+   <li>If the current transformation matrix is infinite, then do nothing.
+    Abort these steps.
+
    <li>The coordinates are transformed by the current transformation matrix.
 
    <li>The shape or image is rendered, creating image <var title="">A</var>,

Modified: source
===================================================================
--- source	2007-05-16 01:28:00 UTC (rev 818)
+++ source	2007-05-16 01:37:32 UTC (rev 819)
@@ -13322,6 +13322,20 @@
   initially be the identity transform. It may then be adjusted using
   the transformation methods.</p>
 
+  <p>The transformation matrix can become infinite, at which point
+  nothing is drawn anymore.</p>
+  <!--
+   Philip Taylor wrote:
+   > My experience with some 3d canvas code is that infinities come up in
+   > naturally harmless places, e.g. having a function that scales by x then
+   > translates by 1/x and wanting it to work when x=0 (which ought to draw
+   > nothing, since anything it draws is zero pixels wide), and it's a bit
+   > annoying to track down and fix those issues, so I'd probably like it if
+   > they were harmless in canvas methods. Opera appears to silently not draw
+   > anything if the transformation matrix is not finite, but Firefox throws
+   > exceptions when passing in non-finite arguments.
+  -->
+
   <p>The transformations must be performed in reverse order. For
   instance, if a scale transformation that doubles the width is
   applied, followed by a rotation transformation that rotates drawing
@@ -13335,7 +13349,9 @@
   transformation matrix. The <var title="">x</var> argument represents
   the scale factor in the horizontal direction and the <var
   title="">y</var> argument represents the scale factor in the
-  vertical direction. The factors are multiples.</p>
+  vertical direction. The factors are multiples. If either argument is
+  Infinity the transformation matrix must be marked as infinite
+  instead of the method throwing an exception.</p>
 
   <p>The <dfn title="dom-context-2d-rotate"><code>rotate(<var
   title="">angle</var>)</code></dfn> method must add the rotation
@@ -13349,7 +13365,9 @@
   transformation matrix. The <var title="">x</var> argument represents
   the translation distance in the horizontal direction and the <var
   title="">y</var> argument represents the translation distance in the
-  vertical direction. The arguments are in coordinate space units.</p>
+  vertical direction. The arguments are in coordinate space units. If
+  either argument is Infinity the transformation matrix must be marked
+  as infinite instead of the method throwing an exception.</p>
 
   <p>The <dfn title="dom-context-2d-transform"><code>transform(<var
   title="">m11</var>, <var title="">m12</var>, <var
@@ -13375,6 +13393,10 @@
    </tr>
   </table>
 
+  <p>If any of the arguments are Infinity the transformation matrix
+  must be marked as infinite instead of the method throwing an
+  exception.</p>
+
   <p>The <dfn
   title="dom-context-2d-setTransform"><code>setTransform(<var
   title="">m11</var>, <var title="">m12</var>, <var
@@ -13384,7 +13406,9 @@
   title="dom-context-2d-transform">transform</span>(<var
   title="">m11</var>, <var title="">m12</var>, <var
   title="">m21</var>, <var title="">m22</var>, <var title="">dx</var>,
-  <var title="">dy</var>)</code> method with the same arguments.</p>
+  <var title="">dy</var>)</code> method with the same arguments. If
+  any of the arguments are Infinity the transformation matrix must be
+  marked as infinite instead of the method throwing an exception.</p>
 
 
   <h6>Compositing</h6>
@@ -14426,6 +14450,9 @@
 
   <ol>
 
+   <li>If the current transformation matrix is infinite, then do
+   nothing. Abort these steps.</li>
+
    <li>The coordinates are transformed by the current transformation
    matrix.</li>
 




More information about the Commit-Watchers mailing list