123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #ifndef NULLSOFT_IFC_PLAYLIST_H
- #define NULLSOFT_IFC_PLAYLIST_H
- #include "bfc/dispatch.h"
- #include "bfc/platform/types.h"
- enum
- {
- PLAYLIST_SUCCESS = 0,
- PLAYLIST_UNIMPLEMENTED = 1,
- };
- class ifc_playlist : public Dispatchable
- {
- protected:
- ifc_playlist() {}
- ~ifc_playlist() {}
- public:
- DISPATCH_CODES
- {
- IFC_PLAYLIST_CLEAR = 10,
- //IFC_PLAYLIST_APPENDWITHINFO = 20,
- //IFC_PLAYLIST_APPEND = 30,
- IFC_PLAYLIST_GETNUMITEMS = 40,
- IFC_PLAYLIST_GETITEM = 50,
- IFC_PLAYLIST_GETITEMTITLE = 60,
- IFC_PLAYLIST_GETITEMLENGTHMILLISECONDS = 70,
- IFC_PLAYLIST_GETITEMEXTENDEDINFO = 80,
- IFC_PLAYLIST_REVERSE = 90,
- IFC_PLAYLIST_SWAP = 100,
- IFC_PLAYLIST_RANDOMIZE = 110,
- IFC_PLAYLIST_REMOVE = 120,
- IFC_PLAYLIST_SORTBYTITLE = 130,
- IFC_PLAYLIST_SORTBYFILENAME = 140,
- IFC_PLAYLIST_SORTBYDIRECTORY = 150,
- };
- void Clear();
- //void AppendWithInfo(const wchar_t *filename, const char *title, int lengthInMS);
- //void Append(const wchar_t *filename);
- size_t GetNumItems();
- size_t GetItem( size_t item, wchar_t *filename, size_t filenameCch );
- size_t GetItemTitle( size_t item, wchar_t *title, size_t titleCch );
- int GetItemLengthMilliseconds( size_t item ); // TODO: maybe microsecond for better resolution?
- size_t GetItemExtendedInfo( size_t item, const wchar_t *metadata, wchar_t *info, size_t infoCch );
- int Reverse(); // optional, return 1 to indicate that you did the reversal (otherwise, caller must perform manually)
- int Swap( size_t item1, size_t item2 );
- int Randomize( int ( *generator )( ) ); // optional, return 1 to indicate that you did the randomization (otherwise, caller must perform manually)
- void Remove( size_t item );
- int SortByTitle(); // optional, return 1 to indicate that you did the sort (otherwise, caller must perform manually)
- int SortByFilename(); // optional, return 1 to indicate that you did the sort (otherwise, caller must perform manually)
- int SortByDirectory();
- };
- inline void ifc_playlist::Clear()
- {
- _voidcall( IFC_PLAYLIST_CLEAR );
- }
- /*
- inline void ifc_playlist::AppendWithInfo(const wchar_t *filename, const char *title, int lengthInMS)
- {
- _voidcall(IFC_PLAYLIST_APPENDWITHINFO, filename, title, lengthInMS);
- }
- */
- /*
- inline void ifc_playlist::Append(const wchar_t *filename)
- {
- _voidcall(IFC_PLAYLIST_APPEND, filename);
- }*/
- inline size_t ifc_playlist::GetNumItems()
- {
- return _call( IFC_PLAYLIST_GETNUMITEMS, (size_t)0 );
- }
- inline size_t ifc_playlist::GetItem( size_t item, wchar_t *filename, size_t filenameCch )
- {
- return _call( IFC_PLAYLIST_GETITEM, (size_t)0, item, filename, filenameCch );
- }
- inline size_t ifc_playlist::GetItemTitle( size_t item, wchar_t *title, size_t titleCch )
- {
- return _call( IFC_PLAYLIST_GETITEMTITLE, (size_t)0, item, title, titleCch );
- }
- inline int ifc_playlist::GetItemLengthMilliseconds( size_t item )
- {
- return _call( IFC_PLAYLIST_GETITEMLENGTHMILLISECONDS, (int)-1, item );
- }
- inline size_t ifc_playlist::GetItemExtendedInfo( size_t item, const wchar_t *metadata, wchar_t *info, size_t infoCch )
- {
- return _call( IFC_PLAYLIST_GETITEMEXTENDEDINFO, (size_t)0, item, metadata, info, infoCch );
- }
- inline int ifc_playlist::Reverse()
- {
- return _call( IFC_PLAYLIST_REVERSE, (int)PLAYLIST_UNIMPLEMENTED );
- }
- inline int ifc_playlist::Swap( size_t item1, size_t item2 )
- {
- return _call( IFC_PLAYLIST_SWAP, (int)PLAYLIST_UNIMPLEMENTED, item1, item2 );
- }
- inline int ifc_playlist::Randomize( int ( *generator )( ) )
- {
- return _call( IFC_PLAYLIST_RANDOMIZE, (int)PLAYLIST_UNIMPLEMENTED, generator );
- }
- inline void ifc_playlist::Remove( size_t item )
- {
- _voidcall( IFC_PLAYLIST_REMOVE, item );
- }
- inline int ifc_playlist::SortByTitle()
- {
- return _call( IFC_PLAYLIST_SORTBYTITLE, (int)0 );
- }
- inline int ifc_playlist::SortByFilename()
- {
- return _call( IFC_PLAYLIST_SORTBYFILENAME, (int)0 );
- }
- inline int ifc_playlist::SortByDirectory()
- {
- return _call( IFC_PLAYLIST_SORTBYDIRECTORY, (int)0 );
- }
- #endif
|