Skip to content

Add webgl2 IDL spec and generated code #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 22 commits into from
May 3, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add WebGL demo to DOMKitDemo
  • Loading branch information
MaxDesiatov committed May 3, 2022
commit a646ea6e2a7274de0a54c60d7d16753668d9a1ae
58 changes: 29 additions & 29 deletions Sources/DOMKit/RenderingContext.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ import JavaScriptKit

public protocol Any_RenderingContext: ConvertibleToJSValue {}
extension CanvasRenderingContext2D: Any_RenderingContext {}
//extension GPUCanvasContext: Any_RenderingContext {}
// extension GPUCanvasContext: Any_RenderingContext {}
extension ImageBitmapRenderingContext: Any_RenderingContext {}
//extension WebGL2RenderingContext: Any_RenderingContext {}
//extension WebGLRenderingContext: Any_RenderingContext {}
// extension WebGL2RenderingContext: Any_RenderingContext {}
// extension WebGLRenderingContext: Any_RenderingContext {}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These can be uncommented, right?


public enum RenderingContext: JSValueCompatible, Any_RenderingContext {
case canvasRenderingContext2D(CanvasRenderingContext2D)
// case gpuCanvasContext(GPUCanvasContext)
case imageBitmapRenderingContext(ImageBitmapRenderingContext)
// case webGL2RenderingContext(WebGL2RenderingContext)
// case webGLRenderingContext(WebGLRenderingContext)
case webGL2RenderingContext(WebGL2RenderingContext)
case webGLRenderingContext(WebGLRenderingContext)

var canvasRenderingContext2D: CanvasRenderingContext2D? {
switch self {
Expand All @@ -31,26 +31,26 @@ public enum RenderingContext: JSValueCompatible, Any_RenderingContext {
// }
// }

var imageBitmapRenderingContext: ImageBitmapRenderingContext? {
public var imageBitmapRenderingContext: ImageBitmapRenderingContext? {
switch self {
case let .imageBitmapRenderingContext(imageBitmapRenderingContext): return imageBitmapRenderingContext
default: return nil
}
}

// var webGL2RenderingContext: WebGL2RenderingContext? {
// switch self {
// case let .webGL2RenderingContext(webGL2RenderingContext): return webGL2RenderingContext
// default: return nil
// }
// }
//
// var webGLRenderingContext: WebGLRenderingContext? {
// switch self {
// case let .webGLRenderingContext(webGLRenderingContext): return webGLRenderingContext
// default: return nil
// }
// }
public var webGL2RenderingContext: WebGL2RenderingContext? {
switch self {
case let .webGL2RenderingContext(webGL2RenderingContext): return webGL2RenderingContext
default: return nil
}
}

public var webGLRenderingContext: WebGLRenderingContext? {
switch self {
case let .webGLRenderingContext(webGLRenderingContext): return webGLRenderingContext
default: return nil
}
}

public static func construct(from value: JSValue) -> Self? {
if let canvasRenderingContext2D: CanvasRenderingContext2D = value.fromJSValue() {
Expand All @@ -62,12 +62,12 @@ public enum RenderingContext: JSValueCompatible, Any_RenderingContext {
if let imageBitmapRenderingContext: ImageBitmapRenderingContext = value.fromJSValue() {
return .imageBitmapRenderingContext(imageBitmapRenderingContext)
}
// if let webGL2RenderingContext: WebGL2RenderingContext = value.fromJSValue() {
// return .webGL2RenderingContext(webGL2RenderingContext)
// }
// if let webGLRenderingContext: WebGLRenderingContext = value.fromJSValue() {
// return .webGLRenderingContext(webGLRenderingContext)
// }
if let webGL2RenderingContext: WebGL2RenderingContext = value.fromJSValue() {
return .webGL2RenderingContext(webGL2RenderingContext)
}
if let webGLRenderingContext: WebGLRenderingContext = value.fromJSValue() {
return .webGLRenderingContext(webGLRenderingContext)
}
return nil
}

Expand All @@ -79,10 +79,10 @@ public enum RenderingContext: JSValueCompatible, Any_RenderingContext {
// return gpuCanvasContext.jsValue
case let .imageBitmapRenderingContext(imageBitmapRenderingContext):
return imageBitmapRenderingContext.jsValue
// case let .webGL2RenderingContext(webGL2RenderingContext):
// return webGL2RenderingContext.jsValue
// case let .webGLRenderingContext(webGLRenderingContext):
// return webGLRenderingContext.jsValue
case let .webGL2RenderingContext(webGL2RenderingContext):
return webGL2RenderingContext.jsValue
case let .webGLRenderingContext(webGLRenderingContext):
return webGLRenderingContext.jsValue
}
}
}
22 changes: 22 additions & 0 deletions Sources/DOMKit/WebIDL/BitrateMode.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public enum BitrateMode: JSString, JSValueCompatible {
case constant = "constant"
case variable = "variable"

@inlinable public static func construct(from jsValue: JSValue) -> Self? {
if let string = jsValue.jsString {
return Self(rawValue: string)
}
return nil
}

@inlinable public init?(string: String) {
self.init(rawValue: JSString(string))
}

@inlinable public var jsValue: JSValue { rawValue.jsValue }
}
24 changes: 24 additions & 0 deletions Sources/DOMKit/WebIDL/BlobEvent.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class BlobEvent: Event {
@inlinable override public class var constructor: JSFunction { JSObject.global[Strings.BlobEvent].function! }

public required init(unsafelyWrapping jsObject: JSObject) {
_data = ReadonlyAttribute(jsObject: jsObject, name: Strings.data)
_timecode = ReadonlyAttribute(jsObject: jsObject, name: Strings.timecode)
super.init(unsafelyWrapping: jsObject)
}

@inlinable public convenience init(type: String, eventInitDict: BlobEventInit) {
self.init(unsafelyWrapping: Self.constructor.new(arguments: [type.jsValue, eventInitDict.jsValue]))
}

@ReadonlyAttribute
public var data: Blob

@ReadonlyAttribute
public var timecode: DOMHighResTimeStamp
}
25 changes: 25 additions & 0 deletions Sources/DOMKit/WebIDL/BlobEventInit.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class BlobEventInit: BridgedDictionary {
public convenience init(data: Blob, timecode: DOMHighResTimeStamp) {
let object = JSObject.global[Strings.Object].function!.new()
object[Strings.data] = data.jsValue
object[Strings.timecode] = timecode.jsValue
self.init(unsafelyWrapping: object)
}

public required init(unsafelyWrapping object: JSObject) {
_data = ReadWriteAttribute(jsObject: object, name: Strings.data)
_timecode = ReadWriteAttribute(jsObject: object, name: Strings.timecode)
super.init(unsafelyWrapping: object)
}

@ReadWriteAttribute
public var data: Blob

@ReadWriteAttribute
public var timecode: DOMHighResTimeStamp
}
46 changes: 46 additions & 0 deletions Sources/DOMKit/WebIDL/Bool_or_MediaTrackConstraints.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public protocol Any_Bool_or_MediaTrackConstraints: ConvertibleToJSValue {}
extension Bool: Any_Bool_or_MediaTrackConstraints {}
extension MediaTrackConstraints: Any_Bool_or_MediaTrackConstraints {}

public enum Bool_or_MediaTrackConstraints: JSValueCompatible, Any_Bool_or_MediaTrackConstraints {
case bool(Bool)
case mediaTrackConstraints(MediaTrackConstraints)

var bool: Bool? {
switch self {
case let .bool(bool): return bool
default: return nil
}
}

var mediaTrackConstraints: MediaTrackConstraints? {
switch self {
case let .mediaTrackConstraints(mediaTrackConstraints): return mediaTrackConstraints
default: return nil
}
}

public static func construct(from value: JSValue) -> Self? {
if let bool: Bool = value.fromJSValue() {
return .bool(bool)
}
if let mediaTrackConstraints: MediaTrackConstraints = value.fromJSValue() {
return .mediaTrackConstraints(mediaTrackConstraints)
}
return nil
}

public var jsValue: JSValue {
switch self {
case let .bool(bool):
return bool.jsValue
case let .mediaTrackConstraints(mediaTrackConstraints):
return mediaTrackConstraints.jsValue
}
}
}
46 changes: 46 additions & 0 deletions Sources/DOMKit/WebIDL/Bool_or_ScrollIntoViewOptions.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public protocol Any_Bool_or_ScrollIntoViewOptions: ConvertibleToJSValue {}
extension Bool: Any_Bool_or_ScrollIntoViewOptions {}
extension ScrollIntoViewOptions: Any_Bool_or_ScrollIntoViewOptions {}

public enum Bool_or_ScrollIntoViewOptions: JSValueCompatible, Any_Bool_or_ScrollIntoViewOptions {
case bool(Bool)
case scrollIntoViewOptions(ScrollIntoViewOptions)

var bool: Bool? {
switch self {
case let .bool(bool): return bool
default: return nil
}
}

var scrollIntoViewOptions: ScrollIntoViewOptions? {
switch self {
case let .scrollIntoViewOptions(scrollIntoViewOptions): return scrollIntoViewOptions
default: return nil
}
}

public static func construct(from value: JSValue) -> Self? {
if let bool: Bool = value.fromJSValue() {
return .bool(bool)
}
if let scrollIntoViewOptions: ScrollIntoViewOptions = value.fromJSValue() {
return .scrollIntoViewOptions(scrollIntoViewOptions)
}
return nil
}

public var jsValue: JSValue {
switch self {
case let .bool(bool):
return bool.jsValue
case let .scrollIntoViewOptions(scrollIntoViewOptions):
return scrollIntoViewOptions.jsValue
}
}
}
25 changes: 25 additions & 0 deletions Sources/DOMKit/WebIDL/BoxQuadOptions.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class BoxQuadOptions: BridgedDictionary {
public convenience init(box: CSSBoxType, relativeTo: GeometryNode) {
let object = JSObject.global[Strings.Object].function!.new()
object[Strings.box] = box.jsValue
object[Strings.relativeTo] = relativeTo.jsValue
self.init(unsafelyWrapping: object)
}

public required init(unsafelyWrapping object: JSObject) {
_box = ReadWriteAttribute(jsObject: object, name: Strings.box)
_relativeTo = ReadWriteAttribute(jsObject: object, name: Strings.relativeTo)
super.init(unsafelyWrapping: object)
}

@ReadWriteAttribute
public var box: CSSBoxType

@ReadWriteAttribute
public var relativeTo: GeometryNode
}
24 changes: 24 additions & 0 deletions Sources/DOMKit/WebIDL/CSSBoxType.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public enum CSSBoxType: JSString, JSValueCompatible {
case margin = "margin"
case border = "border"
case padding = "padding"
case content = "content"

@inlinable public static func construct(from jsValue: JSValue) -> Self? {
if let string = jsValue.jsString {
return Self(rawValue: string)
}
return nil
}

@inlinable public init?(string: String) {
self.init(rawValue: JSString(string))
}

@inlinable public var jsValue: JSValue { rawValue.jsValue }
}
29 changes: 29 additions & 0 deletions Sources/DOMKit/WebIDL/CSSPseudoElement.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class CSSPseudoElement: EventTarget, GeometryUtils {
@inlinable override public class var constructor: JSFunction { JSObject.global[Strings.CSSPseudoElement].function! }

public required init(unsafelyWrapping jsObject: JSObject) {
_type = ReadonlyAttribute(jsObject: jsObject, name: Strings.type)
_element = ReadonlyAttribute(jsObject: jsObject, name: Strings.element)
_parent = ReadonlyAttribute(jsObject: jsObject, name: Strings.parent)
super.init(unsafelyWrapping: jsObject)
}

@ReadonlyAttribute
public var type: String

@ReadonlyAttribute
public var element: Element

@ReadonlyAttribute
public var parent: CSSPseudoElement_or_Element

@inlinable public func pseudo(type: String) -> CSSPseudoElement? {
let this = jsObject
return this[Strings.pseudo].function!(this: this, arguments: [type.jsValue]).fromJSValue()!
}
}
46 changes: 46 additions & 0 deletions Sources/DOMKit/WebIDL/CSSPseudoElement_or_Element.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public protocol Any_CSSPseudoElement_or_Element: ConvertibleToJSValue {}
extension CSSPseudoElement: Any_CSSPseudoElement_or_Element {}
extension Element: Any_CSSPseudoElement_or_Element {}

public enum CSSPseudoElement_or_Element: JSValueCompatible, Any_CSSPseudoElement_or_Element {
case cssPseudoElement(CSSPseudoElement)
case element(Element)

var cssPseudoElement: CSSPseudoElement? {
switch self {
case let .cssPseudoElement(cssPseudoElement): return cssPseudoElement
default: return nil
}
}

var element: Element? {
switch self {
case let .element(element): return element
default: return nil
}
}

public static func construct(from value: JSValue) -> Self? {
if let cssPseudoElement: CSSPseudoElement = value.fromJSValue() {
return .cssPseudoElement(cssPseudoElement)
}
if let element: Element = value.fromJSValue() {
return .element(element)
}
return nil
}

public var jsValue: JSValue {
switch self {
case let .cssPseudoElement(cssPseudoElement):
return cssPseudoElement.jsValue
case let .element(element):
return element.jsValue
}
}
}
Loading