v2 / vlib / js / dom / dom.js.v
1020 lines · 895 sloc · 28.58 KB · eeaaff218bbe695c655a6380963e2f82deadcb94
Raw
1module dom
2
3pub struct CanvasRenderingContext2DSettings {
4pub mut:
5 alpha bool
6 color_space string
7 desynchronized bool
8 will_read_frequently bool
9}
10
11pub fn (settings CanvasRenderingContext2DSettings) to_js() JS.Any {
12 mut object := JS.Any{}
13 #object = { alpha: settings.alpha, colorSpace: settings.color_space.str, desynchronized: settings.desynchronized.val, willReadFrequently: settings.will_read_frequently.val };
14
15 return object
16}
17
18pub interface JS.DOMMatrix2DInit {
19mut:
20 a JS.Number
21 b JS.Number
22 c JS.Number
23 d JS.Number
24 e JS.Number
25 f JS.Number
26 m11 JS.Number
27 m12 JS.Number
28 m21 JS.Number
29 m22 JS.Number
30 m41 JS.Number
31 m42 JS.Number
32}
33
34pub interface JS.DOMMatrixInit {
35 JS.DOMMatrix2DInit
36 is2D JS.Boolean
37mut:
38 m13 JS.Number
39 m14 JS.Number
40 m23 JS.Number
41 m24 JS.Number
42 m31 JS.Number
43 m32 JS.Number
44 m33 JS.Number
45 m34 JS.Number
46 m43 JS.Number
47 m44 JS.Number
48}
49
50pub interface JS.DOMMatrix {
51 is2D JS.Boolean
52 isIdentity JS.Boolean
53 flipX() JS.DOMMatrix
54 flipY() JS.DOMMatrix
55 inverse() JS.DOMMatrix
56 multiply(other JS.DOMMatrix) JS.DOMMatrix
57 rotate(rotX JS.Number, rotY JS.Number, rotZ JS.Number) JS.DOMMatrix
58 rotateAxisAngle(x JS.Number, y JS.Number, z JS.Number, angle JS.Number) JS.DOMMatrix
59 scale(scaleX JS.Number, scaleY JS.Number, scaleZ JS.Number, originX JS.Number, originY JS.Number, originZ JS.Number) JS.DOMMatrix
60 scale3d(scale JS.Number, originX JS.Number, originY JS.Number, originZ JS.Number) JS.DOMMatrix
61 skewX(sx JS.Number) JS.DOMMatrix
62 skewY(sy JS.Number) JS.DOMMatrix
63 translate(tx JS.Number, ty JS.Number, tz JS.Number) JS.DOMMatrix
64 invertSelf() JS.DOMMatrix
65 multiplySelf(other JS.DOMMatrix) JS.DOMMatrix
66 preMultiplySelf(other JS.DOMMatrix) JS.DOMMatrix
67 rotateAxisAngleSelf(x JS.Number, y JS.Number, z JS.Number, angle JS.Number) JS.DOMMatrix
68 rotateFromVectorSelf(x JS.Number, y JS.Number) JS.DOMMatrix
69 rotateSelf(rotX JS.Number, rotY JS.Number, rotZ JS.Number) JS.DOMMatrix
70 scale3dSelf(scale JS.Number, originX JS.Number, originY JS.Number, originZ JS.Number) JS.DOMMatrix
71 scaleSelf(scaleX JS.Number, scaleY JS.Number, scaleZ JS.Number, originX JS.Number, originY JS.Number, originZ JS.Number) JS.DOMMatrix
72 toString() JS.String
73mut:
74 a JS.Number
75 b JS.Number
76 c JS.Number
77 d JS.Number
78 e JS.Number
79 f JS.Number
80 m11 JS.Number
81 m12 JS.Number
82 m13 JS.Number
83 m14 JS.Number
84 m21 JS.Number
85 m22 JS.Number
86 m23 JS.Number
87 m24 JS.Number
88 m31 JS.Number
89 m32 JS.Number
90 m33 JS.Number
91 m34 JS.Number
92 m41 JS.Number
93 m42 JS.Number
94 m43 JS.Number
95 m44 JS.Number
96}
97
98pub type SVGMatrix = JS.DOMMatrix
99pub type WebKitCSSMatrix = JS.DOMMatrix
100
101@[use_new]
102pub fn JS.DOMMatrix.prototype.constructor(init JS.Array) JS.DOMMatrix
103
104pub interface JS.DOMPoint {
105 matrixTransform(matrix JS.DOMMatrix) JS.DOMPoint
106mut:
107 w JS.Number
108 x JS.Number
109 y JS.Number
110 z JS.Number
111}
112
113@[use_new]
114pub fn JS.DOMPoint.prototype.constructor(x JS.Number, y JS.Number, z JS.Number, w JS.Number) JS.DOMPoint
115
116pub interface JS.DOMQuad {
117 p1 JS.DOMPoint
118 p2 JS.DOMPoint
119 p3 JS.DOMPoint
120 p4 JS.DOMPoint
121 getBounds() JS.DOMRect
122}
123
124@[use_new]
125pub fn JS.DOMQuad.prototype.constructor(p1 JS.DOMPoint, p2 JS.DOMPoint, p3 JS.DOMPoint, p4 JS.DOMPoint) JS.DOMQuad
126pub fn JS.DOMQuad.fromQuad(other JS.DOMQuad) JS.DOMQuad
127pub fn JS.DOMQuad.fromRect(other JS.DOMRect) JS.DOMRect
128
129pub interface JS.DOMRect {
130 bottom JS.Number
131 left JS.Number
132 right JS.Number
133 top JS.Number
134mut:
135 height JS.Number
136 width JS.Number
137 x JS.Number
138 y JS.Number
139}
140
141@[use_new]
142pub fn JS.DOMRect.prototype.constructor(x JS.Number, y JS.Number, width JS.Number, height JS.Number) JS.DOMRect
143
144pub interface JS.DOMStringList {
145 length JS.Number
146 contains(JS.String) JS.Boolean
147 item(index JS.Number) ?JS.String
148}
149
150pub interface JS.DOMRectList {
151 length JS.Number
152 contains(JS.String) JS.Boolean
153 item(index JS.Number) ?JS.Rect
154}
155
156pub type DOMTokenListForEachCb = fn (JS.String, JS.Number, JS.DOMTokenList)
157
158pub interface JS.DOMTokenList {
159 length JS.Number
160 toString() JS.String
161 add(tokens ...JS.Any) ?JS.Any
162 contains(token JS.String) JS.Boolean
163 item(index JS.Number) ?JS.String
164 remove(tokens ...JS.Any) ?JS.Any
165 replace(token JS.String, newToken JS.String) JS.Boolean
166 supports(token JS.String) JS.Boolean
167 toggle(token JS.String, force JS.Boolean) JS.Boolean
168 forEach(cb DOMTokenListForEachCb, thisArg JS.Any)
169mut:
170 value JS.String
171}
172
173pub struct JS.EventListenerOptions {
174 capture bool
175}
176
177pub interface JS.EventTarget {
178 addEventListener(event JS.String, cb EventCallback, options JS.EventListenerOptions)
179 dispatchEvent(event JS.Event) JS.Boolean
180 removeEventListener(event JS.String, cb EventCallback, options JS.EventListenerOptions)
181}
182
183pub interface JS.Node {
184 JS.EventTarget
185 baseURI JS.String
186 childNodes JS.Any
187 firstChild JS.ChildNode
188 isConnected JS.Boolean
189 lastChild JS.ChildNode
190 nextSibling JS.ChildNode
191 nodeName JS.String
192 nodeType JS.Number
193 ownerDocument JS.Document
194 parentElement JS.HTMLElement
195 parentNode JS.ParentNode
196 previousSibling JS.ChildNode
197 appendChild(node JS.Node) JS.Node
198 cloneNode(deep JS.Boolean) JS.Node
199 compareDocumentPosition(other JS.Node) JS.Number
200 contains(other JS.Node) JS.Boolean
201 getRootNode(composed JS.Boolean) JS.Node
202 hasChildNodes() JS.Boolean
203 insertBefore(node JS.Node, child JS.Node) JS.Node
204 isEqualNode(otherNode JS.Node) JS.Boolean
205 isSameNode(otherNode JS.Node) JS.Boolean
206 lookupPrefix(namespace JS.String) JS.String
207 normalize()
208 removeChild(child JS.Node) JS.Node
209 replaceChild(node JS.Node, child JS.Node) JS.Node
210mut:
211 nodeValue JS.String
212 textContent JS.String
213}
214
215pub interface JS.ChildNode {
216 JS.Node
217 after(nodes ...JS.Any)
218 before(nodes ...JS.Any)
219 remove()
220 replaceWith(nodes ...JS.Any)
221}
222
223pub interface JS.ParentNode {
224 JS.Node
225 childElementCount JS.Number
226 children JS.HTMLCollection
227}
228
229pub type WindowProxy = JS.Window
230
231pub interface JS.Document {
232 JS.Node
233 all JS.HTMLAllCollection
234 anchros JS.HTMLCollection
235 applets JS.HTMLCollection
236 characterSet JS.String
237 charset JS.String
238 compatMode JS.String
239 contentType JS.String
240 documentURI JS.String
241 documentElement JS.HTMLElement
242 hidden JS.Boolean
243 head JS.HTMLHeadElement
244 fullscreenEnabled JS.Boolean
245 fullscreen JS.Boolean
246 lastModified JS.String
247 inputEncoding JS.String
248 implementation JS.DOMImplementation
249 doctype JS.DocumentType
250 embeds JS.HTMLCollection
251 forms JS.HTMLCollection
252 getElementById(id JS.String) ?JS.HTMLElement
253 adoptNode(node JS.Node) JS.Node
254 close()
255 createAttribute(name JS.String) JS.Attr
256 createAttributeNS(namespace JS.String, qualifiedName JS.String) JS.Attr
257 createCDATASection(data JS.String) JS.CDATASection
258 createComment(data JS.String) JS.Comment
259 createDocumentFragment() JS.DocumentFragment
260 createElement(tagName JS.String) JS.HTMLElement
261 createElementNS(namespaceURI JS.String, qualifiedName JS.String) JS.Element
262 createEvent(event JS.String) JS.Event
263 createTextNode(data JS.String) JS.Text
264 elementFromPoint(x JS.Number, y JS.Number) ?JS.Element
265 elementsFromPoint(x JS.Number, y JS.Number) JS.Array
266 execCommand(commandId JS.String, showUI JS.Boolean, value JS.String) JS.Boolean
267 hasFocus() JS.Boolean
268 open(url JS.String, name JS.String, features JS.String) ?WindowProxy
269 queryCommandEnabled(commandId JS.String) JS.Boolean
270 queryCommandIndeterm(commandId JS.String) JS.Boolean
271 queryCommandState(commandId JS.String) JS.String
272 write(text ...JS.Any)
273 writeln(text ...JS.Any)
274 exitFullscreen() JS.Promise
275 exitPictureInPicture() JS.Promise
276 exitPointerLock()
277 requestPointerLock()
278 requestFullScreen() JS.Promise
279mut:
280 bgColor JS.String
281 fgColor JS.String
282 body JS.HTMLElement
283 cookie JS.String
284 domain JS.String
285 designMode JS.String
286 dir JS.String
287 vlinkColor JS.String
288}
289
290pub fn document_url(doc JS.Document) JS.String {
291 mut url := JS.String{}
292 #url = doc.URL;
293
294 return url
295}
296
297pub interface JS.Element {
298 JS.Node
299 classList JS.DOMTokenList
300 clientHeight JS.Number
301 clientLeft JS.Number
302 clientTop JS.Number
303 clientWidth JS.Number
304 localName JS.String
305 namespaceURI JS.String
306 ownerDocument JS.Document
307 part JS.DOMTokenList
308 prefix JS.String
309 scrollHeight JS.Number
310 scrollWidth JS.Number
311 tagName JS.String
312 closest(selector JS.String) ?JS.Element
313 getAttribute(qualifiedName JS.String) ?JS.String
314 getAttributeNS(namespace JS.String, localName JS.String) ?JS.String
315 getAttributeNames() JS.Array
316 getClientRects() JS.DOMRectList
317 getBoundingClientRect() JS.DOMRect
318 scrollTo(x JS.Number, y JS.Number)
319 scroll(x JS.Number, y JS.Number)
320 scrollBy(x JS.Number, y JS.Number)
321 toggleAttribute(qualifiedName JS.String, force JS.Boolean) JS.Boolean
322 getElementsByClassName(className JS.String) JS.HTMLCollection
323 getElementsByTagName(qualifiedName JS.String) JS.HTMLCollection
324 getEelementsByTagNameNS(namespaecURI JS.String, localName JS.String) JS.HTMLCollection
325 hasAttribute(qualifiedName JS.String) JS.Boolean
326 hasAttributeNS(namespace JS.String, localName JS.String) JS.Boolean
327 hasAttributes() JS.Boolean
328 hasPointerCapture(pointerId JS.Number) JS.Boolean
329 matches(selectors JS.String) JS.Boolean
330mut:
331 className JS.String
332 id JS.String
333 onfullscreenchange fn (this JS.Element, ev JS.Event) JS.Any
334 onfullscreenerror fn (this JS.Element, ev JS.Event) JS.Any
335 outerHTML JS.String
336 scrollLeft JS.Number
337 scrollTop JS.Number
338 slot JS.String
339}
340
341pub const document = JS.Document{}
342
343pub fn window() JS.Window {
344 mut x := JS.Any(unsafe { voidptr(u64(0)) })
345 #x = window;
346
347 return x
348}
349
350fn init() {
351 #js__dom__document = document;
352}
353
354pub type EventCallback = fn (JS.Event)
355
356// event_listener returns proper listener callback. This function is useful when you need access to `this` value
357// that is EventTarget. When you need access only to Event itself you can just use `fn (JS.Event)` as listener.
358pub fn event_listener(callback fn (JS.EventTarget, JS.Event)) EventCallback {
359 return fn [callback] (event JS.Event) {
360 mut target := JS.EventTarget(unsafe { voidptr(u64(0)) })
361 #target = this;
362 callback(target, event)
363 }
364}
365
366pub interface JS.HTMLCollection {
367 length JS.Number
368 item(idx JS.Number) ?JS.Any
369 namedItem(name JS.String) ?JS.Any
370}
371
372pub interface JS.HTMLElement {
373 JS.Element
374 accessKeyLabel JS.String
375 offsetHeight JS.Number
376 offsetLeft JS.Number
377 offsetParent JS.Any
378 offsetTop JS.Number
379 offsetWidth JS.Number
380 click()
381 querySelector(selectors JS.String) ?JS.HTMLElement
382 querySelectorAll(selectors JS.String) JS.NodeList
383mut:
384 accessKey JS.String
385 autocapitalize JS.String
386 dir JS.String
387 draggable JS.Boolean
388 hidden JS.Boolean
389 innerText JS.String
390 lang JS.String
391 outerText JS.String
392 spellcheck JS.Boolean
393 title JS.String
394 translate JS.Boolean
395}
396
397pub type NodeListForEachCb = fn (JS.HTMLElement, JS.Number, JS.NodeList)
398
399pub interface JS.NodeList {
400 length JS.Number
401 forEach(cb NodeListForEachCb, thisArg JS.Any)
402 item(idx JS.Number) ?JS.Any
403}
404
405pub fn JS.HTMLElement.prototype.constructor() JS.HTMLElement
406
407pub interface JS.HTMLEmbedElement {
408 getSVGDocument() ?JS.Document
409mut:
410 align JS.String
411 height JS.String
412 src JS.String
413 width JS.String
414}
415
416pub fn html_embed_type(embed JS.HTMLEmbedElement) JS.String {
417 mut str := JS.String{}
418 #str = embed.type
419
420 return str
421}
422
423pub fn JS.HTMLEmbedElement.prototype.constructor() JS.HTMLEmbedElement
424
425pub type CanvasContext = JS.CanvasRenderingContext2D
426 | JS.WebGL2RenderingContext
427 | JS.WebGLRenderingContext
428
429pub interface JS.HTMLCanvasElement {
430 JS.HTMLElement
431 getContext(contextId JS.String, options JS.Any) ?CanvasContext
432mut:
433 height JS.Number
434 width JS.Number
435}
436
437pub type FillStyle = JS.CanvasGradient | JS.CanvasPattern | JS.String
438
439pub interface JS.CanvasRenderingContext2D {
440 canvas JS.HTMLCanvasElement
441 beginPath()
442 clip(path JS.Path2D, fillRule JS.String)
443 fill(path JS.Path2D, fillRule JS.String)
444 isPointInPath(path JS.Path2D, x JS.Number, y JS.Number, fillRule JS.String) JS.Boolean
445 isPointInStroke(path JS.Path2D, x JS.Number, y JS.Number) JS.Boolean
446 stoke(path JS.Path2D)
447 createLinearGradient(x0 JS.Number, y0 JS.Number, x1 JS.Number, y1 JS.Number) JS.CanvasGradient
448 createRadialGradient(x0 JS.Number, y0 JS.Number, r0 JS.Number, x1 JS.Number, y1 JS.Number, r1 JS.Number) JS.CanvasGradient
449 createPattern(image JS.CanvasImageSource, repetition JS.String) ?JS.CanvasPattern
450 arc(x JS.Number, y JS.Number, radius JS.Number, startAngle JS.Number, endAngle JS.Number, counterclockwise JS.Boolean)
451 arcTo(x1 JS.Number, y1 JS.Number, x2 JS.Number, y2 JS.Number, radius JS.Number)
452 bezierCurveTo(cp1x JS.Number, cp1y JS.Number, cp2x JS.Number, cp2y JS.Number, x JS.Number, y JS.Number)
453 closePath()
454 ellipse(x JS.Number, y JS.Number, radiusX JS.Number, radiusY JS.Number, rotation JS.Number, startAngle JS.Number, endAngle JS.Number, counterclockwise JS.Boolean)
455 lineTo(x JS.Number, y JS.Number)
456 moveTo(x JS.Number, y JS.Number)
457 quadraticCurveTo(cpx JS.Number, cpy JS.Number, x JS.Number, y JS.Number)
458 rect(x JS.Number, y JS.Number, w JS.Number, h JS.Number)
459 getLineDash() JS.Array
460 setLineDash(segments JS.Array)
461 clearRect(x JS.Number, y JS.Number, w JS.Number, h JS.Number)
462 fillRect(x JS.Number, y JS.Number, w JS.Number, h JS.Number)
463 strokeRect(x JS.Number, y JS.Number, w JS.Number, h JS.Number)
464 getTransformt() JS.DOMMatrix
465 resetTransform()
466 rotate(angle JS.Number)
467 scale(x JS.Number, y JS.Number)
468 setTransform(matrix JS.DOMMatrix)
469 transform(a JS.Number, b JS.Number, c JS.Number, d JS.Number, e JS.Number, f JS.Number)
470 translate(x JS.Number, y JS.Number)
471 drawFocusIfNeeded(path JS.Path2D, element JS.Element)
472 stroke()
473 fillText(text JS.String, x JS.Number, y JS.Number)
474mut:
475 lineCap JS.String
476 lineDashOffset JS.Number
477 lineJoin JS.String
478 lineWidth JS.Number
479 miterLimit JS.Number
480 fillStyle FillStyle
481 strokeStyle FillStyle
482 globalAlpha JS.Number
483 globalCompositeOperation JS.String
484 font JS.String
485}
486
487pub interface JS.CanvasGradient {
488 addColorStop(offset JS.Number, color JS.String)
489}
490
491pub interface JS.CanvasPattern {
492 setTransform(transform JS.DOMMatrix)
493}
494
495pub type OnDeviceMotion = fn (ev JS.DeviceMotionEvent) JS.Any
496
497pub type OnDeviceOrientation = fn (ev JS.DeviceOrientationEvent) JS.Any
498
499pub fn on_device_motion(cb fn (win JS.Window, ev JS.DeviceMotionEvent) JS.Any) OnDeviceMotion {
500 clos := fn [cb] (ev JS.DeviceMotionEvent) JS.Any {
501 mut win := JS.Any(unsafe { voidptr(u64(0)) })
502 #win = this;
503
504 return cb(win, ev)
505 }
506 return clos
507}
508
509pub fn on_device_orientation(cb fn (win JS.Window, ev JS.DeviceOrientationEvent) JS.Any) OnDeviceOrientation {
510 clos := fn [cb] (ev JS.DeviceOrientationEvent) JS.Any {
511 mut win := JS.Any(unsafe { voidptr(u64(0)) })
512 #win = this;
513
514 return cb(win, ev)
515 }
516 return clos
517}
518
519pub type AnimationFrameCallback = fn (JS.Number)
520
521pub interface JS.Window {
522 JS.EventTarget
523 closed JS.Boolean
524 devicePixelRatio JS.Number
525 document JS.Document
526 frameElement JS.Element
527 innerHeight JS.Number
528 innerWidth JS.Number
529 length JS.Number
530 outerHeight JS.Number
531 outerWidth JS.Number
532 screenLeft JS.Number
533 screenTop JS.Number
534 screenX JS.Number
535 screenY JS.Number
536 scrollX JS.Number
537 scrollY JS.Number
538 alert(message JS.Any)
539 blur()
540 cancelIdleCallback(handle JS.Number)
541 captureEvents()
542 close()
543 confirm(message JS.String) JS.Boolean
544 focus()
545 moveBy(x JS.Number, y JS.Number)
546 moveTo(x JS.Number, y JS.Number)
547 print()
548 prompt(message JS.String, default_ JS.String) ?JS.String
549 stop()
550 resizeBy(x JS.Number, y JS.Number)
551 resizeTo(width JS.Number, height JS.Number)
552 scroll(x JS.Number, y JS.Number)
553 scrollBy(x JS.Number, y JS.Number)
554 scrollTo(x JS.Number, y JS.Number)
555 requestAnimationFrame(callback AnimationFrameCallback)
556mut:
557 name string
558 opener JS.Any
559 ondevicemotion OnDeviceMotion
560 ondeviceorientation OnDeviceOrientation
561}
562
563pub interface JS.Path2D {}
564
565pub struct JS.DeviceMotionEventAcceleration {
566 x JS.Number
567 y JS.Number
568 z JS.Number
569}
570
571pub struct JS.DeviceMotionEventRotationRate {
572 alpha JS.Number
573 beta JS.Number
574 gamma JS.Number
575}
576
577pub interface JS.DeviceMotionEvent {
578 JS.Event
579 interval JS.Number
580 acceleration JS.DeviceMotionEventAcceleration
581 accelerationIncludingGravity JS.DeviceMotionEventAcceleration
582 rotationRate JS.DeviceMotionEventRotationRate
583}
584
585pub interface JS.DeviceOrientationEvent {
586 JS.Event
587 absolute JS.Boolean
588 alpha JS.Number
589 beta JS.Number
590 gamma JS.Number
591}
592
593pub interface JS.DocumentType {
594 JS.Node
595 JS.ChildNode
596 name JS.String
597 ownerDocument JS.Document
598 publicId JS.String
599 systemId JS.String
600}
601
602@[single_impl]
603pub interface JS.WebGLProgram {}
604
605@[single_impl]
606pub interface JS.WebGLShader {}
607
608@[single_impl]
609pub interface JS.WebGLBuffer {}
610
611@[single_impl]
612pub interface JS.WebGLFramebuffer {}
613
614@[single_impl]
615pub interface JS.WebGLRenderbuffer {}
616
617@[single_impl]
618pub interface JS.WebGLSampler {}
619
620@[single_impl]
621pub interface JS.WebGLTexture {}
622
623@[single_impl]
624pub interface JS.WebGLUniformLocation {}
625
626@[single_impl]
627pub interface JS.WebGLVertexArrayObject {}
628
629pub interface JS.WebGLRenderingContext {
630 canvas JS.HTMLCanvasElement
631 drawingBufferHeight JS.Number
632 drawingBufferWidth JS.Number
633 activeTexture(texture JS.Number)
634 attachShader(program JS.WebGLProgram, shader JS.WebGLShader)
635 linkProgram(program JS.WebGLProgram)
636 bindAttribLocation(program JS.WebGLProgram, index JS.Number, name JS.String)
637 bindBuffer(target JS.Number, buffer JS.WebGLBuffer)
638 bindFramebuffer(target JS.Number, buffer JS.WebGLFrameBuffer)
639 bindRenderbuffer(target JS.Number, renderbuffer JS.WebGLRenderbuffer)
640 bindSampler(unit JS.Number, sampler JS.WebGLSampler)
641 bindTexture(target JS.Number, texture JS.WebGLTexture)
642 clear(mask JS.Number)
643 clearColor(red JS.Number, green JS.Number, blue JS.Number, alpha JS.Number)
644 clearDepth(depth JS.Number)
645 clearStencil(s JS.Number)
646 colorMask(red JS.Boolean, green JS.Boolean, blue JS.Boolean, alpha JS.Boolean)
647 compileShader(shader JS.WebGLShader)
648 createBuffer() ?JS.WebGLBuffer
649 createFramebuffer() ?JS.WebGLFrameBuffer
650 createProgram() ?JS.WebGLProgram
651 createRenderbuffer() ?JS.WebGLRenderbuffer
652 createSampler() ?JS.WebGLSampler
653 createShader(typ JS.Number) ?JS.WebGLShader
654 createTexture() ?JS.WebGLTexture
655 cullFace(mode JS.Number)
656 deleteBuffer(buffer JS.WebGLBuffer)
657 deleteFramebuffer(buffer JS.WebGLFrameBuffer)
658 deleteProgram(program JS.WebGLProgram)
659 deleteRenderbuffer(buffer JS.WebGLRenderbuffer)
660 deleteShader(shader JS.WebGLShader)
661 deleteTexture(texture JS.WebGLTexture)
662 depthFunc(func JS.Number)
663 depthMask(flag JS.Boolean)
664 depthRange(zNear JS.Number, zFar JS.Number)
665 detachShader(program JS.WebGLProgram, shader JS.WebGLShader)
666 disable(cap JS.Number)
667 disableVertexAttribArray(index JS.Number)
668 drawArrays(mode JS.Number, first JS.Number, count JS.Number)
669 drawElements(mode JS.Number, count JS.Number, typ JS.Number, offset JS.Number)
670 enable(cap JS.Number)
671 enableVertexAttribArray(index JS.Number)
672 finish()
673 flush()
674 framebufferRenderbuffer(target JS.Number, attachment JS.Number, renderbuffertarget JS.Number, renderbuffer JS.WebGLRenderbuffer)
675 framebufferTexture2D(target JS.Number, attachment JS.Number, textarget JS.Number, texture JS.WebGLTexture, level JS.Number)
676 frontFace(mode JS.Number)
677 generateMipmap(target JS.Number)
678 getError() JS.Number
679 getExtension(name JS.String) JS.Any
680 getParameter(name JS.Number) JS.Any
681 getProgramParameter(program JS.WebGLProgram, pname JS.Number) JS.Any
682 getShaderSource(shader JS.WebGLShader) ?JS.String
683 bufferData(target JS.Number, data JS.TypedArray, usage JS.Number)
684 shaderSource(shader JS.WebGLShader, source JS.String)
685 getShaderParameter(shader JS.WebGLShader, pname JS.Number) JS.Any
686 vertexAttribPointer(index JS.Number, size JS.Number, typ JS.Number, normalized JS.Boolean, stride JS.Number, offset JS.Number)
687 getAttribLocation(program JS.WebGLProgram, name JS.String) JS.Number
688 useProgram(program JS.WebGLProgram)
689 getUniformLocation(program JS.WebGLProgram, name JS.String) ?JS.WebGLUniformLocation
690 uniformMatrix2fv(location JS.WebGLUniformLocation, transpose JS.Boolean, value JS.Array)
691 uniformMatrix3fv(location JS.WebGLUniformLocation, transpose JS.Boolean, value JS.Array)
692 uniformMatrix4fv(location JS.WebGLUniformLocation, transpose JS.Boolean, value JS.Array)
693 getProgramInfoLog(program JS.WebGLProgram) JS.String
694 getShaderInfoLog(shader JS.WebGLShader) JS.String
695 viewport(x JS.Number, y JS.Number, width JS.Number, height JS.Number)
696 scissor(x JS.Number, y JS.Number, width JS.Number, height JS.Number)
697 stencilFunc(func JS.Number, ref JS.Number, mask JS.Number)
698 stencilFuncSeparate(face JS.Number, func JS.Number, ref JS.Number, mask JS.Number)
699 stencilMask(mask JS.Number)
700 stencilMaskSeparate(face JS.Number, mask JS.Number)
701 stencilOp(fail JS.Number, zfail JS.Number, zpass JS.Number)
702 stencilOpSeparate(face JS.Number, fail JS.Number, zfail JS.Number, zpass JS.Number)
703 texParameterf(target JS.Number, pname JS.Number, param JS.Number)
704 texParameteri(target JS.Number, pname JS.Number, param JS.Number)
705 uniform1f(location JS.WebGLUniformLocation, x JS.Number)
706 uniform1i(location JS.WebGLUniformLocation, x JS.Number)
707 uniform2f(location JS.WebGLUniformLocation, x JS.Number, y JS.Number)
708 uniform2i(location JS.WebGLUniformLocation, x JS.Number, y JS.Number)
709 uniform3f(location JS.WebGLUniformLocation, x JS.Number, y JS.Number, z JS.Number)
710 uniform3i(location JS.WebGLUniformLocation, x JS.Number, y JS.Number, z JS.Number)
711 uniform4f(location JS.WebGLUniformLocation, x JS.Number, y JS.Number, z JS.Number, w JS.Number)
712 uniform4i(location JS.WebGLUniformLocation, x JS.Number, y JS.Number, z JS.Number, w JS.Number)
713 validateProgram(program JS.WebGLProgram)
714 vertexAttrib1f(index JS.Number, x JS.Number)
715 vertexAttrib1fv(index JS.Number, values JS.Array)
716 vertexAttrib2f(index JS.Number, x JS.Number, y JS.Number)
717 vertexAttrib2fv(index JS.Number, x JS.Number, y JS.Number, values JS.Array)
718 vertexAttrib3f(index JS.Number, x JS.Number, y JS.Number, z JS.Number)
719 vertexAttrib3fv(index JS.Number, x JS.Number, y JS.Number, z JS.Number, values JS.Array)
720 vertexAttrib4f(index JS.Number, x JS.Number, y JS.Number, z JS.Number, w JS.Number)
721 vertexAttrib4fv(index JS.Number, x JS.Number, y JS.Number, z JS.Number, w JS.Number, values JS.Array)
722 bufferSubData(target JS.Number, offset JS.Number, data JS.TypedArray)
723 compressedTexImage2D(target JS.Number, level JS.Number, internalformat JS.Number, width JS.Number, height JS.Number, border JS.Number, data JS.TypedArray)
724 compressedTexSubImage2D(target JS.Number, level JS.Number, xoffset JS.Number, yoffset JS.Number, width JS.Number, height JS.Number, format JS.Number, data JS.TypedArray)
725 readPixels(x JS.Number, y JS.Number, width JS.Number, height JS.Number, format JS.Number, typ JS.Number, border JS.Number, pixels JS.TypedArray)
726 texImage2D(target JS.Number, level JS.Number, internalformat JS.Number, format JS.Number, source JS.Node)
727}
728
729pub interface JS.WebGL2RenderingContext {
730 JS.WebGLRenderingContext
731}
732
733pub fn gl_vertex_shader() JS.Number {
734 mut num := JS.Number{}
735 #num = WebGLRenderingContext.VERTEX_SHADER;
736
737 return num
738}
739
740pub fn gl_fragment_shader() JS.Number {
741 mut num := JS.Number{}
742 #num = WebGLRenderingContext.FRAGMENT_SHADER;
743
744 return num
745}
746
747pub fn gl_element_array_buffer() JS.Number {
748 mut num := JS.Number{}
749 #num = WebGLRenderingContext.ELEMENT_ARRAY_BUFFER;
750
751 return num
752}
753
754pub fn gl_array_buffer() JS.Number {
755 mut num := JS.Number{}
756 #num = WebGLRenderingContext.ARRAY_BUFFER;
757
758 return num
759}
760
761pub fn gl_color_buffer_bit() JS.Number {
762 mut num := JS.Number{}
763 #num = WebGLRenderingContext.COLOR_BUFFER_BIT;
764
765 return num
766}
767
768pub fn gl_depth_buffer_bit() JS.Number {
769 mut num := JS.Number{}
770 #num = WebGLRenderingContext.COLOR_BUFFER_BIT;
771
772 return num
773}
774
775pub fn gl_triangles() JS.Number {
776 mut num := JS.Number{}
777 #num = WebGLRenderingContext.TRIANGLES;
778
779 return num
780}
781
782pub fn gl_unsigned_short() JS.Number {
783 mut num := JS.Number{}
784 #num = WebGLRenderingContext.UNSIGNED_SHORT;
785
786 return num
787}
788
789pub fn gl_static_draw() JS.Number {
790 mut num := JS.Number{}
791 #num = WebGLRenderingContext.STATIC_DRAW;
792
793 return num
794}
795
796pub fn gl_link_status() JS.Number {
797 mut num := JS.Number{}
798 #num = WebGLRenderingContext.LINK_STATUS;
799
800 return num
801}
802
803pub fn gl_compile_status() JS.Number {
804 mut num := JS.Number{}
805 #num = WebGLRenderingContext.COMPILE_STATUS;
806
807 return num
808}
809
810pub fn gl_float() JS.Number {
811 mut num := JS.Number{}
812 #num = WebGLRenderingContext.FLOAT;
813
814 return num
815}
816
817pub fn gl_depth_test() JS.Number {
818 mut num := JS.Number{}
819 #num = WebGLRenderingContext.DEPTH_TEST;
820
821 return num
822}
823
824// Event is an event which takes place in the DOM.
825pub interface JS.Event {
826 JS.EventTarget
827 bubbles JS.Boolean
828 cancelable JS.Boolean
829 composed JS.Boolean
830 currentTarget JS.EventTarget
831 defaultPrevented JS.Boolean
832 eventPhase JS.Number
833 isTrusted JS.Boolean
834 srcElement JS.EventTarget
835 timeStamp JS.DOMHighResTimeStamp // composedPath returns the invocation target objects of event's path.
836 composedPath() JS.Array
837 initEvent(typ JS.String, bubbles JS.Boolean, cancelable JS.Boolean)
838 preventDefault()
839 stopImmediatePropagation()
840 stopPropagation()
841mut:
842 returnValue JS.Boolean
843}
844
845pub fn event_type(ev JS.Event) string {
846 res := ''
847 #res.str = ev.type;
848
849 return res
850}
851
852pub fn create_event(typ string, bubbles bool, cancelable bool, composed bool) JS.Event {
853 mut ev := JS.Event(unsafe { voidptr(u64(0)) })
854 #ev = new Event(typ.str,bubbles.val,cancelable.val,composed.val);
855
856 return ev
857}
858
859pub interface JS.ErrorEvent {
860 JS.Event
861 colno JS.Number
862 error JS.Number
863 filename JS.Number
864 lineno JS.Number
865 message JS.String
866}
867
868@[use_new]
869pub fn JS.ErrorEvent.prototype.constructor(typ JS.String) JS.ErrorEvent
870
871pub interface JS.UIEvent {
872 JS.Event
873 detail JS.Number
874 view JS.Any
875}
876
877@[use_new]
878pub fn JS.UIEvent.prototype.constructor(typ JS.String, dict JS.UIEventDict) JS.UIEvent
879
880pub struct JS.EventInit {
881 bubbles JS.Boolean
882 cancelable JS.Boolean
883 composed JS.Boolean
884}
885
886pub struct JS.UIEventInitDict {
887 bubbles JS.Boolean
888 cancelable JS.Boolean
889 composed JS.Boolean
890 detail JS.Number
891 view JS.Any
892 which JS.Number
893}
894
895pub interface JS.MouseEvent {
896 JS.UIEvent
897 altKey JS.Boolean
898 button JS.Number
899 buttons JS.Number
900 clientX JS.Number
901 clientY JS.Number
902 ctrlKey JS.Number
903 metaKey JS.Number
904 movementX JS.Number
905 movementY JS.Number
906 offsetX JS.Number
907 offsetY JS.Number
908 pageX JS.Number
909 pageY JS.Number
910 relatedTarget JS.Any
911 screenX JS.Number
912 screenY JS.Number
913 shiftKey JS.Boolean
914 x JS.Number
915 y JS.Number
916 getModifierState(keyArg JS.String) JS.Boolean
917}
918
919pub interface JS.WheelEvent {
920 JS.MouseEvent
921 deltaX JS.Number
922 deltaY JS.Number
923 deltaZ JS.Number
924 deltaMode JS.Number
925}
926
927pub interface JS.PointerEvent {
928 JS.MouseEvent
929 height JS.Number
930 isPrimary JS.Boolean
931 pointerId JS.Number
932 pointerType JS.String
933 pressure JS.Number
934 tangentialPressure JS.Number
935 tiltX JS.Number
936 tiltY JS.Number
937 twist JS.Number
938 width JS.Number
939 getCoalescedEvents() JS.Array
940 getPredictedEvents() JS.Array
941}
942
943pub interface JS.Gamepad {
944 axes JS.Array // Array<number>
945 buttons JS.Array // Array<GamepadButton>
946 connected JS.Boolean
947 hapticActuators JS.Array // Array<GamepadHapticActuator>
948 id JS.String
949 index JS.Number
950 mapping JS.String
951 timestamp JS.Number
952}
953
954@[single_impl]
955pub interface JS.GamepadButton {
956 pressed JS.Boolean
957 touched JS.Boolean
958 value JS.Number
959}
960
961@[single_impl]
962pub interface JS.GamepadHapticActuator {
963}
964
965pub interface JS.GamepadEvent {
966 JS.Event
967 gamepad JS.Gamepad
968}
969
970pub interface JS.HashChangeEvent {
971 JS.Event
972 newURL JS.String
973 oldURL JS.String
974}
975
976pub interface JS.MessageEvent {
977 JS.Event
978 data JS.Any
979 lastEventId JS.String
980 origin JS.String
981 ports JS.Array
982 source JS.Any
983}
984
985pub interface JS.MessagePort {
986 JS.EventTarget
987 close()
988 portMessage(message JS.Any, transfer JS.Array)
989 start()
990}
991
992pub interface JS.PageTransitionEvent {
993 JS.Event
994 persisted JS.Boolean
995}
996
997pub interface JS.PopStateEvent {
998 JS.Event
999 state JS.Any
1000}
1001
1002pub interface JS.ProgressEvent {
1003 lenghtComputable JS.Boolean
1004 loaded JS.Number
1005 target JS.Any
1006 total JS.Number
1007}
1008
1009pub interface JS.KeyboardEvent {
1010 JS.UIEvent
1011 altKey JS.Boolean
1012 code JS.String
1013 ctrlKey JS.Boolean
1014 isComposing JS.Boolean
1015 key JS.String
1016 location JS.Number
1017 metaKey JS.Boolean
1018 repeat JS.Boolean
1019 shiftKey JS.Boolean
1020}
1021