rainmeter-studio/Plugins/PluginNowPlaying/SDKs/AIMP/aimp2_sdk.h

726 lines
21 KiB
C++

// Translated by Vitaliy Diatlov
// AIMP2: SDK (02.07.2009), v2.60
#ifndef AIMP2_SDK_H
#define AIMP2_SDK_H
#include <windows.h>
#include <unknwn.h>
const char AIMP2_RemoteClass[] = "AIMP2_RemoteInfo";
const int AIMP2_RemoteFileSize = 2048;
const int WM_AIMP_COMMAND = WM_USER + 0x75; // WParam = One of Command, LPARAM - Parameter
const int WM_AIMP_STATUS_GET = 1;
const int WM_AIMP_STATUS_SET = 2;//HiWord of LParam - Command, LoWord of LParam - Parameter
const int WM_AIMP_CALLFUNC = 3;// LPARAM - Func ID (see below Func ID for Addons)
const int WM_AIMP_GET_VERSION = 4;
const int WM_AIMP_STATUS_CHANGE = 5;
const int WM_LANG = WM_USER + 101;
// CallBack types
const int AIMP_STATUS_CHANGE = 1;
const int AIMP_PLAY_FILE = 2;
const int AIMP_INFO_UPDATE = 5; // Update Info for current track
const int AIMP_PLAYER_STATE = 11; // Play/Pause/Stop
const int AIMP_EFFECT_CHANGED = 12; // Balance, Speed, Tempo, Pitch, Flanger and etc.
const int AIMP_EQ_CHANGED = 13; // Sliders changed
const int AIMP_TRACK_POS_CHANGED = 14;
// AIMP_Status_Set / AIMP_Status_Get
const int AIMP_STS_VOLUME = 1;
const int AIMP_STS_BALANCE = 2;
const int AIMP_STS_SPEED = 3;
const int AIMP_STS_Player = 4;
const int AIMP_STS_MUTE = 5;
const int AIMP_STS_REVERB = 6;
const int AIMP_STS_ECHO = 7;
const int AIMP_STS_CHORUS = 8;
const int AIMP_STS_Flanger = 9;
const int AIMP_STS_EQ_STS = 10;
const int AIMP_STS_EQ_SLDR01 = 11;
const int AIMP_STS_EQ_SLDR02 = 12;
const int AIMP_STS_EQ_SLDR03 = 13;
const int AIMP_STS_EQ_SLDR04 = 14;
const int AIMP_STS_EQ_SLDR05 = 15;
const int AIMP_STS_EQ_SLDR06 = 16;
const int AIMP_STS_EQ_SLDR07 = 17;
const int AIMP_STS_EQ_SLDR08 = 18;
const int AIMP_STS_EQ_SLDR09 = 19;
const int AIMP_STS_EQ_SLDR10 = 20;
const int AIMP_STS_EQ_SLDR11 = 21;
const int AIMP_STS_EQ_SLDR12 = 22;
const int AIMP_STS_EQ_SLDR13 = 23;
const int AIMP_STS_EQ_SLDR14 = 24;
const int AIMP_STS_EQ_SLDR15 = 25;
const int AIMP_STS_EQ_SLDR16 = 26;
const int AIMP_STS_EQ_SLDR17 = 27;
const int AIMP_STS_EQ_SLDR18 = 28;
const int AIMP_STS_REPEAT = 29;
const int AIMP_STS_ON_STOP = 30;
const int AIMP_STS_POS = 31;
const int AIMP_STS_LENGTH = 32;
const int AIMP_STS_REPEATPLS = 33;
const int AIMP_STS_REP_PLS_1 = 34;
const int AIMP_STS_KBPS = 35;
const int AIMP_STS_KHZ = 36;
const int AIMP_STS_MODE = 37;
const int AIMP_STS_RADIO = 38;
const int AIMP_STS_STREAM_TYPE = 39; // Music / CDA / Radio
const int AIMP_STS_TIMER = 40; // Reverse / Normal
const int AIMP_STS_SHUFFLE = 41;
const int AIMP_STS_MAIN_HWND = 42;
const int AIMP_STS_TC_HWND = 43;
const int AIMP_STS_APP_HWND = 44;
const int AIMP_STS_PL_HWND = 45;
const int AIMP_STS_EQ_HWND = 46;
const int AIMP_STS_TRAY = 47;
// Support Exts Flags
const int AIMP_PLS_EXTS = 1;
const int AIMP_AUDIO_EXTS = 2;
// Menu IDs
const int AIMP_MAIN_MENU_OPN = 0;
const int AIMP_MAIN_MENU_UTILS = 1;
const int AIMP_MAIN_MENU_FNC = 2;
const int AIMP_MAIN_MENU_CFG = 3;
const int AIMP_UTILS_MENU = 4;
const int AIMP_PLS_MENU_ADD = 5;
const int AIMP_PLS_MENU_JUMP = 6;
const int AIMP_PLS_MENU_FNC = 7;
const int AIMP_PLS_MENU_SEND = 8;
const int AIMP_PLS_MENU_DEL = 9;
const int AIMP_ADD_MENU = 10;
const int AIMP_DEL_MENU = 11;
const int AIMP_FND_MENU = 12;
const int AIMP_SRT_MENU = 13;
const int AIMP_MSC_MENU = 14;
const int AIMP_PLS_MENU = 15;
const int AIMP_TRAY_UTILS = 16;
const int AIMP_TRAY = 17;
const int AIMP_EQ_LIB = 18;
// use AIMP_UTILS_MENU overthis:
// + AIMP_MAIN_MENU_UTILS = 1;
// + AIMP_TRAY_UTILS = 16;
// AIMP_CallFunction
const int AIMP_OPEN_FILES = 0;
const int AIMP_OPEN_DIR = 1;
const int AIMP_ABOUT = 2;
const int AIMP_SLEEP_TIMER = 3;
const int AIMP_UTILS_AC = 4;
const int AIMP_UTILS_SR = 5;
const int AIMP_UTILS_TE = 6;
const int AIMP_UTILS_CDB = 7;
const int AIMP_OPTIONS = 8;
const int AIMP_PLUGINS = 9;
const int AIMP_QUIT = 10;
const int AIMP_NEXT_VIS = 11;
const int AIMP_PREV_VIS = 12;
const int AIMP_EQ_ANALOG = 13;
const int AIMP_TO_TRAY = 14;
const int AIMP_PLAY = 15;
const int AIMP_PAUSE = 16;
const int AIMP_STOP = 17;
const int AIMP_NEXT = 18;
const int AIMP_PREV = 19;
const int AIMP_ADD_FILES = 20;
const int AIMP_ADD_DIR = 21;
const int AIMP_ADD_PLS = 22;
const int AIMP_ADD_URL = 23;
const int AIMP_DEL_FILES = 24;
const int AIMP_DEL_BAD = 25;
const int AIMP_DEL_FROMHDD = 26;
const int AIMP_DEL_OFF = 27;
const int AIMP_DEL_OFF_HDD = 28;
const int AIMP_RESCAN_PLS = 29;
const int AIMP_SHOW_CURFILE = 30;
const int AIMP_SORT_INVERT = 31;
const int AIMP_SORT_RANDOM = 32;
const int AIMP_SORT_TITLE = 33;
const int AIMP_SORT_ARTIST = 34;
const int AIMP_SORT_FOLDER = 35;
const int AIMP_SORT_LENGTH = 36;
const int AIMP_SORT_RATING = 37;
const int AIMP_SEARCH = 38;
const int AIMP_OPEN_PLS = 39;
const int AIMP_SAVE_PLS = 40;
const int AIMP_PLAY_LAST = 41;
const int AIMP_OFF_SELECTED = 42;
const int AIMP_ON_SELECTED = 43;
const int AIMP_ADD2BOOKMARK = 44;
const int AIMP_EDITBOOKMARK = 45;
// For AIMP_GetPath
const int AIMP_CFG_DATA = 0;
const int AIMP_CFG_PLS = 1;
const int AIMP_CFG_LNG = 2;
const int AIMP_CFG_SKINS = 3;
const int AIMP_CFG_PLUGINS = 4;
const int AIMP_CFG_ICONS = 5;
const int AIMP_CFG_ML = 6;
// For AIMP_QueryObject
const int IAIMP2PlayerID = 0x0001;
const int IAIMP2PlaylistManagerID = 0x0003;
const int IAIMP2ExtendedID = 0x0004;
const int IAIMP2CoverArtManagerID = 0x0005;
const int IAIMP2PlaylistManager2ID = 0x0006;
const int IAIMPConfigFileID = 0x0010;
const int IAIMPLanguageFileID = 0x0011;
// For AIMP_ObjectClass
const int AIMP_EXT_LC_MESSAGE = 100;
const int AIMP_EXT_ML_MESSAGE = 101;
// Option Frame Position Flags
const int AIMP_FRAME_POS_PLAY = 1;
const int AIMP_FRAME_POS_PLAYLIST = 2;
const int AIMP_FRAME_POS_PLAYER = 3;
const int AIMP_FRAME_POS_TEMPLATE = 4;
const int AIMP_FRAME_POS_SYSTEM = 5;
const int AIMP_FRAME_POS_SKINS = 6;
const int AIMP_FRAME_POS_LANGS = 7;
// AIMP_PLS_SORT_TYPE_XXX
const int AIMP_PLS_SORT_TYPE_TITLE = 1;
const int AIMP_PLS_SORT_TYPE_FILENAME = 2;
const int AIMP_PLS_SORT_TYPE_DURATION = 3;
const int AIMP_PLS_SORT_TYPE_ARTIST = 4;
const int AIMP_PLS_SORT_TYPE_INVERSE = 5;
const int AIMP_PLS_SORT_TYPE_RANDOMIZE = 6;
#pragma pack(push, 1)
struct AIMP2FileInfo
{
DWORD cbSizeOf;
//
BOOL nActive;
DWORD nBitRate;
DWORD nChannels;
DWORD nDuration;
INT64 nFileSize;
DWORD nRating;
DWORD nSampleRate;
DWORD nTrackID;
//
DWORD nAlbumLen;
DWORD nArtistLen;
DWORD nDateLen;
DWORD nFileNameLen;
DWORD nGenreLen;
DWORD nTitleLen;
//
PWCHAR sAlbum;
PWCHAR sArtist;
PWCHAR sDate;
PWCHAR sFileName;
PWCHAR sGenre;
PWCHAR sTitle;
};
#pragma pack(pop)
typedef boolean (WINAPI *AIMPPlaylistDeleteProc)(AIMP2FileInfo AFileInfo, DWORD AUserData);
typedef int (WINAPI *AIMPPlaylistSortProc)(AIMP2FileInfo AFileInfo1, AIMP2FileInfo AFileInfo2, DWORD AUserData);
typedef void (WINAPI *AIMPMenuProc)(DWORD User, void *Handle);
typedef void (WINAPI *AIMPStatusChange)(DWORD User, DWORD CallBackType);
typedef void (WINAPI *CallBackFunc)(DWORD User, DWORD dwCBType);
#pragma pack(push, 1)
struct PLSInfo
{
PCHAR PLSName;
DWORD FileCount;
DWORD PLSDuration;
INT64 PLSSize;
int PlaylistID;
};
#pragma pack(pop)
#pragma pack(push, 1)
struct AIMPMenuInfo
{
boolean Checkbox;
boolean RadioItem;
boolean Checked;
boolean Enabled;
int ProcPtr; // TAIMPMenuProc;
HBITMAP Bitmap; // 0 - no bmp
PWCHAR Caption;
DWORD User;
};
#pragma pack(pop)
class IPLSStrings
: public IUnknown
{
public:
virtual boolean WINAPI AddFile(
PWCHAR FileName,
AIMP2FileInfo *FileInfo
);
virtual boolean WINAPI DelFile(
int ID
);
virtual PWCHAR WINAPI GetFileName(
int ID
);
virtual boolean WINAPI GetFileInfo(
int ID,
AIMP2FileInfo *FileInfo
);
virtual DWORD WINAPI GetFileObj(
int ID
);
virtual int WINAPI GetCount();
};
class IAIMP2Controller
:public IUnknown
{
public:
virtual boolean WINAPI IsUnicodeVersion();
virtual boolean WINAPI AIMP_CallBack_Set(
DWORD dwCBType,
CallBackFunc CallBackFuncPtr,
DWORD User
);
virtual boolean WINAPI AIMP_CallBack_Remove(
DWORD dwCBType,
int ProcPtr
);
// Status
virtual DWORD WINAPI AIMP_Status_Get(
DWORD StatusType
);
virtual boolean WINAPI AIMP_Status_Set(
DWORD StatusType,
DWORD Value
);
// Playlist
virtual boolean WINAPI AIMP_PLS_Clear(
int ID
);
virtual boolean WINAPI AIMP_PLS_Delete(
int ID
);
virtual boolean WINAPI AIMP_PLS_New(
PWCHAR Name
);
virtual boolean WINAPI AIMP_PLS_Info(
int Index,
PLSInfo *info
);
virtual short WINAPI AIMP_PLS_Count();
virtual boolean WINAPI AIMP_PLS_GetFiles(
int ID,
IPLSStrings **Strings
);
virtual boolean WINAPI AIMP_PLS_GetSelFiles(
int ID,
IPLSStrings **Strings
);
virtual boolean WINAPI AIMP_PLS_AddFiles(
int ID,
IPLSStrings *Strings
);
virtual boolean WINAPI AIMP_PLS_SetPLS(
int ID
);
// System
virtual boolean WINAPI AIMP_NewStrings(
IPLSStrings **Strings
);
virtual boolean WINAPI AIMP_GetCurrentTrack(
AIMP2FileInfo *AInfo
);
virtual boolean WINAPI AIMP_QueryInfo(
PWCHAR Filename,
AIMP2FileInfo *AInfo
);
virtual DWORD WINAPI AIMP_GetSystemVersion();
virtual boolean WINAPI AIMP_CallFunction(
DWORD FuncID
);
virtual int WINAPI AIMP_GetLanguage(
PWCHAR Str,
int ACount
);
virtual int WINAPI AIMP_GetCfgPath(
PWCHAR Str,
int ACount
);
virtual int WINAPI AIMP_GetSupportExts(
DWORD Flags,
PWCHAR Str,
int BufSize
);
// Menu
virtual DWORD WINAPI AIMP_GetSupportExts(
DWORD Parent,
AIMPMenuInfo *MenuInfo
);
virtual DWORD WINAPI AIMP_Menu_Create(
DWORD MenuID,
AIMPMenuInfo *MenuInfo
);
virtual boolean WINAPI AIMP_Menu_Update(
int Handle,
AIMPMenuInfo *MenuInfo
);
virtual boolean WINAPI AIMP_Menu_Remove(
int Handle
);
// extention
virtual boolean WINAPI AIMP_QueryObject(
DWORD ObjectID,
void *Obj
);
};
class IAIMPAddonHeader
:public IUnknown
{
public:
virtual BOOL WINAPI GetHasSettingsDialog() = 0;
virtual PWCHAR WINAPI GetPluginAuthor() = 0;
virtual PWCHAR WINAPI GetPluginName() = 0;
virtual void WINAPI Finalize() = 0;
virtual void WINAPI Initialize(IAIMP2Controller *AController) = 0;
virtual void WINAPI ShowSettingsDialog(HWND AParentWindow) = 0;
};
typedef IAIMPAddonHeader *(WINAPI *AddonProc)();
typedef BOOL (WINAPI *AIMPAddonHeaderProc)(IAIMPAddonHeader *AHeader);
// Export function name: AIMP_QueryAddonEx
//==============================================================================
// Old Style Addon struct - don't use for new plugins
//==============================================================================
typedef PCHAR (WINAPI *GetPlgNameFunc)();
typedef PCHAR (WINAPI *GetAutorFunc)();
typedef void (WINAPI *InitFunc)(IAIMP2Controller *AIMP);
typedef void (WINAPI *ConfigFunc)(DWORD Handle, DWORD Win);
typedef void (WINAPI *FreeFunc)();
#pragma pack(push, 1)
struct AIMPAddonHeader
{
DWORD version;
DWORD DllInstance;
GetPlgNameFunc PlgNameFuncPtr;
GetAutorFunc AutorFuncPtr;
InitFunc InitFuncPtr;
ConfigFunc ConfigFuncPtr;
FreeFunc FreeFuncPtr;
};
#pragma pack(pop)
//==============================================================================
class IAIMP2OptionFrame
:public IUnknown
{
public:
virtual HWND WINAPI FrameCreate(
HWND AParent
);
virtual void *WINAPI FrameData(
); // reserved
virtual int WINAPI FrameFlags(
); // See FramePositionFlags
virtual PWCHAR WINAPI FrameName(
);
virtual HWND WINAPI FrameFree(
HWND AWindow
);
virtual void WINAPI FrameLoadConfigNotify(
);
virtual void WINAPI FrameSaveConfigNotify(
);
};
class IAIMP2Player
: public IUnknown
{
public:
virtual int WINAPI Version();
virtual boolean WINAPI PlayTrack(
int ID,
int ATrackIndex
);
virtual void WINAPI PlayOrResume();
virtual void WINAPI Pause();
virtual void WINAPI Stop();
virtual void WINAPI NextTrack();
virtual void WINAPI PrevTrack();
};
class IAIMP2PlaylistManager
: public IUnknown
{
public:
virtual int WINAPI AIMP_PLS_CreateFromFile(
PWCHAR AFile,
boolean AActivate,
boolean AStartPlay
);
virtual int WINAPI AIMP_PLS_ID_ActiveGet();
virtual boolean WINAPI AIMP_PLS_ID_ActiveSet(
int ID
);
virtual int WINAPI AIMP_PLS_ID_PlayingGet();
virtual int WINAPI AIMP_PLS_ID_PlayingGetTrackIndex(
int ID
);
virtual int WINAPI AIMP_PLS_NewEx(
PWCHAR AName,
boolean AActivate
);
virtual boolean WINAPI AIMP_PLS_PlayFile(
PWCHAR AFileName,
boolean AFailIfNotExists
);
// Playlist Processing
virtual boolean WINAPI AIMP_PLS_DeleteByFilter(
int ID,
DWORD AFilterProc,
DWORD AUserData
);
virtual boolean WINAPI AIMP_PLS_SortByFilter(
int ID,
DWORD AFilterProc,
DWORD AUserData
);
// Entries
virtual boolean WINAPI AIMP_PLS_Entry_Delete(
int ID,
int AEntryIndex
);
virtual boolean WINAPI AIMP_PLS_Entry_DeleteAll(
int ID
);
virtual boolean WINAPI AIMP_PLS_Entry_FileNameGet(
int ID,
int AEntryIndex,
PWCHAR PBuf,
DWORD ABufLen
);
virtual boolean WINAPI AIMP_PLS_Entry_FileNameSet(
int ID,
int AEntryIndex,
PWCHAR PBuf
);
virtual int WINAPI AIMP_PLS_Entry_FocusedGet(
int ID
);
virtual boolean WINAPI AIMP_PLS_Entry_FocusedSet(
int ID,
int AEntryIndex
);
virtual boolean WINAPI AIMP_PLS_Entry_InfoGet(
int ID,
int AEntryIndex,
AIMP2FileInfo *PFileInfo
);
virtual boolean WINAPI AIMP_PLS_Entry_InfoSet(
int ID,
int AEntryIndex,
AIMP2FileInfo *PFileInfo
);
virtual boolean WINAPI AIMP_PLS_Entry_PlayingSwitchGet(
int ID,
int AEntryIndex
);
virtual boolean WINAPI AIMP_PLS_Entry_PlayingSwitchSet(
int ID,
int AEntryIndex,
boolean ASwitch
);
virtual boolean WINAPI AIMP_PLS_Entry_ReloadInfo(
int ID,
int AEntryIndex
);
// Load/Save Playlists
virtual boolean WINAPI AIMP_PM_DestroyStream(
DWORD AHandle
);
virtual DWORD WINAPI AIMP_PM_ReadItem(
DWORD AHandle,
AIMP2FileInfo *PItem
);
virtual DWORD WINAPI AIMP_PM_ReadStream(
PWCHAR AFileName,
int *Count
);
virtual DWORD WINAPI AIMP_PM_SaveStream(
PWCHAR AFileName
);
virtual DWORD WINAPI AIMP_PM_WriteItem(
DWORD AHandle,
AIMP2FileInfo *PItem
);
// added in 2.50 B295
virtual boolean WINAPI AIMP_PLS_ID_PlayingSetTrackIndex(
int ID,
int AEntryIndex
);
};
class IAIMP2PlaylistManager2
: public IAIMP2PlaylistManager
{
public:
// Count of loaded playlists
virtual unsigned short WINAPI AIMP_PLS_Count();
// Return = -1 - ID is not valid, otherthis - count of files in playlist
virtual int WINAPI AIMP_PLS_GetFilesCount(int ID);
virtual HRESULT WINAPI AIMP_PLS_GetInfo(int ID, INT64 *ADuration, INT64 *ASize);
virtual HRESULT WINAPI AIMP_PLS_GetName(int ID, PWCHAR ABuffer, int ABufferSizeInChars);
// Custom Sorting, see AIMP_PLS_SORT_TYPE_XXX
virtual HRESULT WINAPI AIMP_PLS_Sort(int ID, int ASortType);
virtual HRESULT WINAPI AIMP_PLS_SortByTemplate(int ID, PWCHAR ABuffer, int ABufferSizeInChars);
// if Index = -1 returned ID of current playlist.
virtual HRESULT WINAPI AIMP_PLS_ID_By_Index(int Index, int *ID);
// Get Formated title for Entry
virtual HRESULT WINAPI AIMP_PLS_Entry_GetTitle(int ID, int AEntryIndex,
PWCHAR ABuffer, int ABufferSizeInChars);
// Set Entry to playback queue
virtual HRESULT WINAPI AIMP_PLS_Entry_QueueRemove(int ID, int AEntryIndex);
virtual HRESULT WINAPI AIMP_PLS_Entry_QueueSet(int ID, int AEntryIndex, BOOL AInsertAtQueueBegining);
// Moving Entry
virtual HRESULT WINAPI AIMP_PLS_Entry_SetPosition(int ID, int AEntryIndex, int ANewEntryIndex);
};
// See IAIMP2ExtendedID
class IAIMP2Extended
:public IUnknown
{
public:
virtual int WINAPI AIMP_GetPath(
int ID,
PWCHAR buffer,
int bufSize
);
virtual boolean WINAPI AIMP_ObjectClass(
int ID,
void *AData,
boolean ARegister
);
// User Option Dialogs
virtual DWORD WINAPI AIMP_Options_FrameAdd(
IAIMP2OptionFrame *AFrame
);
virtual DWORD WINAPI AIMP_Options_FrameRemove(
IAIMP2OptionFrame *AFrame
);
virtual DWORD WINAPI AIMP_Options_ModifiedChanged(
IAIMP2OptionFrame *AFrame
);
};
class IAIMP2CoverArtManager
:public IUnknown
{
public:
// Return picture will be proportional stretched to ADisplaySize value
virtual HBITMAP WINAPI GetCoverArtForFile(PWCHAR AFile, const SIZE *ADisplaySize);
// Draw CoverArt of playing file, Return - cover art drawing successfuly
// CoverArt will be proportional stretched to R value
virtual HRESULT WINAPI CurrentCoverArtDraw(HDC DC, const RECT *R);
// Return <> S_OK, CoverArt is empty or file are not playing
virtual HRESULT WINAPI CurrentCoverArtGetSize(SIZE *ASize);
// W, H - destination display sizes, function will correct sizes for proportional drawing
// Return <> S_OK, CoverArt is empty or file are not playing
virtual HRESULT WINAPI CurrentCoverArtCorrectSizes(int *W, int *H);
};
// See IAIMPLanguageFileID
class IAIMPLanguageFile
:public IUnknown
{
public:
virtual int AIMP_Lang_Version();
virtual int AIMP_Lang_CurrentFile(PWCHAR ABuffer, int ABufferSizeInChars);
virtual HRESULT AIMP_Lang_IsSectionExists(PWCHAR ASectionName, int ASectionNameSizeInChars);
virtual HRESULT AIMP_Lang_ReadString(PWCHAR ASectionName, PWCHAR AItemName, PWCHAR AValueBuffer,
int ASectionNameSizeInChars, int AItemNameSizeInChars, int AValueBufferSizeInChars);
// When Language changed AIMP will send to window handle "WM_LANG" message
virtual HRESULT AIMP_Lang_Notification(HWND AWndHandle, BOOL ARegister);
};
// See IAIMPConfigFileID
class IAIMPConfigFile
:public IUnknown
{
// functions return null value, if value don't exists in configuration file
virtual HRESULT AIMP_Config_ReadString(PWCHAR ASectionName, PWCHAR AItemName, PWCHAR AValueBuffer,
int ASectionNameSizeInChars, int AItemNameSizeInChars, int AValueBufferSizeInChars);
virtual HRESULT AIMP_Config_ReadInteger(PWCHAR ASectionName, PWCHAR AItemName,
int ASectionNameSizeInChars, int AItemNameSizeInChars, int * AValue);
//
virtual HRESULT AIMP_Config_WriteString(PWCHAR ASectionName, PWCHAR AItemName, PWCHAR AValueBuffer,
int ASectionNameSizeInChars, int AItemNameSizeInChars, int AValueBufferSizeInChars);
virtual HRESULT AIMP_Config_WriteInteger(PWCHAR ASectionName, PWCHAR AItemName,
int ASectionNameSizeInChars, int AItemNameSizeInChars, int AValue);
//
virtual HRESULT AIMP_Config_IsSectionExists(PWCHAR ASectionName, int ASectionNameSizeInChars);
virtual HRESULT AIMP_Config_RemoveSection(PWCHAR ASectionName, int ASectionNameSizeInChars);
};
//==============================================================================
// V I S U A L S
//==============================================================================
const int VIS_RQD_DATA_WAVE = 1;
const int VIS_RQD_DATA_SPECTRUM = 2;
const int VIS_RQD_NOT_SUSPEND = 4;
typedef short WaveForm[2][512];
typedef short Spectrum[2][256];
struct AIMPVisualData
{
int LevelR;
int LevelL;
Spectrum spectrum;
WaveForm waveForm;
};
typedef AIMPVisualData *PAIMPVisualData;
class IAIMP2VisualPlugin
:public IUnknown
{
public:
virtual PWCHAR WINAPI AuthorName();
virtual PWCHAR WINAPI PluginName();
virtual PWCHAR WINAPI PluginInfo();
virtual DWORD WINAPI PluginFlags();
virtual BOOL WINAPI Initialize();
virtual void WINAPI Deinitialize();
virtual void WINAPI DisplayClick(int X, int Y);
virtual void WINAPI DisplayRender(HDC DC, PAIMPVisualData AData);
virtual void WINAPI DisplayResize(int AWidth, int AHeight);
};
// Export function name: AIMP_QueryVisual
typedef IAIMP2VisualPlugin *(WINAPI *AIMPVisualProc)();
#endif