mirror of
https://github.com/servo/servo.git
synced 2025-07-02 21:13:39 +01:00
147 lines
7.1 KiB
Text
147 lines
7.1 KiB
Text
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
enum CanvasWindingRule { "nonzero", "evenodd" };
|
|
|
|
// http://www.whatwg.org/html/#2dcontext
|
|
//[Constructor(optional unsigned long width, unsigned long height), Exposed=Window,Worker]
|
|
interface CanvasRenderingContext2D {
|
|
|
|
// back-reference to the canvas
|
|
readonly attribute HTMLCanvasElement canvas;
|
|
|
|
// canvas dimensions
|
|
// attribute unsigned long width;
|
|
// attribute unsigned long height;
|
|
|
|
// for contexts that aren't directly fixed to a specific canvas
|
|
//void commit(); // push the image to the output bitmap
|
|
|
|
// state
|
|
//void save(); // push state on state stack
|
|
//void restore(); // pop state stack and restore state
|
|
|
|
// transformations (default transform is the identity matrix)
|
|
// attribute SVGMatrix currentTransform;
|
|
void scale(/*unrestricted*/ double x, /*unrestricted*/ double y);
|
|
//void rotate(unrestricted double angle);
|
|
void translate(/*unrestricted*/ double x, /*unrestricted*/ double y);
|
|
void transform(/*unrestricted*/ double a,
|
|
/*unrestricted*/ double b,
|
|
/*unrestricted*/ double c,
|
|
/*unrestricted*/ double d,
|
|
/*unrestricted*/ double e,
|
|
/*unrestricted*/ double f);
|
|
void setTransform(/*unrestricted*/ double a,
|
|
/*unrestricted*/ double b,
|
|
/*unrestricted*/ double c,
|
|
/*unrestricted*/ double d,
|
|
/*unrestricted*/ double e,
|
|
/*unrestricted*/ double f);
|
|
//void resetTransform();
|
|
|
|
// compositing
|
|
// attribute unrestricted double globalAlpha; // (default 1.0)
|
|
// attribute DOMString globalCompositeOperation; // (default source-over)
|
|
|
|
// image smoothing
|
|
// attribute boolean imageSmoothingEnabled; // (default true)
|
|
|
|
// colours and styles (see also the CanvasDrawingStyles interface)
|
|
attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black)
|
|
attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black)
|
|
//CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1);
|
|
//CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1);
|
|
//CanvasPattern createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition);
|
|
|
|
// shadows
|
|
// attribute unrestricted double shadowOffsetX; // (default 0)
|
|
// attribute unrestricted double shadowOffsetY; // (default 0)
|
|
// attribute unrestricted double shadowBlur; // (default 0)
|
|
// attribute DOMString shadowColor; // (default transparent black)
|
|
|
|
// rects
|
|
//void clearRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
|
|
//[LenientFloat]
|
|
void clearRect(double x, double y, double w, double h);
|
|
//void fillRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
|
|
//[LenientFloat]
|
|
void fillRect(double x, double y, double w, double h);
|
|
//void strokeRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
|
|
//[LenientFloat]
|
|
void strokeRect(double x, double y, double w, double h);
|
|
|
|
// path API (see also CanvasPathMethods)
|
|
void beginPath();
|
|
void fill(optional CanvasWindingRule fillRule = "nonzero");
|
|
//void fill(Path2D path, optional CanvasWindingRule fillRule = "nonzero");
|
|
//void stroke();
|
|
//void stroke(Path2D path);
|
|
//void drawSystemFocusRing(Element element);
|
|
//void drawSystemFocusRing(Path2D path, Element element);
|
|
//boolean drawCustomFocusRing(Element element);
|
|
//boolean drawCustomFocusRing(Path2D path, Element element);
|
|
//void scrollPathIntoView();
|
|
//void scrollPathIntoView(Path2D path);
|
|
//void clip(optional CanvasWindingRule fillRule = "nonzero");
|
|
//void clip(Path2D path, optional CanvasWindingRule fillRule = "nonzero");
|
|
//void resetClip();
|
|
//boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasWindingRule fillRule = "nonzero");
|
|
//boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasWindingRule fillRule = "nonzero");
|
|
//boolean isPointInStroke(unrestricted double x, unrestricted double y);
|
|
//boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y);
|
|
|
|
// text (see also the CanvasDrawingStyles interface)
|
|
//void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
|
|
//void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
|
|
//TextMetrics measureText(DOMString text);
|
|
|
|
// drawing images
|
|
//void drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy);
|
|
//void drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh);
|
|
//void drawImage(CanvasImageSource image, unrestricted double sx, unrestricted double sy, unrestricted double sw, unrestricted double sh, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh);
|
|
|
|
// hit regions
|
|
//void addHitRegion(optional HitRegionOptions options);
|
|
//void removeHitRegion(DOMString id);
|
|
|
|
// pixel manipulation
|
|
[Throws]
|
|
ImageData createImageData(double sw, double sh);
|
|
[Throws]
|
|
ImageData createImageData(ImageData imagedata);
|
|
[Throws]
|
|
ImageData getImageData(double sx, double sy, double sw, double sh);
|
|
void putImageData(ImageData imagedata, double dx, double dy);
|
|
void putImageData(ImageData imagedata, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight);
|
|
};
|
|
|
|
[NoInterfaceObject]
|
|
interface CanvasPathMethods {
|
|
// shared path API methods
|
|
void closePath();
|
|
void moveTo(/*unrestricted*/ double x, /*unrestricted*/ double y);
|
|
//void lineTo(double x, double y);
|
|
//void quadraticCurveTo(double cpx, double cpy, double x, double y);
|
|
|
|
void bezierCurveTo(/*unrestricted*/ double cp1x,
|
|
/*unrestricted*/ double cp1y,
|
|
/*unrestricted*/ double cp2x,
|
|
/*unrestricted*/ double cp2y,
|
|
/*unrestricted*/ double x,
|
|
/*unrestricted*/ double y);
|
|
|
|
//void arcTo(double x1, double y1, double x2, double y2, double radius);
|
|
// NOT IMPLEMENTED [LenientFloat] void arcTo(double x1, double y1, double x2, double y2, double radiusX, double radiusY, double rotation);
|
|
|
|
//void rect(double x, double y, double w, double h);
|
|
|
|
//void arc(double x, double y, double radius, double startAngle, double endAngle, optional boolean anticlockwise = false);
|
|
// NOT IMPLEMENTED [LenientFloat] void ellipse(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle, boolean anticlockwise);
|
|
};
|
|
|
|
|
|
CanvasRenderingContext2D implements CanvasPathMethods;
|
|
|