# 画面仕様 (Screen Specification)

現行アプリの画面構成を踏襲する．画面は 2 つ（メイン画面・結果画面）．

## 画面遷移 (Screen Flow)

```text
メイン画面
  ├─ 変換行列 CSV 選択 → 画像 PNG 選択 → 画像上を 1〜4 点クリック
  ├─ [舌色診断] → 結果画面（モードレス表示）
  └─ [診断続行] → 入力をリセットして次の診断へ
```

## メイン画面 (Main Window)

| 要素 | 仕様 |
| --- | --- |
| 変換行列選択 | ファイル参照（`.csv` のみ受付．他拡張子はエラー表示） |
| 画像選択 | ファイル参照（`.png` のみ受付）．読込時に中央基準で 1024×1280 にクロップ |
| 画像表示 | クロップ後画像を 1/2 縮小表示．未読込時はプレースホルダ画像 |
| ROI 指定 | 画像上の左クリックで 51×51 px の ROI を追加（最大 4 点．5 点目はエラー）．クリック位置に赤枠を描画，クリック済みマーク（●1〜●4）を表示 |
| リセット | 右クリックで全クリックを取り消し，画像を元に戻す |
| [舌色診断] ボタン | 1 点以上クリックで有効化．診断を実行し結果画面を開く．実行後は再クリック防止のため無効化 |
| L\*a\*b\* 表示 | 診断時に算出した L\*・a\*・b\* を表示 |
| 5 色スコア表示 | 紫・暗赤・紅・淡紅・淡白 の各一致率（%）を表示 |
| [診断続行] ボタン | 診断後に有効化．「同じ変換行列を使用するか」を確認し，画像・クリック状態をリセット |

### 入力ガード（エラー表示）(Input Guards)

- 変換行列未読込でクリック → 「変換行列を読み込んでください」
- 画像未読込でクリック → 「画像を読み込んでください」
- クリック 0 点で診断 → 「1 点以上 4 点以下クリックしてください」

## 結果画面 (Result Window)

| 要素 | 仕様 |
| --- | --- |
| 診断画像 | クロップ後の元画像を 1/2 縮小表示 |
| 結果パネル | 5 色の行（色名 + 説明）を一覧表示し，**上位 2 色のみ**スコア（%）と下線を描画 |
| 言語切替ボタン | 日本語 ⇔ 英語を切替（ボタンラベルは切替先の言語名） |
| 診断失敗表示 | 診断失敗時（SPEC_02「診断失敗の判定」参照）に「Diagnosis failed / Please try again.」を表示 |
| 注記 | 「本結果は疾患の診断を行うものではない」「表示画像は明るさ補正されている」 |

### 5 色の表示内容 (Color Rows)

| 色名（日） | 色名（英） | 説明（英語版） |
| --- | --- | --- |
| 淡紅 | Pink | Normal |
| 紅 | Red | Hot flush / feverish |
| 暗赤 | Dark red | Blood slightly thick |
| 紫 | Purple | Blood is thick |
| 淡白 | Pale red | Cold / fatigue / anemia |

※ 現行の日本語版は文字入り背景画像（`img_student2.bmp`）を使用している．新実装では日英とも描画で生成し，画像アセット依存を無くす（見た目は現行踏襲）．
