Module Canvas.Canvas2d

type t;
type gradient;
type pattern;
type measureText;
module type CompositeType = { ... };
module Composite: CompositeType;
module type LineCapType = { ... };
module LineCap: LineCapType;
module type LineJoinType = { ... };
module LineJoin: LineJoinType;
type image('a) =
| Number : image(float)
| ImageData : image(Webapi__Dom__Image.t)
;
type style(_) =
| String : style(string)
| Gradient : style(gradient)
| Pattern : style(pattern)
;
let save: t => unit;
let restore: t => unit;
let scale: x:float => y:float => t => unit;
let rotate: float => t => unit;
let translate: x:float => y:float => t => unit;
let transform: m11:float => m12:float => m21:float => m22:float => dx:float => dy:float => t => unit;
let setTransform: m11:float => m12:float => m21:float => m22:float => dx:float => dy:float => t => unit;
let globalAlpha: t => float => unit;
let globalCompositeOperation: t => Composite.t => unit;
let lineWidth: t => float => unit;
let lineCap: t => LineCap.t => unit;
let lineJoin: t => LineJoin.t => unit;
let miterLimit: t => float => unit;
let setFillStyle: t => 'a => unit;
let setStrokeStyle: t => 'a => unit;
let setStrokeStyle: t => style('a) => 'a => unit;
let setFillStyle: t => style('a) => 'a => unit;
let reifyStyle: 'a => (style('b), 'b);
let fillStyle: t => 'a;
let strokeStyle: t => 'a;
let fillStyle: t => (style('a), 'a);
let strokeStyle: t => (style('a), 'a);
let shadowOffsetX: t => float => unit;
let shadowOffsetY: t => float => unit;
let shadowBlur: t => float => unit;
let shadowColor: t => string => unit;
let createLinearGradient: x0:float => y0:float => x1:float => y1:float => t => gradient;
let createRadialGradient: x0:float => y0:float => x1:float => y1:float => r0:float => r1:float => t => gradient;
let addColorStop: float => string => gradient => unit;
let createPattern: t => Dom.element => [ `repeat | `repeatX | `repeatY | `noRepeat ] => pattern;
let beginPath: t => unit;
let closePath: t => unit;
let fill: t => unit;
let stroke: t => unit;
let clip: t => unit;
let moveTo: x:float => y:float => t => unit;
let lineTo: x:float => y:float => t => unit;
let quadraticCurveTo: cp1x:float => cp1y:float => x:float => y:float => t => unit;
let bezierCurveTo: cp1x:float => cp1y:float => cp2x:float => cp2y:float => x:float => y:float => t => unit;
let arcTo: x1:float => y1:float => x2:float => y2:float => r:float => t => unit;
let arc: x:float => y:float => r:float => startAngle:float => endAngle:float => anticw:bool => t => unit;
let rect: x:float => y:float => w:float => h:float => t => unit;
let isPointInPath: x:float => y:float => t => bool;
let font: t => string => unit;
let textAlign: t => string => unit;
let textBaseline: t => string => unit;
let fillText: string => x:float => y:float => ?⁠maxWidth:float => t => unit;
let strokeText: string => x:float => y:float => ?⁠maxWidth:float => t => unit;
let measureText: string => t => measureText;
let width: measureText => float;
let fillRect: x:float => y:float => w:float => h:float => t => unit;
let strokeRect: x:float => y:float => w:float => h:float => t => unit;
let clearRect: x:float => y:float => w:float => h:float => t => unit;
let createImageDataCoords: t => width:float => height:float => Webapi__Dom__Image.t;
let createImageDataFromImage: t => Webapi__Dom__Image.t => Webapi__Dom__Image.t;
let getImageData: t => sx:float => sy:float => sw:float => sh:float => Webapi__Dom__Image.t;
let putImageData: t => imageData:Webapi__Dom__Image.t => dx:float => dy:float => unit;
let putImageDataWithDirtyRect: t => imageData:Webapi__Dom__Image.t => dx:float => dy:float => dirtyX:float => dirtyY:float => dirtyWidth:float => dirtyHeight:float => unit;