#if SELFTEST
using System;
using System.Drawing;
namespace TIASshot {
public partial class PreviewMonitor {
/// <summary>
/// 副ディスプレイが接続されている状態を模す(SELFTEST 限定).
/// IsShown は副ディスプレイ検出時に設定される _size で決まるため,ヘッドレス環境でも
/// Form1.ShowImage の副モニタ給餌経路(FastClone → UpdateImage)を通せるようにする.
/// </summary>
/// <param name="size">模擬する副ディスプレイのサイズ</param>
internal void SelfTestForceShown(Size size) {
_size = size;
}
/// <summary>
/// 再描画タイマーの Tick 処理(RefreshTimer_Tick)を 1 回実行する(UI スレッドから呼ぶこと).
/// ヘッドレスでは Load が発火せずタイマーが開始されないため,Tick を直接駆動する.
/// </summary>
internal void SelfTestRefresh() {
RefreshTimer_Tick(this, EventArgs.Empty);
}
/// <summary>副モニタ(picPreview)に現在表示中の画像</summary>
internal Image SelfTestDisplayedImage => picPreview.Image;
/// <summary>タイマー停止と表示用 Bitmap の解放(Dispose の前に UI スレッドで呼ぶ)</summary>
internal void SelfTestShutdown() {
_refreshTimer.Stop();
var shown = picPreview.Image;
picPreview.Image = null;
shown?.Dispose();
Bitmap pending;
lock (_dispBufLock) {
pending = _dispBuf;
_dispBuf = null;
_isUpdateBuf = false;
}
pending?.Dispose();
}
}
}
#endif