aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi2/Winamp5ArtworkManager.cpp
diff options
context:
space:
mode:
authorJean-Francois Mauguit <jfmauguit@mac.com>2024-09-24 09:03:25 -0400
committerGitHub <noreply@github.com>2024-09-24 09:03:25 -0400
commitbab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi2/Winamp5ArtworkManager.cpp
parent4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff)
parent20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff)
downloadwinamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/Wasabi2/Winamp5ArtworkManager.cpp')
-rw-r--r--Src/Wasabi2/Winamp5ArtworkManager.cpp48
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;
+}