~bratsche/vlc/vlc-notify-add-actions-with-server-support

« back to all changes in this revision

Viewing changes to extras/faad2/plugins/QCDMp4/QCDModDefs.h

  • Committer: Bazaar Package Importer
  • Date: 2008-11-28 09:29:51 UTC
  • Revision ID: jamesw@ubuntu.com-20081128092951-0y5ojboptscru17f
Tags: upstream-ubuntu-0.8.6.release.e+x264svn20071224+faad2.6.1
ImportĀ upstreamĀ versionĀ 0.8.6.release.e+x264svn20071224+faad2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//-----------------------------------------------------------------------------
2
 
//
3
 
// File:        QCDModDefs.h
4
 
//
5
 
// About:       Module definitions file.  Miscellanious definitions used by different
6
 
//                      module types.  This file is published with the plugin SDKs.
7
 
//
8
 
// Authors:     Written by Paul Quinn and Richard Carlson.
9
 
//
10
 
// Copyright:
11
 
//
12
 
//      QCD multimedia player application Software Development Kit Release 1.0.
13
 
//
14
 
//      Copyright (C) 1997-2002 Quinnware
15
 
//
16
 
//      This code is free.  If you redistribute it in any form, leave this notice 
17
 
//      here.
18
 
//
19
 
//      This program is distributed in the hope that it will be useful,
20
 
//      but WITHOUT ANY WARRANTY; without even the implied warranty of
21
 
//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
22
 
//
23
 
//-----------------------------------------------------------------------------
24
 
 
25
 
#ifndef QCDMODDEFS_H
26
 
#define QCDMODDEFS_H
27
 
 
28
 
#include <mmreg.h>
29
 
#include <windows.h>
30
 
 
31
 
#ifdef __cplusplus
32
 
#define PLUGIN_API extern "C" __declspec(dllexport)
33
 
#else
34
 
#define PLUGIN_API __declspec(dllexport)
35
 
#endif
36
 
 
37
 
// Current plugin version
38
 
 
39
 
// use this version for old style API calls (all returned text in native encoding)
40
 
#define PLUGIN_API_VERSION                              250             
41
 
 
42
 
// use this version for new style API calls (all returned text in UTF8 encoding on WinNT/2K/XP (native encoding on Win9x))
43
 
#define PLUGIN_API_VERSION_WANTUTF8             ((PLUGIN_API_WANTUTF8<<16)|PLUGIN_API_VERSION)
44
 
#define PLUGIN_API_WANTUTF8                             100
45
 
 
46
 
//-----------------------------------------------------------------------------
47
 
 
48
 
typedef struct 
49
 
{
50
 
        char                            *moduleString;
51
 
        char                            *moduleExtensions;
52
 
} QCDModInfo;
53
 
 
54
 
//-----------------------------------------------------------------------------
55
 
// Services (ops) provided by the Player
56
 
//-----------------------------------------------------------------------------
57
 
typedef enum 
58
 
