12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #ifndef NULLSOFT_AGAVE_SVC_ALBUMARTPROVIDER_H
- #define NULLSOFT_AGAVE_SVC_ALBUMARTPROVIDER_H
- #include "../../bfc/dispatch.h"
- #include "../../bfc/std_mkncc.h" // for MKnCC()
- enum
- {
- ALBUMARTPROVIDER_SUCCESS = 0,
- ALBUMARTPROVIDER_FAILURE = 1,
- ALBUMARTPROVIDER_READONLY = 2,
- ALBUMARTPROVIDER_TYPE_EMBEDDED = 0, // contained within another file (e.g. inside id3v2 tag)
- ALBUMARTPROVIDER_TYPE_DATABASE = 1, // cached in a database somewhere (e.g. ipod artwork DB)
- ALBUMARTPROVIDER_TYPE_FOLDER = 2, // sitting on a folder somewhere (e.g. folder.jpg)
- };
- class svc_albumArtProvider : public Dispatchable
- {
- protected:
- svc_albumArtProvider() {}
- ~svc_albumArtProvider() {}
- public:
-
- static FOURCC getServiceType() { return svc_albumArtProvider::SERVICETYPE; }
- bool IsMine(const wchar_t *filename);
- int ProviderType();
- // implementation note: use WASABI_API_MEMMGR to alloc bits and mimetype, so that the recipient can free through that
- int GetAlbumArtData(const wchar_t *filename, const wchar_t *type, void **bits, size_t *len, wchar_t **mimeType);
- int SetAlbumArtData(const wchar_t *filename, const wchar_t *type, void *bits, size_t len, const wchar_t *mimeType);
- int DeleteAlbumArt(const wchar_t *filename, const wchar_t *type);
- DISPATCH_CODES
- {
- SVC_ALBUMARTPROVIDER_PROVIDERTYPE = 0,
- SVC_ALBUMARTPROVIDER_GETALBUMARTDATA = 10,
- SVC_ALBUMARTPROVIDER_ISMINE = 20,
- SVC_ALBUMARTPROVIDER_SETALBUMARTDATA = 30,
- SVC_ALBUMARTPROVIDER_DELETEALBUMART = 40,
- };
- enum
- {
- SERVICETYPE = MK3CC('a','a','p')
- };
- };
- inline bool svc_albumArtProvider::IsMine(const wchar_t *filename)
- {
- return _call(SVC_ALBUMARTPROVIDER_ISMINE, false, filename);
- }
- inline int svc_albumArtProvider::ProviderType()
- {
- return _call(SVC_ALBUMARTPROVIDER_PROVIDERTYPE, (int)ALBUMARTPROVIDER_TYPE_EMBEDDED);
- }
- inline int svc_albumArtProvider::GetAlbumArtData(const wchar_t *filename, const wchar_t *type, void **bits, size_t *len, wchar_t **mimeType)
- {
- return _call(SVC_ALBUMARTPROVIDER_GETALBUMARTDATA, (int)ALBUMARTPROVIDER_FAILURE, filename, type, bits, len, mimeType);
- }
- inline int svc_albumArtProvider::SetAlbumArtData(const wchar_t *filename, const wchar_t *type, void *bits, size_t len, const wchar_t *mimeType)
- {
- return _call(SVC_ALBUMARTPROVIDER_SETALBUMARTDATA, (int)ALBUMARTPROVIDER_FAILURE, filename, type, bits, len, mimeType);
- }
- inline int svc_albumArtProvider::DeleteAlbumArt(const wchar_t *filename, const wchar_t *type)
- {
- return _call(SVC_ALBUMARTPROVIDER_DELETEALBUMART, (int)ALBUMARTPROVIDER_FAILURE, filename, type);
- }
- #endif
|