RE: Adding the imageSmoothingEnabled back into 2dContext Level 2 spec.

I agree with you on a better definition. I'd be glad to hear any ideas you have.  I can get with Jatinder and work something up. I'm going to check it in today, and we'll work on it from there.


From: Rik Cabanier [mailto:cabanier@gmail.com]
Sent: Friday, February 8, 2013 4:25 AM
To: Jay Munro
Cc: public-html@w3.org; public-canvas-api@w3.org; whatwg@whatwg.org
Subject: Re: Adding the imageSmoothingEnabled back into 2dContext Level 2 spec.

I agree we should bring it back.

Personally, it would be nice that have a more formal definition of what smoothing actually means so user agents can implement it similarly.

Rik
On Tue, Feb 5, 2013 at 7:14 AM, Jay Munro <jaymunro@microsoft.com<mailto:jaymunro@microsoft.com>> wrote:
For CR, we took the imageSmoothingEnable feature out because it hadn't been given a chance to be discussed by the working group. For level 2, I'm adding it back in, but asking for any discussion that needs to be made first.

Silence will be taken to mean there is no objection, but positive responses are encouraged.  If I don't hear any objections by Monday Feb 11, I'll check it in.

The following is the pending check in:


@@ -40677,6 +40677,10 @@ dictionary <dfn>TrackEventInit</dfn> : <span>EventInit</span> {
   // compositing
            attribute unrestricted double <span title="dom-context-2d-globalAlpha">globalAlpha</span>; // (default 1.0)
            attribute DOMString <span title="dom-context-2d-globalCompositeOperation">globalCompositeOperation</span>; // (default source-over)
+
+  // image smoothing
+           attribute boolean <span title="dom-context-2d-imageSmoothingEnabled">imageSmoothingEnabled</span>; // (default true)
+
 <!--
   // v7 we've also received requests for:
   - turning off antialiasing to avoid seams when patterns are painted next to each other
@@ -40945,7 +40949,8 @@ interface <dfn>Path</dfn> {
    title="dom-context-2d-globalCompositeOperation">globalCompositeOperation</code>, <code
    title="dom-context-2d-font">font</code>, <code
    title="dom-context-2d-textAlign">textAlign</code>, <code
-   title="dom-context-2d-textBaseline">textBaseline</code>.</li>
+   title="dom-context-2d-textBaseline">textBaseline</code>, <code
+   title="dom-context-2d-imageSmoothingEnabled">imageSmoothingEnabled</code>.</li>
   </ul>

   <p class="note">The <span>current default path</span> and the
@@ -43416,10 +43421,16 @@ try {

   <p>If the original image data is a bitmap image, the value painted
   at a point in the area of the repetitions is computed by filtering
-  the original image data. The user agent may use any filtering
+  the original image data. If the <code
+  title="dom-context-2d-imageSmoothingEnabled">imageSmoothingEnabled</code>
+  then the user agent may use any filtering
   algorithm (for example bilinear interpolation or nearest-neighbor).
-  When the filtering algorithm requires a pixel value from outside the
-  original image data, it must instead use the value from wrapping the
+  If the <code
+  title="dom-context-2d-imageSmoothingEnabled">imageSmoothingEnabled</code>
+  attribute is set to false, the image must be rendered using
+  nearest-neighbor interpolation. When such the filtering algorithm
+  requires a pixel value from outside the original image data, it
+  must instead use the value from wrapping the
   pixel's coordinates to the original image's dimensions. (That is,
   the filter uses 'repeat' behavior, regardless of the value of
   <var title="">repetition</var>.)
@@ -44539,6 +44550,18 @@ v6DVT (also check for '- -' bits in the part above) -->
   <p class="note">This specification does not define the algorithm to
   use when scaling the image, if necessary.</p>

+  <p>If the <code
+  title="dom-context-2d-imageSmoothingEnabled">imageSmoothingEnabled</code>
+  attribute is set to true, then the user agent should attempt to
+  apply a smoothing algorithm to the image data when it is scaled.
+  Otherwise, the image must be rendered using nearest-neighbor
+  interpolation.</p>
+
+  <p class="note">This specification does not define the precise
+  algorithm to use when scaling an image when the <code
+  title="dom-context-2d-imageSmoothingEnabled">imageSmoothingEnabled</code>
+  attribute is set to true.</p>
+
   <p class="note">When a canvas is drawn onto itself, the <span>drawing
   model</span> requires the source to be copied before the image is drawn
   back onto the canvas, so it is possible to copy parts of a canvas
@@ -46040,6 +46063,36 @@ function AddCloud(data, x, y) { ... }</pre>

   </div>

+  <h6>Image smoothing</h6>
+
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-imageSmoothingEnabled">imageSmoothingEnabled</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns whether pattern fills and the <code
+    title="dom-context-2d-drawImage">drawImage()</code> method will
+    attempt to smooth images if they have to rescale them (as opposed
+    to just rendering the images with "big pixels").</p>
+
+    <p>Can be set, to change whether images are smoothed (true) or not
+    (false).</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
+  <p>The <dfn
+  title="dom-context-2d-imageSmoothingEnabled"><code>imageSmoothingEnabled</code></dfn>
+  attribute, on getting, must return the last value it was set to. On
+  setting, it must be set to the new value. When the
+  <code>CanvasRenderingContext2D</code> object is created, the
+  attribute must be set to true.</p>
+
+  </div>

Received on Monday, 11 February 2013 18:15:22 UTC