{                                                                       //*** below returns numeric info (*buffer not used)
59
 
 
60
 
        opGetPlayerVersion = 0,                 // high-order word = major version (eg 3.01 is 3), low-order word = minor (eg 3.01 = 1)
61
 
        opGetParentWnd = 1,                             // handle to player window
62
 
        opGetPlayerInstance = 2,                // HINSTANCE to player executable
63
 
 
64
 
        opGetPlayerState = 9,                   // get current state of the player (returns: 1 = stopped, 2 = playing, 3 = paused, 0 = failed)
65
 
        opGetNumTracks = 10,                    // number of tracks in playlist
66
 
        opGetCurrentIndex = 11,                 // index of current track in playlist (0 based)
67
 
        opGetNextIndex = 12,                    // get index of next track to play (0 based), param1 = index start index. -1 for after current
68
 
        opGetTrackNum = 13,                             // get track number of index, param1 = index of track in playlist, -1 for current
69
 
                                                                        //              - 'track number' is the number of the track in it's respective album, as opposed to playlist number
70
 
                                                                        //              - the 'track number' for digital files will be 1 if the tag is not set or the file is not identified
71
 
 
72
 
        opGetTrackLength = 14,                  // get track length, param1 = index of track in playlist, -1 for current
73
 
                                                                        //                   param2 = 0 for seconds, 1 for milliseconds
74
 
        opGetTime = 15,                                 // get time on player, param1 = 0 for time displayed, 1 for track time, 2 for playlist time
75
 
                                                                        //                                         param2 = 0 for elapsed, 1 for remaining                                                                                                                 
76
 
        opGetTrackState = 16,                   // get whether track is marked, param1 = index of track, -1 for current
77
 
        opGetPlaylistNum = 17,                  // get playlist number of index, param1 = index of track in playlist, -1 for current
78
 
        opGetMediaType = 18,                    // get media type of track, param1 = index if track in playlist, -1 for current
79
 
                                                                        //              - see MediaTypes below for return values
80
 
 
81
 
        opGetAudioInfo = 19,                    // get format info about currently playing track
82
 
                                                                        //              - param1 = 0 for samplerate, 1 for bitrate, 2 for num channels
83
 
 
84
 
        opGetOffline = 20,                              // true if client is in Offline Mode
85
 
        opGetVisTarget = 21,                    // where is vis being drawn > 0 - internal to skin, 1 - external window, 2 - full screen
86
 
        opGetAlwaysOnTop = 22,                  // true if player is set to 'Always on Top'
87
 
        opGetRepeatState = 23,                  // returns: 0 - repeat off, 1 - repeat track, 2 - repeat all
88
 
        opGetShuffleState = 27,                 // returns: 0 - shuffle off, 1 - shuffle enabled
89
 
 
90
 
        opGetTimerState = 24,                   // low-order word: 0 - track ascend, 1 - playlist ascend, 2 - track descend, 3 - playlist descend
91
 
                                                                        // hi-order word: 1 if 'show hours' is set, else 0
92
 
 
93
 
        opGetVolume = 25,                               // get master volume level (0 - 100), param1: 0 = combined, 1 = left, 2 = right
94
 
        opSetVolume = 26,                               // set master volume level, param1: vol level 0 - 100, param2: balance (-100 left, 0 center, 100 right)
95
 
 
96
 
        opGetIndexFromPLNum = 28,               // get index from playlist number, param1 = playlist number
97
 
 
98
 
        opGetExtensionWnd = 30,                 // handle to the draggable window extension (only available on some skins), param1 = extension number (0 - 9)
99
 
        opGetExtVisWnd = 31,                    // handle to the external visual window
100
 
        opGetMusicBrowserWnd = 32,              // handle to the music browser window 
101
 
        opGetSkinPreviewWnd = 33,               // handle to the skin preview window 
102
 
        opGetPropertiesWnd = 34,                // handle to the player properties window 
103
 
        opGetExtInfoWnd = 35,                   // handle to the extended information window 
104
 
        opGetAboutWnd = 36,                             // handle to the about window 
105
 
        opGetSegmentsWnd = 37,                  // handle to the segments window 
106
 
        opGetEQPresetsWnd = 38,                 // handle to the EQ presets window 
107
 
        opGetVideoWnd = 39,                             // handle to the video window 
108
 
 
109
 
        opGetVisDimensions = 50,                // gets the width and height of visual window (param1 = -1 current vis window, 0 internal vis, 1 external vis, 2 full screen)
110
 
                                                                        //              returns: HEIGHT in high word, WIDTH in low word 
111
 
 
112
 
        opShowVideoWindow = 55,                 // Show or Close video window (param1 = 1 for create, 2 for create and show, 0 for close)
113
 
 
114
 
        opGetQueriesComplete = 60,              // get status on whether all tracks in playlist have been queryied for their info
115
 
 
116
 
                                                                        // playlist manipulation
117
 
        opDeleteIndex = 90,                             // delete index from playlist (param1 = index)
118
 
        opSelectIndex = 91,                             // mark index as selected (param1 = index, param2 = 1 - set, 0 - unset)
119
 
        opBlockIndex = 92,                              // mark index as blocked (param1 = index, param2 = 1 - set, 0 - unset)
120
 
 
121
 
        opGetMediaInfo = 99,                    // get the ICddbDisc object for the index specified, param1 = index of track, -1 for current
122
 
                                                                        //              param2 = pointer to integer that receives track value
123
 
                                                                        //              returns: pointer to ICddbDisc object. Do not release or deallocate this pointer
124
 
 
125
 
 
126
 
                                                                        //*** below returns string info in buffer, param1 = size of buffer
127
 
                                                                        //*** returns 1 on success, 0 on failure
128
 
 
129
 
        opGetTrackName = 100,                   // get track name, param2 = index of track in playlist, -1 for current
130
 
        opGetArtistName = 101,                  // get artist name, param2 = index of track in playlist, -1 for current
131
 
        opGetDiscName = 102,                    // get disc name, param2 = index of track in playlist, -1 for current
132
 
 
133
 
        opGetTrackFile = 103,                   // file name of track in playlist, param2 = index of track in playlist, -1 for current
134
 
        opGetSkinName = 104,                    // get current skin name
135
 
 
136
 
        opGetPluginFolder = 105,                // get current plugin folder
137
 
        opGetPluginSettingsFile = 106,  // get settings file (plugins.ini) that plugin should save settings to
138
 
        opGetPluginCacheFile = 107,             // get file that describes plugin validity, functions and names
139
 
        opGetPlayerSettingsFile = 108,  // get settings file (qcd.ini) that player saves it settings to (should use for read-only)
140
 
 
141
 
        opGetMusicFolder = 110,                 // get current music folder
142
 
        opGetPlaylistFolder = 111,              // get current playlist folder
143
 
        opGetSkinFolder = 112,                  // get current skin folder
144
 
        opGetCDDBCacheFolder = 113,             // get current folder for CDDB cached info
145
 
 
146
 
        opGetCurrentPlaylist = 114,             // get full pathname of playlist currently loaded 
147
 
 
148
 
        opGetMediaID = 115,                             // get media identifier, param2 = index of track in playlist, -1 for current
149
 
                                                                        //              - for CD's it's the TOC - for anything else, right now it's 0      
150
 
 
151
 
        opGetSupportedExtensions = 116, // get file extensions supported by the player, param2 = 0 - get all extensions, 1 - get registered extensions
152
 
                                                                        //              - returned extensions will be colon delimited
153
 
 
154
 
        opGetPlaylistString = 117,              // get string for index as it appears in playlist, param2 = index
155
 
 
156
 
                                                                        //*** below buffer points to struct or other object
157
 
                                                                        //*** returns 1 on success, 0 on failure
158
 
 
159
 
        opShowMainMenu = 120,                   // Display Main QCD Menu (buffer = POINT* - location to display menu)
160
 
        opGetMainMenu = 121,                    // Returns copy of HMENU handle to QCD Menu (must use DestroyMenu on handle when complete)
161
 
 
162
 
        opShowQuickTrack = 125,                 // Display QuickTrack Menu (buffer = POINT* - location to display menu)
163
 
        opGetQuickTrack = 126,                  // Returns copy of HMENU handle to QuickTrack menu (must use DestroyMenu on handle when complete)
164
 
                                                                        //              To use if QuickTrack item selected: PostMessage(hwndPlayer, WM_COMMAND, menu_id, 0);
165
 
 
166
 
        opGetEQVals = 200,                              // get current EQ levels/on/off (buffer = EQInfo*)
167
 
        opSetEQVals = 201,                              // set EQ levels/on/off (buffer = EQInfo*)
168
 
 
169
 
        opGetProxyInfo = 202,                   // get proxy info (buffer = ProxyInfo*), returns 0 if proxy not in use
170
 
 
171
 
 
172
 
                                                                        //*** below returns numeric info, buffer used
173
 
 
174
 
        opGetIndexFromFilename = 210,   // get the index of a file that exists in current playlist (buffer = full path of file),
175
 
                                                                        //              param1 = startindex (index to start searching on)
176
 
                                    //          returns -1 if file not in playlist
177
 
 
178
 
 
179
 
                                                                        //*** below send information to player
180
 
                                                                        //*** returns 1 on success, 0 on failure
181
 
 
182
 
        opSetStatusMessage = 1000,              // display message in status area (buffer = msg buffer (null term), param1 = text flags (see below))
183
 
 
184
 
        opSetBrowserUrl = 1001,                 // set music browser URL (buffer = url (null term))
185
 
                                        //              null url buffer - closes browser
186
 
                                        //              param1 = 0 - normal, 1 - force open
187
 
 
188
 
        opSetAudioInfo = 1002,                  // set the current music bitrate/khz (buffer = AudioInfo*, param1 = size of AudioInfo)
189
 
 
190
 
        opSetTrackAlbum = 1003,                 // update track ablum name (buffer = album (null term), param1 = (string ptr)file name), param2 = MediaTypes
191
 
        opSetTrackTitle = 1004,                 // update track title (buffer = title (null term), param1 = (string ptr)file name), param2 = MediaTypes
192
 
        opSetTrackArtist = 1005,                // update track artist name (buffer = artist (null term), param1 = (string ptr)file name), param2 = MediaTypes
193
 
 
194
 
        opSetTrackExtents = 1007,               // update track TrackExtents info (buffer = &TrackExtents), param1 = (string ptr)file name)
195
 
        opSetTrackSeekable = 1008,              // update track seekable flag (buffer = (string ptr)file name), param1 = TRUE/FALSE
196
 
        opSetPlayNext = 1009,                   // set the next index to be played (buffer = NULL, param1 = index, index = -1 unsets playnext)
197
 
        opSetIndexFilename = 1010,              // updates the filename (or stream) that an index in the current playlist refers to, buffer = new filename, param1 = index
198
 
 
199
 
        opSetPlaylist = 1006,                   // clear playlist, add files to playlist or reset playlist with new files 
200
 
                                                                        //              buffer = file list (each file in quotes, string null terminated) Eg; buffer="\"file1.mp3\" \"file2.mp3\"\0" - NULL to clear playlist
201
 
                                                                        //              param1 = (string ptr)originating path (can be NULL if paths included with files) 
202
 
                                                                        //              param2 = 1 - clear playlist flag, 2 - enqueue to top
203
 
 
204
 
        opInsertPlaylist = 1011,                // insert tracks into playlist 
205
 
                                                                        //              buffer = file list (each file in quotes, string null terminated) Eg; buffer="\"file1.mp3\" \"file2.mp3\"\0"
206
 
                                                                        //              param1 = (string ptr)originating path (can be NULL if paths included with files) 
207
 
                                                                        //              param2 = index location to insert tracks (-1 to insert at end)
208
 
 
209
 
        opMovePlaylistTrack = 1012,             // param1 = index of track to move, param2 = destination index (move shifts tracks between param1 and param2)
210
 
        opSwapPlaylistTracks = 1013,    // param1 = index of first track, param2 = index of second track (swap only switches indecies param1 and param2)
211
 
 
212
 
        opCreateDiscInfo = 1020,                // returns: pointer to ICddbDisc object. Do not release or deallocate this pointer
213
 
        opSetDiscInfo = 1021,                   // buffer = ICddbDisc*, param1 = MediaInfo*, param2 = track number
214
 
 
215
 
        opSetSeekPosition = 1100,               // seek to position during playback
216
 
                                                                        //              buffer = NULL, param1 = position
217
 
                                                                        //              param2 = 0 - position is in seconds, 1 - position is in milliseconds, 2 - position is in percent (use (float)param1))
218
 
 
219
 
 
220
 
        opSetRepeatState = 1110,                // set playlist repeat state, buffer = NULL, param1 = 0 - off, 1 - repeat track, 2 - repeat playlist
221
 
        opSetShuffleState = 1111,               // set playlist shuffle state, buffer = NULL, param1 = 0 - off, 1 - on
222
 
 
223
 
                                                                        //*** below configures custom plugin menu items for the 'plugin menu'
224
 
                                                                        //*** Player will call plugin's configure routine with menu value when menu item selected
225
 
                                                                        //*** returns 1 on success, 0 on failure
226
 
 
227
 
        opSetPluginMenuItem = 2000,             // buffer = HINSTANCE of plugin, param1 = item id, param2 = (string ptr)string to display
228
 
                                                                        //              - set param2 = 0 to remove item id from menu
229
 
                                                                        //              - set param1 = 0 and param2 = 0 to remove whole menu
230
 
        opSetPluginMenuState = 2001,    // buffer = HINSTANCE of plugin, param1 = item id, param2 = menu flags (same as windows menu flags - eg: MF_CHECKED)
231
 
 
232
 
 
233
 
                                                                        //*** below are services for using the player's filename template editor
234
 
                                                                        //*** returns 1 on success, 0 on failure
235
 
 
236
 
        opShowTemplateEditor = 2100,    // displays template editor dialog, param1 = (HWND)parent window, param2 = modal flag
237
 
        opLoadTemplate = 2101,                  // loads saved templates, buffer = (char*)string buf, param1 = bufsize, param2 = index of template (index < 0 for default formats, index >= 0 for user made formats)
238
 
        opRenderTemplate = 2102,                // create string based on template, buffer = (char*)template, param1 = FormatMetaInfo*, param2 = (char*)string buffer (min 260 bytes)
239
 
 
240
 
                                                                        //*** other services
241
 
 
242
 
        opUTF8toUCS2 = 9000,                    // convert UTF8 string to UCS2 (Unicode) string, buffer = null terminated utf8 string, param1 = (WCHAR*)result string buffer, param2 = size of result buffer
243
 
        opUCS2toUTF8 = 9001,                    // convert UCS2 (Unicode) string to UTF8 string, buffer = null terminated ucs2 string, param1 = (char*)result string buffer, param2 = size of result buffer
244
 
 
245
 
        opSafeWait = 10000                              // plugin's can use this to wait on an object without worrying about deadlocking the player.
246
 
                                                                        // this should only be called by the thread that enters the plugin, not by any plugin-created threads
247
 
 
248
 
} PluginServiceOp;
249
 
 
250
 
