Fix volume control.
[wine] / include / control.idl
1 /*
2  * Copyright (C) 2002 Lionel Ulmer
3  * Copyright (C) 2004 Alexandre Julliard
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19
20 cpp_quote("#if 0");  /* FIXME: these files are not included on Windows */
21 import "shldisp.idl";
22 import "strmif.idl";
23 cpp_quote("#endif");
24
25 interface IMediaControl;
26 interface IBasicAudio;
27 interface IBasicVideo;
28 interface IVideoWindow;
29 interface IMediaEvent;
30 interface IMediaEventEx;
31
32 typedef long OAFilterState;
33 typedef LONG_PTR OAHWND;
34 typedef LONG_PTR OAEVENT;
35
36 /*****************************************************************************
37  * IMediaControl interface
38  */
39 [
40     object,
41     uuid(56a868b1-0ad4-11ce-b03a-0020af0ba770),
42     pointer_default(unique)
43 ]
44 interface IMediaControl : IDispatch
45 {
46     HRESULT Run();
47     HRESULT Pause();
48     HRESULT Stop();
49     HRESULT GetState( [in] LONG msTimeout, [out] OAFilterState *pfs );
50     HRESULT RenderFile( [in] BSTR strFilename );
51     HRESULT AddSourceFilter( [in] BSTR strFilename, [out] IDispatch **ppUnk );
52     [propget] HRESULT FilterCollection( [out] IDispatch **ppUnk );
53     [propget] HRESULT RegFilterCollection( [out] IDispatch **ppUnk );
54     HRESULT StopWhenReady();
55 }
56
57
58 /*****************************************************************************
59  * IBasicAudio interface
60  */
61 [
62     object,
63     uuid(56a868b3-0ad4-11ce-b03a-0020af0ba770),
64     pointer_default(unique)
65 ]
66 interface IBasicAudio : IDispatch
67 {
68     [propput] HRESULT Volume( [in] long lVolume );
69     [propget] HRESULT Volume( [out] long *plVolume );
70     [propput] HRESULT Balance( [in] long lBalance );
71     [propget] HRESULT Balance( [out] long *plBalance );
72 }
73
74
75 /*****************************************************************************
76  * IVideoWindow interface
77  */
78 [
79     object,
80     uuid(56a868b4-0ad4-11ce-b03a-0020af0ba770),
81     pointer_default(unique)
82 ]
83 interface IVideoWindow : IDispatch
84 {
85     [propput] HRESULT Caption( [in] BSTR strCaption );
86     [propget] HRESULT Caption( [out] BSTR *strCaption );
87     [propput] HRESULT WindowStyle( [in] long WindowStyle );
88     [propget] HRESULT WindowStyle( [out] long *WindowStyle );
89     [propput] HRESULT WindowStyleEx( [in] long WindowStyleEx );
90     [propget] HRESULT WindowStyleEx( [out] long *WindowStyleEx );
91     [propput] HRESULT AutoShow( [in] long AutoShow );
92     [propget] HRESULT AutoShow( [out] long *AutoShow );
93     [propput] HRESULT WindowState( [in] long WindowState );
94     [propget] HRESULT WindowState( [out] long *WindowState );
95     [propput] HRESULT BackgroundPalette( [in] long BackgroundPalette );
96     [propget] HRESULT BackgroundPalette( [out] long *pBackgroundPalette );
97     [propput] HRESULT Visible( [in] long Visible );
98     [propget] HRESULT Visible( [out] long *pVisible );
99     [propput] HRESULT Left( [in] long Left );
100     [propget] HRESULT Left( [out] long *pLeft );
101     [propput] HRESULT Width( [in] long Width );
102     [propget] HRESULT Width( [out] long *pWidth );
103     [propput] HRESULT Top( [in] long Top );
104     [propget] HRESULT Top( [out] long *pTop );
105     [propput] HRESULT Height( [in] long Height );
106     [propget] HRESULT Height( [out] long *pHeight );
107     [propput] HRESULT Owner( [in] OAHWND Owner );
108     [propget] HRESULT Owner( [out] OAHWND *Owner );
109     [propput] HRESULT MessageDrain( [in] OAHWND Drain );
110     [propget] HRESULT MessageDrain( [out] OAHWND *Drain );
111     [propget] HRESULT BorderColor( [out] long *Color );
112     [propput] HRESULT BorderColor( [in] long Color );
113     [propget] HRESULT FullScreenMode( [out] long *FullScreenMode );
114     [propput] HRESULT FullScreenMode( [in] long FullScreenMode );
115     HRESULT SetWindowForeground( [in] long Focus );
116     HRESULT NotifyOwnerMessage( [in] OAHWND hwnd, [in] long uMsg, [in] LONG_PTR wParam, [in] LONG_PTR lParam );
117     HRESULT SetWindowPosition( [in] long Left, [in] long Top, [in] long Width, [in] long Height );
118     HRESULT GetWindowPosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight );
119     HRESULT GetMinIdealImageSize( [out] long *pWidth, [out] long *pHeight );
120     HRESULT GetMaxIdealImageSize( [out] long *pWidth, [out] long *pHeight );
121     HRESULT GetRestorePosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight );
122     HRESULT HideCursor( [in] long HideCursor );
123     HRESULT IsCursorHidden( [out] long *CursorHidden );
124 }
125
126
127 /*****************************************************************************
128  * IBasicVideo interface
129  */
130 [
131     object,
132     uuid(56a868b5-0ad4-11ce-b03a-0020af0ba770),
133     pointer_default(unique)
134 ]
135 interface IBasicVideo : IDispatch
136 {
137     [propget] HRESULT AvgTimePerFrame( [out] REFTIME *pAvgTimePerFrame );
138     [propget] HRESULT BitRate( [out] long *pBitRate );
139     [propget] HRESULT BitErrorRate( [out] long *pBitErrorRate );
140     [propget] HRESULT VideoWidth( [out] long *pVideoWidth );
141     [propget] HRESULT VideoHeight( [out] long *pVideoHeight );
142     [propput] HRESULT SourceLeft( [in] long SourceLeft );
143     [propget] HRESULT SourceLeft( [out] long *pSourceLeft );
144     [propput] HRESULT SourceWidth( [in] long SourceWidth );
145     [propget] HRESULT SourceWidth( [out] long *pSourceWidth );
146     [propput] HRESULT SourceTop( [in] long SourceTop );
147     [propget] HRESULT SourceTop( [out] long *pSourceTop );
148     [propput] HRESULT SourceHeight( [in] long SourceHeight );
149     [propget] HRESULT SourceHeight( [out] long *pSourceHeight );
150     [propput] HRESULT DestinationLeft( [in] long DestinationLeft );
151     [propget] HRESULT DestinationLeft( [out] long *pDestinationLeft );
152     [propput] HRESULT DestinationWidth( [in] long DestinationWidth );
153     [propget] HRESULT DestinationWidth( [out] long *pDestinationWidth );
154     [propput] HRESULT DestinationTop( [in] long DestinationTop );
155     [propget] HRESULT DestinationTop( [out] long *pDestinationTop );
156     [propput] HRESULT DestinationHeight( [in] long DestinationHeight );
157     [propget] HRESULT DestinationHeight( [out] long *pDestinationHeight );
158     HRESULT SetSourcePosition( [in] long Left, [in] long Top, [in] long Width, [in] long Height );
159     HRESULT GetSourcePosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight );
160     HRESULT SetDefaultSourcePosition();
161     HRESULT SetDestinationPosition( [in] long Left, [in] long Top, [in] long Width, [in] long Height );
162     HRESULT GetDestinationPosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight );
163     HRESULT SetDefaultDestinationPosition();
164     HRESULT GetVideoSize( [out] long *pWidth, [out] long *pHeight );
165     HRESULT GetVideoPaletteEntries( [in] long StartIndex,
166                                     [in] long Entries,
167                                     [out] long *pRetrieved,
168                                     [out, size_is(Entries), length_is(*pRetrieved)] long *pPalette );
169     HRESULT GetCurrentImage( [in, out] long *pBufferSize,
170                              [out, size_is(*pBufferSize), length_is(*pBufferSize)] long *pDIBImage );
171     HRESULT IsUsingDefaultSource();
172     HRESULT IsUsingDefaultDestination();
173 }
174
175
176 /*****************************************************************************
177  * IMediaEvent interface
178  */
179 [
180     object,
181     uuid(56a868b6-0ad4-11ce-b03a-0020af0ba770),
182     pointer_default(unique)
183 ]
184 interface IMediaEvent : IDispatch
185 {
186     HRESULT GetEventHandle( [out] OAEVENT *hEvent );
187     HRESULT GetEvent( [out] long *lEventCode, [out] LONG_PTR *lParam1, [out] LONG_PTR *lParam2, [in] long msTimeout );
188     HRESULT WaitForCompletion( [in] long msTimeout, [out] long *pEvCode );
189     HRESULT CancelDefaultHandling( [in] long lEvCode );
190     HRESULT RestoreDefaultHandling( [in] long lEvCode );
191     HRESULT FreeEventParams( [in] long lEvCode, [in] LONG_PTR lParam1, [in] LONG_PTR lParam2 );
192 }
193
194
195 /*****************************************************************************
196  * IMediaEventEx interface
197  */
198 [
199     object,
200     uuid(56a868c0-0ad4-11ce-b03a-0020af0ba770),
201     pointer_default(unique)
202 ]
203 interface IMediaEventEx : IMediaEvent
204 {
205     HRESULT SetNotifyWindow( [in] OAHWND hwnd, [in] long lMsg, [in] LONG_PTR lInstanceData );
206     HRESULT SetNotifyFlags( [in] long lNoNotifyFlags );
207     HRESULT GetNotifyFlags( [out] long *lplNoNotifyFlags );
208 }