// ---------------------------------------------------------------------------
//	M88 - PC-8801 emulator
//	CRT フィルタのパラメータ設定ダイアログ (モードレス)
//	Copyright (C) 2026
//	2-clause BSD license
// ---------------------------------------------------------------------------

#pragma once

#include "types.h"
#include "pc88/config.h"

namespace PC8801
{

class WinCRTConfig
{
public:
	WinCRTConfig();
	~WinCRTConfig();

	// 既に開いていれば前面に出すだけ
	void Show(HINSTANCE hinst, HWND hwndparent, Config* config);
	void Close();
	bool IsOpen() { return !!hwnd; }

	// メッセージループから呼ぶ (IsDialogMessage)
	bool ProcMsg(MSG& msg);

	// 親から config が書き換わったことを知らせる (メニューでの ON/OFF 等)
	void UpdateControls();

private:
	INT_PTR DlgProc(HWND, UINT, WPARAM, LPARAM);
	static INT_PTR CALLBACK DlgProcGate(HWND, UINT, WPARAM, LPARAM);

	void InitDialog(HWND hdlg);
	void UpdateSliders(HWND hdlg);      // config → コントロール
	void ReadSliders(HWND hdlg);        // コントロール → config
	void SetPreset(int scanline, int vignette, int aberration, int curvature);
	void NotifyParent();                // 親へ WM_M88_APPLYCRTPARAM

	HWND hwnd;
	HWND hwndparent;
	HINSTANCE hinst;
	Config* config;                     // WinUI::config を直接指す
};

}