//-----------------------------------------------------------------------------
251
 
// Info services api provided by the Player, called by Plugin.
252
 
//-----------------------------------------------------------------------------
253
 
typedef long (*PluginServiceFunc)(PluginServiceOp op, void *buffer, long param1, long param2);
254
 
 
255
 
// Use to retrieve service func for DSP plugins (or other inproc process that doesn't have access to PluginServiceFunc)
256
 
// Eg: PluginServiceFunc Service = (PluginServiceFunc)SendMessage(hwndPlayer, WM_GETSERVICEFUNC, 0, 0);
257
 
// Set WPARAM = PLUGIN_API_WANTUTF8 for UTF8 string parameters
258
 
#define WM_GETSERVICEFUNC                       (WM_USER + 1)
259
 
 
260
 
//-----------------------------------------------------------------------------
261
 
typedef struct                          // for Output Plugin Write callback
262
 
{
263
 
        void    *data;                  // pointer to valid data
264
 
        int             bytelen;                // length of data pointed to by 'data' in bytes
265
 
        UINT    numsamples;             // number of samples represented by 'data'
266
 
        UINT    bps;                    // bits per sample
267
 
        UINT    nch;                    // number of channels
268
 
        UINT    srate;                  // sample rate
269
 
 
270
 
        UINT    markerstart;    // Marker position at start of data (marker is time value of data) 
271
 
                                                        // (set to WAVE_VIS_DATA_ONLY to not have data sent to output plugins)
272
 
        UINT    markerend;              // Marker position at end of data (not currently used, set to 0)
273
 
} WriteDataStruct;
274
 
 
275
 
//-----------------------------------------------------------------------------
276
 
typedef struct                  // for GetTrackExtents Input Plugin callback
277
 
