widl: Add support for function parameter flags to SLTG typelib generator.
[wine.git] / include / windows.gaming.input.forcefeedback.idl
blob82fb083b34b5eabd89136a1ae588bfc8458e7157
1 /*
2 * Copyright 2021 RĂ©mi Bernon for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifdef __WIDL__
20 #pragma winrt ns_prefix
21 #endif
23 #ifndef DO_NO_IMPORTS
24 import "inspectable.idl";
25 import "asyncinfo.idl";
26 import "eventtoken.idl";
27 import "windowscontracts.idl";
28 import "windows.foundation.idl";
29 import "windows.foundation.numerics.idl";
30 #endif
32 namespace Windows.Gaming.Input.ForceFeedback {
33 typedef enum ForceFeedbackEffectAxes ForceFeedbackEffectAxes;
34 typedef enum ForceFeedbackEffectState ForceFeedbackEffectState;
35 typedef enum ForceFeedbackLoadEffectResult ForceFeedbackLoadEffectResult;
36 typedef enum PeriodicForceEffectKind PeriodicForceEffectKind;
37 typedef enum ConditionForceEffectKind ConditionForceEffectKind;
38 interface IForceFeedbackEffect;
39 interface IPeriodicForceEffect;
40 interface IPeriodicForceEffectFactory;
41 interface IConditionForceEffect;
42 interface IConditionForceEffectFactory;
43 interface IConstantForceEffect;
44 interface IRampForceEffect;
45 runtimeclass ForceFeedbackMotor;
46 runtimeclass PeriodicForceEffect;
47 runtimeclass ConditionForceEffect;
48 runtimeclass ConstantForceEffect;
49 runtimeclass RampForceEffect;
51 declare {
52 interface Windows.Foundation.AsyncOperationCompletedHandler<Windows.Gaming.Input.ForceFeedback.ForceFeedbackLoadEffectResult>;
53 interface Windows.Foundation.IAsyncOperation<Windows.Gaming.Input.ForceFeedback.ForceFeedbackLoadEffectResult>;
54 interface Windows.Foundation.Collections.IIterator<Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor *>;
55 interface Windows.Foundation.Collections.IIterable<Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor *>;
56 interface Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor *>;
57 interface Windows.Foundation.Collections.IVector<Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor *>;
61 contract(Windows.Foundation.UniversalApiContract, 3.0),
62 flags
64 enum ForceFeedbackEffectAxes
66 None = 0x0,
67 X = 0x1,
68 Y = 0x2,
69 Z = 0x4
72 [contract(Windows.Foundation.UniversalApiContract, 3.0)]
73 enum ForceFeedbackEffectState
75 Stopped = 0,
76 Running = 1,
77 Paused = 2,
78 Faulted = 3,
81 [contract(Windows.Foundation.UniversalApiContract, 3.0)]
82 enum ForceFeedbackLoadEffectResult
84 Succeeded = 0,
85 EffectStorageFull = 1,
86 EffectNotSupported = 2
89 [contract(Windows.Foundation.UniversalApiContract, 3.0)]
90 enum PeriodicForceEffectKind
92 SquareWave = 0,
93 SineWave = 1,
94 TriangleWave = 2,
95 SawtoothWaveUp = 3,
96 SawtoothWaveDown = 4,
99 [contract(Windows.Foundation.UniversalApiContract, 3.0)]
100 enum ConditionForceEffectKind
102 Spring = 0,
103 Damper = 1,
104 Inertia = 2,
105 Friction = 3,
109 contract(Windows.Foundation.UniversalApiContract, 3.0),
110 uuid(a17fba0c-2ae4-48c2-8063-eabd0777cb89)
112 interface IForceFeedbackEffect : IInspectable
114 [propget] HRESULT Gain([out, retval] DOUBLE *value);
115 [propput] HRESULT Gain([in] DOUBLE value);
116 [propget] HRESULT State([out, retval] Windows.Gaming.Input.ForceFeedback.ForceFeedbackEffectState *value);
117 HRESULT Start();
118 HRESULT Stop();
122 contract(Windows.Foundation.UniversalApiContract, 3.0),
123 exclusiveto(Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor),
124 uuid(8d3d417c-a5ea-4516-8026-2b00f74ef6e5)
126 interface IForceFeedbackMotor : IInspectable
128 [propget] HRESULT AreEffectsPaused([out, retval] boolean *value);
129 [propget] HRESULT MasterGain([out, retval] DOUBLE *value);
130 [propput] HRESULT MasterGain([in] DOUBLE value);
131 [propget] HRESULT IsEnabled([out, retval] boolean *value);
132 [propget] HRESULT SupportedAxes([out, retval] Windows.Gaming.Input.ForceFeedback.ForceFeedbackEffectAxes *value);
133 HRESULT LoadEffectAsync([in] Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect *effect,
134 [out, retval] Windows.Foundation.IAsyncOperation<Windows.Gaming.Input.ForceFeedback.ForceFeedbackLoadEffectResult> **async_op);
135 HRESULT PauseAllEffects();
136 HRESULT ResumeAllEffects();
137 HRESULT StopAllEffects();
138 HRESULT TryDisableAsync([out, retval] Windows.Foundation.IAsyncOperation<boolean> **async_op);
139 HRESULT TryEnableAsync([out, retval] Windows.Foundation.IAsyncOperation<boolean> **async_op);
140 HRESULT TryResetAsync([out, retval] Windows.Foundation.IAsyncOperation<boolean> **async_op);
141 HRESULT TryUnloadEffectAsync([in] Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect *effect,
142 [out, retval] Windows.Foundation.IAsyncOperation<boolean> **async_op);
146 contract(Windows.Foundation.UniversalApiContract, 3.0),
147 exclusiveto(Windows.Gaming.Input.ForceFeedback.PeriodicForceEffect),
148 uuid(5c5138d7-fc75-4d52-9a0a-efe4cab5fe64)
150 interface IPeriodicForceEffect : IInspectable
151 requires Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
153 [propget] HRESULT Kind([out, retval] Windows.Gaming.Input.ForceFeedback.PeriodicForceEffectKind *value);
154 HRESULT SetParameters([in] Windows.Foundation.Numerics.Vector3 vector, [in] FLOAT frequency, [in] FLOAT phase,
155 [in] FLOAT bias, [in] Windows.Foundation.TimeSpan duration);
156 HRESULT SetParametersWithEnvelope([in] Windows.Foundation.Numerics.Vector3 vector, [in] FLOAT frequency, [in] FLOAT phase,
157 [in] FLOAT bias, [in] FLOAT attack_gain, [in] FLOAT sustain_gain, [in] FLOAT release_gain,
158 [in] Windows.Foundation.TimeSpan start_delay, [in] Windows.Foundation.TimeSpan attack_duration,
159 [in] Windows.Foundation.TimeSpan sustain_duration, [in] Windows.Foundation.TimeSpan release_duration,
160 [in] UINT32 repeat_count);
164 contract(Windows.Foundation.UniversalApiContract, 3.0),
165 exclusiveto(Windows.Gaming.Input.ForceFeedback.PeriodicForceEffect),
166 uuid(6f62eb1a-9851-477b-b318-35ecaa15070f)
168 interface IPeriodicForceEffectFactory : IInspectable
170 HRESULT CreateInstance([in] Windows.Gaming.Input.ForceFeedback.PeriodicForceEffectKind kind,
171 [out, retval] Windows.Gaming.Input.ForceFeedback.PeriodicForceEffect **value);
175 contract(Windows.Foundation.UniversalApiContract, 3.0),
176 exclusiveto(Windows.Gaming.Input.ForceFeedback.ConditionForceEffect),
177 uuid(32d1ea68-3695-4e69-85c0-cd1944189140)
179 interface IConditionForceEffect : IInspectable
180 requires Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
182 [propget] HRESULT Kind([out, retval] Windows.Gaming.Input.ForceFeedback.ConditionForceEffectKind *value);
183 HRESULT SetParameters([in] Windows.Foundation.Numerics.Vector3 direction, [in] FLOAT positive_coeff,
184 [in] FLOAT negative_coeff, [in] FLOAT max_positive_magnitude, [in] FLOAT max_negative_magnitude,
185 [in] FLOAT deadzone, [in] FLOAT bias);
189 contract(Windows.Foundation.UniversalApiContract, 3.0),
190 exclusiveto(Windows.Gaming.Input.ForceFeedback.ConditionForceEffect),
191 uuid(91a99264-1810-4eb6-a773-bfd3b8cddbab)
193 interface IConditionForceEffectFactory : IInspectable
195 HRESULT CreateInstance([in] Windows.Gaming.Input.ForceFeedback.ConditionForceEffectKind kind,
196 [out, retval] Windows.Gaming.Input.ForceFeedback.ConditionForceEffect **value);
200 contract(Windows.Foundation.UniversalApiContract, 3.0),
201 exclusiveto(Windows.Gaming.Input.ForceFeedback.ConstantForceEffect),
202 uuid(9bfa0140-f3c7-415c-b068-0f068734bce0)
204 interface IConstantForceEffect : IInspectable
205 requires Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
207 HRESULT SetParameters([in] Windows.Foundation.Numerics.Vector3 vector, [in] Windows.Foundation.TimeSpan duration);
208 HRESULT SetParametersWithEnvelope([in] Windows.Foundation.Numerics.Vector3 vector, [in] FLOAT attack_gain,
209 [in] FLOAT sustain_gain, [in] FLOAT release_gain, [in] Windows.Foundation.TimeSpan start_delay,
210 [in] Windows.Foundation.TimeSpan attack_duration, [in] Windows.Foundation.TimeSpan sustain_duration,
211 [in] Windows.Foundation.TimeSpan release_duration, [in] UINT32 repeat_count);
215 contract(Windows.Foundation.UniversalApiContract, 3.0),
216 exclusiveto(Windows.Gaming.Input.ForceFeedback.RampForceEffect),
217 uuid(f1f81259-1ca6-4080-b56d-b43f3354d052)
219 interface IRampForceEffect : IInspectable
220 requires Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
222 HRESULT SetParameters([in] Windows.Foundation.Numerics.Vector3 start_vector, [in] Windows.Foundation.Numerics.Vector3 end_vector,
223 [in] Windows.Foundation.TimeSpan duration);
224 HRESULT SetParametersWithEnvelope([in] Windows.Foundation.Numerics.Vector3 start_vector, [in] Windows.Foundation.Numerics.Vector3 end_vector,
225 [in] FLOAT attack_gain, [in] FLOAT sustain_gain, [in] FLOAT release_gain, [in] Windows.Foundation.TimeSpan start_delay,
226 [in] Windows.Foundation.TimeSpan attack_duration, [in] Windows.Foundation.TimeSpan sustain_duration,
227 [in] Windows.Foundation.TimeSpan release_duration, [in] UINT32 repeat_count);
231 contract(Windows.Foundation.UniversalApiContract, 3.0),
232 marshaling_behavior(agile),
233 threading(both)
235 runtimeclass ForceFeedbackMotor
237 [default] interface Windows.Gaming.Input.ForceFeedback.IForceFeedbackMotor;
241 activatable(Windows.Gaming.Input.ForceFeedback.IPeriodicForceEffectFactory, Windows.Foundation.UniversalApiContract, 3.0),
242 contract(Windows.Foundation.UniversalApiContract, 3.0),
243 marshaling_behavior(agile),
244 threading(both)
246 runtimeclass PeriodicForceEffect
248 [default] interface Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect;
249 interface Windows.Gaming.Input.ForceFeedback.IPeriodicForceEffect;
253 activatable(Windows.Gaming.Input.ForceFeedback.IConditionForceEffectFactory, Windows.Foundation.UniversalApiContract, 3.0),
254 contract(Windows.Foundation.UniversalApiContract, 3.0),
255 marshaling_behavior(agile),
256 threading(both)
258 runtimeclass ConditionForceEffect
260 [default] interface Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect;
261 interface Windows.Gaming.Input.ForceFeedback.IConditionForceEffect;
265 activatable(Windows.Foundation.UniversalApiContract, 3.0),
266 contract(Windows.Foundation.UniversalApiContract, 3.0),
267 marshaling_behavior(agile),
268 threading(both)
270 runtimeclass ConstantForceEffect
272 [default] interface Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect;
273 interface Windows.Gaming.Input.ForceFeedback.IConstantForceEffect;
277 activatable(Windows.Foundation.UniversalApiContract, 3.0),
278 contract(Windows.Foundation.UniversalApiContract, 3.0),
279 marshaling_behavior(agile),
280 threading(both)
282 runtimeclass RampForceEffect
284 [default] interface Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect;
285 interface Windows.Gaming.Input.ForceFeedback.IRampForceEffect;