#pragma once

#include "kpi.h"

class NSFDialogManager;

struct kbnsfplug_Settings
{
    bool bTrack;  //演奏情報
    bool bMemory; //メモリ表示
    bool bInfo;   //プロパティ
    int  nConfigPosX;
    int  nConfigPosY;
    int  nMixerPosX;
    int  nMixerPosY;
    int  nMaskPosX;
    int  nMaskPosY;
    int  nPanPosX;
    int  nPanPosY;
    int  nTrackPosX;  
    int  nTrackPosY;
    int  nTrackPosW; //幅(演奏情報/メモリ表示/プロパティはサイズも必要)
    int  nTrackPosH; //高さ
    int  nMemoryPosX;
    int  nMemoryPosY;
    int  nMemoryPosW;
    int  nMemoryPosH;
    int  nInfoPosX;
    int  nInfoPosY;
    int  nInfoPosW;
    int  nInfoPosH;
};

BOOL  __fastcall kbnsfplug_EnumConfig(IKpiConfigEnumerator *pEnumerator);
DWORD __fastcall kbnsfplug_ApplyConfig(IKpiConfig *pConfig,
                               const wchar_t *cszSection,//セクション名
                               const wchar_t *cszKey,    //キー名
                               INT64  nValue, //変更後の値(BOOL/INT の場合)
                               double dValue, //変更後の値(FLOAT の場合)
                               const wchar_t *cszValue);////変更後の値(文字列)
void __fastcall kbnsfplug_GetSettings(IKpiConfig *pConfig, kbnsfplug_Settings *pSettings);
void __fastcall kbnsfplug_GetIniData(IKpiConfig *pConfig, char **ppszIniData);//*ppszIniData は呼び出し側が free する
void __fastcall kbnsfplug_SaveIniData(IKpiConfig *pConfig, const char *cszIniData);

void __fastcall kbnsfplug_SaveDialogPos(IKpiConfig *pConfig, NSFDialogManager *pManager);
void __fastcall kbnsfplug_ResetDialogPos(IKpiConfig *pConfig);