{
278
 
        UINT track;                     // for CD's, set the track number. Otherwise set to 1.
279
 
        UINT start;                     // for CD's or media that doesn't start at the beginning 
280
 
                                                // of the file, set to start position. Otherwise set to 0.
281
 
        UINT end;                       // set to end position of media.
282
 
        UINT unitpersec;        // whatever units are being used for this media, how many
283
 
                                                // of them per second. 
284
 
                                                // (Note: ((end - start) / unitpersecond) = file length
285
 
        UINT bytesize;          // size of file in bytes (if applicable, otherwise 0).
286
 
} TrackExtents;
287
 
 
288
 
//-----------------------------------------------------------------------------
289
 
typedef struct                  // for opSetAudioInfo service
290
 
{               
291
 
    long struct_size;   // sizeof(AudioInfo)
292
 
    long level;                 // MPEG level (1 for MPEG1, 2 for MPEG2, 3 for MPEG2.5, 7 for MPEGpro)
293
 
    long layer;                 // and layer (1, 2 or 3)
294
 
    long bitrate;               // audio bitrate in bits per second
295
 
    long frequency;             // audio freq in Hz
296
 
    long mode;                  // 0 for stereo, 1 for joint-stereo, 2 for dual-channel, 3 for mono, 4 for multi-channel
297
 
        char text[8];           // up to eight characters to identify format (will override level and layer settings)
298
 
} AudioInfo;
299
 
 
300
 
//-----------------------------------------------------------------------------
301
 
// Equalizer Info
302
 
//-----------------------------------------------------------------------------
303
 
typedef struct                  // for coming QCD version
304
 
{
305
 
        long struct_size;       // sizeof(EQInfo)
306
 
        char enabled;           
307
 
        char preamp;            // -128 to 127, 0 is even
308
 
        char bands[10];         // -128 to 127, 0 is even
309
 
} EQInfo;
310
 
 
311
 
//-----------------------------------------------------------------------------
312
 
typedef struct
313
 
{
314
 
        long struct_size;       // sizeof(ProxyInfo)
315
 
        char hostname[200];
316
 
        long port;
317
 
        char username[100];
318
 
        char password[100];
319
 
} ProxyInfo;
320
 
 
321
 
//-----------------------------------------------------------------------------
322
 
typedef enum                    // for MediaInfo.mediaType
323
 
324
 
        UNKNOWN_MEDIA = 0,
325
 
        CD_AUDIO_MEDIA = 1,
326
 
        DIGITAL_FILE_MEDIA = 2,
327
 
        DIGITAL_STREAM_MEDIA = 3
328
 
} MediaTypes;
329
 
 
330
 
//-----------------------------------------------------------------------------
331
 
#define MAX_TOC_LEN                             2048
332
 
typedef struct
333
 
{
334
 
        // media descriptors
335
 
        CHAR            mediaFile[MAX_PATH];
336
 
        MediaTypes      mediaType;
337
 
 
338
 
        // cd audio media info
339
 
        CHAR            cd_mediaTOC[MAX_TOC_LEN];
340
 
        int                     cd_numTracks;
341
 
        int                     cd_hasAudio;
342
 
 
343
 
        // operation info
344
 
        int                     op_canSeek;
345
 
 
346
 
        // not used
347
 
        int                     reserved[4];
348
 
 
349
 
} MediaInfo;
350
 
 
351
 
//-----------------------------------------------------------------------------
352
 
typedef struct
353
 
{
354
 
        long    struct_size;
355
 
        LPCWSTR title;
356
 
        LPCWSTR artalb;
357
 
        LPCWSTR album;
358
 
        LPCWSTR genre;
359
 
        LPCWSTR year;
360
 
        LPCWSTR tracknum;
361
 
        LPCWSTR filename;
362
 
        LPCWSTR arttrk;
363
 
        long    reserved;
364
 
 
365
 
} FormatMetaInfo;
366
 
 
367
 
//-----------------------------------------------------------------------------
368
 
// When subclassing the parent window, a plugin can watch for these messages
369
 
// to react to events going on between plugins and player
370
 
// DO NOT SEND THESE MESSAGES - can only watch for them
371
 
 
372
 
// Plugin to Player Notifiers
373
 
#define WM_PN_POSITIONUPDATE    (WM_USER + 100) // playback progress updated
374
 
#define WM_PN_PLAYSTARTED               (WM_USER + 101) // playback has started
375
 
#define WM_PN_PLAYSTOPPED               (WM_USER + 102) // playback has stopped by user
376
 
#define WM_PN_PLAYPAUSED                (WM_USER + 103) // playback has been paused
377
 
#define WM_PN_PLAYDONE                  (WM_USER + 104) // playback has finished (track completed)
378
 
#define WM_PN_MEDIAEJECTED              (WM_USER + 105) // a CD was ejected (CDRom drive letter= 'A' + lParam)
379
 
#define WM_PN_MEDIAINSERTED             (WM_USER + 106) // a CD was inserted (CDRom drive letter= 'A' + lParam)
380
 
#define WM_PN_INFOCHANGED               (WM_USER + 107) // track information was updated (lParam = (LPCSTR)medianame)
381
 
#define WM_PN_TRACKCHANGED              (WM_USER + 109) // current track playing has changed (relevant from CD plugin) (lParam = (LPCSTR)medianame)
382
 
 
383
 
// Player to Plugin Notifiers
384
 
#define WM_PN_PLAYLISTCHANGED   (WM_USER + 200) // playlist has changed in some way (add, delete, sort, shuffle, drag-n-drop, etc...)
385
 
 
386
 
// For intercepting main menu display
387
 
// (so you can get handle, modify, and display your own)
388
 
#define WM_SHOWMAINMENU                 (WM_USER + 20)
389
 
 
390
 
// For intercepting skinned border window commands
391
 
#define WM_BORDERWINDOW                 (WM_USER + 26)
392
 
// WM_BORDERWINDOW      wParam's
393
 
#define BORDERWINDOW_NORMALSIZE                 0x100000
394
 
#define BORDERWINDOW_DOUBLESIZE                 0x200000
395
 
#define BORDERWINDOW_FULLSCREEN                 0x400000
396
 
 
397
 
// send to border window to cause resize
398
 
// wParam = LPPOINT lpp; // point x-y is CLIENT area size of window
399
 
#define WM_SIZEBORDERWINDOW             (WM_USER + 1)
400
 
 
401
 
//-----------------------------------------------------------------------------
402
 
// To shutdown player, send this command
403
 
#define WM_SHUTDOWN                             (WM_USER + 5)
404
 
 
405
 
//-----------------------------------------------------------------------------
406
 
// opSetStatusMessage textflags
407
 
#define TEXT_DEFAULT            0x0             // message scrolls by in status window
408
 
#define TEXT_TOOLTIP            0x1             // message acts as tooltip in status window
409
 
#define TEXT_URGENT                     0x2             // forces message to appear even if no status window (using msg box)
410
 
