#if MEMMONITOR
using System.Windows.Forms;

namespace TIASshot {
    public partial class Form1 {

        private MemoryMonitorForm _memoryMonitorForm;

        // F9 で ON/OFF をトグルする副モニタ計測用の一時抑制フラグ。
        // true の間は ShowImage が副モニタへのフレーム給餌（コピー生成・UpdateImage 呼び出し）を止める。
        private bool _subMonitorSuppressed = false;

        /// <summary>
        /// メモリ観測ウィンドウを非モーダルで開く（MEMMONITOR 限定）。
        /// 既に開いている場合は前面化する。
        /// Shown イベントから呼び出すことでメインフォームの最終位置を確定させてから配置する。
        /// </summary>
        private void ShowMemoryMonitor() {
            if (_memoryMonitorForm != null && !_memoryMonitorForm.IsDisposed) {
                _memoryMonitorForm.BringToFront();
                return;
            }

            _memoryMonitorForm = new MemoryMonitorForm();

            // メインフォームの右隣に配置
            _memoryMonitorForm.StartPosition = FormStartPosition.Manual;
            _memoryMonitorForm.Location = new System.Drawing.Point(
                this.Right + 8,
                this.Top);

            _memoryMonitorForm.Show(this);
        }

        /// <summary>
        /// 副モニタへのプレビュー給餌を ON/OFF トグルする（MEMMONITOR 限定・計測用）。
        /// F9 キーで Form1・MemoryMonitorForm のどちらからでも呼び出せる。
        /// 副ディスプレイが存在しない環境（_previewMonitor.IsShown が false）では何もしない。
        /// </summary>
        public void ToggleSubMonitorProfiling() {
            if (_previewMonitor == null || !_previewMonitor.IsShown) return; // 副ディスプレイが無い環境では何もしない
            _subMonitorSuppressed = !_subMonitorSuppressed;
            if (_subMonitorSuppressed) {
                _previewMonitor.Hide();
                PreviewProfiler.MarkEvent("SUB_OFF");
            } else {
                _previewMonitor.Show();
                PreviewProfiler.MarkEvent("SUB_ON");
            }
        }

        /// <summary>
        /// F9 キーで副モニタ給餌をトグルする（MEMMONITOR 限定）。
        /// Form1_Load で KeyPreview = true を設定した上で KeyDown に接続する。
        /// </summary>
        private void Form1_MemMonitor_KeyDown(object sender, KeyEventArgs e) {
            if (e.KeyCode == Keys.F9) {
                ToggleSubMonitorProfiling();
                e.Handled = true;
            }
        }
    }
}
#endif
