diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Library/ml_disc/main.h | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Plugins/Library/ml_disc/main.h')
-rw-r--r-- | Src/Plugins/Library/ml_disc/main.h | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/Src/Plugins/Library/ml_disc/main.h b/Src/Plugins/Library/ml_disc/main.h new file mode 100644 index 00000000..285b8de6 --- /dev/null +++ b/Src/Plugins/Library/ml_disc/main.h @@ -0,0 +1,222 @@ +#ifndef NULLSOFT_MAINH +#define NULLSOFT_MAINH + +#include "..\..\General\gen_ml/ml.h" +#include "..\..\General\gen_ml/ml_ipc_0313.h" + +#include "./config.h" +#include "./drivemngr.h" +#include "./drive.h" +#include "./medium.h" +#include "api__ml_disc.h" +#include "..\..\General\gen_ml/menu.h" + +#include "./copyfiles.h" +#include "./copyinternal.h" + +#include <shlobj.h> +#include <windows.h> +#include <commctrl.h> + +#ifndef LONGX86 +#ifdef _WIN64 + #define LONGX86 LONG_PTR +#else /*_WIN64*/ + #define LONGX86 LONG +#endif /*_WIN64*/ +#endif // LONGX86 + +#define OLD_AAC_CODEC mmioFOURCC('A','A','C',' ') + +#define BN_EX_GETTEXT 0x0FFF + +#define WM_EXTRACTDISC (WM_APP + 0x010) +#define WM_SHOWFILEINFO (WM_APP + 0x11) // (wParam)(UINT)WISF_, (lParam)(LPCWSTR)file(track)name (can be NULL to reset) +#define WM_QUERYFILEINFO (WM_APP + 0x12) +#define WM_TAGUPDATED (WM_APP + 0x13) // wParam = 0, lParam = (LPCWSTR)pszFileName + +#define VCM_CREATECOMMANDBAR (WM_APP + 0x20) +#define VCM_DESTROYCOMMANDBAR (WM_APP + 0x21) +#define VCM_GETCOMMANDBAR (WM_APP + 0x22) +#define VCM_GETMININFOENABLED (WM_APP + 0x23) +#define VCM_GETMININFOVISIBLE (WM_APP + 0x24) + + +typedef struct __CMDBARCREATESTRUCT +{ + HWND hwndOwner; + UINT resourceId; + DLGPROC fnDialogProc; + ULONG_PTR uData; +} CMDBARCREATESTRUCT; + +#define MSGRESULT(__hwnd, __result) { SetWindowLongPtrW((__hwnd), DWLP_MSGRESULT, ((LONGX86)(LONG_PTR)(__result))); return TRUE; } + +#define ViewContainer_CreateCmdBar(/*HWND*/ __hwndViewContainer, /*HWND*/ __hwndOwner, /*INT_PTR*/ __resourceId, /*DLGPROC*/ __fnDialogProc, /*ULONG_PTR*/ __uData)\ + {CMDBARCREATESTRUCT cs; cs.hwndOwner = (__hwndOwner); cs.resourceId = (__resourceId); cs.fnDialogProc = (__fnDialogProc); cs.uData = (__uData);\ + ((HWND)SNDMSG((__hwndViewContainer), VCM_CREATECOMMANDBAR, 0, (LPARAM)(&cs)));} + +#define ViewContainer_DestroyCmdBar(/*HWND*/ __hwndViewContainer)\ + ((BOOL)SNDMSG((__hwndViewContainer), VCM_DESTROYCOMMANDBAR, 0, 0L)) + +#define ViewContainer_GetCmdBar(/*HWND*/ __hwndViewContainer)\ + ((HWND)SNDMSG((__hwndViewContainer), VCM_GETCOMMANDBAR, 0, 0L)) + +#define ViewContainer_GetMiniInfoEnabled(/*HWND*/ __hwndViewContainer)\ + ((HWND)SNDMSG((__hwndViewContainer), VCM_GETMININFOENABLED, 0, 0L)) + +#define ViewContainer_GetMiniInfoVisible(/*HWND*/ __hwndViewContainer)\ + ((HWND)SNDMSG((__hwndViewContainer), VCM_GETMININFOVISIBLE, 0, 0L)) + + +extern winampMediaLibraryPlugin plugin; +extern LARGE_INTEGER freq; + +void CleanupDirectoryString(LPTSTR pszDirectory); +LPWSTR GetExtensionString(LPWSTR pszBuffer, INT cchBufferMax, DWORD fourcc); +HRESULT FormatFileName(LPTSTR pszTextOut, INT cchTextMax, LPCTSTR pszFormat, + INT nTrackNo, LPCTSTR pszArtist, + LPCTSTR pszAlbum, LPCTSTR pszTitle, + LPCTSTR pszGenre, LPCTSTR pszYear, + LPCTSTR pszTrackArtist, + LPCTSTR pszFileName, LPCTSTR pszDisc); + + +bool RegisteredEncoder(DWORD fourcc); + +extern C_Config *g_config; +extern HMENU g_context_menus; +extern C_Config *g_view_metaconf; + +#define DSF_CANRECORD 0x00010000 + +#define DSF_PLAYING 0x00000001 +#define DSF_RIPPING 0x00000002 +#define DSF_BURNING 0x00000004 +#define DSF_GETTINGINFO 0x00000008 + +typedef struct _DRIVE +{ + CHAR cLetter; + CHAR cMode; + WCHAR szTitle[64]; + DWORD textSize; + BOOL textOrigWidth; + WORD itemWidth; + BYTE nBtnState; + BOOL bEjectVisible; + UINT_PTR timerId; +} DRIVE; + + +typedef BOOL (CALLBACK *NAVITEMENUMPROC)(HNAVITEM hItem, DRIVE *pDrive, LPARAM param); + +DRIVE *Plugin_GetDriveFromNavItem(HNAVITEM hItem); +HNAVITEM Plugin_GetNavItemFromLetter(CHAR cLetter); +BOOL Plugin_EnumerateNavItems(NAVITEMENUMPROC callback, LPARAM param); +void Plugin_RegisterListener(HWND hwnd, UINT uMsg, CHAR cLetter); // active view can register itself to be notified about drive/medium changes if cLetter = 0 you will be notifed for all drives +void Plugin_UnregisterListener(HWND hwnd); +void Plugin_ShowRippingPreferences(void); +BOOL Plugin_IsExtractScheduled(CHAR cLetter); + +int getFileInfo(const char *filename, const char *metadata, char *dest, int len); +int getFileInfoW(const wchar_t *filename, const wchar_t *metadata, wchar_t *dest, int len); + +#define HF_DOMODAL 0x0001 +#define HF_ALLOWRESIZE 0x0010 + +HWND MLDisc_ShowHelp(HWND hParent, LPCWSTR pszWindowTitle, LPCWSTR pszCaption, LPCWSTR pszText, UINT uFlags); // returns hwnd only if not HF_DOMODAL + + +#define QBF_SHOW_CHECKBOX 0x00000001L +#define QBF_SHOW_EXTRA_BUTTON 0x00000002L +#define QBF_TOPMOST 0x00000100L +#define QBF_SETFOREGROUND 0x00000200L +#define QBF_BEEP 0x00000400L +#define QBF_FLASH 0x00000800L +#define QBF_DEFAULT_OK 0x00000000L +#define QBF_DEFAULT_CANCEL 0x00001000L +#define QBF_DEFAULT_EXTRA1 0x00002000L + + +typedef struct _QUESTIONBOX +{ + HWND hParent; // [in] + LPCTSTR pszIcon; // [in] + UINT uBeepType; // [in] + LPCTSTR pszTitle; // [in] accepts MAKEINTRESOURCE() as parameters. + LPCTSTR pszMessage; // [in] accepts MAKEINTRESOURCE() as parameters. + UINT uFlags; // [in] + LPCTSTR pszBtnOkText; // [in] accepts MAKEINTRESOURCE() as parameters. + LPCTSTR pszBtnCancelText; // [in] accepts MAKEINTRESOURCE() as parameters. + LPCTSTR pszCheckboxText; // [in] accepts MAKEINTRESOURCE() as parameters. + LPCTSTR pszBtnExtraText; // [in] accepts MAKEINTRESOURCE() as parameters. + BOOL checkboxChecked; // [in][out] +} QUESTIONBOX; + +INT_PTR MLDisc_ShowQuestionBox(QUESTIONBOX *pQuestionBox); // returns pressed button id; + +// cdrip.cpp +BOOL CALLBACK CDRipPrefsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam); + +typedef struct +{ + char drive_letter; + + wchar_t *album; + wchar_t *artist; + wchar_t *genre; + wchar_t *year; + wchar_t *publisher; // record label + wchar_t *disc; // disc ##/## + wchar_t *comment; // notes from CDDB + wchar_t **composers; + wchar_t **conductors; + wchar_t **gracenoteFileIDs; + wchar_t **gracenoteExtData; + int total_length_bytes; + + int ntracks; // total number of tracks + wchar_t **tracks; // set these to NULL to not rip em + wchar_t **trackArtists; + + int *lengths; // lengths, in seconds + + wchar_t **filenames; // can be used internally to override output filenames + // (should always allocate, but leave NULL ptrs in the array) + wchar_t **tempFilenames; //where we are ripping to, we'll move at the end +} cdrip_params; + +void cdrip_extractFiles(cdrip_params *parms); + +int cdrip_isextracting(char drive); +void cdrip_stop_all_extracts(); + +//gracenote.cpp +void gracenoteInit(); +int gracenoteQueryFile(const char *filename); +void gracenoteCancelRequest(); +int gracenoteDoTimerStuff(); +void gracenoteSetValues(char *artist, char *album, char *title); +char *gracenoteGetTuid(); +int gracenoteIsWorking(); + +//view_ripburn.cpp +INT_PTR CALLBACK view_ripburnDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam); + +// view_cdrom.cpp +void saveCDToItemRecordList(CHAR cLetter, itemRecordList *obj, char *album); +int cdrom_contextMenu(HWND parent, CHAR cLetter, HNAVITEM hItem); +void cdburn_appendItemRecord(itemRecordList *obj, char driveletter); + +HWND CreateContainerWindow(HWND hwndParent, CHAR cLetter, BOOL bQueryInfo); +HWND CreateWaitWindow(HWND hwndParent, CHAR cLetter); +HWND CreateInfoWindow(HWND hwndParent, CHAR cLetter); +HWND CreateCDViewWindow(HWND hwndParent, DM_NOTIFY_PARAM *phdr); +HWND CreateCDBurnWindow(HWND hwndParent, CHAR cLetter); +HWND CreateCDRipWindow(HWND hwndParent, CHAR cLetter); +HWND CreateCdDataViewWindow(HWND hwndParent, CHAR cLetter); + +BOOL CALLBACK browseEnumProc(HWND hwnd, LPARAM lParam); + +#endif
\ No newline at end of file |