From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Wasabi2/Winamp5ArtworkManager.cpp | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Src/Wasabi2/Winamp5ArtworkManager.cpp (limited to 'Src/Wasabi2/Winamp5ArtworkManager.cpp') 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; +} -- cgit