diff options
Diffstat (limited to 'Src/Plugins/Input/in_cdda/CDDB.H')
-rw-r--r-- | Src/Plugins/Input/in_cdda/CDDB.H | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_cdda/CDDB.H b/Src/Plugins/Input/in_cdda/CDDB.H new file mode 100644 index 00000000..8685078d --- /dev/null +++ b/Src/Plugins/Input/in_cdda/CDDB.H @@ -0,0 +1,184 @@ +#ifndef NULLSOFT_IN_CDDA_CDDB_H +#define NULLSOFT_IN_CDDA_CDDB_H + +#define S_MULTIPLE MATCH_MULTIPLE + +#ifdef IGNORE_API_GRACENOTE +struct TRACKINFO +{ + TRACKINFO() + { + artist=0; + title=0; + genre=0; + tagID=0; + composer=0; + conductor=0; + extData=0; + remixing=0; + isrc=0; + } + TRACKINFO(const TRACKINFO ©); + TRACKINFO &operator =(const TRACKINFO ©); + ~TRACKINFO(); + + void Reset(); + + wchar_t *artist; + wchar_t *title; + wchar_t *genre; + wchar_t *tagID; + wchar_t *composer; + wchar_t *conductor; + wchar_t *extData; + wchar_t *remixing; + wchar_t *isrc; +}; +#endif + + struct DINFO +{ + DINFO() + { + label=0; + notes=0; + genre=0; + artist=0; + year=0; + tuid=0; + title=0; + composer=0; + conductor=0; + remixing=0; + compilation=false; + discnum=0; + numdiscs=0; + ntracks=0; + CDDBID=0; + nDiscLength=0; + populated=false; + memset(pnFrames, 0, sizeof(pnFrames)); + } + DINFO(const DINFO ©); + DINFO &operator =(const DINFO ©); + ~DINFO(); + void Reset(); + + wchar_t *title; + wchar_t *artist; + wchar_t *tuid; + wchar_t *year; + wchar_t *genre; + wchar_t *label; + wchar_t *notes; + bool compilation; + int discnum; + int numdiscs; + int ntracks; + wchar_t *conductor; + wchar_t *composer; + wchar_t *remixing; + #ifdef IGNORE_API_GRACENOTE + TRACKINFO tracks[100]; + #endif + + unsigned int CDDBID; + unsigned int pnFrames[100]; + unsigned int nDiscLength; + + bool populated; +}; + +extern char config_use_cddb; + + +#define CDDB_E_BADTOC 0x82FD0001 + +#define CDDB_NONE 0x0000 // +#define CDDB_NOCACHE 0x1000 // +#define CDDB_NOINET 0x2000 // + +#define CDDB_RESOLVE_MULTIPLE 0x0001 // selects first + + + +#define CDDB_UI_MODAL 0x0010 // +#define CDDB_UI_RESULT_MODAL 0x0020 // result window will stay modal +#define CDDB_UI_USE_PARENT 0x0040 // instead of creating child window from hwndParent - just reuse hwndParent + +#define CDDB_UI_NOMATCH 0x0100 // displays submit new dialog +#define CDDB_UI_MULTIPLE 0x0200 // displays multiple choices dialog + +#define AUTOCLOSE_NOW 0x00000000 +#define AUTOCLOSE_NEVER 0xFFFFFFFF + +int GetDiscID(MCIDEVICEID wDeviceID, DINFO* psDI); +int GetCDDBInfo(DINFO *ps, wchar_t device); + +#include "CDDBInterface.h" +#ifdef IGNORE_API_GRACENOTE +class ICddbDisc; +#endif +typedef HRESULT (CALLBACK *CDDB_CB)(HRESULT /*result*/, ICddbDisc* /*pDisc*/, DWORD* /*pdwAutoCloseDelay*/, ULONG_PTR /*user*/); + +#ifndef IGNORE_API_GRACENOTE +HRESULT DoCDDBDlg(DINFO *ps, HWND hwnd, int editopt); +void GetDiscInfo(ICddbDiscPtr pDisc, DINFO *ps); +bool GetRole(ICddbTrack *track, BSTR roleId, BSTR *str); +bool GetRole(ICddbDisc *track, BSTR roleId, BSTR *str); +extern ICDDBControl *pCDDBControl; + +void InitializeCddbCache(void); +void UninitializeCddbCache(void); +#endif + +HRESULT CddbCache_SetDisc(DINFO *pDiscInfo, HRESULT lookupResult); + +void Cddb_Initialize(void); +void Cddb_Uninitialize(void); + +HRESULT Cddb_InitializeThread(void); +HRESULT Cddb_UninitializeThread(void); + +LPCWSTR Cddb_CalculateTOC(DINFO *pDisc, LPWSTR pszTOC, size_t cchTOC); +HRESULT Cddb_DoLookup(LPCWSTR pszTOC, HWND hwndParent, CDDB_CB callback, UINT flags, ULONG_PTR user); + +#ifndef IGNORE_API_GRACENOTE +void DefaultValues(DINFO *ps); +#endif + +bool DoCDText(DINFO *ps, wchar_t device); + +HRESULT Cddb_GetIUIOptions(void** ppUIOptions); +#ifndef IGNORE_API_GRACENOTE +void ShutDownCDDB(); +HRESULT Cddb_GetDiscFromCache(BSTR bstrTOC, ICddbDisc **ppDisc); +bool CDEdit(CHAR cDevice, DINFO *ps, HWND hwnd); + +HRESULT Cddb_GetIControl(void **ppControl); +HRESULT Cddb_GetICacheManger(void **ppCache); + +HRESULT Cddb_DisplayDiscInfo(ICddbDisc *pDisc, CDDBUIFlags *pUIFlags, HWND hwndParent); + +void Cddb_GetResultText(HRESULT hr, LPWSTR pszResult, INT cchResult, LPWSTR pszReason, INT cchReason); +#endif + +HRESULT Cddb_DisplayResultDlg(HWND hwndParent, HRESULT result, DWORD dwAutoCloseDelay, UINT flags); // flags can be CDDB_MODAL | CDDB_DISPLAY_IN_PARENT + +#ifndef IGNORE_API_GRACENOTE + +// info calls work only in callback +HWND Cddb_GetInfoWindow(void); +void Cdbb_DisplayInfo(LPCWSTR pszTitle, LPCWSTR pszCaption, LPCWSTR pszStatus, INT percentCompleted); + +void StoreDisc(unsigned int cddb_id, ICddbDiscPtr pDisc); +#endif + +bool StoreCDText(unsigned int cddb_id, wchar_t device); +void StoreCDNoInfo(unsigned int cddb_id); + +bool QueryDINFO(unsigned int cddb_id, DINFO *info); +//#ifndef IGNORE_API_GRACENOTE +bool StoreDINFO(unsigned cddb_id, DINFO *info); +//#endif +#endif |