<rdar://problem/10912680> Pixel access canvas APIs do not operate at backing store...
[WebKit-https.git] / Source / WebCore / html / canvas / CanvasRenderingContext2D.idl
index 74bf672..67b5e05 100644 (file)
@@ -30,38 +30,38 @@ module html {
         void save();
         void restore();
 
-        void scale(in [Optional=TreatAsUndefined] float sx,
-                   in [Optional=TreatAsUndefined] float sy);
-        void rotate(in [Optional=TreatAsUndefined] float angle);
-        void translate(in [Optional=TreatAsUndefined] float tx,
-                       in [Optional=TreatAsUndefined] float ty);
-        void transform(in [Optional=TreatAsUndefined] float m11,
-                       in [Optional=TreatAsUndefined] float m12,
-                       in [Optional=TreatAsUndefined] float m21,
-                       in [Optional=TreatAsUndefined] float m22,
-                       in [Optional=TreatAsUndefined] float dx,
-                       in [Optional=TreatAsUndefined] float dy);
-        void setTransform(in [Optional=TreatAsUndefined] float m11,
-                          in [Optional=TreatAsUndefined] float m12,
-                          in [Optional=TreatAsUndefined] float m21,
-                          in [Optional=TreatAsUndefined] float m22,
-                          in [Optional=TreatAsUndefined] float dx,
-                          in [Optional=TreatAsUndefined] 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 [TreatNullAs=NullString] DOMString globalCompositeOperation;
 
-        CanvasGradient createLinearGradient(in [Optional=TreatAsUndefined] float x0,
-                                            in [Optional=TreatAsUndefined] float y0,
-                                            in [Optional=TreatAsUndefined] float x1,
-                                            in [Optional=TreatAsUndefined] 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 [Optional=TreatAsUndefined] float x0,
-                                            in [Optional=TreatAsUndefined] float y0,
-                                            in [Optional=TreatAsUndefined] float r0,
-                                            in [Optional=TreatAsUndefined] float x1,
-                                            in [Optional=TreatAsUndefined] float y1,
-                                            in [Optional=TreatAsUndefined] 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;
@@ -80,71 +80,71 @@ module html {
         attribute float webkitLineDashOffset;
 #endif
 
-        void clearRect(in [Optional=TreatAsUndefined] float x,
-                       in [Optional=TreatAsUndefined] float y,
-                       in [Optional=TreatAsUndefined] float width,
-                       in [Optional=TreatAsUndefined] float height);
-        void fillRect(in [Optional=TreatAsUndefined] float x,
-                      in [Optional=TreatAsUndefined] float y,
-                      in [Optional=TreatAsUndefined] float width,
-                      in [Optional=TreatAsUndefined] 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 [Optional=TreatAsUndefined] float x,
-                    in [Optional=TreatAsUndefined] float y);
-        void lineTo(in [Optional=TreatAsUndefined] float x,
-                    in [Optional=TreatAsUndefined] float y);
-        void quadraticCurveTo(in [Optional=TreatAsUndefined] float cpx,
-                              in [Optional=TreatAsUndefined] float cpy,
-                              in [Optional=TreatAsUndefined] float x,
-                              in [Optional=TreatAsUndefined] float y);
-        void bezierCurveTo(in [Optional=TreatAsUndefined] float cp1x,
-                           in [Optional=TreatAsUndefined] float cp1y,
-                           in [Optional=TreatAsUndefined] float cp2x,
-                           in [Optional=TreatAsUndefined] float cp2y,
-                           in [Optional=TreatAsUndefined] float x,
-                           in [Optional=TreatAsUndefined] float y);
-        void arcTo(in [Optional=TreatAsUndefined] float x1,
-                   in [Optional=TreatAsUndefined] float y1,
-                   in [Optional=TreatAsUndefined] float x2,
-                   in [Optional=TreatAsUndefined] float y2,
-                   in [Optional=TreatAsUndefined] float radius)
-            raises (DOMException);
-        void rect(in [Optional=TreatAsUndefined] float x,
-                  in [Optional=TreatAsUndefined] float y,
-                  in [Optional=TreatAsUndefined] float width,
-                  in [Optional=TreatAsUndefined] float height);
-        void arc(in [Optional=TreatAsUndefined] float x,
-                 in [Optional=TreatAsUndefined] float y,
-                 in [Optional=TreatAsUndefined] float radius,
-                 in [Optional=TreatAsUndefined] float startAngle,
-                 in [Optional=TreatAsUndefined] float endAngle,
-                 in [Optional=TreatAsUndefined] 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 [Optional=TreatAsUndefined] float x,
-                              in [Optional=TreatAsUndefined] 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 [Optional=TreatAsUndefined] DOMString text);
+        TextMetrics measureText(in [Optional=DefaultIsUndefined] DOMString text);
 
         // other
 
-        void setAlpha(in [Optional=TreatAsUndefined] float alpha);
-        void setCompositeOperation(in [Optional=TreatAsUndefined] 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 [Optional=TreatAsUndefined] float width);
-        void setLineCap(in [Optional=TreatAsUndefined] DOMString cap);
-        void setLineJoin(in [Optional=TreatAsUndefined] DOMString join);
-        void setMiterLimit(in [Optional=TreatAsUndefined] 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();
@@ -162,10 +162,10 @@ 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 [Optional=TreatAsUndefined] float x,
-                        in [Optional=TreatAsUndefined] float y,
-                        in [Optional=TreatAsUndefined] float width,
-                        in [Optional=TreatAsUndefined] float height,
+        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);
 
         void drawImage(in HTMLImageElement image, in float x, in float y)
@@ -204,6 +204,11 @@ module html {
         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)
@@ -217,9 +222,15 @@ module html {
         attribute [Custom] custom fillStyle;
 
         // pixel manipulation
-        ImageData getImageData(in [Optional=TreatAsUndefined] float sx, in [Optional=TreatAsUndefined] float sy,
-                               in [Optional=TreatAsUndefined] float sw, in [Optional=TreatAsUndefined] 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;
     };
 
 }