| 1 | module dom |
| 2 | |
| 3 | pub struct CanvasRenderingContext2DSettings { |
| 4 | pub mut: |
| 5 | alpha bool |
| 6 | color_space string |
| 7 | desynchronized bool |
| 8 | will_read_frequently bool |
| 9 | } |
| 10 | |
| 11 | pub 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 | |
| 18 | pub interface JS.DOMMatrix2DInit { |
| 19 | mut: |
| 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 | |
| 34 | pub interface JS.DOMMatrixInit { |
| 35 | JS.DOMMatrix2DInit |
| 36 | is2D JS.Boolean |
| 37 | mut: |
| 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 | |
| 50 | pub 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 |
| 73 | mut: |
| 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 | |
| 98 | pub type SVGMatrix = JS.DOMMatrix |
| 99 | pub type WebKitCSSMatrix = JS.DOMMatrix |
| 100 | |
| 101 | @[use_new] |
| 102 | pub fn JS.DOMMatrix.prototype.constructor(init JS.Array) JS.DOMMatrix |
| 103 | |
| 104 | pub interface JS.DOMPoint { |
| 105 | matrixTransform(matrix JS.DOMMatrix) JS.DOMPoint |
| 106 | mut: |
| 107 | w JS.Number |
| 108 | x JS.Number |
| 109 | y JS.Number |
| 110 | z JS.Number |
| 111 | } |
| 112 | |
| 113 | @[use_new] |
| 114 | pub fn JS.DOMPoint.prototype.constructor(x JS.Number, y JS.Number, z JS.Number, w JS.Number) JS.DOMPoint |
| 115 | |
| 116 | pub 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] |
| 125 | pub fn JS.DOMQuad.prototype.constructor(p1 JS.DOMPoint, p2 JS.DOMPoint, p3 JS.DOMPoint, p4 JS.DOMPoint) JS.DOMQuad |
| 126 | pub fn JS.DOMQuad.fromQuad(other JS.DOMQuad) JS.DOMQuad |
| 127 | pub fn JS.DOMQuad.fromRect(other JS.DOMRect) JS.DOMRect |
| 128 | |
| 129 | pub interface JS.DOMRect { |
| 130 | bottom JS.Number |
| 131 | left JS.Number |
| 132 | right JS.Number |
| 133 | top JS.Number |
| 134 | mut: |
| 135 | height JS.Number |
| 136 | width JS.Number |
| 137 | x JS.Number |
| 138 | y JS.Number |
| 139 | } |
| 140 | |
| 141 | @[use_new] |
| 142 | pub fn JS.DOMRect.prototype.constructor(x JS.Number, y JS.Number, width JS.Number, height JS.Number) JS.DOMRect |
| 143 | |
| 144 | pub interface JS.DOMStringList { |
| 145 | length JS.Number |
| 146 | contains(JS.String) JS.Boolean |
| 147 | item(index JS.Number) ?JS.String |
| 148 | } |
| 149 | |
| 150 | pub interface JS.DOMRectList { |
| 151 | length JS.Number |
| 152 | contains(JS.String) JS.Boolean |
| 153 | item(index JS.Number) ?JS.Rect |
| 154 | } |
| 155 | |
| 156 | pub type DOMTokenListForEachCb = fn (JS.String, JS.Number, JS.DOMTokenList) |
| 157 | |
| 158 | pub 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) |
| 169 | mut: |
| 170 | value JS.String |
| 171 | } |
| 172 | |
| 173 | pub struct JS.EventListenerOptions { |
| 174 | capture bool |
| 175 | } |
| 176 | |
| 177 | pub 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 | |
| 183 | pub 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 |
| 210 | mut: |
| 211 | nodeValue JS.String |
| 212 | textContent JS.String |
| 213 | } |
| 214 | |
| 215 | pub 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 | |
| 223 | pub interface JS.ParentNode { |
| 224 | JS.Node |
| 225 | childElementCount JS.Number |
| 226 | children JS.HTMLCollection |
| 227 | } |
| 228 | |
| 229 | pub type WindowProxy = JS.Window |
| 230 | |
| 231 | pub 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 |
| 279 | mut: |
| 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 | |
| 290 | pub fn document_url(doc JS.Document) JS.String { |
| 291 | mut url := JS.String{} |
| 292 | #url = doc.URL; |
| 293 | |
| 294 | return url |
| 295 | } |
| 296 | |
| 297 | pub 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 |
| 330 | mut: |
| 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 | |
| 341 | pub const document = JS.Document{} |
| 342 | |
| 343 | pub fn window() JS.Window { |
| 344 | mut x := JS.Any(unsafe { voidptr(u64(0)) }) |
| 345 | #x = window; |
| 346 | |
| 347 | return x |
| 348 | } |
| 349 | |
| 350 | fn init() { |
| 351 | #js__dom__document = document; |
| 352 | } |
| 353 | |
| 354 | pub 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. |
| 358 | pub 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 | |
| 366 | pub interface JS.HTMLCollection { |
| 367 | length JS.Number |
| 368 | item(idx JS.Number) ?JS.Any |
| 369 | namedItem(name JS.String) ?JS.Any |
| 370 | } |
| 371 | |
| 372 | pub 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 |
| 383 | mut: |
| 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 | |
| 397 | pub type NodeListForEachCb = fn (JS.HTMLElement, JS.Number, JS.NodeList) |
| 398 | |
| 399 | pub interface JS.NodeList { |
| 400 | length JS.Number |
| 401 | forEach(cb NodeListForEachCb, thisArg JS.Any) |
| 402 | item(idx JS.Number) ?JS.Any |
| 403 | } |
| 404 | |
| 405 | pub fn JS.HTMLElement.prototype.constructor() JS.HTMLElement |
| 406 | |
| 407 | pub interface JS.HTMLEmbedElement { |
| 408 | getSVGDocument() ?JS.Document |
| 409 | mut: |
| 410 | align JS.String |
| 411 | height JS.String |
| 412 | src JS.String |
| 413 | width JS.String |
| 414 | } |
| 415 | |
| 416 | pub fn html_embed_type(embed JS.HTMLEmbedElement) JS.String { |
| 417 | mut str := JS.String{} |
| 418 | #str = embed.type |
| 419 | |
| 420 | return str |
| 421 | } |
| 422 | |
| 423 | pub fn JS.HTMLEmbedElement.prototype.constructor() JS.HTMLEmbedElement |
| 424 | |
| 425 | pub type CanvasContext = JS.CanvasRenderingContext2D |
| 426 | | JS.WebGL2RenderingContext |
| 427 | | JS.WebGLRenderingContext |
| 428 | |
| 429 | pub interface JS.HTMLCanvasElement { |
| 430 | JS.HTMLElement |
| 431 | getContext(contextId JS.String, options JS.Any) ?CanvasContext |
| 432 | mut: |
| 433 | height JS.Number |
| 434 | width JS.Number |
| 435 | } |
| 436 | |
| 437 | pub type FillStyle = JS.CanvasGradient | JS.CanvasPattern | JS.String |
| 438 | |
| 439 | pub 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) |
| 474 | mut: |
| 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 | |
| 487 | pub interface JS.CanvasGradient { |
| 488 | addColorStop(offset JS.Number, color JS.String) |
| 489 | } |
| 490 | |
| 491 | pub interface JS.CanvasPattern { |
| 492 | setTransform(transform JS.DOMMatrix) |
| 493 | } |
| 494 | |
| 495 | pub type OnDeviceMotion = fn (ev JS.DeviceMotionEvent) JS.Any |
| 496 | |
| 497 | pub type OnDeviceOrientation = fn (ev JS.DeviceOrientationEvent) JS.Any |
| 498 | |
| 499 | pub 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 | |
| 509 | pub 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 | |
| 519 | pub type AnimationFrameCallback = fn (JS.Number) |
| 520 | |
| 521 | pub 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) |
| 556 | mut: |
| 557 | name string |
| 558 | opener JS.Any |
| 559 | ondevicemotion OnDeviceMotion |
| 560 | ondeviceorientation OnDeviceOrientation |
| 561 | } |
| 562 | |
| 563 | pub interface JS.Path2D {} |
| 564 | |
| 565 | pub struct JS.DeviceMotionEventAcceleration { |
| 566 | x JS.Number |
| 567 | y JS.Number |
| 568 | z JS.Number |
| 569 | } |
| 570 | |
| 571 | pub struct JS.DeviceMotionEventRotationRate { |
| 572 | alpha JS.Number |
| 573 | beta JS.Number |
| 574 | gamma JS.Number |
| 575 | } |
| 576 | |
| 577 | pub interface JS.DeviceMotionEvent { |
| 578 | JS.Event |
| 579 | interval JS.Number |
| 580 | acceleration JS.DeviceMotionEventAcceleration |
| 581 | accelerationIncludingGravity JS.DeviceMotionEventAcceleration |
| 582 | rotationRate JS.DeviceMotionEventRotationRate |
| 583 | } |
| 584 | |
| 585 | pub interface JS.DeviceOrientationEvent { |
| 586 | JS.Event |
| 587 | absolute JS.Boolean |
| 588 | alpha JS.Number |
| 589 | beta JS.Number |
| 590 | gamma JS.Number |
| 591 | } |
| 592 | |
| 593 | pub 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] |
| 603 | pub interface JS.WebGLProgram {} |
| 604 | |
| 605 | @[single_impl] |
| 606 | pub interface JS.WebGLShader {} |
| 607 | |
| 608 | @[single_impl] |
| 609 | pub interface JS.WebGLBuffer {} |
| 610 | |
| 611 | @[single_impl] |
| 612 | pub interface JS.WebGLFramebuffer {} |
| 613 | |
| 614 | @[single_impl] |
| 615 | pub interface JS.WebGLRenderbuffer {} |
| 616 | |
| 617 | @[single_impl] |
| 618 | pub interface JS.WebGLSampler {} |
| 619 | |
| 620 | @[single_impl] |
| 621 | pub interface JS.WebGLTexture {} |
| 622 | |
| 623 | @[single_impl] |
| 624 | pub interface JS.WebGLUniformLocation {} |
| 625 | |
| 626 | @[single_impl] |
| 627 | pub interface JS.WebGLVertexArrayObject {} |
| 628 | |
| 629 | pub 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 | |
| 729 | pub interface JS.WebGL2RenderingContext { |
| 730 | JS.WebGLRenderingContext |
| 731 | } |
| 732 | |
| 733 | pub fn gl_vertex_shader() JS.Number { |
| 734 | mut num := JS.Number{} |
| 735 | #num = WebGLRenderingContext.VERTEX_SHADER; |
| 736 | |
| 737 | return num |
| 738 | } |
| 739 | |
| 740 | pub fn gl_fragment_shader() JS.Number { |
| 741 | mut num := JS.Number{} |
| 742 | #num = WebGLRenderingContext.FRAGMENT_SHADER; |
| 743 | |
| 744 | return num |
| 745 | } |
| 746 | |
| 747 | pub fn gl_element_array_buffer() JS.Number { |
| 748 | mut num := JS.Number{} |
| 749 | #num = WebGLRenderingContext.ELEMENT_ARRAY_BUFFER; |
| 750 | |
| 751 | return num |
| 752 | } |
| 753 | |
| 754 | pub fn gl_array_buffer() JS.Number { |
| 755 | mut num := JS.Number{} |
| 756 | #num = WebGLRenderingContext.ARRAY_BUFFER; |
| 757 | |
| 758 | return num |
| 759 | } |
| 760 | |
| 761 | pub fn gl_color_buffer_bit() JS.Number { |
| 762 | mut num := JS.Number{} |
| 763 | #num = WebGLRenderingContext.COLOR_BUFFER_BIT; |
| 764 | |
| 765 | return num |
| 766 | } |
| 767 | |
| 768 | pub fn gl_depth_buffer_bit() JS.Number { |
| 769 | mut num := JS.Number{} |
| 770 | #num = WebGLRenderingContext.COLOR_BUFFER_BIT; |
| 771 | |
| 772 | return num |
| 773 | } |
| 774 | |
| 775 | pub fn gl_triangles() JS.Number { |
| 776 | mut num := JS.Number{} |
| 777 | #num = WebGLRenderingContext.TRIANGLES; |
| 778 | |
| 779 | return num |
| 780 | } |
| 781 | |
| 782 | pub fn gl_unsigned_short() JS.Number { |
| 783 | mut num := JS.Number{} |
| 784 | #num = WebGLRenderingContext.UNSIGNED_SHORT; |
| 785 | |
| 786 | return num |
| 787 | } |
| 788 | |
| 789 | pub fn gl_static_draw() JS.Number { |
| 790 | mut num := JS.Number{} |
| 791 | #num = WebGLRenderingContext.STATIC_DRAW; |
| 792 | |
| 793 | return num |
| 794 | } |
| 795 | |
| 796 | pub fn gl_link_status() JS.Number { |
| 797 | mut num := JS.Number{} |
| 798 | #num = WebGLRenderingContext.LINK_STATUS; |
| 799 | |
| 800 | return num |
| 801 | } |
| 802 | |
| 803 | pub fn gl_compile_status() JS.Number { |
| 804 | mut num := JS.Number{} |
| 805 | #num = WebGLRenderingContext.COMPILE_STATUS; |
| 806 | |
| 807 | return num |
| 808 | } |
| 809 | |
| 810 | pub fn gl_float() JS.Number { |
| 811 | mut num := JS.Number{} |
| 812 | #num = WebGLRenderingContext.FLOAT; |
| 813 | |
| 814 | return num |
| 815 | } |
| 816 | |
| 817 | pub 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. |
| 825 | pub 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() |
| 841 | mut: |
| 842 | returnValue JS.Boolean |
| 843 | } |
| 844 | |
| 845 | pub fn event_type(ev JS.Event) string { |
| 846 | res := '' |
| 847 | #res.str = ev.type; |
| 848 | |
| 849 | return res |
| 850 | } |
| 851 | |
| 852 | pub 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 | |
| 859 | pub 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] |
| 869 | pub fn JS.ErrorEvent.prototype.constructor(typ JS.String) JS.ErrorEvent |
| 870 | |
| 871 | pub interface JS.UIEvent { |
| 872 | JS.Event |
| 873 | detail JS.Number |
| 874 | view JS.Any |
| 875 | } |
| 876 | |
| 877 | @[use_new] |
| 878 | pub fn JS.UIEvent.prototype.constructor(typ JS.String, dict JS.UIEventDict) JS.UIEvent |
| 879 | |
| 880 | pub struct JS.EventInit { |
| 881 | bubbles JS.Boolean |
| 882 | cancelable JS.Boolean |
| 883 | composed JS.Boolean |
| 884 | } |
| 885 | |
| 886 | pub 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 | |
| 895 | pub 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 | |
| 919 | pub interface JS.WheelEvent { |
| 920 | JS.MouseEvent |
| 921 | deltaX JS.Number |
| 922 | deltaY JS.Number |
| 923 | deltaZ JS.Number |
| 924 | deltaMode JS.Number |
| 925 | } |
| 926 | |
| 927 | pub 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 | |
| 943 | pub 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] |
| 955 | pub interface JS.GamepadButton { |
| 956 | pressed JS.Boolean |
| 957 | touched JS.Boolean |
| 958 | value JS.Number |
| 959 | } |
| 960 | |
| 961 | @[single_impl] |
| 962 | pub interface JS.GamepadHapticActuator { |
| 963 | } |
| 964 | |
| 965 | pub interface JS.GamepadEvent { |
| 966 | JS.Event |
| 967 | gamepad JS.Gamepad |
| 968 | } |
| 969 | |
| 970 | pub interface JS.HashChangeEvent { |
| 971 | JS.Event |
| 972 | newURL JS.String |
| 973 | oldURL JS.String |
| 974 | } |
| 975 | |
| 976 | pub 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 | |
| 985 | pub interface JS.MessagePort { |
| 986 | JS.EventTarget |
| 987 | close() |
| 988 | portMessage(message JS.Any, transfer JS.Array) |
| 989 | start() |
| 990 | } |
| 991 | |
| 992 | pub interface JS.PageTransitionEvent { |
| 993 | JS.Event |
| 994 | persisted JS.Boolean |
| 995 | } |
| 996 | |
| 997 | pub interface JS.PopStateEvent { |
| 998 | JS.Event |
| 999 | state JS.Any |
| 1000 | } |
| 1001 | |
| 1002 | pub interface JS.ProgressEvent { |
| 1003 | lenghtComputable JS.Boolean |
| 1004 | loaded JS.Number |
| 1005 | target JS.Any |
| 1006 | total JS.Number |
| 1007 | } |
| 1008 | |
| 1009 | pub 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 | |