diff --git "a/docs/04_SPEC/SPEC_01_\347\224\273\351\235\242\346\251\237\350\203\275\344\273\225\346\247\230\346\233\270.md" "b/docs/04_SPEC/SPEC_01_\347\224\273\351\235\242\346\251\237\350\203\275\344\273\225\346\247\230\346\233\270.md" index 073f2bc..398b15b 100644 --- "a/docs/04_SPEC/SPEC_01_\347\224\273\351\235\242\346\251\237\350\203\275\344\273\225\346\247\230\346\233\270.md" +++ "b/docs/04_SPEC/SPEC_01_\347\224\273\351\235\242\346\251\237\350\203\275\344\273\225\346\247\230\346\233\270.md" @@ -38,32 +38,33 @@ ### レイアウト +UI 全体を `Transform.rotate(angle: pi)` で 180° 回転する.以下は**コード上の配置順**(回転前)を示す.操作者が逆さに置いた端末を見ると,上下が反転して表示される. + ```text -┌─────────────────────────┐ -│ BottomNavBar │ ← 画面下部(通常位置) -├─────────────────────────┤ -│ │ -│ │ -│ カメラプレビュー │ ← 上下反転表示(180°回転) -│ (画面全体) │ -│ │ -│ │ -├─────────────────────────┤ -│ [シャッターボタン] │ ← 画面上部(端末を逆さに置くため) -└─────────────────────────┘ +コード上の配置(回転前) 操作者の視点(回転後) +┌─────────────────────┐ ┌─────────────────────┐ +│ BottomNavBar │ │ (黒い空白) │ +│ 明るさスライダー │ │ アタッチメントで隠れる │ +│ │ ├─────────────────────┤ +│ カメラプレビュー │ │ │ +│ (中央クロップ) │ │ カメラプレビュー │ +│ │ │ (中央クロップ) │ +├─────────────────────┤ │ │ +│ (黒い空白) │ │ 明るさスライダー │ +│ アタッチメントで隠れる │ │ BottomNavBar │ +└─────────────────────┘ └─────────────────────┘ ``` -※ 端末を逆さに置いて使用するため,UI 全体を 180° 回転する.操作者から見ると通常の上下配置に見える. -※ アタッチメント(SmTIAS)により画面上部(逆さ配置時の操作側)の約 1/3 が隠れるため,UI 要素はその範囲を避けて配置する. +※ アタッチメント(SmTIAS)により画面の約 1/3 が隠れるため,その領域は黒い空白とし,UI 要素は見える領域に配置する. ### UI 要素 | 要素 | 仕様 | | --- | --- | -| カメラプレビュー | インカメラ(前面カメラ)のライブ映像.UI 全体を 180° 回転して表示 | -| シャッターボタン | 丸型ボタン.タップで撮影実行.連続タップ可(連写対応) | -| 明るさスライダー | BottomNavigationBar の上に配置.画面の輝度を手動で調整する | -| BottomNavigationBar | 撮影タブ(アクティブ)/ 一覧タブ | +| カメラプレビュー | インカメラのライブ映像.鏡像(左右反転)+上下反転で表示.画面いっぱいに拡大し中央をクロップ | +| シャッターボタン | 丸型ボタン.タップで撮影実行.連続タップ可(連写対応).※ Step 3 で実装 | +| 明るさスライダー | ナビバーの直下に配置.画面の輝度を手動で調整する(デフォルト: 0.8) | +| BottomNavigationBar | 撮影タブ(アクティブ)/ 一覧タブ.背景色は黒系で統一 | ### 動作仕様 @@ -140,7 +141,10 @@ - `camera` パッケージの `CameraPreview` ウィジェットを使用する - UI 全体を `Transform.rotate(angle: pi)` で 180° 回転する -- プレビューのアスペクト比はカメラのネイティブ比率を維持する +- カメラ映像に `Matrix4.diagonal3Values(-scale, -scale, 1.0)` を適用する + - X 軸反転: 鏡像表示(操作者が自然に見える向き) + - Y 軸反転: 端末が逆さのため上下を補正 +- プレビューは画面いっぱいに拡大し,はみ出す部分はクロップする(`ClipRect` + スケール計算) ### 撮影フロー