#define TEXT_HOLD                       0x4             // tooltip message stays up (no fade out)
411
 
#define TEXT_UNICODE            0x10    // buffer contains a unicode string (multibyte string otherwise)
412
 
 
 
1
//-----------------------------------------------------------------------------
 
2
//
 
3
// File:        QCDModDefs.h
 
4
//
 
5
// About:       Module definitions file.  Miscellanious definitions used by different
 
6
//                      module types.  This file is published with the plugin SDKs.
 
7
//
 
8
// Authors:     Written by Paul Quinn and Richard Carlson.
 
9
//
 
10
// Copyright:
 
11
//
 
12
//      QCD multimedia player application Software Development Kit Release 1.0.
 
13
//
 
14
//      Copyright (C) 1997-2002 Quinnware
 
15
//
 
16
//      This code is free.  If you redistribute it in any form, leave this notice 
 
17
//      here.
 
18
//
 
19
//      This program is distributed in the hope that it will be useful,
 
20
//      but WITHOUT ANY WARRANTY; without even the implied warranty of
 
21
//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
22
//
 
23
//-----------------------------------------------------------------------------
 
24
 
 
25
#ifndef QCDMODDEFS_H
 
26
#define QCDMODDEFS_H
 
27
 
 
28
#include <mmreg.h>
 
29
#include <windows.h>
 
30
 
 
31
#ifdef __cplusplus
 
32
#define PLUGIN_API extern "C" __declspec(dllexport)
 
33
#else
 
34
#define PLUGIN_API __declspec(dllexport)
 
35
#endif
 
36
 
 
37
// Current plugin version
 
38
 
 
39
// use this version for old style API calls (all returned text in native encoding)
 
40
#define PLUGIN_API_VERSION                              250             
 
41
 
 
42
// use this version for new style API calls (all returned text in UTF8 encoding on WinNT/2K/XP (native encoding on Win9x))
 
43
#define PLUGIN_API_VERSION_WANTUTF8             ((PLUGIN_API_WANTUTF8<<16)|PLUGIN_API_VERSION)
 
44
#define PLUGIN_API_WANTUTF8                             100
 
45
 
 
46
//-----------------------------------------------------------------------------
 
47
 
 
48
typedef struct 
 
49
{
 
50
        char                            *moduleString;
 
51
        char                            *moduleExtensions;
 
52
} QCDModInfo;
 
53
 
 
54
//-----------------------------------------------------------------------------
 
55
// Services (ops) provided by the Player
 
56
//-----------------------------------------------------------------------------
 
57
typedef enum 
 
