Line data Source code
1 : /* THIS FILE IS AUTOGENERATED FROM PannerNode.webidl BY Codegen.py - DO NOT EDIT */
2 :
3 : #ifndef mozilla_dom_PannerNodeBinding_h
4 : #define mozilla_dom_PannerNodeBinding_h
5 :
6 : #include "AudioNodeBinding.h"
7 : #include "js/RootingAPI.h"
8 : #include "jspubtd.h"
9 : #include "mozilla/ErrorResult.h"
10 : #include "mozilla/dom/BindingDeclarations.h"
11 : #include "mozilla/dom/Nullable.h"
12 :
13 : namespace mozilla {
14 : namespace dom {
15 :
16 : struct NativePropertyHooks;
17 : class PannerNode;
18 : struct PannerNodeAtoms;
19 : struct PannerOptionsAtoms;
20 : class ProtoAndIfaceCache;
21 :
22 : } // namespace dom
23 : } // namespace mozilla
24 :
25 : namespace mozilla {
26 : namespace dom {
27 :
28 : enum class PanningModelType : uint8_t {
29 : Equalpower,
30 : HRTF,
31 : EndGuard_
32 : };
33 :
34 : namespace PanningModelTypeValues {
35 : extern const EnumEntry strings[3];
36 : } // namespace PanningModelTypeValues
37 :
38 : bool
39 : ToJSValue(JSContext* aCx, PanningModelType aArgument, JS::MutableHandle<JS::Value> aValue);
40 :
41 :
42 : enum class DistanceModelType : uint8_t {
43 : Linear,
44 : Inverse,
45 : Exponential,
46 : EndGuard_
47 : };
48 :
49 : namespace DistanceModelTypeValues {
50 : extern const EnumEntry strings[4];
51 : } // namespace DistanceModelTypeValues
52 :
53 : bool
54 : ToJSValue(JSContext* aCx, DistanceModelType aArgument, JS::MutableHandle<JS::Value> aValue);
55 :
56 :
57 0 : struct PannerOptions : public AudioNodeOptions
58 : {
59 : MOZ_INIT_OUTSIDE_CTOR double mConeInnerAngle;
60 : MOZ_INIT_OUTSIDE_CTOR double mConeOuterAngle;
61 : MOZ_INIT_OUTSIDE_CTOR double mConeOuterGain;
62 : MOZ_INIT_OUTSIDE_CTOR DistanceModelType mDistanceModel;
63 : MOZ_INIT_OUTSIDE_CTOR double mMaxDistance;
64 : MOZ_INIT_OUTSIDE_CTOR float mOrientationX;
65 : MOZ_INIT_OUTSIDE_CTOR float mOrientationY;
66 : MOZ_INIT_OUTSIDE_CTOR float mOrientationZ;
67 : MOZ_INIT_OUTSIDE_CTOR PanningModelType mPanningModel;
68 : MOZ_INIT_OUTSIDE_CTOR float mPositionX;
69 : MOZ_INIT_OUTSIDE_CTOR float mPositionY;
70 : MOZ_INIT_OUTSIDE_CTOR float mPositionZ;
71 : MOZ_INIT_OUTSIDE_CTOR double mRefDistance;
72 : MOZ_INIT_OUTSIDE_CTOR double mRolloffFactor;
73 :
74 : PannerOptions();
75 :
76 0 : explicit inline PannerOptions(const FastDictionaryInitializer& )
77 0 : : AudioNodeOptions(FastDictionaryInitializer())
78 : {
79 : // Do nothing here; this is used by our "Fast" subclass
80 0 : }
81 :
82 : explicit inline PannerOptions(const PannerOptions& aOther)
83 : {
84 : *this = aOther;
85 : }
86 :
87 : bool
88 : Init(JSContext* cx, JS::Handle<JS::Value> val, const char* sourceDescription = "Value", bool passedToJSImpl = false);
89 :
90 : bool
91 : Init(const nsAString& aJSON);
92 :
93 : bool
94 : ToObjectInternal(JSContext* cx, JS::MutableHandle<JS::Value> rval) const;
95 :
96 : bool
97 : ToJSON(nsAString& aJSON) const;
98 :
99 : void
100 : TraceDictionary(JSTracer* trc);
101 :
102 : PannerOptions&
103 : operator=(const PannerOptions& aOther);
104 :
105 : private:
106 : static bool
107 : InitIds(JSContext* cx, PannerOptionsAtoms* atomsCache);
108 : };
109 :
110 : namespace binding_detail {
111 0 : struct FastPannerOptions : public PannerOptions
112 : {
113 0 : inline FastPannerOptions()
114 0 : : PannerOptions(FastDictionaryInitializer())
115 : {
116 : // Doesn't matter what int we pass to the parent constructor
117 0 : }
118 : };
119 : } // namespace binding_detail
120 :
121 :
122 : namespace PannerNodeBinding {
123 :
124 : typedef mozilla::dom::PannerNode NativeType;
125 :
126 : bool
127 : ConstructorEnabled(JSContext* aCx, JS::Handle<JSObject*> aObj);
128 :
129 : JSObject*
130 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal);
131 :
132 : const JSClass*
133 : GetJSClass();
134 :
135 : bool
136 : Wrap(JSContext* aCx, mozilla::dom::PannerNode* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
137 :
138 : template <class T>
139 0 : inline JSObject* Wrap(JSContext* aCx, T* aObject, JS::Handle<JSObject*> aGivenProto)
140 : {
141 0 : JS::Rooted<JSObject*> reflector(aCx);
142 0 : return Wrap(aCx, aObject, aObject, aGivenProto, &reflector) ? reflector.get() : nullptr;
143 : }
144 :
145 : // We declare this as an array so that retrieving a pointer to this
146 : // binding's property hooks only requires compile/link-time resolvable
147 : // address arithmetic. Declaring it as a pointer instead would require
148 : // doing a run-time load to fetch a pointer to this binding's property
149 : // hooks. And then structures which embedded a pointer to this structure
150 : // would require a run-time load for proper initialization, which would
151 : // then induce static constructors. Lots of static constructors.
152 : extern const NativePropertyHooks sNativePropertyHooks[];
153 :
154 : void
155 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal);
156 :
157 : JS::Handle<JSObject*>
158 : GetProtoObjectHandle(JSContext* aCx);
159 :
160 : JS::Handle<JSObject*>
161 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal = true);
162 :
163 : JSObject*
164 : GetConstructorObject(JSContext* aCx);
165 :
166 : } // namespace PannerNodeBinding
167 :
168 :
169 :
170 : } // namespace dom
171 : } // namespace mozilla
172 :
173 : #endif // mozilla_dom_PannerNodeBinding_h
|