diff options
author | Jean-Francois Mauguit <jfmauguit@mac.com> | 2024-09-24 09:03:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 09:03:25 -0400 |
commit | bab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Library/ml_disc/medium.cpp | |
parent | 4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff) | |
parent | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff) | |
download | winamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz |
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/Plugins/Library/ml_disc/medium.cpp')
-rw-r--r-- | Src/Plugins/Library/ml_disc/medium.cpp | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/Src/Plugins/Library/ml_disc/medium.cpp b/Src/Plugins/Library/ml_disc/medium.cpp new file mode 100644 index 00000000..38bfd259 --- /dev/null +++ b/Src/Plugins/Library/ml_disc/medium.cpp @@ -0,0 +1,136 @@ +#include "./main.h" +#include "./medium.h" +#include "./drive.h" +#include "./resource.h" +//#include <primosdk.h> + +static int pType[] = +{ + IDS_STAMPED_DISC_OR_RECORDABLE_THAT_HAS_BEEN_RECORDED, + IDS_REWRITEABLE_DISC_HAS_DATA_BUT_KEPT_OPEN_FOR_APPEND, + IDS_REWRITEABLE_DISC_NOT_POSSIBLE_TO_APPEND_DATA, + IDS_BLANK_REWRITEABLE_DISC, +}; + +static int pFormat[] = +{ + IDS_MEDIA_BLANK_DISC, + IDS_MEDIA_DATA_MODE_1_DAO, + IDS_MEDIA_KODAK_PHOTO_CD, + IDS_MEDIA_DATA_MULTISESSION_MODE_1_CLOSED, + IDS_MEDIA_DATA_MULTISESSION_MODE_2_CLOSED, + IDS_MEDIA_DATA_MODE_2_DAO, + IDS_MEDIA_CDRFS, + IDS_MEDIA_PACKET_WRITING, + IDS_MEDIA_DATA_MULTISESSION_MODE_1_OPEN, + IDS_MEDIA_DATA_MULTISESSION_MODE_2_OPEN, + IDS_MEDIA_AUDIO_DAO_SAO_TAO, + IDS_MEDIA_AUDIO_REWRITEABLE_DISC_WITH_SESSION_NOT_CLOSED, + IDS_MEDIA_FIRST_TYPE_OF_ENHANCED_CD_ABORTED, + IDS_MEDIA_CD_EXTRA, + IDS_MEDIA_AUDIO_TAO_WITH_SESSION_NOT_WRITTEN, + IDS_MEDIA_FIRST_TRACK_DATA_OTHERS_AUDIO, + IDS_MEDIA_MIXED_MODE_MADE_TAO, + IDS_MEDIA_KODAK_PORTFOLIO, + IDS_MEDIA_VIDEO_CD, + IDS_MEDIA_CDi, + IDS_MEDIA_PLAYSTATION_SONY_GAMES, + IDS_MEDIA_OBSOLETE, + IDS_MEDIA_OBSOLETE_FOR_RESTRICTED_OVERWRITE_DVD, + IDS_MEDIA_DVDROM_OR_CLOSED_RECORDABLE, + IDS_MEDIA_INCREMENTAL_DVD_WITH_APPENDABLE_ZONE, + IDS_MEDIA_APPENDABLE_DVD_OF_ANY_TYPE, + IDS_MEDIA_DVDRAM_CARTRIDGE, + IDS_MEDIA_CD_OTHER_TYPE, +}; + +static wchar_t buffer[256]; + +LPCWSTR Medium_GetTypeString(DWORD nType) +{ + int index = -1; +#if 0 + switch(nType) + { + case PRIMOSDK_SILVER: index = 0; break; + case PRIMOSDK_COMPLIANTGOLD: index = 1; break; + case PRIMOSDK_OTHERGOLD: index = 2; break; + case PRIMOSDK_BLANK: index = 3; break; + } +#endif + return WASABI_API_LNGSTRINGW_BUF((-1 != index) ? pType[index] : IDS_UNKNOWN, buffer, + sizeof(buffer)/sizeof(wchar_t)); +} + +LPCWSTR Medium_GetPhysicalTypeString(DWORD nType) +{ + return Drive_GetTypeString(nType); +} + +LPCWSTR Medium_GetFormatString(DWORD nFormat) +{ + int index = -1; +#if 0 + switch(nFormat) + { + case PRIMOSDK_B1: index = 0; break; + case PRIMOSDK_D1: index = 1; break; + case PRIMOSDK_D2: index = 2; break; + case PRIMOSDK_D3: index = 3; break; + case PRIMOSDK_D4: index = 4; break; + case PRIMOSDK_D5: index = 5; break; + case PRIMOSDK_D6: index = 6; break; + case PRIMOSDK_D7: index = 7; break; + case PRIMOSDK_D8: index = 8; break; + case PRIMOSDK_D9: index = 9; break; + case PRIMOSDK_A1: index = 10; break; + case PRIMOSDK_A2: index = 11; break; + case PRIMOSDK_A3: index = 12; break; + case PRIMOSDK_A4: index = 13; break; + case PRIMOSDK_A5: index = 14; break; + case PRIMOSDK_M1: index = 15; break; + case PRIMOSDK_M2: index = 16; break; + case PRIMOSDK_M3: index = 17; break; + case PRIMOSDK_M4: index = 18; break; + case PRIMOSDK_M5: index = 19; break; + case PRIMOSDK_M6: index = 20; break; + case PRIMOSDK_F1: index = 21; break; + case PRIMOSDK_F2: index = 22; break; + case PRIMOSDK_F3: index = 23; break; + case PRIMOSDK_F4: index = 24; break; + case PRIMOSDK_F8: index = 25; break; + case PRIMOSDK_FA: index = 26; break; + case PRIMOSDK_GENERICCD: index = 27; break; + } +#endif + return WASABI_API_LNGSTRINGW_BUF((-1 != index) ? pFormat[index] : IDS_UNKNOWN, buffer, + sizeof(buffer)/sizeof(wchar_t)); +} + +BOOL Medium_IsRecordableType(DWORD nType) +{ + #if 0 + return (PRIMOSDK_COMPLIANTGOLD == nType || PRIMOSDK_BLANK == nType); +#else + return FALSE; +#endif +} + +BOOL Medium_IsRecordable(CHAR cLetter) +{ + wchar_t info[128] = {0}; + wchar_t name[] = L"cda://X.cda"; + DWORD result; + BOOL reloaded = FALSE; + + name[6] = cLetter; + + for(;;) + { + result = getFileInfoW(name, L"cdtype", info, sizeof(info)/sizeof(wchar_t)); + if (result || reloaded || !getFileInfoW(name, L"reloadsonic", NULL, 0)) break; + reloaded = TRUE; + } + + return (result) ? (!lstrcmpW(info, L"CDR") || !lstrcmpW(info, L"CDRW")) : FALSE; +}
\ No newline at end of file |