58
{                                                                       //*** below returns numeric info (*buffer not used)
 
59
 
 
60
        opGetPlayerVersion = 0,                 // high-order word = major version (eg 3.01 is 3), low-order word = minor (eg 3.01 = 1)
 
61
        opGetParentWnd = 1,                             // handle to player window
 
62
        opGetPlayerInstance = 2,                // HINSTANCE to player executable
 
63
 
 
64
        opGetPlayerState = 9,                   // get current state of the player (returns: 1 = stopped, 2 = playing, 3 = paused, 0 = failed)
 
65
        opGetNumTracks = 10,                    // number of tracks in playlist
 
66
        opGetCurrentIndex = 11,                 // index of current track in playlist (0 based)
 
67
        opGetNextIndex = 12,                    // get index of next track to play (0 based), param1 = index start index. -1 for after current
 
68
        opGetTrackNum = 13,                             // get track number of index, param1 = index of track in playlist, -1 for current
 
69
                                                                        //              - 'track number' is the number of the track in it's respective album, as opposed to playlist number
 
70
                                                                        //              - the 'track number' for digital files will be 1 if the tag is not set or the file is not identified
 
71
 
 
72
        opGetTrackLength = 14,                  // get track length, param1 = index of track in playlist, -1 for current
 
73
                                                                        //                   param2 = 0 for seconds, 1 for milliseconds
 
74
        opGetTime = 15,                                 // get time on player, param1 = 0 for time displayed, 1 for track time, 2 for playlist time
 
75
                                                                        //                                         param2 = 0 for elapsed, 1 for remaining                                                                                                                 
 
76
        opGetTrackState = 16,                   // get whether track is marked, param1 = index of track, -1 for current
 
77
        opGetPlaylistNum = 17,                  // get playlist number of index, param1 = index of track in playlist, -1 for current
 
78
        opGetMediaType = 18,                    // get media type of track, param1 = index if track in playlist, -1 for current
 
79
                                                                        //              - see MediaTypes below for return values
 
80
 
 
81
        opGetAudioInfo = 19,                    // get format info about currently playing track
 
82
                                                                        //              - param1 = 0 for samplerate, 1 for bitrate, 2 for num channels
 
83
 
 
84
        opGetOffline = 20,                              // true if client is in Offline Mode
 
85
        opGetVisTarget = 21,                    // where is vis being drawn > 0 - internal to skin, 1 - external window, 2 - full screen
 
86
        opGetAlwaysOnTop = 22,                  // true if player is set to 'Always on Top'
 
87
        opGetRepeatState = 23,                  // returns: 0 - repeat off, 1 - repeat track, 2 - repeat all
 
88
        opGetShuffleState = 27,                 // returns: 0 - shuffle off, 1 - shuffle enabled
 
89
 
 
90
        opGetTimerState = 24,                   // low-order word: 0 - track ascend, 1 - playlist ascend, 2 - track descend, 3 - playlist descend
 
91
                                                                        // hi-order word: 1 if 'show hours' is set, else 0
 
92
 
 
93
        opGetVolume = 25,                               // get master volume level (0 - 100), param1: 0 = combined, 1 = left, 2 = right
 
94
        opSetVolume = 26,                               // set master volume level, param1: vol level 0 - 100, param2: balance (-100 left, 0 center, 100 right)
 
95
 
 
96
        opGetIndexFromPLNum = 28,               // get index from playlist number, param1 = playlist number
 
97
 
 
98
        opGetExtensionWnd = 30,                 // handle to the draggable window extension (only available on some skins), param1 = extension number (0 - 9)
 
99
        opGetExtVisWnd = 31,                    // handle to the external visual window
 
100
        opGetMusicBrowserWnd = 32,              // handle to the music browser window 
 
101
        opGetSkinPreviewWnd = 33,               // handle to the skin preview window 
 
102
        opGetPropertiesWnd = 34,                // handle to the player properties window 
 
103
        opGetExtInfoWnd = 35,                   // handle to the extended information window 
 
104
        opGetAboutWnd = 36,                             // handle to the about window 
 
105
        opGetSegmentsWnd = 37,                  // handle to the segments window 
 
106
        opGetEQPresetsWnd = 38,                 // handle to the EQ presets window 
 
107
        opGetVideoWnd = 39,                             // handle to the video window 
 
108
 
 
109
        opGetVisDimensions = 50,                // gets the width and height of visual window (param1 = -1 current vis window, 0 internal vis, 1 external vis, 2 full screen)
 
110
                                                                        //              returns: HEIGHT in high word, WIDTH in low word 
 
111
 
 
112
        opShowVideoWindow = 55,                 // Show or Close video window (param1 = 1 for create, 2 for create and show, 0 for close)
 
113
 
 
114
        opGetQueriesComplete = 60,              // get status on whether all tracks in playlist have been queryied for their info
 
115
 
 
116
                                                                        // playlist manipulation
 
117
        opDeleteIndex = 90,                             // delete index from playlist (param1 = index)
 
118
        opSelectIndex = 91,                             // mark index as selected (param1 = index, param2 = 1 - set, 0 - unset)
 
119
        opBlockIndex = 92,                              // mark index as blocked (param1 = index, param2 = 1 - set, 0 - unset)
 
120
 
 
121
        opGetMediaInfo = 99,                    // get the ICddbDisc object for the index specified, param1 = index of track, -1 for current
 
122
                                                                        //              param2 = pointer to integer that receives track value
 
123
                                                                        //              returns: pointer to ICddbDisc object. Do not release or deallocate this pointer
 
124
 
 
125
 
 
126
                                                                        //*** below returns string info in buffer, param1 = size of buffer
 
127
                                                                        //*** returns 1 on success, 0 on failure
 
128
 
 
129
        opGetTrackName = 100,                   // get track name, param2 = index of track in playlist, -1 for current
 
130
        opGetArtistName = 101,                  // get artist name, param2 = index of track in playlist, -1 for current
 
131
        opGetDiscName = 102,                    // get disc name, param2 = index of track in playlist, -1 for current
 
132
 
 
133
        opGetTrackFile = 103,                   // file name of track in playlist, param2 = index of track in playlist, -1 for current
 
134
        opGetSkinName = 104,                    // get current skin name
 
135
 
 
136
        opGetPluginFolder = 105,                // get current plugin folder
 
137
        opGetPluginSettingsFile = 106,  // get settings file (plugins.ini) that plugin should save settings to
 
138
        opGetPluginCacheFile = 107,             // get file that describes plugin validity, functions and names
 
139
        opGetPlayerSettingsFile = 108,  // get settings file (qcd.ini) that player saves it settings to (should use for read-only)
 
140
 
 
141
        opGetMusicFolder = 110,                 // get current music folder
 
142
        opGetPlaylistFolder = 111,              // get current playlist folder
 
143
        opGetSkinFolder = 112,                  // get current skin folder
 
144
        opGetCDDBCacheFolder = 113,             // get current folder for CDDB cached info
 
145
 
 
146
        opGetCurrentPlaylist = 114,             // get full pathname of playlist currently loaded 
 
147
 
 
148
        opGetMediaID = 115,                             // get media identifier, param2 = index of track in playlist, -1 for current
 
149
                                                                        //              - for CD's it's the TOC - for anything else, right now it's 0      
 
150
 
 
151
        opGetSupportedExtensions = 116, // get file extensions supported by the player, param2 = 0 - get all extensions, 1 - get registered extensions
 
152
                                                                        //              - returned extensions will be colon delimited
 
153
 
 
154
        opGetPlaylistString = 117,              // get string for index as it appears in playlist, param2 = index
 
155
 
 
156
                                                                        //*** below buffer points to struct or other object
 
157
                                                                        //*** returns 1 on success, 0 on failure
 
158
 
 
159
        opShowMainMenu = 120,                   // Display Main QCD Menu (buffer = POINT* - location to display menu)
 
160
        opGetMainMenu = 121,                    // Returns copy of HMENU handle to QCD Menu (must use DestroyMenu on handle when complete)
 
161
 
 
162
        opShowQuickTrack = 125,                 // Display QuickTrack Menu (buffer = POINT* - location to display menu)
 
163
        opGetQuickTrack = 126,                  // Returns copy of HMENU handle to QuickTrack menu (must use DestroyMenu on handle when complete)
 
164
                                                                        //              To use if QuickTrack item selected: PostMessage(hwndPlayer, WM_COMMAND, menu_id, 0);
 
165
 
 
166
        opGetEQVals = 200,                              // get current EQ levels/on/off (buffer = EQInfo*)
 
167
        opSetEQVals = 201,                              // set EQ levels/on/off (buffer = EQInfo*)
 
168
 
 
169
        opGetProxyInfo = 202,                   // get proxy info (buffer = ProxyInfo*), returns 0 if proxy not in use
 
170
 
 
171
 
 
172
                                                                        //*** below returns numeric info, buffer used
 
173
 
 
174
        opGetIndexFromFilename = 210,   // get the index of a file that exists in current playlist (buffer = full path of file),
 
175
                                                                        //              param1 = startindex (index to start searching on)
 
176
                                    //          returns -1 if file not in playlist
 
177
 
 
178
 
 
179
                                                                        //*** below send information to player
 
180
                                                                        //*** returns 1 on success, 0 on failure
 
181
 
 
182
        opSetStatusMessage = 1000,              // display message in status area (buffer = msg buffer (null term), param1 = text flags (see below))
 
183
 
 
184
        opSetBrowserUrl = 1001,                 // set music browser URL (buffer = url (null term))
 
185
                                        //              null url buffer - closes browser
 
186
                                        //              param1 = 0 - normal, 1 - force open
 
187
 
 
188
        opSetAudioInfo = 1002,                  // set the current music bitrate/khz (buffer = AudioInfo*, param1 = size of AudioInfo)
 
189
 
 
190
        opSetTrackAlbum = 1003,                 // update track ablum name (buffer = album (null term), param1 = (string ptr)file name), param2 = MediaTypes
 
191
        opSetTrackTitle = 1004,                 // update track title (buffer = title (null term), param1 = (string ptr)file name), param2 = MediaTypes
 
192
        opSetTrackArtist = 1005,                // update track artist name (buffer = artist (null term), param1 = (string ptr)file name), param2 = MediaTypes
 
193
 
 
194
        opSetTrackExtents = 1007,               // update track TrackExtents info (buffer = &TrackExtents), param1 = (string ptr)file name)
 
195
        opSetTrackSeekable = 1008,              // update track seekable flag (buffer = (string ptr)file name), param1 = TRUE/FALSE
 
196
        opSetPlayNext = 1009,                   // set the next index to be played (buffer = NULL, param1 = index, index = -1 unsets playnext)
 
197
        opSetIndexFilename = 1010,              // updates the filename (or stream) that an index in the current playlist refers to, buffer = new filename, param1 = index
 
198
 
 
199
        opSetPlaylist = 1006,                   // clear playlist, add files to playlist or reset playlist with new files 
 
200
                                                                        //              buffer = file list (each file in quotes, string null terminated) Eg; buffer="\"file1.mp3\" \"file2.mp3\"\0" - NULL to clear playlist
 
201
                                                                        //              param1 = (string ptr)originating path (can be NULL if paths included with files) 
 
202
                                                                        //              param2 = 1 - clear playlist flag, 2 - enqueue to top
 
203
 
 
204
        opInsertPlaylist = 1011,                // insert tracks into playlist 
 
205
                                                                        //              buffer = file list (each file in quotes, string null terminated) Eg; buffer="\"file1.mp3\" \"file2.mp3\"\0"
 
206
                                                                        //              param1 = (string ptr)originating path (can be NULL if paths included with files) 
 
207
                                                                        //              param2 = index location to insert tracks (-1 to insert at end)
 
208
 
 
209
        opMovePlaylistTrack = 1012,             // param1 = index of track to move, param2 = destination index (move shifts tracks between param1 and param2)
 
210
        opSwapPlaylistTracks = 1013,    // param1 = index of first track, param2 = index of second track (swap only switches indecies param1 and param2)
 
211
 
 
212
        opCreateDiscInfo = 1020,                // returns: pointer to ICddbDisc object. Do not release or deallocate this pointer
 
213
        opSetDiscInfo = 1021,                   // buffer = ICddbDisc*, param1 = MediaInfo*, param2 = track number
 
214
 
 
215
        opSetSeekPosition = 1100,               // seek to position during playback
 
216
                                                                        //              buffer = NULL, param1 = position
 
217
                                                                        //              param2 = 0 - position is in seconds, 1 - position is in milliseconds, 2 - position is in percent (use (float)param1))
 
218
 
 
219
 
 
220
        opSetRepeatState = 1110,                // set playlist repeat state, buffer = NULL, param1 = 0 - off, 1 - repeat track, 2 - repeat playlist
 
221
        opSetShuffleState = 1111,               // set playlist shuffle state, buffer = NULL, param1 = 0 - off, 1 - on
 
222
 
 
223
                                                                        //*** below configures custom plugin menu items for the 'plugin menu'
 
224
                                                                        //*** Player will call plugin's configure routine with menu value when menu item selected
 
225
                                                                        //*** returns 1 on success, 0 on failure
 
226
 
 
227
        opSetPluginMenuItem = 2000,             // buffer = HINSTANCE of plugin, param1 = item id, param2 = (string ptr)string to display
 
228
                                                                        //              - set param2 = 0 to remove item id from menu
 
229
                                                                        //              - set param1 = 0 and param2 = 0 to remove whole menu
 
230
        opSetPluginMenuState = 2001,    // buffer = HINSTANCE of plugin, param1 = item id, param2 = menu flags (same as windows menu flags - eg: MF_CHECKED)
 
231
 
 
232
 
 
233
                                                                        //*** below are services for using the player's filename template editor
 
234
                                                                        //*** returns 1 on success, 0 on failure
 
235
 
 
236
        opShowTemplateEditor = 2100,    // displays template editor dialog, param1 = (HWND)parent window, param2 = modal flag
 
237
        opLoadTemplate = 2101,                  // loads saved templates, buffer = (char*)string buf, param1 = bufsize, param2 = index of template (index < 0 for default formats, index >= 0 for user made formats)
 
238
        opRenderTemplate = 2102,                // create string based on template, buffer = (char*)template, param1 = FormatMetaInfo*, param2 = (char*)string buffer (min 260 bytes)
 
239
 
 
240
                                                                        //*** other services
 
241
 
 
242
        opUTF8toUCS2 = 9000,                    // convert UTF8 string to UCS2 (Unicode) string, buffer = null terminated utf8 string, param1 = (WCHAR*)result string buffer, param2 = size of result buffer
 
243
        opUCS2toUTF8 = 9001,                    // convert UCS2 (Unicode) string to UTF8 string, buffer = null terminated ucs2 string, param1 = (char*)result string buffer, param2 = size of result buffer
 
244
 
 
245
        opSafeWait = 10000                              // plugin's can use this to wait on an object without worrying about deadlocking the player.
 
246
                                                                        // this should only be called by the thread that enters the plugin, not by any plugin-created threads
 
247
 
 
248
} PluginServiceOp;
 
