Загрузка данных
ДОПОЛНЕНИЕ — 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.