1 module libwasm.bindings.CanvasRenderingContext2D;
2 
3 import libwasm.types;
4 
5 import memutils.ct: tuple;
6 import libwasm.bindings.Element;
7 import libwasm.bindings.HTMLCanvasElement;
8 import libwasm.bindings.HTMLImageElement;
9 import libwasm.bindings.HTMLVideoElement;
10 import libwasm.bindings.ImageBitmap;
11 import libwasm.bindings.ImageData;
12 import libwasm.bindings.SVGImageElement;
13 import libwasm.bindings.SVGMatrix;
14 import libwasm.bindings.Window;
15 
16 @safe:
17 nothrow:
18 
19 struct CanvasCompositing {
20   nothrow:
21   JsHandle handle;
22   alias handle this;
23   this(Handle h) {
24     this.handle = JsHandle(h);
25   }
26   void globalAlpha()(double globalAlpha) {
27     Object_Call_double__void(this.handle, "globalAlpha", globalAlpha);
28   }
29   double globalAlpha()() {
30     return Object_Getter__double(this.handle, "globalAlpha");
31   }
32   void globalCompositeOperation()(string globalCompositeOperation) {
33     Object_Call_string__void(this.handle, "globalCompositeOperation", globalCompositeOperation);
34   }
35   string globalCompositeOperation()() {
36     return Object_Getter__string(this.handle, "globalCompositeOperation");
37   }
38 }
39 struct CanvasDrawImage {
40   nothrow:
41   JsHandle handle;
42   alias handle this;
43   this(Handle h) {
44     this.handle = JsHandle(h);
45   }
46   void drawImage()(scope ref CanvasImageSource image, double dx, double dy) {
47     Serialize_Object_VarArgCall!void(this.handle, "drawImage", "SumType!(Handle,Handle,Handle,Handle,Handle);double;double", tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => 0),((ref image.Types[1] v) => 1),((ref image.Types[2] v) => 2),((ref image.Types[3] v) => 3),((ref image.Types[4] v) => 4))(image),tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => cast(Handle)v.handle),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => cast(Handle)v.handle),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => cast(Handle)v.handle),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => cast(Handle)v.handle),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => cast(Handle)v.handle))(image)), dx, dy));
48   }
49   void drawImage()(scope ref CanvasImageSource image, double dx, double dy, double dw, double dh) {
50     Serialize_Object_VarArgCall!void(this.handle, "drawImage", "SumType!(Handle,Handle,Handle,Handle,Handle);double;double;double;double", tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => 0),((ref image.Types[1] v) => 1),((ref image.Types[2] v) => 2),((ref image.Types[3] v) => 3),((ref image.Types[4] v) => 4))(image),tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => cast(Handle)v.handle),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => cast(Handle)v.handle),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => cast(Handle)v.handle),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => cast(Handle)v.handle),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => cast(Handle)v.handle))(image)), dx, dy, dw, dh));
51   }
52   void drawImage()(scope ref CanvasImageSource image, double sx, double sy, double sw, double sh, double dx, double dy, double dw, double dh) {
53     Serialize_Object_VarArgCall!void(this.handle, "drawImage", "SumType!(Handle,Handle,Handle,Handle,Handle);double;double;double;double;double;double;double;double", tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => 0),((ref image.Types[1] v) => 1),((ref image.Types[2] v) => 2),((ref image.Types[3] v) => 3),((ref image.Types[4] v) => 4))(image),tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => cast(Handle)v.handle),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => cast(Handle)v.handle),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => cast(Handle)v.handle),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => cast(Handle)v.handle),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => cast(Handle)v.handle))(image)), sx, sy, sw, sh, dx, dy, dw, dh));
54   }
55 }
56 struct CanvasDrawPath {
57   nothrow:
58   JsHandle handle;
59   alias handle this;
60   this(Handle h) {
61     this.handle = JsHandle(h);
62   }
63   void beginPath()() {
64     Object_Call__void(this.handle, "beginPath");
65   }
66   void fill()(CanvasWindingRule winding /* = "nonzero" */) {
67     Object_Call_int__void(this.handle, "fill", winding);
68   }
69   void fill()() {
70     Object_Call__void(this.handle, "fill");
71   }
72   void fill()(scope ref Path2D path, CanvasWindingRule winding /* = "nonzero" */) {
73     Serialize_Object_VarArgCall!void(this.handle, "fill", "Handle;Enum", tuple(cast(Handle)path.handle, winding));
74   }
75   void fill()(scope ref Path2D path) {
76     Object_Call_Handle__void(this.handle, "fill", path.handle);
77   }
78   void stroke()() {
79     Object_Call__void(this.handle, "stroke");
80   }
81   void stroke()(scope ref Path2D path) {
82     Object_Call_Handle__void(this.handle, "stroke", path.handle);
83   }
84   void clip()(CanvasWindingRule winding /* = "nonzero" */) {
85     Object_Call_int__void(this.handle, "clip", winding);
86   }
87   void clip()() {
88     Object_Call__void(this.handle, "clip");
89   }
90   void clip()(scope ref Path2D path, CanvasWindingRule winding /* = "nonzero" */) {
91     Serialize_Object_VarArgCall!void(this.handle, "clip", "Handle;Enum", tuple(cast(Handle)path.handle, winding));
92   }
93   void clip()(scope ref Path2D path) {
94     Object_Call_Handle__void(this.handle, "clip", path.handle);
95   }
96   bool isPointInPath()(double x, double y, CanvasWindingRule winding /* = "nonzero" */) {
97     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInPath", "double;double;Enum", tuple(x, y, winding));
98   }
99   bool isPointInPath()(double x, double y) {
100     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInPath", "double;double", tuple(x, y));
101   }
102   bool isPointInPath()(scope ref Path2D path, double x, double y, CanvasWindingRule winding /* = "nonzero" */) {
103     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInPath", "Handle;double;double;Enum", tuple(cast(Handle)path.handle, x, y, winding));
104   }
105   bool isPointInPath()(scope ref Path2D path, double x, double y) {
106     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInPath", "Handle;double;double", tuple(cast(Handle)path.handle, x, y));
107   }
108   bool isPointInStroke()(double x, double y) {
109     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInStroke", "double;double", tuple(x, y));
110   }
111   bool isPointInStroke()(scope ref Path2D path, double x, double y) {
112     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInStroke", "Handle;double;double", tuple(cast(Handle)path.handle, x, y));
113   }
114 }
115 struct CanvasFillStrokeStyles {
116   nothrow:
117   JsHandle handle;
118   alias handle this;
119   this(Handle h) {
120     this.handle = JsHandle(h);
121   }
122   void strokeStyle()(scope ref SumType!(string, CanvasGradient, CanvasPattern) strokeStyle) {
123     Serialize_Object_VarArgCall!void(this.handle, "strokeStyle", "SumType!(string,Handle,Handle)", tuple(libwasm.sumtype.match!(((string v) => 0),((ref strokeStyle.Types[1] v) => 1),((ref strokeStyle.Types[2] v) => 2))(strokeStyle),tuple(libwasm.sumtype.match!(((string v) => v),((ref strokeStyle.Types[1] v) => string.init),((ref strokeStyle.Types[2] v) => string.init))(strokeStyle),libwasm.sumtype.match!(((string v) => Handle.init),((ref strokeStyle.Types[1] v) => cast(Handle)v.handle),((ref strokeStyle.Types[2] v) => Handle.init))(strokeStyle),libwasm.sumtype.match!(((string v) => Handle.init),((ref strokeStyle.Types[1] v) => Handle.init),((ref strokeStyle.Types[2] v) => cast(Handle)v.handle))(strokeStyle))));
124   }
125   auto strokeStyle()() {
126     return Object_Getter__Handle(this.handle, "strokeStyle");
127   }
128   void fillStyle()(scope ref SumType!(string, CanvasGradient, CanvasPattern) fillStyle) {
129     Serialize_Object_VarArgCall!void(this.handle, "fillStyle", "SumType!(string,Handle,Handle)", tuple(libwasm.sumtype.match!(((string v) => 0),((ref fillStyle.Types[1] v) => 1),((ref fillStyle.Types[2] v) => 2))(fillStyle),tuple(libwasm.sumtype.match!(((string v) => v),((ref fillStyle.Types[1] v) => string.init),((ref fillStyle.Types[2] v) => string.init))(fillStyle),libwasm.sumtype.match!(((string v) => Handle.init),((ref fillStyle.Types[1] v) => cast(Handle)v.handle),((ref fillStyle.Types[2] v) => Handle.init))(fillStyle),libwasm.sumtype.match!(((string v) => Handle.init),((ref fillStyle.Types[1] v) => Handle.init),((ref fillStyle.Types[2] v) => cast(Handle)v.handle))(fillStyle))));
130   }
131   auto fillStyle()() {
132     return Object_Getter__Handle(this.handle, "fillStyle");
133   }
134   auto createLinearGradient()(double x0, double y0, double x1, double y1) {
135     return CanvasGradient(Serialize_Object_VarArgCall!Handle(this.handle, "createLinearGradient", "double;double;double;double", tuple(x0, y0, x1, y1)));
136   }
137   auto createRadialGradient()(double x0, double y0, double r0, double x1, double y1, double r1) {
138     return CanvasGradient(Serialize_Object_VarArgCall!Handle(this.handle, "createRadialGradient", "double;double;double;double;double;double", tuple(x0, y0, r0, x1, y1, r1)));
139   }
140   auto createPattern()(scope ref CanvasImageSource image, string repetition) {
141     return recastOpt!(CanvasPattern)(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "createPattern", "SumType!(Handle,Handle,Handle,Handle,Handle);string", tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => 0),((ref image.Types[1] v) => 1),((ref image.Types[2] v) => 2),((ref image.Types[3] v) => 3),((ref image.Types[4] v) => 4))(image),tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => cast(Handle)v.handle),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => cast(Handle)v.handle),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => cast(Handle)v.handle),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => cast(Handle)v.handle),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => cast(Handle)v.handle))(image)), repetition)));
142   }
143 }
144 struct CanvasFilters {
145   nothrow:
146   JsHandle handle;
147   alias handle this;
148   this(Handle h) {
149     this.handle = JsHandle(h);
150   }
151   void filter()(string filter) {
152     Object_Call_string__void(this.handle, "filter", filter);
153   }
154   string filter()() {
155     return Object_Getter__string(this.handle, "filter");
156   }
157 }
158 struct CanvasGradient {
159   nothrow:
160   JsHandle handle;
161   alias handle this;
162   this(Handle h) {
163     this.handle = JsHandle(h);
164   }
165   void addColorStop()(float offset, string color) {
166     Serialize_Object_VarArgCall!void(this.handle, "addColorStop", "float;string", tuple(offset, color));
167   }
168 }
169 struct CanvasHitRegions {
170   nothrow:
171   JsHandle handle;
172   alias handle this;
173   this(Handle h) {
174     this.handle = JsHandle(h);
175   }
176   void addHitRegion()(scope ref HitRegionOptions options) {
177     Object_Call_Handle__void(this.handle, "addHitRegion", options.handle);
178   }
179   void addHitRegion()() {
180     Object_Call__void(this.handle, "addHitRegion");
181   }
182   void removeHitRegion()(string id) {
183     Object_Call_string__void(this.handle, "removeHitRegion", id);
184   }
185   void clearHitRegions()() {
186     Object_Call__void(this.handle, "clearHitRegions");
187   }
188 }
189 struct CanvasImageData {
190   nothrow:
191   JsHandle handle;
192   alias handle this;
193   this(Handle h) {
194     this.handle = JsHandle(h);
195   }
196   auto createImageData()(double sw, double sh) {
197     return ImageData(Serialize_Object_VarArgCall!Handle(this.handle, "createImageData", "double;double", tuple(sw, sh)));
198   }
199   auto createImageData()(scope ref ImageData imagedata) {
200     return ImageData(Object_Call_Handle__Handle(this.handle, "createImageData", imagedata.handle));
201   }
202   auto getImageData()(double sx, double sy, double sw, double sh) {
203     return ImageData(Serialize_Object_VarArgCall!Handle(this.handle, "getImageData", "double;double;double;double", tuple(sx, sy, sw, sh)));
204   }
205   void putImageData()(scope ref ImageData imagedata, double dx, double dy) {
206     Serialize_Object_VarArgCall!void(this.handle, "putImageData", "Handle;double;double", tuple(cast(Handle)imagedata.handle, dx, dy));
207   }
208   void putImageData()(scope ref ImageData imagedata, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight) {
209     Serialize_Object_VarArgCall!void(this.handle, "putImageData", "Handle;double;double;double;double;double;double", tuple(cast(Handle)imagedata.handle, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight));
210   }
211 }
212 struct CanvasImageSmoothing {
213   nothrow:
214   JsHandle handle;
215   alias handle this;
216   this(Handle h) {
217     this.handle = JsHandle(h);
218   }
219   void imageSmoothingEnabled()(bool imageSmoothingEnabled) {
220     Object_Call_bool__void(this.handle, "imageSmoothingEnabled", imageSmoothingEnabled);
221   }
222   bool imageSmoothingEnabled()() {
223     return Object_Getter__bool(this.handle, "imageSmoothingEnabled");
224   }
225 }
226 alias CanvasImageSource = SumType!(HTMLOrSVGImageElement, HTMLCanvasElement, HTMLVideoElement, ImageBitmap);
227 struct CanvasPathDrawingStyles {
228   nothrow:
229   JsHandle handle;
230   alias handle this;
231   this(Handle h) {
232     this.handle = JsHandle(h);
233   }
234   void lineWidth()(double lineWidth) {
235     Object_Call_double__void(this.handle, "lineWidth", lineWidth);
236   }
237   double lineWidth()() {
238     return Object_Getter__double(this.handle, "lineWidth");
239   }
240   void lineCap()(string lineCap) {
241     Object_Call_string__void(this.handle, "lineCap", lineCap);
242   }
243   string lineCap()() {
244     return Object_Getter__string(this.handle, "lineCap");
245   }
246   void lineJoin()(string lineJoin) {
247     Object_Call_string__void(this.handle, "lineJoin", lineJoin);
248   }
249   string lineJoin()() {
250     return Object_Getter__string(this.handle, "lineJoin");
251   }
252   void miterLimit()(double miterLimit) {
253     Object_Call_double__void(this.handle, "miterLimit", miterLimit);
254   }
255   double miterLimit()() {
256     return Object_Getter__double(this.handle, "miterLimit");
257   }
258   void setLineDash()(scope ref Sequence!(double) segments) {
259     Object_Call_Handle__void(this.handle, "setLineDash", segments.handle);
260   }
261   auto getLineDash()() {
262     return Sequence!(double)(Object_Getter__Handle(this.handle, "getLineDash"));
263   }
264   void lineDashOffset()(double lineDashOffset) {
265     Object_Call_double__void(this.handle, "lineDashOffset", lineDashOffset);
266   }
267   double lineDashOffset()() {
268     return Object_Getter__double(this.handle, "lineDashOffset");
269   }
270 }
271 struct CanvasPathMethods {
272   nothrow:
273   JsHandle handle;
274   alias handle this;
275   this(Handle h) {
276     this.handle = JsHandle(h);
277   }
278   void closePath()() {
279     Object_Call__void(this.handle, "closePath");
280   }
281   void moveTo()(double x, double y) {
282     Object_Call_double_double__void(this.handle, "moveTo", x, y);
283   }
284   void lineTo()(double x, double y) {
285     Object_Call_double_double__void(this.handle, "lineTo", x, y);
286   }
287   void quadraticCurveTo()(double cpx, double cpy, double x, double y) {
288     Serialize_Object_VarArgCall!void(this.handle, "quadraticCurveTo", "double;double;double;double", tuple(cpx, cpy, x, y));
289   }
290   void bezierCurveTo()(double cp1x, double cp1y, double cp2x, double cp2y, double x, double y) {
291     Serialize_Object_VarArgCall!void(this.handle, "bezierCurveTo", "double;double;double;double;double;double", tuple(cp1x, cp1y, cp2x, cp2y, x, y));
292   }
293   void arcTo()(double x1, double y1, double x2, double y2, double radius) {
294     Serialize_Object_VarArgCall!void(this.handle, "arcTo", "double;double;double;double;double", tuple(x1, y1, x2, y2, radius));
295   }
296   void rect()(double x, double y, double w, double h) {
297     Serialize_Object_VarArgCall!void(this.handle, "rect", "double;double;double;double", tuple(x, y, w, h));
298   }
299   void arc()(double x, double y, double radius, double startAngle, double endAngle, bool anticlockwise /* = false */) {
300     Serialize_Object_VarArgCall!void(this.handle, "arc", "double;double;double;double;double;bool", tuple(x, y, radius, startAngle, endAngle, anticlockwise));
301   }
302   void arc()(double x, double y, double radius, double startAngle, double endAngle) {
303     Serialize_Object_VarArgCall!void(this.handle, "arc", "double;double;double;double;double", tuple(x, y, radius, startAngle, endAngle));
304   }
305   void ellipse()(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle, bool anticlockwise /* = false */) {
306     Serialize_Object_VarArgCall!void(this.handle, "ellipse", "double;double;double;double;double;double;double;bool", tuple(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise));
307   }
308   void ellipse()(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle) {
309     Serialize_Object_VarArgCall!void(this.handle, "ellipse", "double;double;double;double;double;double;double", tuple(x, y, radiusX, radiusY, rotation, startAngle, endAngle));
310   }
311 }
312 struct CanvasPattern {
313   nothrow:
314   JsHandle handle;
315   alias handle this;
316   this(Handle h) {
317     this.handle = JsHandle(h);
318   }
319   void setTransform()(scope ref SVGMatrix matrix) {
320     Object_Call_Handle__void(this.handle, "setTransform", matrix.handle);
321   }
322 }
323 struct CanvasRect {
324   nothrow:
325   JsHandle handle;
326   alias handle this;
327   this(Handle h) {
328     this.handle = JsHandle(h);
329   }
330   void clearRect()(double x, double y, double w, double h) {
331     Serialize_Object_VarArgCall!void(this.handle, "clearRect", "double;double;double;double", tuple(x, y, w, h));
332   }
333   void fillRect()(double x, double y, double w, double h) {
334     Serialize_Object_VarArgCall!void(this.handle, "fillRect", "double;double;double;double", tuple(x, y, w, h));
335   }
336   void strokeRect()(double x, double y, double w, double h) {
337     Serialize_Object_VarArgCall!void(this.handle, "strokeRect", "double;double;double;double", tuple(x, y, w, h));
338   }
339 }
340 struct CanvasRenderingContext2D {
341   nothrow:
342   JsHandle handle;
343   alias handle this;
344   this(Handle h) {
345     this.handle = JsHandle(h);
346   }
347   auto canvas()() {
348     return recastOpt!(HTMLCanvasElement)(Object_Getter__OptionalHandle(this.handle, "canvas"));
349   }
350   void mozCurrentTransform()(scope ref JsObject mozCurrentTransform) {
351     Object_Call_Handle__void(this.handle, "mozCurrentTransform", mozCurrentTransform.handle);
352   }
353   auto mozCurrentTransform()() {
354     return JsObject(Object_Getter__Handle(this.handle, "mozCurrentTransform"));
355   }
356   void mozCurrentTransformInverse()(scope ref JsObject mozCurrentTransformInverse) {
357     Object_Call_Handle__void(this.handle, "mozCurrentTransformInverse", mozCurrentTransformInverse.handle);
358   }
359   auto mozCurrentTransformInverse()() {
360     return JsObject(Object_Getter__Handle(this.handle, "mozCurrentTransformInverse"));
361   }
362   void mozTextStyle()(string mozTextStyle) {
363     Object_Call_string__void(this.handle, "mozTextStyle", mozTextStyle);
364   }
365   string mozTextStyle()() {
366     return Object_Getter__string(this.handle, "mozTextStyle");
367   }
368   void mozImageSmoothingEnabled()(bool mozImageSmoothingEnabled) {
369     Object_Call_bool__void(this.handle, "mozImageSmoothingEnabled", mozImageSmoothingEnabled);
370   }
371   bool mozImageSmoothingEnabled()() {
372     return Object_Getter__bool(this.handle, "mozImageSmoothingEnabled");
373   }
374   enum uint DRAWWINDOW_DRAW_CARET = 0x01;
375   enum uint DRAWWINDOW_DO_NOT_FLUSH = 0x02;
376   enum uint DRAWWINDOW_DRAW_VIEW = 0x04;
377   enum uint DRAWWINDOW_USE_WIDGET_LAYERS = 0x08;
378   enum uint DRAWWINDOW_ASYNC_DECODE_IMAGES = 0x10;
379   void drawWindow()(scope ref Window window, double x, double y, double w, double h, string bgColor, uint flags /* = 0 */) {
380     Serialize_Object_VarArgCall!void(this.handle, "drawWindow", "Handle;double;double;double;double;string;uint", tuple(cast(Handle)window._parent, x, y, w, h, bgColor, flags));
381   }
382   void drawWindow()(scope ref Window window, double x, double y, double w, double h, string bgColor) {
383     Serialize_Object_VarArgCall!void(this.handle, "drawWindow", "Handle;double;double;double;double;string", tuple(cast(Handle)window._parent, x, y, w, h, bgColor));
384   }
385   void demote()() {
386     Object_Call__void(this.handle, "demote");
387   }
388   void save()() {
389     Object_Call__void(this.handle, "save");
390   }
391   void restore()() {
392     Object_Call__void(this.handle, "restore");
393   }
394   void scale()(double x, double y) {
395     Object_Call_double_double__void(this.handle, "scale", x, y);
396   }
397   void rotate()(double angle) {
398     Object_Call_double__void(this.handle, "rotate", angle);
399   }
400   void translate()(double x, double y) {
401     Object_Call_double_double__void(this.handle, "translate", x, y);
402   }
403   void transform()(double a, double b, double c, double d, double e, double f) {
404     Serialize_Object_VarArgCall!void(this.handle, "transform", "double;double;double;double;double;double", tuple(a, b, c, d, e, f));
405   }
406   void setTransform()(double a, double b, double c, double d, double e, double f) {
407     Serialize_Object_VarArgCall!void(this.handle, "setTransform", "double;double;double;double;double;double", tuple(a, b, c, d, e, f));
408   }
409   void resetTransform()() {
410     Object_Call__void(this.handle, "resetTransform");
411   }
412   void globalAlpha()(double globalAlpha) {
413     Object_Call_double__void(this.handle, "globalAlpha", globalAlpha);
414   }
415   double globalAlpha()() {
416     return Object_Getter__double(this.handle, "globalAlpha");
417   }
418   void globalCompositeOperation()(string globalCompositeOperation) {
419     Object_Call_string__void(this.handle, "globalCompositeOperation", globalCompositeOperation);
420   }
421   string globalCompositeOperation()() {
422     return Object_Getter__string(this.handle, "globalCompositeOperation");
423   }
424   void imageSmoothingEnabled()(bool imageSmoothingEnabled) {
425     Object_Call_bool__void(this.handle, "imageSmoothingEnabled", imageSmoothingEnabled);
426   }
427   bool imageSmoothingEnabled()() {
428     return Object_Getter__bool(this.handle, "imageSmoothingEnabled");
429   }
430   void strokeStyle()(scope ref SumType!(string, CanvasGradient, CanvasPattern) strokeStyle) {
431     Serialize_Object_VarArgCall!void(this.handle, "strokeStyle", "SumType!(string,Handle,Handle)", tuple(libwasm.sumtype.match!(((string v) => 0),((ref strokeStyle.Types[1] v) => 1),((ref strokeStyle.Types[2] v) => 2))(strokeStyle),tuple(libwasm.sumtype.match!(((string v) => v),((ref strokeStyle.Types[1] v) => string.init),((ref strokeStyle.Types[2] v) => string.init))(strokeStyle),libwasm.sumtype.match!(((string v) => Handle.init),((ref strokeStyle.Types[1] v) => cast(Handle)v.handle),((ref strokeStyle.Types[2] v) => Handle.init))(strokeStyle),libwasm.sumtype.match!(((string v) => Handle.init),((ref strokeStyle.Types[1] v) => Handle.init),((ref strokeStyle.Types[2] v) => cast(Handle)v.handle))(strokeStyle))));
432   }
433   auto strokeStyle()() {
434     return Object_Getter__Handle(this.handle, "strokeStyle");
435   }
436   void fillStyle()(scope ref SumType!(string, CanvasGradient, CanvasPattern) fillStyle) {
437     Serialize_Object_VarArgCall!void(this.handle, "fillStyle", "SumType!(string,Handle,Handle)", tuple(libwasm.sumtype.match!(((string v) => 0),((ref fillStyle.Types[1] v) => 1),((ref fillStyle.Types[2] v) => 2))(fillStyle),tuple(libwasm.sumtype.match!(((string v) => v),((ref fillStyle.Types[1] v) => string.init),((ref fillStyle.Types[2] v) => string.init))(fillStyle),libwasm.sumtype.match!(((string v) => Handle.init),((ref fillStyle.Types[1] v) => cast(Handle)v.handle),((ref fillStyle.Types[2] v) => Handle.init))(fillStyle),libwasm.sumtype.match!(((string v) => Handle.init),((ref fillStyle.Types[1] v) => Handle.init),((ref fillStyle.Types[2] v) => cast(Handle)v.handle))(fillStyle))));
438   }
439   auto fillStyle()() {
440     return Object_Getter__Handle(this.handle, "fillStyle");
441   }
442   auto createLinearGradient()(double x0, double y0, double x1, double y1) {
443     return CanvasGradient(Serialize_Object_VarArgCall!Handle(this.handle, "createLinearGradient", "double;double;double;double", tuple(x0, y0, x1, y1)));
444   }
445   auto createRadialGradient()(double x0, double y0, double r0, double x1, double y1, double r1) {
446     return CanvasGradient(Serialize_Object_VarArgCall!Handle(this.handle, "createRadialGradient", "double;double;double;double;double;double", tuple(x0, y0, r0, x1, y1, r1)));
447   }
448   auto createPattern()(scope ref CanvasImageSource image, string repetition) {
449     return recastOpt!(CanvasPattern)(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "createPattern", "SumType!(Handle,Handle,Handle,Handle,Handle);string", tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => 0),((ref image.Types[1] v) => 1),((ref image.Types[2] v) => 2),((ref image.Types[3] v) => 3),((ref image.Types[4] v) => 4))(image),tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => cast(Handle)v.handle),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => cast(Handle)v.handle),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => cast(Handle)v.handle),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => cast(Handle)v.handle),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => cast(Handle)v.handle))(image)), repetition)));
450   }
451   void shadowOffsetX()(double shadowOffsetX) {
452     Object_Call_double__void(this.handle, "shadowOffsetX", shadowOffsetX);
453   }
454   double shadowOffsetX()() {
455     return Object_Getter__double(this.handle, "shadowOffsetX");
456   }
457   void shadowOffsetY()(double shadowOffsetY) {
458     Object_Call_double__void(this.handle, "shadowOffsetY", shadowOffsetY);
459   }
460   double shadowOffsetY()() {
461     return Object_Getter__double(this.handle, "shadowOffsetY");
462   }
463   void shadowBlur()(double shadowBlur) {
464     Object_Call_double__void(this.handle, "shadowBlur", shadowBlur);
465   }
466   double shadowBlur()() {
467     return Object_Getter__double(this.handle, "shadowBlur");
468   }
469   void shadowColor()(string shadowColor) {
470     Object_Call_string__void(this.handle, "shadowColor", shadowColor);
471   }
472   string shadowColor()() {
473     return Object_Getter__string(this.handle, "shadowColor");
474   }
475   void filter()(string filter) {
476     Object_Call_string__void(this.handle, "filter", filter);
477   }
478   string filter()() {
479     return Object_Getter__string(this.handle, "filter");
480   }
481   void clearRect()(double x, double y, double w, double h) {
482     Serialize_Object_VarArgCall!void(this.handle, "clearRect", "double;double;double;double", tuple(x, y, w, h));
483   }
484   void fillRect()(double x, double y, double w, double h) {
485     Serialize_Object_VarArgCall!void(this.handle, "fillRect", "double;double;double;double", tuple(x, y, w, h));
486   }
487   void strokeRect()(double x, double y, double w, double h) {
488     Serialize_Object_VarArgCall!void(this.handle, "strokeRect", "double;double;double;double", tuple(x, y, w, h));
489   }
490   void beginPath()() {
491     Object_Call__void(this.handle, "beginPath");
492   }
493   void fill()(CanvasWindingRule winding /* = "nonzero" */) {
494     Object_Call_int__void(this.handle, "fill", winding);
495   }
496   void fill()() {
497     Object_Call__void(this.handle, "fill");
498   }
499   void fill()(scope ref Path2D path, CanvasWindingRule winding /* = "nonzero" */) {
500     Serialize_Object_VarArgCall!void(this.handle, "fill", "Handle;Enum", tuple(cast(Handle)path.handle, winding));
501   }
502   void fill()(scope ref Path2D path) {
503     Object_Call_Handle__void(this.handle, "fill", path.handle);
504   }
505   void stroke()() {
506     Object_Call__void(this.handle, "stroke");
507   }
508   void stroke()(scope ref Path2D path) {
509     Object_Call_Handle__void(this.handle, "stroke", path.handle);
510   }
511   void clip()(CanvasWindingRule winding /* = "nonzero" */) {
512     Object_Call_int__void(this.handle, "clip", winding);
513   }
514   void clip()() {
515     Object_Call__void(this.handle, "clip");
516   }
517   void clip()(scope ref Path2D path, CanvasWindingRule winding /* = "nonzero" */) {
518     Serialize_Object_VarArgCall!void(this.handle, "clip", "Handle;Enum", tuple(cast(Handle)path.handle, winding));
519   }
520   void clip()(scope ref Path2D path) {
521     Object_Call_Handle__void(this.handle, "clip", path.handle);
522   }
523   bool isPointInPath()(double x, double y, CanvasWindingRule winding /* = "nonzero" */) {
524     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInPath", "double;double;Enum", tuple(x, y, winding));
525   }
526   bool isPointInPath()(double x, double y) {
527     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInPath", "double;double", tuple(x, y));
528   }
529   bool isPointInPath()(scope ref Path2D path, double x, double y, CanvasWindingRule winding /* = "nonzero" */) {
530     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInPath", "Handle;double;double;Enum", tuple(cast(Handle)path.handle, x, y, winding));
531   }
532   bool isPointInPath()(scope ref Path2D path, double x, double y) {
533     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInPath", "Handle;double;double", tuple(cast(Handle)path.handle, x, y));
534   }
535   bool isPointInStroke()(double x, double y) {
536     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInStroke", "double;double", tuple(x, y));
537   }
538   bool isPointInStroke()(scope ref Path2D path, double x, double y) {
539     return Serialize_Object_VarArgCall!bool(this.handle, "isPointInStroke", "Handle;double;double", tuple(cast(Handle)path.handle, x, y));
540   }
541   void drawFocusIfNeeded()(scope ref Element element) {
542     Object_Call_Handle__void(this.handle, "drawFocusIfNeeded", element._parent);
543   }
544   void fillText()(string text, double x, double y, double maxWidth) {
545     Serialize_Object_VarArgCall!void(this.handle, "fillText", "string;double;double;double", tuple(text, x, y, maxWidth));
546   }
547   void fillText()(string text, double x, double y) {
548     Serialize_Object_VarArgCall!void(this.handle, "fillText", "string;double;double", tuple(text, x, y));
549   }
550   void strokeText()(string text, double x, double y, double maxWidth) {
551     Serialize_Object_VarArgCall!void(this.handle, "strokeText", "string;double;double;double", tuple(text, x, y, maxWidth));
552   }
553   void strokeText()(string text, double x, double y) {
554     Serialize_Object_VarArgCall!void(this.handle, "strokeText", "string;double;double", tuple(text, x, y));
555   }
556   auto measureText()(string text) {
557     return TextMetrics(Object_Call_string__Handle(this.handle, "measureText", text));
558   }
559   void drawImage()(scope ref CanvasImageSource image, double dx, double dy) {
560     Serialize_Object_VarArgCall!void(this.handle, "drawImage", "SumType!(Handle,Handle,Handle,Handle,Handle);double;double", tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => 0),((ref image.Types[1] v) => 1),((ref image.Types[2] v) => 2),((ref image.Types[3] v) => 3),((ref image.Types[4] v) => 4))(image),tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => cast(Handle)v.handle),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => cast(Handle)v.handle),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => cast(Handle)v.handle),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => cast(Handle)v.handle),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => cast(Handle)v.handle))(image)), dx, dy));
561   }
562   void drawImage()(scope ref CanvasImageSource image, double dx, double dy, double dw, double dh) {
563     Serialize_Object_VarArgCall!void(this.handle, "drawImage", "SumType!(Handle,Handle,Handle,Handle,Handle);double;double;double;double", tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => 0),((ref image.Types[1] v) => 1),((ref image.Types[2] v) => 2),((ref image.Types[3] v) => 3),((ref image.Types[4] v) => 4))(image),tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => cast(Handle)v.handle),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => cast(Handle)v.handle),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => cast(Handle)v.handle),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => cast(Handle)v.handle),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => cast(Handle)v.handle))(image)), dx, dy, dw, dh));
564   }
565   void drawImage()(scope ref CanvasImageSource image, double sx, double sy, double sw, double sh, double dx, double dy, double dw, double dh) {
566     Serialize_Object_VarArgCall!void(this.handle, "drawImage", "SumType!(Handle,Handle,Handle,Handle,Handle);double;double;double;double;double;double;double;double", tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => 0),((ref image.Types[1] v) => 1),((ref image.Types[2] v) => 2),((ref image.Types[3] v) => 3),((ref image.Types[4] v) => 4))(image),tuple(libwasm.sumtype.match!(((ref image.Types[0] v) => cast(Handle)v.handle),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => cast(Handle)v.handle),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => cast(Handle)v.handle),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => cast(Handle)v.handle),((ref image.Types[4] v) => Handle.init))(image),libwasm.sumtype.match!(((ref image.Types[0] v) => Handle.init),((ref image.Types[1] v) => Handle.init),((ref image.Types[2] v) => Handle.init),((ref image.Types[3] v) => Handle.init),((ref image.Types[4] v) => cast(Handle)v.handle))(image)), sx, sy, sw, sh, dx, dy, dw, dh));
567   }
568   auto createImageData()(double sw, double sh) {
569     return ImageData(Serialize_Object_VarArgCall!Handle(this.handle, "createImageData", "double;double", tuple(sw, sh)));
570   }
571   auto createImageData()(scope ref ImageData imagedata) {
572     return ImageData(Object_Call_Handle__Handle(this.handle, "createImageData", imagedata.handle));
573   }
574   auto getImageData()(double sx, double sy, double sw, double sh) {
575     return ImageData(Serialize_Object_VarArgCall!Handle(this.handle, "getImageData", "double;double;double;double", tuple(sx, sy, sw, sh)));
576   }
577   void putImageData()(scope ref ImageData imagedata, double dx, double dy) {
578     Serialize_Object_VarArgCall!void(this.handle, "putImageData", "Handle;double;double", tuple(cast(Handle)imagedata.handle, dx, dy));
579   }
580   void putImageData()(scope ref ImageData imagedata, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight) {
581     Serialize_Object_VarArgCall!void(this.handle, "putImageData", "Handle;double;double;double;double;double;double", tuple(cast(Handle)imagedata.handle, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight));
582   }
583   void lineWidth()(double lineWidth) {
584     Object_Call_double__void(this.handle, "lineWidth", lineWidth);
585   }
586   double lineWidth()() {
587     return Object_Getter__double(this.handle, "lineWidth");
588   }
589   void lineCap()(string lineCap) {
590     Object_Call_string__void(this.handle, "lineCap", lineCap);
591   }
592   string lineCap()() {
593     return Object_Getter__string(this.handle, "lineCap");
594   }
595   void lineJoin()(string lineJoin) {
596     Object_Call_string__void(this.handle, "lineJoin", lineJoin);
597   }
598   string lineJoin()() {
599     return Object_Getter__string(this.handle, "lineJoin");
600   }
601   void miterLimit()(double miterLimit) {
602     Object_Call_double__void(this.handle, "miterLimit", miterLimit);
603   }
604   double miterLimit()() {
605     return Object_Getter__double(this.handle, "miterLimit");
606   }
607   void setLineDash()(scope ref Sequence!(double) segments) {
608     Object_Call_Handle__void(this.handle, "setLineDash", segments.handle);
609   }
610   auto getLineDash()() {
611     return Sequence!(double)(Object_Getter__Handle(this.handle, "getLineDash"));
612   }
613   void lineDashOffset()(double lineDashOffset) {
614     Object_Call_double__void(this.handle, "lineDashOffset", lineDashOffset);
615   }
616   double lineDashOffset()() {
617     return Object_Getter__double(this.handle, "lineDashOffset");
618   }
619   void font()(string font) {
620     Object_Call_string__void(this.handle, "font", font);
621   }
622   string font()() {
623     return Object_Getter__string(this.handle, "font");
624   }
625   void textAlign()(string textAlign) {
626     Object_Call_string__void(this.handle, "textAlign", textAlign);
627   }
628   string textAlign()() {
629     return Object_Getter__string(this.handle, "textAlign");
630   }
631   void textBaseline()(string textBaseline) {
632     Object_Call_string__void(this.handle, "textBaseline", textBaseline);
633   }
634   string textBaseline()() {
635     return Object_Getter__string(this.handle, "textBaseline");
636   }
637   void closePath()() {
638     Object_Call__void(this.handle, "closePath");
639   }
640   void moveTo()(double x, double y) {
641     Object_Call_double_double__void(this.handle, "moveTo", x, y);
642   }
643   void lineTo()(double x, double y) {
644     Object_Call_double_double__void(this.handle, "lineTo", x, y);
645   }
646   void quadraticCurveTo()(double cpx, double cpy, double x, double y) {
647     Serialize_Object_VarArgCall!void(this.handle, "quadraticCurveTo", "double;double;double;double", tuple(cpx, cpy, x, y));
648   }
649   void bezierCurveTo()(double cp1x, double cp1y, double cp2x, double cp2y, double x, double y) {
650     Serialize_Object_VarArgCall!void(this.handle, "bezierCurveTo", "double;double;double;double;double;double", tuple(cp1x, cp1y, cp2x, cp2y, x, y));
651   }
652   void arcTo()(double x1, double y1, double x2, double y2, double radius) {
653     Serialize_Object_VarArgCall!void(this.handle, "arcTo", "double;double;double;double;double", tuple(x1, y1, x2, y2, radius));
654   }
655   void rect()(double x, double y, double w, double h) {
656     Serialize_Object_VarArgCall!void(this.handle, "rect", "double;double;double;double", tuple(x, y, w, h));
657   }
658   void arc()(double x, double y, double radius, double startAngle, double endAngle, bool anticlockwise /* = false */) {
659     Serialize_Object_VarArgCall!void(this.handle, "arc", "double;double;double;double;double;bool", tuple(x, y, radius, startAngle, endAngle, anticlockwise));
660   }
661   void arc()(double x, double y, double radius, double startAngle, double endAngle) {
662     Serialize_Object_VarArgCall!void(this.handle, "arc", "double;double;double;double;double", tuple(x, y, radius, startAngle, endAngle));
663   }
664   void ellipse()(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle, bool anticlockwise /* = false */) {
665     Serialize_Object_VarArgCall!void(this.handle, "ellipse", "double;double;double;double;double;double;double;bool", tuple(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise));
666   }
667   void ellipse()(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle) {
668     Serialize_Object_VarArgCall!void(this.handle, "ellipse", "double;double;double;double;double;double;double", tuple(x, y, radiusX, radiusY, rotation, startAngle, endAngle));
669   }
670   void addHitRegion()(scope ref HitRegionOptions options) {
671     Object_Call_Handle__void(this.handle, "addHitRegion", options.handle);
672   }
673   void addHitRegion()() {
674     Object_Call__void(this.handle, "addHitRegion");
675   }
676   void removeHitRegion()(string id) {
677     Object_Call_string__void(this.handle, "removeHitRegion", id);
678   }
679   void clearHitRegions()() {
680     Object_Call__void(this.handle, "clearHitRegions");
681   }
682 }
683 struct CanvasShadowStyles {
684   nothrow:
685   JsHandle handle;
686   alias handle this;
687   this(Handle h) {
688     this.handle = JsHandle(h);
689   }
690   void shadowOffsetX()(double shadowOffsetX) {
691     Object_Call_double__void(this.handle, "shadowOffsetX", shadowOffsetX);
692   }
693   double shadowOffsetX()() {
694     return Object_Getter__double(this.handle, "shadowOffsetX");
695   }
696   void shadowOffsetY()(double shadowOffsetY) {
697     Object_Call_double__void(this.handle, "shadowOffsetY", shadowOffsetY);
698   }
699   double shadowOffsetY()() {
700     return Object_Getter__double(this.handle, "shadowOffsetY");
701   }
702   void shadowBlur()(double shadowBlur) {
703     Object_Call_double__void(this.handle, "shadowBlur", shadowBlur);
704   }
705   double shadowBlur()() {
706     return Object_Getter__double(this.handle, "shadowBlur");
707   }
708   void shadowColor()(string shadowColor) {
709     Object_Call_string__void(this.handle, "shadowColor", shadowColor);
710   }
711   string shadowColor()() {
712     return Object_Getter__string(this.handle, "shadowColor");
713   }
714 }
715 struct CanvasState {
716   nothrow:
717   JsHandle handle;
718   alias handle this;
719   this(Handle h) {
720     this.handle = JsHandle(h);
721   }
722   void save()() {
723     Object_Call__void(this.handle, "save");
724   }
725   void restore()() {
726     Object_Call__void(this.handle, "restore");
727   }
728 }
729 struct CanvasText {
730   nothrow:
731   JsHandle handle;
732   alias handle this;
733   this(Handle h) {
734     this.handle = JsHandle(h);
735   }
736   void fillText()(string text, double x, double y, double maxWidth) {
737     Serialize_Object_VarArgCall!void(this.handle, "fillText", "string;double;double;double", tuple(text, x, y, maxWidth));
738   }
739   void fillText()(string text, double x, double y) {
740     Serialize_Object_VarArgCall!void(this.handle, "fillText", "string;double;double", tuple(text, x, y));
741   }
742   void strokeText()(string text, double x, double y, double maxWidth) {
743     Serialize_Object_VarArgCall!void(this.handle, "strokeText", "string;double;double;double", tuple(text, x, y, maxWidth));
744   }
745   void strokeText()(string text, double x, double y) {
746     Serialize_Object_VarArgCall!void(this.handle, "strokeText", "string;double;double", tuple(text, x, y));
747   }
748   auto measureText()(string text) {
749     return TextMetrics(Object_Call_string__Handle(this.handle, "measureText", text));
750   }
751 }
752 struct CanvasTextDrawingStyles {
753   nothrow:
754   JsHandle handle;
755   alias handle this;
756   this(Handle h) {
757     this.handle = JsHandle(h);
758   }
759   void font()(string font) {
760     Object_Call_string__void(this.handle, "font", font);
761   }
762   string font()() {
763     return Object_Getter__string(this.handle, "font");
764   }
765   void textAlign()(string textAlign) {
766     Object_Call_string__void(this.handle, "textAlign", textAlign);
767   }
768   string textAlign()() {
769     return Object_Getter__string(this.handle, "textAlign");
770   }
771   void textBaseline()(string textBaseline) {
772     Object_Call_string__void(this.handle, "textBaseline", textBaseline);
773   }
774   string textBaseline()() {
775     return Object_Getter__string(this.handle, "textBaseline");
776   }
777 }
778 struct CanvasTransform {
779   nothrow:
780   JsHandle handle;
781   alias handle this;
782   this(Handle h) {
783     this.handle = JsHandle(h);
784   }
785   void scale()(double x, double y) {
786     Object_Call_double_double__void(this.handle, "scale", x, y);
787   }
788   void rotate()(double angle) {
789     Object_Call_double__void(this.handle, "rotate", angle);
790   }
791   void translate()(double x, double y) {
792     Object_Call_double_double__void(this.handle, "translate", x, y);
793   }
794   void transform()(double a, double b, double c, double d, double e, double f) {
795     Serialize_Object_VarArgCall!void(this.handle, "transform", "double;double;double;double;double;double", tuple(a, b, c, d, e, f));
796   }
797   void setTransform()(double a, double b, double c, double d, double e, double f) {
798     Serialize_Object_VarArgCall!void(this.handle, "setTransform", "double;double;double;double;double;double", tuple(a, b, c, d, e, f));
799   }
800   void resetTransform()() {
801     Object_Call__void(this.handle, "resetTransform");
802   }
803 }
804 struct CanvasUserInterface {
805   nothrow:
806   JsHandle handle;
807   alias handle this;
808   this(Handle h) {
809     this.handle = JsHandle(h);
810   }
811   void drawFocusIfNeeded()(scope ref Element element) {
812     Object_Call_Handle__void(this.handle, "drawFocusIfNeeded", element._parent);
813   }
814 }
815 enum CanvasWindingRule {
816   nonzero,
817   evenodd
818 }
819 struct ContextAttributes2D {
820   nothrow:
821   JsHandle handle;
822   alias handle this;
823   this(Handle h) {
824     this.handle = JsHandle(h);
825   }
826   static auto create() {
827     return ContextAttributes2D(libwasm_add__object());
828   }
829   void willReadFrequently()(bool willReadFrequently) {
830     Object_Call_bool__void(this.handle, "willReadFrequently", willReadFrequently);
831   }
832   bool willReadFrequently()() {
833     return Object_Getter__bool(this.handle, "willReadFrequently");
834   }
835   void alpha()(bool alpha) {
836     Object_Call_bool__void(this.handle, "alpha", alpha);
837   }
838   bool alpha()() {
839     return Object_Getter__bool(this.handle, "alpha");
840   }
841 }
842 alias HTMLOrSVGImageElement = SumType!(HTMLImageElement, SVGImageElement);
843 struct HitRegionOptions {
844   nothrow:
845   JsHandle handle;
846   alias handle this;
847   this(Handle h) {
848     this.handle = JsHandle(h);
849   }
850   static auto create() {
851     return HitRegionOptions(libwasm_add__object());
852   }
853   void path(T0)(scope auto ref Optional!(T0) path) if (isTOrPointer!(T0, Path2D)) {
854     Serialize_Object_VarArgCall!void(this.handle, "path", "Optional!Handle", tuple(!path.empty, cast(Handle)path.front.handle));
855   }
856   auto path()() {
857     return recastOpt!(Path2D)(Object_Getter__OptionalHandle(this.handle, "path"));
858   }
859   void id()(string id) {
860     Object_Call_string__void(this.handle, "id", id);
861   }
862   string id()() {
863     return Object_Getter__string(this.handle, "id");
864   }
865   void control(T0)(scope auto ref Optional!(T0) control) if (isTOrPointer!(T0, Element)) {
866     Serialize_Object_VarArgCall!void(this.handle, "control", "Optional!Handle", tuple(!control.empty, cast(Handle)control.front._parent));
867   }
868   auto control()() {
869     return recastOpt!(Element)(Object_Getter__OptionalHandle(this.handle, "control"));
870   }
871 }
872 struct Path2D {
873   nothrow:
874   JsHandle handle;
875   alias handle this;
876   this(Handle h) {
877     this.handle = JsHandle(h);
878   }
879   void addPath()(scope ref Path2D path, scope ref SVGMatrix transformation) {
880     Serialize_Object_VarArgCall!void(this.handle, "addPath", "Handle;Handle", tuple(cast(Handle)path.handle, cast(Handle)transformation.handle));
881   }
882   void addPath()(scope ref Path2D path) {
883     Object_Call_Handle__void(this.handle, "addPath", path.handle);
884   }
885   void closePath()() {
886     Object_Call__void(this.handle, "closePath");
887   }
888   void moveTo()(double x, double y) {
889     Object_Call_double_double__void(this.handle, "moveTo", x, y);
890   }
891   void lineTo()(double x, double y) {
892     Object_Call_double_double__void(this.handle, "lineTo", x, y);
893   }
894   void quadraticCurveTo()(double cpx, double cpy, double x, double y) {
895     Serialize_Object_VarArgCall!void(this.handle, "quadraticCurveTo", "double;double;double;double", tuple(cpx, cpy, x, y));
896   }
897   void bezierCurveTo()(double cp1x, double cp1y, double cp2x, double cp2y, double x, double y) {
898     Serialize_Object_VarArgCall!void(this.handle, "bezierCurveTo", "double;double;double;double;double;double", tuple(cp1x, cp1y, cp2x, cp2y, x, y));
899   }
900   void arcTo()(double x1, double y1, double x2, double y2, double radius) {
901     Serialize_Object_VarArgCall!void(this.handle, "arcTo", "double;double;double;double;double", tuple(x1, y1, x2, y2, radius));
902   }
903   void rect()(double x, double y, double w, double h) {
904     Serialize_Object_VarArgCall!void(this.handle, "rect", "double;double;double;double", tuple(x, y, w, h));
905   }
906   void arc()(double x, double y, double radius, double startAngle, double endAngle, bool anticlockwise /* = false */) {
907     Serialize_Object_VarArgCall!void(this.handle, "arc", "double;double;double;double;double;bool", tuple(x, y, radius, startAngle, endAngle, anticlockwise));
908   }
909   void arc()(double x, double y, double radius, double startAngle, double endAngle) {
910     Serialize_Object_VarArgCall!void(this.handle, "arc", "double;double;double;double;double", tuple(x, y, radius, startAngle, endAngle));
911   }
912   void ellipse()(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle, bool anticlockwise /* = false */) {
913     Serialize_Object_VarArgCall!void(this.handle, "ellipse", "double;double;double;double;double;double;double;bool", tuple(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise));
914   }
915   void ellipse()(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle) {
916     Serialize_Object_VarArgCall!void(this.handle, "ellipse", "double;double;double;double;double;double;double", tuple(x, y, radiusX, radiusY, rotation, startAngle, endAngle));
917   }
918 }
919 struct TextMetrics {
920   nothrow:
921   JsHandle handle;
922   alias handle this;
923   this(Handle h) {
924     this.handle = JsHandle(h);
925   }
926   double width()() {
927     return Object_Getter__double(this.handle, "width");
928   }
929 }
930 
931