blob: 2ad2cb3ed7e8f86bef7e4f8c04c613c4708d4379 [file] [log] [blame]
Kevin Lubick217056c2018-09-20 17:39:31 -04001/*
2 * This externs file prevents the Closure JS compiler from minifying away
3 * names of objects created by Emscripten.
4 * Basically, by defining empty objects and functions here, Closure will
5 * know not to rename them. This is needed because of our pre-js files,
6 * that is, the JS we hand-write to bundle into the output. That JS will be
7 * hit by the closure compiler and thus needs to know about what functions
8 * have special names and should not be minified.
9 *
10 * Emscripten does not support automatically generating an externs file, so we
11 * do it by hand. The general process is to write some JS code, and then put any
12 * calls to CanvasKit or related things in here. Running ./compile.sh and then
13 * looking at the minified results or running the Release trybot should
14 * verify nothing was missed. Optionally, looking directly at the minified
15 * pathkit.js can be useful when developing locally.
16 *
17 * Docs:
18 * https://github.com/cljsjs/packages/wiki/Creating-Externs
19 * https://github.com/google/closure-compiler/wiki/Types-in-the-Closure-Type-System
20 *
21 * Example externs:
22 * https://github.com/google/closure-compiler/tree/master/externs
23 */
24
25var CanvasKit = {
26 // public API (i.e. things we declare in the pre-js file)
Kevin Lubick006a6f32018-10-19 14:34:34 -040027 Color: function() {},
28 /** @return {CanvasKit.SkRect} */
29 LTRBRect: function() {},
Kevin Lubick0a1293c2018-12-03 12:31:04 -050030 /** @return {CanvasKit.SkRect} */
31 XYWHRect: function() {},
Kevin Lubick7d644e12019-09-11 14:22:22 -040032 /** @return {CanvasKit.SkRRect} */
33 RRectXY: function() {},
Kevin Lubick52b9f372018-12-04 13:57:36 -050034 /** @return {ImageData} */
35 ImageData: function() {},
Kevin Lubick543f3522019-03-08 10:04:28 -050036
37 GetWebGLContext: function() {},
Kevin Lubick61ef7b22018-11-27 13:26:59 -050038 MakeBlurMaskFilter: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -040039 MakeCanvas: function() {},
40 MakeCanvasSurface: function() {},
Kevin Lubick543f3522019-03-08 10:04:28 -050041 MakeGrContext: function() {},
Kevin Lubick6b921b72019-09-18 16:18:17 -040042 /** @return {CanvasKit.SkAnimatedImage} */
43 MakeAnimatedImageFromEncoded: function() {},
Kevin Lubick0a1293c2018-12-03 12:31:04 -050044 /** @return {CanvasKit.SkImage} */
Kevin Lubickeda0b432019-12-02 08:26:48 -050045 MakeImage: function() {},
46 /** @return {CanvasKit.SkImage} */
Kevin Lubick0a1293c2018-12-03 12:31:04 -050047 MakeImageFromEncoded: function() {},
Kevin Lubickeb2f6b02018-11-29 15:07:02 -050048 /** @return {LinearCanvasGradient} */
Kevin Lubickb5ae3b52018-11-03 07:51:19 -040049 MakeLinearGradientShader: function() {},
Kevin Lubick543f3522019-03-08 10:04:28 -050050 MakeOnScreenGLSurface: function() {},
Kevin Lubickda3d8ac2019-01-07 11:08:55 -050051 MakePathFromCmds: function() {},
Kevin Lubicka40f8322018-12-17 16:01:36 -050052 MakePathFromOp: function() {},
53 MakePathFromSVGString: function() {},
Kevin Lubick61ef7b22018-11-27 13:26:59 -050054 MakeRadialGradientShader: function() {},
Kevin Lubick543f3522019-03-08 10:04:28 -050055 MakeRenderTarget: function() {},
Kevin Lubick61ef7b22018-11-27 13:26:59 -050056 MakeSWCanvasSurface: function() {},
Kevin Lubickf5ea37f2019-02-28 10:06:18 -050057 MakeManagedAnimation: function() {},
Brian Osman2a490bc2019-11-27 13:36:40 -050058 MakeParticles: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -040059 MakeSkDashPathEffect: function() {},
Kevin Lubickb5ae3b52018-11-03 07:51:19 -040060 MakeSkVertices: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -040061 MakeSurface: function() {},
Kevin Lubickeb2f6b02018-11-29 15:07:02 -050062 /** @return {RadialCanvasGradient} */
63 MakeTwoPointConicalGradientShader: function() {},
Kevin Lubick61ef7b22018-11-27 13:26:59 -050064 MakeWebGLCanvasSurface: function() {},
Kevin Lubicke25df6c2019-10-22 09:04:32 -040065 /** @return {TypedArray} */
66 Malloc: function() {},
Kevin Lubick50f377e2019-09-11 15:23:00 -040067 /** @return {TonalColors} */
68 computeTonalColors: function() {},
Kevin Lubick217056c2018-09-20 17:39:31 -040069 currentContext: function() {},
Kevin Lubick61ef7b22018-11-27 13:26:59 -050070 getColorComponents: function() {},
Florin Malita0d603d82019-11-25 13:45:28 -050071 getDecodeCacheLimitBytes: function() {},
72 getDecodeCacheUsageBytes: function() {},
Kevin Lubick12c0e502018-11-28 12:51:56 -050073 getSkDataBytes: function() {},
Kevin Lubick12c0e502018-11-28 12:51:56 -050074 multiplyByAlpha: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -040075 setCurrentContext: function() {},
Florin Malita0d603d82019-11-25 13:45:28 -050076 setDecodeCacheLimitBytes: function() {},
Kevin Lubick217056c2018-09-20 17:39:31 -040077
78 // private API (i.e. things declared in the bindings that we use
79 // in the pre-js file)
Kevin Lubick52b9f372018-12-04 13:57:36 -050080 _MakeImage: function() {},
Kevin Lubickb5ae3b52018-11-03 07:51:19 -040081 _MakeLinearGradientShader: function() {},
Kevin Lubickda3d8ac2019-01-07 11:08:55 -050082 _MakePathFromCmds: function() {},
Kevin Lubickb5ae3b52018-11-03 07:51:19 -040083 _MakeRadialGradientShader: function() {},
Kevin Lubickf5ea37f2019-02-28 10:06:18 -050084 _MakeManagedAnimation: function() {},
Brian Osman2a490bc2019-11-27 13:36:40 -050085 _MakeParticles: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -040086 _MakeSkDashPathEffect: function() {},
Kevin Lubickb5ae3b52018-11-03 07:51:19 -040087 _MakeSkVertices: function() {},
Kevin Lubickeb2f6b02018-11-29 15:07:02 -050088 _MakeTwoPointConicalGradientShader: function() {},
Kevin Lubick6b921b72019-09-18 16:18:17 -040089 _decodeAnimatedImage: function() {},
Kevin Lubick0a1293c2018-12-03 12:31:04 -050090 _decodeImage: function() {},
Kevin Lubick1ba9c4d2019-02-22 10:04:06 -050091 _drawShapedText: function() {},
Kevin Lubickea905ec2018-11-30 14:05:58 -050092 _getRasterDirectSurface: function() {},
Kevin Lubick134be1d2018-10-30 15:05:04 -040093 _getRasterN32PremulSurface: function() {},
Kevin Lubick217056c2018-09-20 17:39:31 -040094
Kevin Lubick1a05fce2018-11-20 12:51:16 -050095 // The testing object is meant to expose internal functions
96 // for more fine-grained testing, e.g. parseColor
97 _testing: {},
98
Kevin Lubick217056c2018-09-20 17:39:31 -040099 // Objects and properties on CanvasKit
100
Kevin Lubickcd544662019-03-22 15:41:36 -0400101 GrContext: {
102 // public API (from C++ bindings)
103 getResourceCacheLimitBytes: function() {},
104 getResourceCacheUsageBytes: function() {},
105 setResourceCacheLimitBytes: function() {},
106 },
107
Kevin Lubick369f6a52019-10-03 11:22:08 -0400108 Paragraph: {
109 // public API (from C++ bindings)
Kevin Lubick04912672019-11-15 14:48:55 -0500110 didExceedMaxLines: function() {},
111 getAlphabeticBaseline: function() {},
Kevin Lubick369f6a52019-10-03 11:22:08 -0400112 getGlyphPositionAtCoordinate: function() {},
Kevin Lubick04912672019-11-15 14:48:55 -0500113 getHeight: function() {},
114 getIdeographicBaseline: function() {},
115 getLongestLine: function() {},
116 getMaxIntrinsicWidth: function() {},
117 getMaxWidth: function() {},
118 getMinIntrinsicWidth: function() {},
119 getWordBoundary: function() {},
Kevin Lubick369f6a52019-10-03 11:22:08 -0400120 layout: function() {},
121
122 // private API
123 /** @return {Float32Array} */
124 _getRectsForRange: function() {},
125 },
126
127 ParagraphStyle: function() {},
Kevin Lubickd3cfbca2019-03-15 15:36:29 -0400128 RSXFormBuilder: function() {},
Kevin Lubickee91c072019-03-29 10:39:52 -0400129 SkColorBuilder: function() {},
130 SkRectBuilder: function() {},
Kevin Lubickd3cfbca2019-03-15 15:36:29 -0400131
Kevin Lubick1ba9c4d2019-02-22 10:04:06 -0500132 ShapedText: {
133 // public API (from C++ bindings)
134 getBounds: function() {},
135 },
136
Kevin Lubick6b921b72019-09-18 16:18:17 -0400137 SkAnimatedImage: {
138 // public API (from C++ bindings)
Kevin Lubick6b921b72019-09-18 16:18:17 -0400139 decodeNextFrame: function() {},
Kevin Lubick47bd9f12019-11-08 06:55:15 -0800140 getFrameCount: function() {},
141 getRepetitionCount: function() {},
142 height: function() {},
143 reset: function() {},
144 width: function() {},
Kevin Lubick6b921b72019-09-18 16:18:17 -0400145 },
146
Kevin Lubick006a6f32018-10-19 14:34:34 -0400147 SkCanvas: {
148 // public API (from C++ bindings)
149 clear: function() {},
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500150 clipPath: function() {},
Kevin Lubick6dbc4ed2019-10-22 09:43:34 -0400151 clipRRect: function() {},
Kevin Lubick5d5723c2018-12-07 10:09:11 -0500152 clipRect: function() {},
153 concat: function() {},
Kevin Lubick6dbc4ed2019-10-22 09:43:34 -0400154 drawAnimatedImage: function() {},
Kevin Lubickda3d8ac2019-01-07 11:08:55 -0500155 drawArc: function() {},
Kevin Lubicke384df42019-08-26 15:48:09 -0400156 drawCircle: function() {},
Kevin Lubick6dbc4ed2019-10-22 09:43:34 -0400157 drawColor: function() {},
Kevin Lubick2e5fe352019-09-03 12:59:06 -0400158 drawDRRect: function() {},
Kevin Lubick0a1293c2018-12-03 12:31:04 -0500159 drawImage: function() {},
Kevin Lubick37ab53e2019-11-11 10:06:08 -0500160 drawImageNine: function() {},
Kevin Lubick0a1293c2018-12-03 12:31:04 -0500161 drawImageRect: function() {},
Kevin Lubickda3d8ac2019-01-07 11:08:55 -0500162 drawLine: function() {},
163 drawOval: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400164 drawPaint: function() {},
Kevin Lubick369f6a52019-10-03 11:22:08 -0400165 drawParagraph: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400166 drawPath: function() {},
Kevin Lubickcc13fd32019-04-05 13:00:01 -0400167 drawPicture: function() {},
Kevin Lubick2e5fe352019-09-03 12:59:06 -0400168 drawRRect: function() {},
Kevin Lubick12c0e502018-11-28 12:51:56 -0500169 drawRect: function() {},
Kevin Lubickda3d8ac2019-01-07 11:08:55 -0500170 drawRoundRect: function() {},
Kevin Lubick61ef7b22018-11-27 13:26:59 -0500171 drawShadow: function() {},
Kevin Lubick12c0e502018-11-28 12:51:56 -0500172 drawText: function() {},
Kevin Lubickec4903d2019-01-14 08:36:08 -0500173 drawTextBlob: function() {},
Kevin Lubick12c0e502018-11-28 12:51:56 -0500174 drawVertices: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400175 flush: function() {},
Kevin Lubick2e5fe352019-09-03 12:59:06 -0400176 getSaveCount: function() {},
Kevin Lubick5d5723c2018-12-07 10:09:11 -0500177 getTotalMatrix: function() {},
Kevin Lubick543f3522019-03-08 10:04:28 -0500178 makeSurface: function() {},
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500179 restore: function() {},
Kevin Lubickb3574c92019-03-06 08:25:36 -0500180 restoreToCount: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400181 rotate: function() {},
182 save: function() {},
Kevin Lubickb3574c92019-03-06 08:25:36 -0500183 saveLayer: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400184 scale: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400185 skew: function() {},
186 translate: function() {},
187
188 // private API
Kevin Lubickee91c072019-03-29 10:39:52 -0400189 _drawAtlas: function() {},
Kevin Lubick37ab53e2019-11-11 10:06:08 -0500190 _drawPoints: function() {},
Kevin Lubickec4903d2019-01-14 08:36:08 -0500191 _drawSimpleText: function() {},
Kevin Lubick52b9f372018-12-04 13:57:36 -0500192 _readPixels: function() {},
193 _writePixels: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400194 delete: function() {},
195 },
196
Kevin Lubickd3729342019-09-12 11:11:25 -0400197 SkColorFilter: {
198 // public API (from C++ bindings and JS interface)
199 MakeBlend: function() {},
200 MakeCompose: function() {},
201 MakeLerp: function() {},
202 MakeLinearToSRGBGamma: function() {},
203 MakeMatrix: function() {},
204 MakeSRGBToLinearGamma: function() {},
205 // private API (from C++ bindings)
206 _makeMatrix: function() {},
207 },
208
209 SkColorMatrix: {
210 concat: function() {},
211 identity: function() {},
212 postTranslate: function() {},
213 rotated: function() {},
214 scaled: function() {},
215 },
216
Kevin Lubicke59c1672019-11-20 14:17:53 -0500217 SkContourMeasureIter: {
218 next: function() {},
219 },
220
221 SkContourMeasure: {
222 getPosTan: function() {},
223 getSegment: function() {},
224 isClosed: function() {},
225 length: function() {},
226 },
227
Kevin Lubick35ac0382019-01-02 15:13:57 -0500228 SkFont: {
229 // public API (from C++ bindings)
230 getScaleX: function() {},
231 getSize: function() {},
232 getSkewX: function() {},
233 getTypeface: function() {},
234 measureText: function() {},
235 setScaleX: function() {},
236 setSize: function() {},
237 setSkewX: function() {},
238 setTypeface: function() {},
Kevin Lubickd3cfbca2019-03-15 15:36:29 -0400239 // private API (from C++ bindings)
240 _getWidths: function() {},
Kevin Lubick35ac0382019-01-02 15:13:57 -0500241 },
242
Kevin Lubickddd0a332018-12-12 10:35:13 -0500243 SkFontMgr: {
Kevin Lubick61887c72019-09-26 13:20:50 -0400244 // public API (from C++ and JS bindings)
245 FromData: function() {},
Kevin Lubickddd0a332018-12-12 10:35:13 -0500246 RefDefault: function() {},
247 countFamilies: function() {},
248
249 // private API
250 _makeTypefaceFromData: function() {},
Kevin Lubick61887c72019-09-26 13:20:50 -0400251 _fromData: function() {},
Kevin Lubickddd0a332018-12-12 10:35:13 -0500252 },
253
Kevin Lubick006a6f32018-10-19 14:34:34 -0400254 SkImage: {
Kevin Lubick0a1293c2018-12-03 12:31:04 -0500255 // public API (from C++ bindings)
256 height: function() {},
257 width: function() {},
Alexander Khovansky3e119332018-11-15 02:01:19 +0300258 // private API
259 _encodeToData: function() {},
260 _encodeToDataWithFormat: function() {},
Kevin Lubicka064c282019-04-04 09:28:53 -0400261 _makeShader: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400262 },
263
Kevin Lubick15b40232019-10-29 09:55:39 -0400264 SkImageFilter: {
265 MakeBlur: function() {},
266 MakeColorFilter: function() {},
267 MakeCompose: function() {},
Kevin Lubickd2677192019-11-15 14:13:20 -0500268 MakeMatrixTransform: function() {},
Kevin Lubick15b40232019-10-29 09:55:39 -0400269 },
270
Kevin Lubick1a05fce2018-11-20 12:51:16 -0500271 SkMatrix: {
Kevin Lubickb9db3902018-11-26 11:47:54 -0500272 identity: function() {},
Kevin Lubickf3555182019-03-14 10:55:10 -0400273 invert: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500274 mapPoints: function() {},
275 multiply: function() {},
Kevin Lubick1a05fce2018-11-20 12:51:16 -0500276 rotated: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500277 scaled: function() {},
278 skewed: function() {},
279 translated: function() {},
280 },
281
Kevin Lubick15b40232019-10-29 09:55:39 -0400282 SkMaskFilter: {
283 MakeBlur: function() {},
284 },
285
Kevin Lubickb9db3902018-11-26 11:47:54 -0500286 SkPaint: {
287 // public API (from C++ bindings)
288 /** @return {CanvasKit.SkPaint} */
289 copy: function() {},
Kevin Lubick12c0e502018-11-28 12:51:56 -0500290 getBlendMode: function() {},
Kevin Lubick61ef7b22018-11-27 13:26:59 -0500291 getColor: function() {},
Kevin Lubick0a1293c2018-12-03 12:31:04 -0500292 getFilterQuality: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500293 getStrokeCap: function() {},
294 getStrokeJoin: function() {},
295 getStrokeMiter: function() {},
296 getStrokeWidth: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500297 setAntiAlias: function() {},
Kevin Lubick12c0e502018-11-28 12:51:56 -0500298 setBlendMode: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500299 setColor: function() {},
Kevin Lubick0a1293c2018-12-03 12:31:04 -0500300 setFilterQuality: function() {},
Kevin Lubick15b40232019-10-29 09:55:39 -0400301 setImageFilter: function() {},
Kevin Lubick61ef7b22018-11-27 13:26:59 -0500302 setMaskFilter: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500303 setPathEffect: function() {},
304 setShader: function() {},
305 setStrokeCap: function() {},
306 setStrokeJoin: function() {},
307 setStrokeMiter: function() {},
308 setStrokeWidth: function() {},
309 setStyle: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500310
311 //private API
312 delete: function() {},
Kevin Lubick1a05fce2018-11-20 12:51:16 -0500313 },
314
Kevin Lubick006a6f32018-10-19 14:34:34 -0400315 SkPath: {
316 // public API (from C++ bindings)
Kevin Lubickb9db3902018-11-26 11:47:54 -0500317 computeTightBounds: function() {},
Kevin Lubick1646e7d2018-12-07 13:03:08 -0500318 contains: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500319 /** @return {CanvasKit.SkPath} */
320 copy: function() {},
321 countPoints: function() {},
322 equals: function() {},
323 getBounds: function() {},
324 getFillType: function() {},
325 getPoint: function() {},
Kevin Lubick1646e7d2018-12-07 13:03:08 -0500326 isEmpty: function() {},
Kevin Lubick2b79d1c2018-12-14 16:10:38 -0500327 isVolatile: function() {},
Kevin Lubickda3d8ac2019-01-07 11:08:55 -0500328 reset: function() {},
329 rewind: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500330 setFillType: function() {},
Kevin Lubick2b79d1c2018-12-14 16:10:38 -0500331 setIsVolatile: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500332 toSVGString: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400333
334 // private API
Kevin Lubick1a05fce2018-11-20 12:51:16 -0500335 _addArc: function() {},
Kevin Lubicke384df42019-08-26 15:48:09 -0400336 _addOval: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400337 _addPath: function() {},
Kevin Lubick1a05fce2018-11-20 12:51:16 -0500338 _addRect: function() {},
Kevin Lubick37ab53e2019-11-11 10:06:08 -0500339 _addPoly: function() {},
Kevin Lubickda3d8ac2019-01-07 11:08:55 -0500340 _addRoundRect: function() {},
Alexander Khovansky3e119332018-11-15 02:01:19 +0300341 _arc: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400342 _arcTo: function() {},
343 _close: function() {},
344 _conicTo: function() {},
345 _cubicTo: function() {},
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400346 _dash: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400347 _lineTo: function() {},
348 _moveTo: function() {},
349 _op: function() {},
350 _quadTo: function() {},
Kevin Lubick79b71342019-11-01 14:36:52 -0400351 _rArcTo: function() {},
352 _rConicTo: function() {},
353 _rCubicTo: function() {},
354 _rLineTo: function() {},
355 _rMoveTo: function() {},
356 _rQuadTo: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400357 _rect: function() {},
358 _simplify: function() {},
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400359 _stroke: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400360 _transform: function() {},
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400361 _trim: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400362 delete: function() {},
Kevin Lubickb9db3902018-11-26 11:47:54 -0500363 dump: function() {},
364 dumpHex: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400365 },
366
Kevin Lubickd3cfbca2019-03-15 15:36:29 -0400367 SkPathMeasure: {
368 getLength: function() {},
Kevin Lubick37ab53e2019-11-11 10:06:08 -0500369 getSegment: function() {},
Kevin Lubickd3cfbca2019-03-15 15:36:29 -0400370 getPosTan: function() {},
371 isClosed: function() {},
372 nextContour: function() {},
373 },
374
Kevin Lubickcc13fd32019-04-05 13:00:01 -0400375 SkPicture: {
376 DEBUGONLY_serialize: function() {},
377 },
378
379 SkPictureRecorder: {
380 beginRecording: function() {},
381 finishRecordingAsPicture: function() {},
382 },
383
Kevin Lubick006a6f32018-10-19 14:34:34 -0400384 SkRect: {
385 fLeft: {},
386 fTop: {},
387 fRight: {},
388 fBottom: {},
389 },
390
Kevin Lubick2e5fe352019-09-03 12:59:06 -0400391 SkRRect: {
392 rect: {},
Kevin Lubick7d644e12019-09-11 14:22:22 -0400393 rx1: {},
394 ry1: {},
395 rx2: {},
396 ry2: {},
397 rx3: {},
398 ry3: {},
399 rx4: {},
400 ry4: {},
Kevin Lubick2e5fe352019-09-03 12:59:06 -0400401 },
402
Kevin Lubick006a6f32018-10-19 14:34:34 -0400403 SkSurface: {
404 // public API (from C++ bindings)
405 /** @return {CanvasKit.SkCanvas} */
406 getCanvas: function() {},
407 /** @return {CanvasKit.SkImage} */
408 makeImageSnapshot: function() {},
Kevin Lubick543f3522019-03-08 10:04:28 -0500409 makeSurface: function() {},
Kevin Lubickcd544662019-03-22 15:41:36 -0400410 grContext: {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400411
412 // private API
413 _flush: function() {},
414 _getRasterN32PremulSurface: function() {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400415 delete: function() {},
416 },
417
Kevin Lubickec4903d2019-01-14 08:36:08 -0500418 SkTextBlob: {
Kevin Lubickd3cfbca2019-03-15 15:36:29 -0400419 // public API (both C++ and JS bindings)
420 MakeFromRSXform: function() {},
Kevin Lubickec4903d2019-01-14 08:36:08 -0500421 MakeFromText: function() {},
Kevin Lubickd3cfbca2019-03-15 15:36:29 -0400422 MakeOnPath: function() {},
423 // private API (from C++ bindings)
424 _MakeFromRSXform: function() {},
Kevin Lubickec4903d2019-01-14 08:36:08 -0500425 _MakeFromText: function() {},
426 },
427
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400428 SkVertices: {
429 // public API (from C++ bindings)
Kevin Lubick12c0e502018-11-28 12:51:56 -0500430 bounds: function() {},
431 mode: function() {},
432 uniqueID: function() {},
433 vertexCount: function() {},
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400434
435 // private API
436 /** @return {CanvasKit.SkVertices} */
437 _applyBones: function() {},
438 },
439
Kevin Lubickd6ba7252019-06-03 14:38:05 -0400440 _SkVerticesBuilder: {
441 // public API (from C++ bindings)
442 boneIndices: function() {},
443 boneWeights: function() {},
444 colors: function() {},
445 detach: function() {},
446 indices: function() {},
447 positions: function() {},
448 texCoords: function() {},
449 },
450
Kevin Lubick369f6a52019-10-03 11:22:08 -0400451 TextStyle: function() {},
452
Kevin Lubick006a6f32018-10-19 14:34:34 -0400453 // Constants and Enums
454 gpu: {},
455 skottie: {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400456
Kevin Lubick61ef7b22018-11-27 13:26:59 -0500457 TRANSPARENT: {},
458 RED: {},
459 BLUE: {},
460 YELLOW: {},
461 CYAN: {},
462 BLACK: {},
Kevin Lubickea905ec2018-11-30 14:05:58 -0500463 WHITE: {},
464
Kevin Lubickda3d8ac2019-01-07 11:08:55 -0500465 MOVE_VERB: {},
466 LINE_VERB: {},
467 QUAD_VERB: {},
468 CONIC_VERB: {},
469 CUBIC_VERB: {},
470 CLOSE_VERB: {},
471
Kevin Lubick369f6a52019-10-03 11:22:08 -0400472 NoDecoration: {},
473 UnderlineDecoration: {},
474 OverlineDecoration: {},
475 LineThroughDecoration: {},
476
Kevin Lubick77d9b5c2019-10-29 10:48:26 -0400477 SaveLayerInitWithPrevious: {},
478 SaveLayerF16ColorType: {},
479
Kevin Lubick369f6a52019-10-03 11:22:08 -0400480 Affinity: {
481 Upstream: {},
482 Downstream: {},
483 },
484
Kevin Lubickea905ec2018-11-30 14:05:58 -0500485 AlphaType: {
486 Opaque: {},
487 Premul: {},
488 Unpremul: {},
489 },
Kevin Lubick61ef7b22018-11-27 13:26:59 -0500490
491 BlendMode: {
492 Clear: {},
493 Src: {},
494 Dst: {},
495 SrcOver: {},
496 DstOver: {},
497 SrcIn: {},
498 DstIn: {},
499 SrcOut: {},
500 DstOut: {},
501 SrcATop: {},
502 DstATop: {},
503 Xor: {},
504 Plus: {},
505 Modulate: {},
506 Screen: {},
507 Overlay: {},
508 Darken: {},
509 Lighten: {},
510 ColorDodge: {},
511 ColorBurn: {},
512 HardLight: {},
513 SoftLight: {},
514 Difference: {},
515 Exclusion: {},
516 Multiply: {},
517 Hue: {},
518 Saturation: {},
519 Color: {},
520 Luminosity: {},
521 },
522
523 BlurStyle: {
524 Normal: {},
525 Solid: {},
526 Outer: {},
527 Inner: {},
528 },
529
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500530 ClipOp: {
531 Difference: {},
532 Intersect: {},
533 },
534
Kevin Lubickea905ec2018-11-30 14:05:58 -0500535 ColorType: {
536 Alpha_8: {},
537 RGB_565: {},
538 ARGB_4444: {},
539 RGBA_8888: {},
540 RGB_888x: {},
541 BGRA_8888: {},
542 RGBA_1010102: {},
543 RGB_101010x: {},
544 Gray_8: {},
545 RGBA_F16: {},
546 RGBA_F32: {},
547 },
548
Kevin Lubick006a6f32018-10-19 14:34:34 -0400549 FillType: {
Kevin Lubick1a05fce2018-11-20 12:51:16 -0500550 Winding: {},
551 EvenOdd: {},
552 InverseWinding: {},
553 InverseEvenOdd: {},
Kevin Lubick006a6f32018-10-19 14:34:34 -0400554 },
555
Kevin Lubick0a1293c2018-12-03 12:31:04 -0500556 FilterQuality: {
557 None: {},
558 Low: {},
559 Medium: {},
560 High: {},
561 },
562
Kevin Lubickd3b1fe62019-10-21 10:50:26 -0400563 FontSlant: {
564 Upright: {},
565 Italic: {},
566 Oblique: {},
567 },
568
569 FontWeight: {
570 Invisible: {},
571 Thin: {},
572 ExtraLight: {},
573 Light: {},
574 Normal: {},
575 Medium: {},
576 SemiBold: {},
577 Bold: {},
578 ExtraBold: {},
579 Black: {},
580 ExtraBlack: {},
581 },
582
583 FontWidth: {
584 UltraCondensed: {},
585 ExtraCondensed: {},
586 Condensed: {},
587 SemiCondensed: {},
588 Normal: {},
589 SemiExpanded: {},
590 Expanded: {},
591 ExtraExpanded: {},
592 UltraExpanded: {},
593 },
594
Alexander Khovansky3e119332018-11-15 02:01:19 +0300595 ImageFormat: {
596 PNG: {},
597 JPEG: {},
598 },
599
Kevin Lubickb9db3902018-11-26 11:47:54 -0500600 PaintStyle: {
601 Fill: {},
602 Stroke: {},
603 StrokeAndFill: {},
604 },
605
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500606 PathOp: {
607 Difference: {},
608 Intersect: {},
609 Union: {},
610 XOR: {},
611 ReverseDifference: {},
612 },
613
Kevin Lubick37ab53e2019-11-11 10:06:08 -0500614 PointMode: {
615 Points: {},
616 Lines: {},
617 Polygon: {},
618 },
619
Kevin Lubick369f6a52019-10-03 11:22:08 -0400620 RectHeightStyle: {
621 Tight: {},
622 Max: {},
Kevin Lubick4a5f4f22019-11-20 08:27:10 -0500623 IncludeLineSpacingMiddle: {},
624 IncludeLineSpacingTop: {},
625 IncludeLineSpacingBottom: {},
Kevin Lubick369f6a52019-10-03 11:22:08 -0400626 },
627
628 RectWidthStyle: {
629 Tight: {},
630 Max: {},
631 },
632
Kevin Lubickb9db3902018-11-26 11:47:54 -0500633 StrokeCap: {
634 Butt: {},
635 Round: {},
636 Square: {},
637 },
638
639 StrokeJoin: {
640 Miter: {},
641 Round: {},
642 Bevel: {},
643 },
644
Kevin Lubick369f6a52019-10-03 11:22:08 -0400645 TextAlign: {
646 Left: {},
647 Right: {},
648 Center: {},
649 Justify: {},
650 Start: {},
651 End: {},
652 },
653
Kevin Lubickd3b1fe62019-10-21 10:50:26 -0400654 TextDirection: {
655 LTR: {},
656 RTL: {},
657 },
658
Kevin Lubickec4903d2019-01-14 08:36:08 -0500659 TextEncoding: {
660 UTF8: {},
661 UTF16: {},
662 UTF32: {},
663 GlyphID: {},
664 },
665
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500666 TileMode: {
667 Clamp: {},
668 Repeat: {},
669 Mirror: {},
Kevin Lubickd29edd72018-12-07 08:29:52 -0500670 Decal: {},
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500671 },
672
673 VertexMode: {
674 Triangles: {},
675 TrianglesStrip: {},
676 TriangleFan: {},
677 },
678
Kevin Lubick006a6f32018-10-19 14:34:34 -0400679 // Things Enscriptem adds for us
680
Kevin Lubick53965c92018-10-11 08:51:55 -0400681 /**
682 * @type {Float32Array}
683 */
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400684 HEAPF32: {},
Kevin Lubick53965c92018-10-11 08:51:55 -0400685 /**
Kevin Lubickfa5a1382019-10-09 10:46:14 -0400686 * @type {Float64Array}
687 */
688 HEAPF64: {},
689 /**
Kevin Lubick53965c92018-10-11 08:51:55 -0400690 * @type {Uint8Array}
691 */
692 HEAPU8: {},
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400693 /**
694 * @type {Uint16Array}
695 */
696 HEAPU16: {},
697 /**
Kevin Lubickf5ea37f2019-02-28 10:06:18 -0500698 * @type {Uint32Array}
699 */
700 HEAPU32: {},
Kevin Lubickfa5a1382019-10-09 10:46:14 -0400701 /**
702 * @type {Int8Array}
703 */
704 HEAP8: {},
705 /**
706 * @type {Int16Array}
707 */
708 HEAP16: {},
709 /**
710 * @type {Int32Array}
711 */
712 HEAP32: {},
713
Kevin Lubick006a6f32018-10-19 14:34:34 -0400714 _malloc: function() {},
715 _free: function() {},
716 onRuntimeInitialized: function() {},
717};
Kevin Lubick217056c2018-09-20 17:39:31 -0400718
Kevin Lubick006a6f32018-10-19 14:34:34 -0400719// Public API things that are newly declared in the JS should go here.
720// It's not enough to declare them above, because closure can still erase them
721// unless they go on the prototype.
Kevin Lubick369f6a52019-10-03 11:22:08 -0400722CanvasKit.Paragraph.prototype.getRectsForRange = function() {};
723
Kevin Lubick1a05fce2018-11-20 12:51:16 -0500724CanvasKit.SkPath.prototype.addArc = function() {};
Kevin Lubicke384df42019-08-26 15:48:09 -0400725CanvasKit.SkPath.prototype.addOval = function() {};
Kevin Lubick217056c2018-09-20 17:39:31 -0400726CanvasKit.SkPath.prototype.addPath = function() {};
Kevin Lubick37ab53e2019-11-11 10:06:08 -0500727CanvasKit.SkPath.prototype.addPoly = function() {};
Kevin Lubick1a05fce2018-11-20 12:51:16 -0500728CanvasKit.SkPath.prototype.addRect = function() {};
Kevin Lubickda3d8ac2019-01-07 11:08:55 -0500729CanvasKit.SkPath.prototype.addRoundRect = function() {};
Alexander Khovansky3e119332018-11-15 02:01:19 +0300730CanvasKit.SkPath.prototype.arc = function() {};
Kevin Lubick006a6f32018-10-19 14:34:34 -0400731CanvasKit.SkPath.prototype.arcTo = function() {};
Kevin Lubick217056c2018-09-20 17:39:31 -0400732CanvasKit.SkPath.prototype.close = function() {};
Kevin Lubick006a6f32018-10-19 14:34:34 -0400733CanvasKit.SkPath.prototype.conicTo = function() {};
734CanvasKit.SkPath.prototype.cubicTo = function() {};
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400735CanvasKit.SkPath.prototype.dash = function() {};
Kevin Lubick006a6f32018-10-19 14:34:34 -0400736CanvasKit.SkPath.prototype.lineTo = function() {};
737CanvasKit.SkPath.prototype.moveTo = function() {};
Kevin Lubicke384df42019-08-26 15:48:09 -0400738CanvasKit.SkPath.prototype.offset = function() {};
Kevin Lubick006a6f32018-10-19 14:34:34 -0400739CanvasKit.SkPath.prototype.op = function() {};
740CanvasKit.SkPath.prototype.quadTo = function() {};
Kevin Lubick79b71342019-11-01 14:36:52 -0400741CanvasKit.SkPath.prototype.rArcTo = function() {};
742CanvasKit.SkPath.prototype.rConicTo = function() {};
743CanvasKit.SkPath.prototype.rCubicTo = function() {};
744CanvasKit.SkPath.prototype.rLineTo = function() {};
745CanvasKit.SkPath.prototype.rMoveTo = function() {};
746CanvasKit.SkPath.prototype.rQuadTo = function() {};
Kevin Lubick006a6f32018-10-19 14:34:34 -0400747CanvasKit.SkPath.prototype.rect = function() {};
Kevin Lubick217056c2018-09-20 17:39:31 -0400748CanvasKit.SkPath.prototype.simplify = function() {};
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400749CanvasKit.SkPath.prototype.stroke = function() {};
Kevin Lubick217056c2018-09-20 17:39:31 -0400750CanvasKit.SkPath.prototype.transform = function() {};
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400751CanvasKit.SkPath.prototype.trim = function() {};
Kevin Lubick217056c2018-09-20 17:39:31 -0400752
Kevin Lubickcc13fd32019-04-05 13:00:01 -0400753CanvasKit.SkPicture.prototype.DEBUGONLY_saveAsFile = function() {};
754
Kevin Lubick5b90b842018-10-17 07:57:18 -0400755CanvasKit.SkSurface.prototype.dispose = function() {};
Kevin Lubick359a7e32019-03-19 09:34:37 -0400756CanvasKit.SkSurface.prototype.flush = function() {};
757CanvasKit.SkSurface.prototype.requestAnimationFrame = function() {};
Kevin Lubickcc13fd32019-04-05 13:00:01 -0400758CanvasKit.SkSurface.prototype.captureFrameAsSkPicture = function() {};
Kevin Lubick53965c92018-10-11 08:51:55 -0400759
Kevin Lubick12c0e502018-11-28 12:51:56 -0500760/** @return {CanvasKit.SkVertices} */
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400761CanvasKit.SkVertices.prototype.applyBones = function() {};
762
Alexander Khovansky3e119332018-11-15 02:01:19 +0300763CanvasKit.SkImage.prototype.encodeToData = function() {};
Kevin Lubicka064c282019-04-04 09:28:53 -0400764CanvasKit.SkImage.prototype.makeShader = function() {};
Alexander Khovansky3e119332018-11-15 02:01:19 +0300765
Kevin Lubickee91c072019-03-29 10:39:52 -0400766CanvasKit.SkCanvas.prototype.drawAtlas = function() {};
Kevin Lubick37ab53e2019-11-11 10:06:08 -0500767CanvasKit.SkCanvas.prototype.drawPoints = function() {};
Kevin Lubickec4903d2019-01-14 08:36:08 -0500768CanvasKit.SkCanvas.prototype.drawText = function() {};
Kevin Lubick52b9f372018-12-04 13:57:36 -0500769/** @return {Uint8Array} */
770CanvasKit.SkCanvas.prototype.readPixels = function() {};
771CanvasKit.SkCanvas.prototype.writePixels = function() {};
772
Kevin Lubickddd0a332018-12-12 10:35:13 -0500773CanvasKit.SkFontMgr.prototype.MakeTypefaceFromData = function() {};
774
Kevin Lubickd3cfbca2019-03-15 15:36:29 -0400775CanvasKit.SkFont.prototype.getWidths = function() {};
776
777CanvasKit.RSXFormBuilder.prototype.build = function() {};
778CanvasKit.RSXFormBuilder.prototype.delete = function() {};
779CanvasKit.RSXFormBuilder.prototype.push = function() {};
Kevin Lubickee91c072019-03-29 10:39:52 -0400780CanvasKit.RSXFormBuilder.prototype.set = function() {};
781
782CanvasKit.SkColorBuilder.prototype.build = function() {};
783CanvasKit.SkColorBuilder.prototype.delete = function() {};
784CanvasKit.SkColorBuilder.prototype.push = function() {};
785CanvasKit.SkColorBuilder.prototype.set = function() {};
Kevin Lubickd3cfbca2019-03-15 15:36:29 -0400786
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400787// Define StrokeOpts object
788var StrokeOpts = {};
789StrokeOpts.prototype.width;
790StrokeOpts.prototype.miter_limit;
791StrokeOpts.prototype.cap;
792StrokeOpts.prototype.join;
Kevin Lubick1646e7d2018-12-07 13:03:08 -0500793StrokeOpts.prototype.precision;
Kevin Lubickb5ae3b52018-11-03 07:51:19 -0400794
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500795// Define everything created in the canvas2d spec here
Kevin Lubickb9db3902018-11-26 11:47:54 -0500796var HTMLCanvas = {};
Kevin Lubick0a1293c2018-12-03 12:31:04 -0500797HTMLCanvas.prototype.decodeImage = function() {};
798HTMLCanvas.prototype.dispose = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500799HTMLCanvas.prototype.getContext = function() {};
Kevin Lubick8e4a3312018-12-14 15:03:41 -0500800HTMLCanvas.prototype.loadFont = function() {};
Kevin Lubicka40f8322018-12-17 16:01:36 -0500801HTMLCanvas.prototype.makePath2D = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500802HTMLCanvas.prototype.toDataURL = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500803
804var CanvasRenderingContext2D = {};
805CanvasRenderingContext2D.prototype.addHitRegion = function() {};
806CanvasRenderingContext2D.prototype.arc = function() {};
807CanvasRenderingContext2D.prototype.arcTo = function() {};
808CanvasRenderingContext2D.prototype.beginPath = function() {};
809CanvasRenderingContext2D.prototype.bezierCurveTo = function() {};
810CanvasRenderingContext2D.prototype.clearHitRegions = function() {};
Kevin Lubick12c0e502018-11-28 12:51:56 -0500811CanvasRenderingContext2D.prototype.clearRect = function() {};
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500812CanvasRenderingContext2D.prototype.clip = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500813CanvasRenderingContext2D.prototype.closePath = function() {};
Kevin Lubick52b9f372018-12-04 13:57:36 -0500814CanvasRenderingContext2D.prototype.createImageData = function() {};
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500815CanvasRenderingContext2D.prototype.createLinearGradient = function() {};
Kevin Lubickd29edd72018-12-07 08:29:52 -0500816CanvasRenderingContext2D.prototype.createPattern = function() {};
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500817CanvasRenderingContext2D.prototype.createRadialGradient = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500818CanvasRenderingContext2D.prototype.drawFocusIfNeeded = function() {};
Kevin Lubick0a1293c2018-12-03 12:31:04 -0500819CanvasRenderingContext2D.prototype.drawImage = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500820CanvasRenderingContext2D.prototype.ellipse = function() {};
Kevin Lubick61ef7b22018-11-27 13:26:59 -0500821CanvasRenderingContext2D.prototype.fill = function() {};
Kevin Lubick12c0e502018-11-28 12:51:56 -0500822CanvasRenderingContext2D.prototype.fillRect = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500823CanvasRenderingContext2D.prototype.fillText = function() {};
Kevin Lubick52b9f372018-12-04 13:57:36 -0500824CanvasRenderingContext2D.prototype.getImageData = function() {};
Kevin Lubick12c0e502018-11-28 12:51:56 -0500825CanvasRenderingContext2D.prototype.getLineDash = function() {};
Kevin Lubick1646e7d2018-12-07 13:03:08 -0500826CanvasRenderingContext2D.prototype.isPointInPath = function() {};
827CanvasRenderingContext2D.prototype.isPointInStroke = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500828CanvasRenderingContext2D.prototype.lineTo = function() {};
829CanvasRenderingContext2D.prototype.measureText = function() {};
830CanvasRenderingContext2D.prototype.moveTo = function() {};
Kevin Lubick52b9f372018-12-04 13:57:36 -0500831CanvasRenderingContext2D.prototype.putImageData = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500832CanvasRenderingContext2D.prototype.quadraticCurveTo = function() {};
833CanvasRenderingContext2D.prototype.rect = function() {};
834CanvasRenderingContext2D.prototype.removeHitRegion = function() {};
835CanvasRenderingContext2D.prototype.resetTransform = function() {};
Kevin Lubick61ef7b22018-11-27 13:26:59 -0500836CanvasRenderingContext2D.prototype.restore = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500837CanvasRenderingContext2D.prototype.rotate = function() {};
Kevin Lubick61ef7b22018-11-27 13:26:59 -0500838CanvasRenderingContext2D.prototype.save = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500839CanvasRenderingContext2D.prototype.scale = function() {};
840CanvasRenderingContext2D.prototype.scrollPathIntoView = function() {};
Kevin Lubick12c0e502018-11-28 12:51:56 -0500841CanvasRenderingContext2D.prototype.setLineDash = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500842CanvasRenderingContext2D.prototype.setTransform = function() {};
843CanvasRenderingContext2D.prototype.stroke = function() {};
Kevin Lubick12c0e502018-11-28 12:51:56 -0500844CanvasRenderingContext2D.prototype.strokeRect = function() {};
Kevin Lubickb9db3902018-11-26 11:47:54 -0500845CanvasRenderingContext2D.prototype.strokeText = function() {};
846CanvasRenderingContext2D.prototype.transform = function() {};
847CanvasRenderingContext2D.prototype.translate = function() {};
848
Kevin Lubicka40f8322018-12-17 16:01:36 -0500849var Path2D = {};
850Path2D.prototype.addPath = function() {};
851Path2D.prototype.arc = function() {};
852Path2D.prototype.arcTo = function() {};
853Path2D.prototype.bezierCurveTo = function() {};
854Path2D.prototype.closePath = function() {};
855Path2D.prototype.ellipse = function() {};
856Path2D.prototype.lineTo = function() {};
857Path2D.prototype.moveTo = function() {};
858Path2D.prototype.quadraticCurveTo = function() {};
859Path2D.prototype.rect = function() {};
860
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500861var LinearCanvasGradient = {};
862LinearCanvasGradient.prototype.addColorStop = function() {};
863var RadialCanvasGradient = {};
864RadialCanvasGradient.prototype.addColorStop = function() {};
Kevin Lubickd29edd72018-12-07 08:29:52 -0500865var CanvasPattern = {};
866CanvasPattern.prototype.setTransform = function() {};
Kevin Lubickeb2f6b02018-11-29 15:07:02 -0500867
Kevin Lubick52b9f372018-12-04 13:57:36 -0500868var ImageData = {
869 /**
870 * @type {Uint8ClampedArray}
871 */
872 data: {},
873 height: {},
874 width: {},
875};
876
Kevin Lubickd29edd72018-12-07 08:29:52 -0500877var DOMMatrix = {
878 a: {},
879 b: {},
880 c: {},
881 d: {},
882 e: {},
883 f: {},
884};
885
Kevin Lubick217056c2018-09-20 17:39:31 -0400886// Not sure why this is needed - might be a bug in emsdk that this isn't properly declared.
Kevin Lubick6fccc9d2018-11-20 15:55:10 -0500887function loadWebAssemblyModule() {};