aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi2/Winamp5ArtworkManager.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi2/Winamp5ArtworkManager.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
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;
+}