1 module libwasm.bindings.AudioContext;
2 
3 import libwasm.types;
4 
5 import memutils.ct: tuple;
6 import libwasm.bindings.BaseAudioContext;
7 import libwasm.bindings.HTMLMediaElement;
8 import libwasm.bindings.MediaElementAudioSourceNode;
9 import libwasm.bindings.MediaStream;
10 import libwasm.bindings.MediaStreamAudioDestinationNode;
11 import libwasm.bindings.MediaStreamAudioSourceNode;
12 
13 @safe:
14 nothrow:
15 
16 struct AudioContext {
17   nothrow:
18   libwasm.bindings.BaseAudioContext.BaseAudioContext _parent;
19   alias _parent this;
20   this(Handle h) {
21     _parent = .BaseAudioContext(h);
22   }
23   auto suspend()() {
24     return JsPromise!(void)(Object_Getter__Handle(this._parent, "suspend"));
25   }
26   auto close()() {
27     return JsPromise!(void)(Object_Getter__Handle(this._parent, "close"));
28   }
29   auto createMediaElementSource()(scope ref HTMLMediaElement mediaElement) {
30     return MediaElementAudioSourceNode(Object_Call_Handle__Handle(this._parent, "createMediaElementSource", mediaElement._parent));
31   }
32   auto createMediaStreamSource()(scope ref MediaStream mediaStream) {
33     return MediaStreamAudioSourceNode(Object_Call_Handle__Handle(this._parent, "createMediaStreamSource", mediaStream._parent));
34   }
35   auto createMediaStreamDestination()() {
36     return MediaStreamAudioDestinationNode(Object_Getter__Handle(this._parent, "createMediaStreamDestination"));
37   }
38 }
39 struct AudioContextOptions {
40   nothrow:
41   JsHandle handle;
42   alias handle this;
43   this(Handle h) {
44     this.handle = JsHandle(h);
45   }
46   static auto create() {
47     return AudioContextOptions(libwasm_add__object());
48   }
49   void sampleRate()(float sampleRate) {
50     Object_Call_float__void(this.handle, "sampleRate", sampleRate);
51   }
52   float sampleRate()() {
53     return Object_Getter__float(this.handle, "sampleRate");
54   }
55 }
56 
57