#import <HTML/Path2D.idl>

// https://html.spec.whatwg.org/multipage/canvas.html#canvasfillrule
enum CanvasFillRule { "nonzero", "evenodd" };

// https://html.spec.whatwg.org/multipage/canvas.html#canvasdrawpath
interface mixin CanvasDrawPath {
    undefined beginPath();
    // FIXME: `DOMString` should be `CanvasFillRule`
    undefined fill(optional DOMString fillRule = "nonzero");
    // FIXME: `DOMString` should be `CanvasFillRule`
    undefined fill(Path2D path, optional DOMString fillRule = "nonzero");
    undefined stroke();
    undefined stroke(Path2D path);

    // FIXME: Replace this with these two definitions:
    // undefined clip(optional CanvasFillRule fillRule = "nonzero");
    // undefined clip(Path2D path, optional CanvasFillRule fillRule = "nonzero");
    undefined clip();

    // FIXME: boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
    // FIXME: boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
    // FIXME: boolean isPointInStroke(unrestricted double x, unrestricted double y);
    // FIXME: boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y);
};
