CPI_Playlist.h
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:5k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.  * CoolPlayer - Blazing fast audio player.
  3.  * Copyright (C) 2000-2001 Niek Albers
  4.  *
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or
  8.  * (at your option) any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  */
  19. ////////////////////////////////////////////////////////////////////////////////
  20. ////////////////////////////////////////////////////////////////////////////////
  21. //
  22. // Cooler Playlist
  23. //
  24. ////////////////////////////////////////////////////////////////////////////////
  25. ////////////////////////////////////////////////////////////////////////////////
  26. //
  27. typedef enum _CPe_PlayMode
  28. {
  29.     pmCurrentItem,
  30.     pmNextItem,
  31.     pmPrevItem
  32. } CPe_PlayMode;
  33. //
  34. //
  35. typedef enum _CPe_PlayItemSortElement
  36. {
  37.     piseTrackStackPos,
  38.     piseArtist,
  39.     piseAlbum,
  40.     piseTrackName,
  41.     piseYear,
  42.     piseComment,
  43.     piseTrackNum,
  44.     piseGenre,
  45.     pisePath,
  46.     piseFilename,
  47.     piseLength
  48. } CPe_PlayItemSortElement;
  49. //
  50. //
  51. typedef enum _CPe_ItemStackState
  52. {
  53.     issUnstacked,
  54.     issPlayed,
  55.     issStacked_Top,
  56.     issStacked
  57. } CPe_ItemStackState;
  58. //
  59. //
  60. // Playlist control
  61. CP_HPLAYLIST CPL_CreatePlaylist();
  62. void CPL_DestroyPlaylist(CP_HPLAYLIST hPlaylist);
  63. //
  64. void CPL_Empty(CP_HPLAYLIST hPlaylist);
  65. void CPL_AddDroppedFiles(CP_HPLAYLIST hPlaylist, HDROP hDrop);
  66. void CPL_AddSingleFile(CP_HPLAYLIST hPlaylist, const char* pcPath, const char* pcTitle); // Will not check for a playlist
  67. void CPL_HandleAsyncNotify(CP_HPLAYLIST hPlaylist, WPARAM wParam, LPARAM lParam);
  68. void CPL_AddFile(CP_HPLAYLIST hPlaylist, const char* pcPath); // Will add a file or decode a playlist file
  69. void CPL_AddDirectory_Recurse(CP_HPLAYLIST hPlaylist, const char *pDirectory);
  70. void CPL_RemoveItem(CP_HPLAYLIST hPlaylist, CP_HPLAYLISTITEM hItem);
  71. void CPL_SetActiveItem(CP_HPLAYLIST hPlaylist, CP_HPLAYLISTITEM hItem);
  72. CP_HPLAYLISTITEM CPL_GetActiveItem(CP_HPLAYLIST hPlaylist);
  73. void CPL_PlayItem(CP_HPLAYLIST hPlaylist, const BOOL bStopFirst, const CPe_PlayMode enPlayMode);
  74. void CPL_RemoveDuplicates(CP_HPLAYLIST hPlaylist);
  75. void CPL_ExportPlaylist(CP_HPLAYLIST hPlaylist, const char* pcOutputName);
  76. void CPL_SortList(CP_HPLAYLIST hPlaylist, const CPe_PlayItemSortElement enElement, const BOOL bDesc);
  77. void CPL_InsertItemBefore(CP_HPLAYLIST hPlaylist, CP_HPLAYLISTITEM hItem_Anchor, CP_HPLAYLISTITEM hItem_ToMove);
  78. void CPL_InsertItemAfter(CP_HPLAYLIST hPlaylist, CP_HPLAYLISTITEM hItem_Anchor, CP_HPLAYLISTITEM hItem_ToMove);
  79. // Track stack
  80. void CPL_Stack_Append(CP_HPLAYLIST hPlaylist, CP_HPLAYLISTITEM hItem);
  81. void CPL_Stack_Remove(CP_HPLAYLIST hPlaylist, CP_HPLAYLISTITEM hItem);
  82. void CPL_Stack_SetCursor(CP_HPLAYLIST hPlaylist, CP_HPLAYLISTITEM hItem);
  83. void CPL_Stack_Clear(CP_HPLAYLIST hPlaylist);
  84. void CPL_Stack_RestackAll(CP_HPLAYLIST hPlaylist);
  85. void CPL_Stack_Renumber(CP_HPLAYLIST hPlaylist);
  86. CPe_ItemStackState CPL_Stack_GetItemState(CP_HPLAYLIST hPlaylist, CP_HPLAYLISTITEM hItem);
  87. void CPL_Stack_Shuffle(CP_HPLAYLIST hPlaylist, const BOOL bForceCurrentToHead);
  88. void CPL_Stack_ClipFromCurrent(CP_HPLAYLIST hPlaylist);
  89. void CPL_Stack_ClipFromItem(CP_HPLAYLIST hPlaylist, CP_HPLAYLISTITEM hItem);
  90. void CPL_Stack_PlayNext(CP_HPLAYLIST hPlaylist, CP_HPLAYLISTITEM hItem);
  91. void CPL_SyncLoadNextFile(CP_HPLAYLIST hPlaylist);
  92. void CPL_SetAutoActivateInitial(CP_HPLAYLIST hPlaylist, const BOOL bAutoActivateInitial);
  93. //
  94. //
  95. CP_HPLAYLISTITEM CPL_GetFirstItem(CP_HPLAYLIST hPlaylist);
  96. CP_HPLAYLISTITEM CPL_GetLastItem(CP_HPLAYLIST hPlaylist);
  97. CP_HPLAYLISTITEM CPL_GetActiveItem(CP_HPLAYLIST hPlaylist);
  98. CP_HPLAYLISTITEM CPL_FindPlaylistItem(CP_HPLAYLIST hPlaylist, const char* pcPath);
  99. //
  100. //
  101. // Callbacks - these functions are called by the playlist to allow the interface
  102. // to reflect what the current contents of the playlist are
  103. void CPL_cb_OnItemUpdated(const CP_HPLAYLISTITEM hItem);
  104. void CPL_cb_OnPlaylistAppend(const CP_HPLAYLISTITEM hItem);
  105. void CPL_cb_OnPlaylistItemDelete(const CP_HPLAYLISTITEM hItem);
  106. void CPL_cb_OnPlaylistEmpty();
  107. void CPL_cb_OnPlaylistActivationChange(const CP_HPLAYLISTITEM hItem, const BOOL bNewActiveState);
  108. void CPL_cb_OnPlaylistActivationEmpty();
  109. void CPL_cb_SetWindowToReflectList();
  110. void CPL_cb_LockWindowUpdates(const BOOL bLock);
  111. void CPL_cb_TrackStackChanged();
  112. ////////////////////////////////////////////////////////////////////////////////
  113. ////////////////////////////////////////////////////////////////////////////////
  114. // Worker thread messages
  115. #define CPPLWT_TERMINATE (WM_APP+0x001)
  116. #define CPPLWT_READTAG (WM_APP+0x002)
  117. #define CPPLWT_SYNCSHUFFLE (WM_APP+0x003)
  118. #define CPPLWT_SETACTIVE (WM_APP+0x004)
  119. //
  120. // Notifies - ensure that these do not clash with those in CPI_Player_Messages.h
  121. #define CPPLNM_TAGREAD (WM_APP+0x201)
  122. #define CPPLNM_SYNCSHUFFLE (WM_APP+0x202)
  123. #define CPPLNM_SYNCSETACTIVE (WM_APP+0x203)
  124. //
  125. ////////////////////////////////////////////////////////////////////////////////