Chromium Code Reviews| Index: sdk/lib/html/dart2js/html_dart2js.dart |
| diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart |
| index ab1e30c8731a1358a604b11d0c607f5c2b420f54..867ed8de77b57299778a6c11e3c43b9c1a2cd310 100644 |
| --- a/sdk/lib/html/dart2js/html_dart2js.dart |
| +++ b/sdk/lib/html/dart2js/html_dart2js.dart |
| @@ -1264,11 +1264,6 @@ class CanvasRenderingContext2D extends CanvasRenderingContext native "*CanvasRen |
| @DocsEditable |
| CanvasGradient createRadialGradient(num x0, num y0, num r0, num x1, num y1, num r1) native; |
| - @JSName('drawImage') |
| - @DomName('CanvasRenderingContext2D.drawImage') |
| - @DocsEditable |
| - void $dom_drawImage(canvas_OR_image_OR_video, num sx_OR_x, num sy_OR_y, [num sw_OR_width, num height_OR_sh, num dx, num dy, num dw, num dh]) native; |
| - |
| @DomName('CanvasRenderingContext2D.fill') |
| @DocsEditable |
| void fill([String winding]) native; |
| @@ -1484,11 +1479,73 @@ class CanvasRenderingContext2D extends CanvasRenderingContext native "*CanvasRen |
| } |
| /** |
| + * Draws an image from a CanvasImageSource to an area of this canvas. |
| + * |
| + * The image will be drawn to an area of this canvas defined by |
| + * [destRect]. [sourceRect] defines the region of the source image that is |
| + * drawn. |
| + * If [sourceRect] is not provided, then |
| + * the entire rectangular image from [source] will be drawn to this context. |
| + * |
| + * If the image is larger than canvas |
| + * will allow, the image will be clipped to fit the available space. |
| + * |
| + * CanvasElement canvas = new CanvasElement(width: 600, height: 600); |
| + * CanvasRenderingContext2D ctx = canvas.context2d; |
| + * ImageElement img = document.query('img'); |
| + * img.width = 100; |
| + * img.height = 100; |
| + * |
| + * // Scale the image to 20x20. |
| + * ctx.drawImageToRect(img, new Rect(50, 50, 20, 20)); |
| + * |
| + * VideoElement video = document.query('video'); |
| + * video.width = 100; |
| + * video.height = 100; |
| + * // Take the middle 20x20 pixels from the video and stretch them. |
| + * ctx.drawImageToRect(video, new Rect(50, 50, 100, 100), |
| + * sourceRect: new Rect(40, 40, 20, 20)); |
| + * |
| + * // Draw the top 100x20 pixels from the otherCanvas. |
| + * CanvasElement otherCanvas = document.query('canvas'); |
| + * ctx.drawImageToRect(otherCanvas, new Rect(0, 0, 100, 20), |
| + * sourceRect: new Rect(0, 0, 100, 20)); |
| + * |
| + * See also: |
| + * |
| + * * [CanvasImageSource] for more information on what data is retrieved |
| + * from [source]. |
| + * * [drawImage](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage) |
| + * from the WHATWG. |
| + */ |
| + @DomName('CanvasRenderingContext2D.drawImage') |
| + void drawImageToRect(CanvasImageSource source, Rect destRect, |
| + {Rect sourceRect}) { |
| + if (sourceRect == null) { |
| + drawImageToRegion(source, |
| + destRect.left, |
| + destRect.top, |
| + destRect.width, |
| + destRect.height); |
| + } else { |
| + drawImageFromRegion(source, |
| + sourceRect.left, |
| + sourceRect.top, |
| + sourceRect.width, |
| + sourceRect.height, |
| + destRect.left, |
| + destRect.top, |
| + destRect.width, |
| + destRect.height); |
| + } |
| + } |
| + |
| + /** |
| * Draws an image from a CanvasImageSource to this canvas. |
| * |
| * The entire image from [source] will be drawn to this context with its top |
| - * left corner at the point ([destinationX], [destinationY]). If the image is |
| - * larger than canvas will allow, the image will be cropped to fit the |
| + * left corner at the point ([destX], [destY]). If the image is |
| + * larger than canvas will allow, the image will be clipped to fit the |
| * available space. |
| * |
| * CanvasElement canvas = new CanvasElement(width: 600, height: 600); |
| @@ -1503,7 +1560,7 @@ class CanvasRenderingContext2D extends CanvasRenderingContext native "*CanvasRen |
| * CanvasElement otherCanvas = document.query('canvas'); |
| * otherCanvas.width = 100; |
| * otherCanvas.height = 100; |
| - * ctx.drawImage(otherCanvas, 590, 590); // will get cropped |
| + * ctx.drawImage(otherCanvas, 590, 590); // will get clipped |
| * |
| * See also: |
| * |
| @@ -1513,20 +1570,18 @@ class CanvasRenderingContext2D extends CanvasRenderingContext native "*CanvasRen |
| * from the WHATWG. |
| */ |
| @DomName('CanvasRenderingContext2D.drawImage') |
| - void drawImage(CanvasImageSource source, num destinationX, num destinationY) { |
| - $dom_drawImage(source, destinationX, destinationY); |
| - } |
| + @JSName('drawImage') |
| + void drawImage(CanvasImageSource source, num destX, num destY) native; |
| /** |
| * Draws an image from a CanvasImageSource to an area of this canvas. |
| * |
| - * The image will be drawn to an area of this canvas defined by |
| - * [destinationRect]. If [sourceRect] is not provided, then |
| - * the entire rectangular image from [source] will be drawn to this context. |
| - * If the dimensions of [source] or [sourceRect] |
| - * differ from [destinationRect], then the image will be scaled to fit. |
| + * The image will be drawn to this context with its top left corner at the |
| + * point ([destX], [destY]) and will be scaled to be [destWidth] wide and |
| + * [destHeight] tall. |
| + * |
| * If the image is larger than canvas |
| - * will allow, the image will be cropped to fit the available space. |
| + * will allow, the image will be clipped to fit the available space. |
| * |
| * CanvasElement canvas = new CanvasElement(width: 600, height: 600); |
| * CanvasRenderingContext2D ctx = canvas.context2d; |
| @@ -1534,20 +1589,42 @@ class CanvasRenderingContext2D extends CanvasRenderingContext native "*CanvasRen |
| * img.width = 100; |
| * img.height = 100; |
| * |
| - * // Scale the image to 20x20. |
| - * ctx.drawImageAtScale(img, new Rect(50, 50, 20, 20)); |
| + * // Scale the image to 300x50 at the point (20, 20) |
| + * ctx.drawImageToRegion(img, 20, 20, 300, 50); |
| + * |
| + * See also: |
| + * |
| + * * [CanvasImageSource] for more information on what data is retrieved |
| + * from [source]. |
| + * * [drawImage](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage) |
| + * from the WHATWG. |
| + */ |
| + @DomName('CanvasRenderingContext2D.drawImage') |
| + @JSName('drawImage') |
| + void drawImageToRegion(CanvasImageSource source, |
|
blois
2013/03/19 00:27:34
Seems like drawImageFromRegion and drawImageToRegi
Andrei Mouravski
2013/03/19 01:39:53
I know, but do you have any suggestions?
drawImag
|
| + num destX, num destY, num destWidth, num destHeight) native; |
| + |
| + /** |
| + * Draws an image from a CanvasImageSource to an area of this canvas. |
| + * |
| + * The image is a region of [source] that is [sourceWidth] wide and |
| + * [destHeight] tall with top left corner at ([sourceX], [sourceY]). |
| + * The image will be drawn to this context with its top left corner at the |
| + * point ([destX], [destY]) and will be scaled to be [destWidth] wide and |
| + * [destHeight] tall. |
| + * |
| + * If the image is larger than canvas |
| + * will allow, the image will be clipped to fit the available space. |
| * |
| * VideoElement video = document.query('video'); |
| * video.width = 100; |
| * video.height = 100; |
| * // Take the middle 20x20 pixels from the video and stretch them. |
| - * ctx.drawImageAtScale(video, new Rect(50, 50, 100, 100), |
| - * sourceRect: new Rect(40, 40, 20, 20)); |
| + * ctx.drawImageFromRegion(video, 40, 40, 20, 20, 50, 50, 100, 100); |
| * |
| - * // Draw the top 100x20 pixels from the otherCanvas. |
| + * // Draw the top 100x20 pixels from the otherCanvas to this one. |
| * CanvasElement otherCanvas = document.query('canvas'); |
| - * ctx.drawImageAtScale(otherCanvas, new Rect(0, 0, 100, 20), |
| - * sourceRect: new Rect(0, 0, 100, 20)); |
| + * ctx.drawImageFromRegion(otherCanvas, 0, 0, 100, 20, 0, 0, 100, 20); |
| * |
| * See also: |
| * |
| @@ -1557,26 +1634,10 @@ class CanvasRenderingContext2D extends CanvasRenderingContext native "*CanvasRen |
| * from the WHATWG. |
| */ |
| @DomName('CanvasRenderingContext2D.drawImage') |
| - void drawImageAtScale(CanvasImageSource source, Rect destinationRect, |
| - {Rect sourceRect}) { |
| - if (sourceRect == null) { |
| - $dom_drawImage(source, |
| - destinationRect.left, |
| - destinationRect.top, |
| - destinationRect.width, |
| - destinationRect.height); |
| - } else { |
| - $dom_drawImage(source, |
| - sourceRect.left, |
| - sourceRect.top, |
| - sourceRect.width, |
| - sourceRect.height, |
| - destinationRect.left, |
| - destinationRect.top, |
| - destinationRect.width, |
| - destinationRect.height); |
| - } |
| - } |
| + @JSName('drawImage') |
| + void drawImageFromRegion(CanvasImageSource source, |
| + num sourceX, num sourceY, num sourceWidth, num sourceHeight, |
| + num destX, num destY, num destWidth, num destHeight) native; |
| @DomName('CanvasRenderingContext2D.lineDashOffset') |
| num get lineDashOffset => JS('num', |
| @@ -1587,6 +1648,7 @@ class CanvasRenderingContext2D extends CanvasRenderingContext native "*CanvasRen |
| 'typeof #.lineDashOffset != "undefined" ? #.lineDashOffset = # : ' |
| '#.webkitLineDashOffset = #', this, this, value, this, value); |
| } |
| + |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |