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/Wasabi2/Winamp5ArtworkManager.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Wasabi2/Winamp5ArtworkManager.cpp')
-rw-r--r-- | Src/Wasabi2/Winamp5ArtworkManager.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Src/Wasabi2/Winamp5ArtworkManager.cpp b/Src/Wasabi2/Winamp5ArtworkManager.cpp new file mode 100644 index 00000000..d0738af7 --- /dev/null +++ b/Src/Wasabi2/Winamp5ArtworkManager.cpp @@ -0,0 +1,48 @@ +#include "Winamp5ArtworkManager.h" +#include "api__wasabi2.h" +#include "metadata/MetadataKeys.h" +#include "nswasabi/ReferenceCounted.h" + +int Winamp5ArtworkManager::Artwork_GetArtwork(nx_uri_t filename, unsigned int field, artwork_t *artwork, data_flags_t flags, nx_time_unix_64_t *filename_modified) +{ + if (!AGAVE_API_ALBUMART) + return NErr_FailedCreate; + + if (field != MetadataKeys::ALBUM) + return NErr_Unknown; + + + if (filename_modified) + { + struct __stat64 buffer; + if (_wstat64(filename->string, &buffer) == 0) + { + *filename_modified = buffer.st_atime; + } + else + { + *filename_modified = 0; + } + } + + wchar_t *mime_type; + void *bits; + size_t len; + int ret = AGAVE_API_ALBUMART->GetAlbumArtData(filename->string, L"cover", &bits, &len, &mime_type); + if (ret != 0) + return NErr_Empty; + + NXDataCreate(&artwork->data, bits, len); + WASABI_API_MEMMGR->sysFree(bits); + + if (mime_type) + { + ReferenceCountedNXString mime_type_nx; + NXStringCreateWithUTF16(&mime_type_nx, mime_type); + NXDataSetMIME(artwork->data, mime_type_nx); + WASABI_API_MEMMGR->sysFree(mime_type); + } + artwork->height = 0; + artwork->width = 0; + return NErr_Success; +} |