<rdar://problem/10912680> Pixel access canvas APIs do not operate at backing store...
[WebKit-https.git] / Source / WebCore / html / canvas / CanvasRenderingContext2D.idl
index d5393ce..67b5e05 100644 (file)
 
 module html {
 
-    interface [
-        LegacyDefaultOptionalArguments,
-        InterfaceUUID=98fb48ae-7216-489c-862b-8e1217fc4443,
-        ImplementationUUID=ab4f0781-152f-450e-9546-5b3987491a54
-    ] CanvasRenderingContext2D : CanvasRenderingContext {
-
-        // Web Applications 1.0 draft
+    interface CanvasRenderingContext2D : CanvasRenderingContext {
 
         void save();
         void restore();
 
-        void scale(in float sx, in float sy);
-        void rotate(in float angle);
-        void translate(in float tx, in float ty);
-        void transform(in float m11, in float m12, in float m21, in float m22, in float dx, in float dy);
-        void setTransform(in float m11, in float m12, in float m21, in float m22, in float dx, in float dy);
+        void scale(in [Optional=DefaultIsUndefined] float sx,
+                   in [Optional=DefaultIsUndefined] float sy);
+        void rotate(in [Optional=DefaultIsUndefined] float angle);
+        void translate(in [Optional=DefaultIsUndefined] float tx,
+                       in [Optional=DefaultIsUndefined] float ty);
+        void transform(in [Optional=DefaultIsUndefined] float m11,
+                       in [Optional=DefaultIsUndefined] float m12,
+                       in [Optional=DefaultIsUndefined] float m21,
+                       in [Optional=DefaultIsUndefined] float m22,
+                       in [Optional=DefaultIsUndefined] float dx,
+                       in [Optional=DefaultIsUndefined] float dy);
+        void setTransform(in [Optional=DefaultIsUndefined] float m11,
+                          in [Optional=DefaultIsUndefined] float m12,
+                          in [Optional=DefaultIsUndefined] float m21,
+                          in [Optional=DefaultIsUndefined] float m22,
+                          in [Optional=DefaultIsUndefined] float dx,
+                          in [Optional=DefaultIsUndefined] float dy);
 
         attribute float globalAlpha;
-        attribute [ConvertNullToNullString] DOMString globalCompositeOperation;
+        attribute [TreatNullAs=NullString] DOMString globalCompositeOperation;
 
-        CanvasGradient createLinearGradient(in float x0, in float y0, in float x1, in float y1)
+        CanvasGradient createLinearGradient(in [Optional=DefaultIsUndefined] float x0,
+                                            in [Optional=DefaultIsUndefined] float y0,
+                                            in [Optional=DefaultIsUndefined] float x1,
+                                            in [Optional=DefaultIsUndefined] float y1)
             raises (DOMException);
-        CanvasGradient createRadialGradient(in float x0, in float y0, in float r0, in float x1, in float y1, in float r1)
+        CanvasGradient createRadialGradient(in [Optional=DefaultIsUndefined] float x0,
+                                            in [Optional=DefaultIsUndefined] float y0,
+                                            in [Optional=DefaultIsUndefined] float r0,
+                                            in [Optional=DefaultIsUndefined] float x1,
+                                            in [Optional=DefaultIsUndefined] float y1,
+                                            in [Optional=DefaultIsUndefined] float r1)
             raises (DOMException);
 
         attribute float lineWidth;
-        attribute [ConvertNullToNullString] DOMString lineCap;
-        attribute [ConvertNullToNullString] DOMString lineJoin;
+        attribute [TreatNullAs=NullString] DOMString lineCap;
+        attribute [TreatNullAs=NullString] DOMString lineJoin;
         attribute float miterLimit;
 
         attribute float shadowOffsetX;
         attribute float shadowOffsetY;
         attribute float shadowBlur;
-        attribute [ConvertNullToNullString] DOMString shadowColor;
+        attribute [TreatNullAs=NullString] DOMString shadowColor;
 
         // FIXME: These attributes should also be implemented for V8.
 #if !(defined(V8_BINDING) && V8_BINDING)
@@ -66,48 +80,77 @@ module html {
         attribute float webkitLineDashOffset;
 #endif
 
-        void clearRect(in float x, in float y, in float width, in float height);
-        void fillRect(in float x, in float y, in float width, in float height);
+        void clearRect(in [Optional=DefaultIsUndefined] float x,
+                       in [Optional=DefaultIsUndefined] float y,
+                       in [Optional=DefaultIsUndefined] float width,
+                       in [Optional=DefaultIsUndefined] float height);
+        void fillRect(in [Optional=DefaultIsUndefined] float x,
+                      in [Optional=DefaultIsUndefined] float y,
+                      in [Optional=DefaultIsUndefined] float width,
+                      in [Optional=DefaultIsUndefined] float height);
 
         void beginPath();
         void closePath();
-        void moveTo(in float x, in float y);
-        void lineTo(in float x, in float y);
-        void quadraticCurveTo(in float cpx, in float cpy, in float x, in float y);
-        void bezierCurveTo(in float cp1x, in float cp1y, in float cp2x, in float cp2y, in float x, in float y);
-        void arcTo(in float x1, in float y1, in float x2, in float y2, in float radius)
-            raises (DOMException);
-        void rect(in float x, in float y, in float width, in float height);
-        void arc(in float x, in float y, in float radius, in float startAngle, in float endAngle, in boolean anticlockwise)
+        void moveTo(in [Optional=DefaultIsUndefined] float x,
+                    in [Optional=DefaultIsUndefined] float y);
+        void lineTo(in [Optional=DefaultIsUndefined] float x,
+                    in [Optional=DefaultIsUndefined] float y);
+        void quadraticCurveTo(in [Optional=DefaultIsUndefined] float cpx,
+                              in [Optional=DefaultIsUndefined] float cpy,
+                              in [Optional=DefaultIsUndefined] float x,
+                              in [Optional=DefaultIsUndefined] float y);
+        void bezierCurveTo(in [Optional=DefaultIsUndefined] float cp1x,
+                           in [Optional=DefaultIsUndefined] float cp1y,
+                           in [Optional=DefaultIsUndefined] float cp2x,
+                           in [Optional=DefaultIsUndefined] float cp2y,
+                           in [Optional=DefaultIsUndefined] float x,
+                           in [Optional=DefaultIsUndefined] float y);
+        void arcTo(in [Optional=DefaultIsUndefined] float x1,
+                   in [Optional=DefaultIsUndefined] float y1,
+                   in [Optional=DefaultIsUndefined] float x2,
+                   in [Optional=DefaultIsUndefined] float y2,
+                   in [Optional=DefaultIsUndefined] float radius)
+            raises (DOMException);
+        void rect(in [Optional=DefaultIsUndefined] float x,
+                  in [Optional=DefaultIsUndefined] float y,
+                  in [Optional=DefaultIsUndefined] float width,
+                  in [Optional=DefaultIsUndefined] float height);
+        void arc(in [Optional=DefaultIsUndefined] float x,
+                 in [Optional=DefaultIsUndefined] float y,
+                 in [Optional=DefaultIsUndefined] float radius,
+                 in [Optional=DefaultIsUndefined] float startAngle,
+                 in [Optional=DefaultIsUndefined] float endAngle,
+                 in [Optional=DefaultIsUndefined] boolean anticlockwise)
             raises (DOMException);
         void fill();
         void stroke();
         void clip();
-        boolean isPointInPath(in float x, in float y);
+        boolean isPointInPath(in [Optional=DefaultIsUndefined] float x,
+                              in [Optional=DefaultIsUndefined] float y);
 
         // text
         attribute DOMString font;
         attribute DOMString textAlign;
         attribute DOMString textBaseline;
 
-        TextMetrics measureText(in DOMString text);
+        TextMetrics measureText(in [Optional=DefaultIsUndefined] DOMString text);
 
         // other
 
-        void setAlpha(in float alpha);
-        void setCompositeOperation(in DOMString compositeOperation);
+        void setAlpha(in [Optional=DefaultIsUndefined] float alpha);
+        void setCompositeOperation(in [Optional=DefaultIsUndefined] DOMString compositeOperation);
 
 #if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-        void setLineWidth(in float width);
-        void setLineCap(in DOMString cap);
-        void setLineJoin(in DOMString join);
-        void setMiterLimit(in float limit);
+        void setLineWidth(in [Optional=DefaultIsUndefined] float width);
+        void setLineCap(in [Optional=DefaultIsUndefined] DOMString cap);
+        void setLineJoin(in [Optional=DefaultIsUndefined] DOMString join);
+        void setMiterLimit(in [Optional=DefaultIsUndefined] float limit);
 #endif
 
         void clearShadow();
 
-        [RequiresAllArguments=Raise] void fillText(in DOMString text, in float x, in float y, in [Optional] float maxWidth);
-        [RequiresAllArguments=Raise] void strokeText(in DOMString text, in float x, in float y, in [Optional] float maxWidth);
+        void fillText(in DOMString text, in float x, in float y, in [Optional] float maxWidth);
+        void strokeText(in DOMString text, in float x, in float y, in [Optional] float maxWidth);
 
         void setStrokeColor(in DOMString color, in [Optional] float alpha);
         void setStrokeColor(in float grayLevel, in [Optional] float alpha);
@@ -119,65 +162,75 @@ module html {
         void setFillColor(in float r, in float g, in float b, in float a);
         void setFillColor(in float c, in float m, in float y, in float k, in float a);
 
-        void strokeRect(in float x, in float y, in float width, in float height, in [Optional] float lineWidth);
+        void strokeRect(in [Optional=DefaultIsUndefined] float x,
+                        in [Optional=DefaultIsUndefined] float y,
+                        in [Optional=DefaultIsUndefined] float width,
+                        in [Optional=DefaultIsUndefined] float height,
+                        in [Optional] float lineWidth);
 
-        [RequiresAllArguments=Raise] void drawImage(in HTMLImageElement image, in float x, in float y)
+        void drawImage(in HTMLImageElement image, in float x, in float y)
             raises (DOMException);
-        [RequiresAllArguments=Raise] void drawImage(in HTMLImageElement image, in float x, in float y, in float width, in float height)
+        void drawImage(in HTMLImageElement image, in float x, in float y, in float width, in float height)
             raises (DOMException);
-        [RequiresAllArguments=Raise] void drawImage(in HTMLImageElement image, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
+        void drawImage(in HTMLImageElement image, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
             raises (DOMException);
-        [RequiresAllArguments=Raise] void drawImage(in HTMLCanvasElement canvas, in float x, in float y)
+        void drawImage(in HTMLCanvasElement canvas, in float x, in float y)
             raises (DOMException);
-        [RequiresAllArguments=Raise] void drawImage(in HTMLCanvasElement canvas, in float x, in float y, in float width, in float height)
+        void drawImage(in HTMLCanvasElement canvas, in float x, in float y, in float width, in float height)
             raises (DOMException);
-        [RequiresAllArguments=Raise] void drawImage(in HTMLCanvasElement canvas, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
+        void drawImage(in HTMLCanvasElement canvas, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
             raises (DOMException);
 #if defined(ENABLE_VIDEO) && ENABLE_VIDEO
-        [RequiresAllArguments=Raise] void drawImage(in HTMLVideoElement video, in float x, in float y)
+        void drawImage(in HTMLVideoElement video, in float x, in float y)
             raises (DOMException);
-        [RequiresAllArguments=Raise] void drawImage(in HTMLVideoElement video, in float x, in float y, in float width, in float height)
+        void drawImage(in HTMLVideoElement video, in float x, in float y, in float width, in float height)
             raises (DOMException);
-        [RequiresAllArguments=Raise] void drawImage(in HTMLVideoElement video, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
+        void drawImage(in HTMLVideoElement video, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
             raises (DOMException);
 #endif
 
-        [RequiresAllArguments=Raise] void drawImageFromRect(in HTMLImageElement image,
-                                                            in [Optional] float sx, in [Optional] float sy, in [Optional] float sw, in [Optional] float sh,
-                                                            in [Optional] float dx, in [Optional] float dy, in [Optional] float dw, in [Optional] float dh,
-                                                            in [Optional] DOMString compositeOperation);
+        void drawImageFromRect(in HTMLImageElement image,
+                               in [Optional] float sx, in [Optional] float sy, in [Optional] float sw, in [Optional] float sh,
+                               in [Optional] float dx, in [Optional] float dy, in [Optional] float dw, in [Optional] float dh,
+                               in [Optional] DOMString compositeOperation);
 
         void setShadow(in float width, in float height, in float blur, in [Optional] DOMString color, in [Optional] float alpha);
         void setShadow(in float width, in float height, in float blur, in float grayLevel, in [Optional] float alpha);
         void setShadow(in float width, in float height, in float blur, in float r, in float g, in float b, in float a);
         void setShadow(in float width, in float height, in float blur, in float c, in float m, in float y, in float k, in float a);
 
-#if defined(V8_BINDING) && V8_BINDING
-        CanvasPattern createPattern(in HTMLCanvasElement canvas, in [ConvertNullToNullString] DOMString repetitionType)
-            raises (DOMException);
-        CanvasPattern createPattern(in HTMLImageElement image, in [ConvertNullToNullString] DOMString repetitionType)
-            raises (DOMException);
         void putImageData(in ImageData imagedata, in float dx, in float dy)
             raises(DOMException);
         void putImageData(in ImageData imagedata, in float dx, in float dy, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight)
             raises(DOMException);
+
+        void webkitPutImageDataHD(in ImageData imagedata, in float dx, in float dy)
+            raises(DOMException);
+        void webkitPutImageDataHD(in ImageData imagedata, in float dx, in float dy, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight)
+            raises(DOMException);
+
+        CanvasPattern createPattern(in HTMLCanvasElement canvas, in [TreatNullAs=NullString] DOMString repetitionType)
+            raises (DOMException);
+        CanvasPattern createPattern(in HTMLImageElement image, in [TreatNullAs=NullString] DOMString repetitionType)
+            raises (DOMException);
         ImageData createImageData(in ImageData imagedata)
             raises (DOMException);
         ImageData createImageData(in float sw, in float sh)
             raises (DOMException);
-#else
-        // FIXME: Remove 'else' once JSC supports overloads too.
-        [Custom] void createPattern(/* 2 */);
-        [Custom] void putImageData(/* in ImageData imagedata, in float dx, in float dy [, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight] */);
-        [Custom] ImageData createImageData(/* 3 */);
-#endif // defined(V8_BINDING)
 
         attribute [Custom] custom strokeStyle;
         attribute [Custom] custom fillStyle;
 
         // pixel manipulation
-        ImageData getImageData(in float sx, in float sy, in float sw, in float sh)
+        ImageData getImageData(in [Optional=DefaultIsUndefined] float sx, in [Optional=DefaultIsUndefined] float sy,
+                               in [Optional=DefaultIsUndefined] float sw, in [Optional=DefaultIsUndefined] float sh)
             raises(DOMException);
+
+        ImageData webkitGetImageDataHD(in [Optional=DefaultIsUndefined] float sx, in [Optional=DefaultIsUndefined] float sy,
+                                       in [Optional=DefaultIsUndefined] float sw, in [Optional=DefaultIsUndefined] float sh)
+            raises(DOMException);
+
+        readonly attribute float webkitBackingStorePixelRatio;
     };
 
 }