249
 
 
250
//-----------------------------------------------------------------------------
 
251
// Info services api provided by the Player, called by Plugin.
 
252
//-----------------------------------------------------------------------------
 
253
typedef long (*PluginServiceFunc)(PluginServiceOp op, void *buffer, long param1, long param2);
 
254
 
 
255
// Use to retrieve service func for DSP plugins (or other inproc process that doesn't have access to PluginServiceFunc)
 
256
// Eg: PluginServiceFunc Service = (PluginServiceFunc)SendMessage(hwndPlayer, WM_GETSERVICEFUNC, 0, 0);
 
257
// Set WPARAM = PLUGIN_API_WANTUTF8 for UTF8 string parameters
 
258
#define WM_GETSERVICEFUNC                       (WM_USER + 1)
 
259
 
 
260
//-----------------------------------------------------------------------------
 
261
typedef struct                          // for Output Plugin Write callback
 
262
{
 
263
        void    *data;                  // pointer to valid data
 
264
        int             bytelen;                // length of data pointed to by 'data' in bytes
 
265
        UINT    numsamples;             // number of samples represented by 'data'
 
266
        UINT    bps;                    // bits per sample
 
267
        UINT    nch;                    // number of channels
 
268
        UINT    srate;                  // sample rate
 
269
 
 
270
        UINT    markerstart;    // Marker position at start of data (marker is time value of data) 
 
271
                                                        // (set to WAVE_VIS_DATA_ONLY to not have data sent to output plugins)
 
272
        UINT    markerend;              // Marker position at end of data (not currently used, set to 0)
 
273
} WriteDataStruct;
 
274
 
 
275
//-----------------------------------------------------------------------------
 
276
typedef struct                  // for GetTrackExtents Input Plugin callback
 
277
{
 
278
        UINT track;                     // for CD's, set the track number. Otherwise set to 1.
 
279
        UINT start;                     // for CD's or media that doesn't start at the beginning 
 
280
                                                // of the file, set to start position. Otherwise set to 0.
 
281
        UINT end;                       // set to end position of media.
 
282
        UINT unitpersec;        // whatever units are being used for this media, how many
 
283
                                                // of them per second. 
 
284
                                                // (Note: ((end - start) / unitpersecond) = file length
 
285
        UINT bytesize;          // size of file in bytes (if applicable, otherwise 0).
 
286
} TrackExtents;
 
