Загрузка данных


ДОПОЛНЕНИЕ — RAW LAB UI И LIVE RENDER

Не ломай существующий рабочий RAW pipeline. Сейчас RAW Lab реально работает на физической X-Pro3:
RAF отправляется в камеру → камера проявляет → JPEG возвращается в iPhone.

Нужно улучшить UX RAW Lab.

ЗАДАЧА №1 — ФОТО ВСЕГДА НА ВИДУ

Превью RAW/JPEG должно быть постоянно закреплено в верхней части экрана.

При прокрутке страницы изображение НЕ должно уезжать вверх вместе с настройками.

Архитектура UI:

┌──────────────────────┐
│                      │
│   CAMERA PREVIEW     │ ← FIXED / STICKY
│                      │
├──────────────────────┤
│ Film Simulation      │
│ Dynamic Range        │
│ Exposure             │
│ Highlight            │
│ Shadow               │
│ Color / B&W controls │
│ Sharpness            │
│ NR                   │
│ Clarity              │
│ Grain                │
│ WB                    │
│ etc...                │
│                      │
│   SCROLLABLE AREA    │
└──────────────────────┘

Preview должен занимать разумную часть экрана, примерно 35–45% доступной высоты, с учетом safe area и нижнего TabBar.

Настройки прокручиваются независимо под ним.

На небольших iPhone уменьшай preview адаптивно, но изображение всегда должно оставаться видимым во время редактирования.


ЗАДАЧА №2 — LIVE CAMERA RENDER

Сейчас пользователь меняет настройки и затем отдельно получает новый результат.

Нужно сделать автоматический camera-powered preview.

При КАЖДОМ изменении параметра RAW Lab:

- Film Simulation
- Dynamic Range
- Exposure
- Highlight
- Shadow
- Color
- Sharpness
- High ISO NR
- Clarity
- Grain
- Grain Size
- White Balance
- WB Shift
- Color Chrome Effect
- Color Chrome FX Blue
- Monochromatic Color
- и любых других реально поддерживаемых X-Pro3 RAW conversion параметров

FujiScout должен автоматически запросить новую проявку у подключенной X-Pro3.

Workflow:

user changes parameter
→ UI immediately reflects new value
→ debounce
→ FujiScout sends updated D185/settings to X-Pro3
→ X-Pro3 renders
→ returned JPEG replaces current preview.

Не требовать отдельного нажатия Render после каждого изменения.


ЗАДАЧА №3 — DEBOUNCE / НЕ СПАМИТЬ КАМЕРУ

При движении slider нельзя отправлять десятки RAW-conversion requests каждую миллисекунду.

Используй debounce примерно 250–500 ms.

Например:

пользователь быстро:
Shadow 0 → +1 → +2 → +3

не нужно проявлять четыре JPEG.

После остановки slider примерно на 300 ms:
→ отправить только Shadow +3.

Если во время рендера пользователь снова изменил параметр:
- не создавать бесконечную очередь старых render-запросов;
- отменить/отбросить устаревший pending render;
- после завершения текущей безопасной PTP операции проявить самое новое состояние параметров.

Всегда показывать пользователю последний выбранный state.


ЗАДАЧА №4 — ИНДИКАТОР LIVE RENDER

Не закрывать фотографию огромным ProgressView.

При рендере оставить предыдущий JPEG видимым.

В углу preview показать маленький ненавязчивый индикатор:

● RENDERING

или spinner + "X-PRO3".

После прихода изображения:
READY

Если conversion failed:
оставить последний успешный preview и показать небольшую ошибку.

Не очищать экран во время нового render.


ЗАДАЧА №5 — ORIGINAL / CURRENT

Сохранить существующий A/B Compare.

ORIGINAL:
первый JPEG, полученный после загрузки RAF с исходными параметрами.

CURRENT:
последняя успешная camera-powered проявка с текущими параметрами.

Переключение ORIGINAL / CURRENT должно быть мгновенным и не запускать новую конвертацию.


ЗАДАЧА №6 — MONOCHROMATIC COLOR ДЛЯ Ч/Б

При выборе черно-белой Film Simulation, если конкретная Fujifilm/X-Pro3 это поддерживает:

- ACROS
- ACROS+Ye
- ACROS+R
- ACROS+G
- MONOCHROME
- соответствующие варианты фильтров

в редакторе должен появляться параметр Fujifilm:

MONOCHROMATIC COLOR

(проверь точное название/механизм по FilmKit/Fujifilm protocol, не придумывай offset).

Это тот параметр Fujifilm, который позволяет тонировать ч/б изображение по двум осям:
- Warm ↔ Cool
- Magenta ↔ Green

Сделай удобный двухмерный контрол, визуально похожий на WB Shift:

             WARM
               ↑
               │
MAGENTA ←──────●──────→ GREEN
               │
               ↓
              COOL

или эквивалентный двухосевой Fujifilm UI.

Показывать реальные числовые значения обеих координат.

Каждое изменение также должно автоматически запускать live camera render через debounce.


ЗАДАЧА №7 — НЕ ПУТАТЬ С WB SHIFT

Monochromatic Color и White Balance Shift — разные параметры.

Для цветных Film Simulation:
показывать WB + WB Shift.

Для B&W Film Simulation:
WB может оставаться доступным, если его реально поддерживает camera RAW conversion,
НО дополнительно показывать Monochromatic Color.

Не использовать WB Shift как замену Monochromatic Color.


ЗАДАЧА №8 — CAPABILITY CHECK

Не показывай Monochromatic Color просто потому, что выбран ACROS.

Сначала определи, поддерживает ли подключенная модель камеры этот RAW conversion параметр.

Для X-Pro3 используй реально подтвержденный property / D185 field из FilmKit или других уже используемых протокольных источников.

Если параметр не поддерживается:
UI его не показывает.

Не записывать фиктивные значения.


ЗАДАЧА №9 — СОХРАНЕНИЕ РЕЦЕПТА

Текущий state RAW Lab должен быть возможным сохранить как FujiRecipe.

Если пользователь получил нужный результат:

SAVE AS RECIPE

сохраняет все текущие параметры, включая:
- Film Simulation
- DR
- Exposure, если применимо к recipe
- Highlight
- Shadow
- Color
- Sharpness
- NR
- Clarity
- Grain
- Grain Size
- WB
- WB Shift
- Chrome effects
- Monochromatic Color
- остальные реально поддерживаемые параметры.

После этого этот рецепт можно отправить в выбранный C1–C7 через уже реализуемый механизм Camera.


КРИТИЧЕСКИ ВАЖНО:

RAW Lab сейчас РАБОТАЕТ на реальной X-Pro3.

Не переписывай рабочий PTP RAW conversion pipeline без доказанной необходимости.

Основная задача здесь:
- sticky preview;
- scrollable controls;
- live automatic render;
- debounce;
- правильное управление состоянием;
- Monochromatic Color для B&W;
- сохранение результата как Recipe.

После изменений обязательно Build и исправить все compile errors.