Files

6.9 KiB

Spec Delta

ADDED Requirements

Requirement: Тоновая кривая

Тоновая кривая SHALL задаваться контрольными точками для каналов RGB, R, G и B. Крайние точки SHALL существовать по умолчанию, SHALL двигаться по обеим осям и SHALL задавать плоские участки вне себя. Кривая SHALL быть плавной и монотонной между точками; первый клик по полю SHALL добавлять точку между крайними. Сброс SHALL возвращать линейную кривую.

Scenario: Крайние узлы существуют с самого начала

  • WHEN пользователь открывает инструмент «Кривая»
  • THEN у каждого канала уже есть крайние точки, и их можно перетаскивать

Scenario: Добавление точки

  • WHEN пользователь кликает по свободному полю кривой
  • THEN между крайними точками добавляется новая точка, а крайние остаются на месте

Scenario: Подвижные крайние узлы

  • WHEN пользователь двигает крайнюю точку по x или y
  • THEN вне крайних точек кривая остаётся плоской, а между точками — плавной

Scenario: Плавная интерполяция

  • WHEN кривая сохранена и отрендерена
  • THEN предпросмотр и итоговое фото используют одну и ту же плавную монотонную кривую

Scenario: Встроенные пресеты

  • WHEN пользователь выбирает «Линейный», «Средний контраст» или «Сильный контраст»
  • THEN кривые всех четырёх каналов заменяются кривыми пресета (контраст — в RGB, R/G/B — линейные), а подпись показывает выбранный пресет

Scenario: Пользовательская правка

  • WHEN пользователь вручную меняет точки кривой
  • THEN подпись показывает «Пользовательский»

Scenario: Сброс

  • WHEN пользователь сбрасывает кривую
  • THEN текущий канал возвращается к линейной кривой с крайними точками

Scenario: Независимые каналы

  • WHEN пользователь выбирает канал R, G или B
  • THEN он меняет только выбранный канал, остальные каналы остаются прежними

Requirement: Переключение фото в редакторе

При переключении фото правая панель SHALL сохранять выбранную вкладку. Несохранённые правки SHALL сохраняться тому фото, для которого они сделаны, в том числе если пользователь уже переключился на другое фото. Ответы фоновых запросов SHALL NOT подменять текущее фото или его параметры.

Scenario: Вкладка не меняется

  • WHEN пользователь переключает фото
  • THEN выбранная вкладка правой панели остаётся прежней

Scenario: Правки уходят текущему фото

  • WHEN пользователь меняет настройки после переключения
  • THEN изменения сохраняются текущему фото, а не предыдущему

Scenario: Фоновое сохранение не подменяет фото

  • WHEN сохранение предыдущего фото завершается после переключения
  • THEN панель продолжает показывать текущее фото, а его параметры не меняются

Requirement: Пользовательские пресеты кривой

Пользователь SHALL сохранять текущие кривые всех каналов (RGB, R, G и B) как именованный пресет, применять, переименовывать и удалять его. Пресет SHALL содержать кривую для каждого из четырёх каналов. Пресеты SHALL храниться в профиле пользователя и SHALL быть приватными. Импорт и экспорт SHALL выполняться JSON-файлом; импорт SHALL добавлять пресеты в профиль.

Scenario: Сохранение пресета

  • WHEN пользователь сохраняет текущие кривые под именем
  • THEN пресет появляется в списке и сохраняется в профиле вместе с кривыми RGB, R, G и B

Scenario: Применение пресета

  • WHEN пользователь выбирает пользовательский пресет
  • THEN кривые всех четырёх каналов заменяются сохранёнными, а текущий канал не меняется

Scenario: Переименование и удаление

  • WHEN пользователь переименовывает или удаляет пресет
  • THEN список пресетов и профиль обновляются

Scenario: Приватность пресетов

  • WHEN другой пользователь открывает свои пресеты
  • THEN он не видит пресеты первого пользователя

Scenario: Экспорт пресетов

  • WHEN пользователь экспортирует пресеты
  • THEN он получает JSON-файл с пользовательскими пресетами и кривыми всех четырёх каналов

Scenario: Импорт пресетов

  • WHEN пользователь импортирует корректный JSON-файл
  • THEN пресеты добавляются или обновляются в его профиле

Scenario: Некорректный файл или пресет

  • WHEN имя или кривая хотя бы одного канала недопустимы
  • THEN система отклоняет пресет и не меняет профиль