287
 
 
288
//-----------------------------------------------------------------------------
 
289
typedef struct                  // for opSetAudioInfo service
 
290
{               
 
291
    long struct_size;   // sizeof(AudioInfo)
 
292
    long level;                 // MPEG level (1 for MPEG1, 2 for MPEG2, 3 for MPEG2.5, 7 for MPEGpro)
 
293
    long layer;                 // and layer (1, 2 or 3)
 
294
    long bitrate;               // audio bitrate in bits per second
 
295
    long frequency;             // audio freq in Hz
 
296
    long mode;                  // 0 for stereo, 1 for joint-stereo, 2 for dual-channel, 3 for mono, 4 for multi-channel
 
297
        char text[8];           // up to eight characters to identify format (will override level and layer settings)
 
298
} AudioInfo;
 
299
 
 
300
//-----------------------------------------------------------------------------
 
301
// Equalizer Info
 
302
//-----------------------------------------------------------------------------
 
303
typedef struct                  // for coming QCD version
 
304
{
 
305
        long struct_size;       // sizeof(EQInfo)
 
306
        char enabled;           
 
307
        char preamp;            // -128 to 127, 0 is even
 
308
        char bands[10];         // -128 to 127, 0 is even
 
309
} EQInfo;
 
310
 
 
311
//-----------------------------------------------------------------------------
 
312
typedef struct
 
313
{
 
314
        long struct_size;       // sizeof(ProxyInfo)
 
315
        char hostname[200];
 
316
        long port;
 
317
        char username[100];
 
318
        char password[100];
 
319
} ProxyInfo;
 
320
 
 
321
//-----------------------------------------------------------------------------
 
322
typedef enum                    // for MediaInfo.mediaType
 
323
 
324
        UNKNOWN_MEDIA = 0,
 
325
        CD_AUDIO_MEDIA = 1,
 
326
        DIGITAL_FILE_MEDIA = 2,
 
327
        DIGITAL_STREAM_MEDIA = 3
 
328
} MediaTypes;
 
329
 
 
330
//-----------------------------------------------------------------------------
 
331
#define MAX_TOC_LEN                             2048
 
332
typedef struct
 
333
{
 
334
        // media descriptors
 
335
        CHAR            mediaFile[MAX_PATH];
 
336
        MediaTypes      mediaType;
 
337
 
 
338
        // cd audio media info
 
339
        CHAR            cd_mediaTOC[MAX_TOC_LEN];
 
340
        int                     cd_numTracks;
 
341
        int                     cd_hasAudio;
 
342
 
 
343
        // operation info
 
344
        int                     op_canSeek;
 
345
 
 
346
        // not used
 
347
        int                     reserved[4];
 
348
 
 
349
} MediaInfo;
 
350
 
 
351
//-----------------------------------------------------------------------------
 
352
typedef struct
 
353
{
 
354
        long    struct_size;
 
355
        LPCWSTR title;
 
356
        LPCWSTR artalb;
 
357
        LPCWSTR album;
 
358
        LPCWSTR genre;
 
359
        LPCWSTR year;
 
360
        LPCWSTR tracknum;
 
361
        LPCWSTR filename;
 
362
        LPCWSTR arttrk;
 
363
        long    reserved;
 
364
 
 
365
} FormatMetaInfo;
 
366
 
 
367
//-----------------------------------------------------------------------------
 
368
// When subclassing the parent window, a plugin can watch for these messages
 
369
// to react to events going on between plugins and player
 
370
// DO NOT SEND THESE MESSAGES - can only watch for them
 
371
 
 
372
// Plugin to Player Notifiers
 
373
#define WM_PN_POSITIONUPDATE    (WM_USER + 100) // playback progress updated
 
374
#define WM_PN_PLAYSTARTED               (WM_USER + 101) // playback has started
 
375
#define WM_PN_PLAYSTOPPED               (WM_USER + 102) // playback has stopped by user
 
376
#define WM_PN_PLAYPAUSED                (WM_USER + 103) // playback has been paused
 
377
#define WM_PN_PLAYDONE                  (WM_USER + 104) // playback has finished (track completed)
 
378
#define WM_PN_MEDIAEJECTED              (WM_USER + 105) // a CD was ejected (CDRom drive letter= 'A' + lParam)
 
379
#define WM_PN_MEDIAINSERTED             (WM_USER + 106) // a CD was inserted (CDRom drive letter= 'A' + lParam)
 
380
#define WM_PN_INFOCHANGED               (WM_USER + 107) // track information was updated (lParam = (LPCSTR)medianame)
 
381
#define WM_PN_TRACKCHANGED              (WM_USER + 109) // current track playing has changed (relevant from CD plugin) (lParam = (LPCSTR)medianame)
 
382
 
 
383
// Player to Plugin Notifiers
 
384
#define WM_PN_PLAYLISTCHANGED   (WM_USER + 200) // playlist has changed in some way (add, delete, sort, shuffle, drag-n-drop, etc...)
 
385
 
 
386
// For intercepting main menu display
 
387
// (so you can get handle, modify, and display your own)
 
388
#define WM_SHOWMAINMENU                 (WM_USER + 20)
 
389
 
 
390
// For intercepting skinned border window commands
 
391
#define WM_BORDERWINDOW                 (WM_USER + 26)
 
392
// WM_BORDERWINDOW      wParam's
 
393
#define BORDERWINDOW_NORMALSIZE                 0x100000
 
394
#define BORDERWINDOW_DOUBLESIZE                 0x200000
 
395
#define BORDERWINDOW_FULLSCREEN                 0x400000
 
396
 
 
397
// send to border window to cause resize
 
398
// wParam = LPPOINT lpp; // point x-y is CLIENT area size of window
 
399
#define WM_SIZEBORDERWINDOW             (WM_USER + 1)
 
400
 
 
401
//-----------------------------------------------------------------------------
 
402
// To shutdown player, send this command
 
403
#define WM_SHUTDOWN                             (WM_USER + 5)
 
404
 
 
405
//-----------------------------------------------------------------------------
 
406
// opSetStatusMessage textflags
 
407
#define TEXT_DEFAULT            0x0             // message scrolls by in status window
 
408
#define TEXT_TOOLTIP            0x1             // message acts as tooltip in status window
 
409
#define TEXT_URGENT                     0x2             // forces message to appear even if no status window (using msg box)
 
410
#define TEXT_HOLD                       0x4             // tooltip message stays up (no fade out)
 
411
#define TEXT_UNICODE            0x10    // buffer contains a unicode string (multibyte string otherwise)
 
412
 
413
413
#endif //QCDMODDEFS_H
 
 
b'\\ No newline at end of file'