Формат файла (.lum)
Собственный формат .lum в Lumi — это каталог проекта, а не один запечатанный файл. Он рассчитан на многослойную иллюстрацию: глубокие деревья слоёв, большие холсты, маски, неразрушающие эффекты и контрольные точки, которым не нужно дублировать всю картину.
Задача формата — сохранить эту рабочую структуру: чтобы проект открывался достоверно, его можно было проверить, если что-то пойдёт не так, и восстановить из недавней контрольной точки, не превращая работу в один непрозрачный блок.
Отдельные части — намеренно
Проект .lum — это папка. Дерево слоёв и свойства изображения хранятся в читаемом XML. У каждого слоя и каждой маски свой пиксельный буфер, названный по работе, а не по внутреннему идентификатору. Векторные контуры записываются обычным SVG. Тяжёлые настройки фильтров хранятся в отдельных файлах рядом с изображением. ICC-профили хранятся один раз в корне проекта, чтобы снимки восстановления ссылались на них, а не копировали.
Именно это разделение делает возможным остальное. Неизменённые слои можно не трогать на диске. Повреждённый буфер ломается сам по себе, а не утягивает за собой весь файл. Отсутствующие пиксели слоя становятся пустыми слоями, у которых по-прежнему есть имена, положения и параметры наложения; отсутствующий сведённый вид группы собирается заново из дочерних слоёв. Проект остаётся картой того, как строилась картина.
Пигментные палитры остаются в цветовых инструментах Lumi. Проект может помнить, какая палитра была связана с изображением, но сама библиотека палитр находится вне .lum.
Редактируемое состояние, а не сведение
Файл хранит рабочую картину. Слои остаются слоями, группы слоёв — группами, маски — масками, включая смещения, блокировки, режимы наложения и стеки фильтров. Неразрушающие фильтры сохраняются как операции и параметры, а не как уже готовые пиксели. Слой из одного плоского цвета вообще не нуждается в файле пикселей.
Свёрнутые группы также хранят собственный сведённый вид. Именно этот сохранённый сведённый вид появляется на холсте, когда группа закрыта, так что дочерние слои не нужно собирать заново лишь затем, чтобы посмотреть на картину. Режимы просмотра только для инспекции в этот кэш не входят: показ маски или альфа-канала для правки восстанавливается как метаданные, а не записывается в сохранённую группу.
Большие файлы могут оставаться частично на диске
Открытие .lum не требует загрузки каждого пикселя. Содержимое свёрнутых групп может оставаться на диске, а сохранённый сведённый вид группы показывается сразу. В память слои, маски и вложенные группы попадают при разворачивании группы. Закрытые группы остаются лёгкими.
Файл также помнит, какие группы действительно использовались. Группы на пути активного выделения могут открыться развёрнутыми; остальные группы сохраняются свёрнутыми, даже если в прошлой сессии они случайно были открыты. Так глубокий файл не загружает в память каждую неиспользуемую ветку в момент открытия.
Поэтому группировка — это выбор и по производительности, и по организации. Крупные фоны, заархивированные эксперименты и неиспользуемые варианты могут лежать в закрытых группах, не занимая ту же память, что слои, на которых рисуют. Сохранение следует тому же правилу: по-прежнему скрытые буферы копируются или пропускаются как файлы, а не подгружаются снова в память лишь затем, чтобы снова их записать.
Контрольные точки записывают только изменения
Файл → Сохранить обновляет рабочий проект. Инкрементные сохранения и автосохранение пишут в дерево восстановления и записывают только изменённые данные — изменённые буферы слоёв, а не вторую копию всего изображения. Каждая контрольная точка всё равно несёт полное описание дерева слоёв, поэтому любую точку этой цепочки можно открыть, подставляя неизменённые пиксели из более старых контрольных точек и, если нужно, из самого рабочего файла.
Автосохранение использует ту же схему в отдельном кэше, поэтому автоматической защите не нужно переписывать файл на диске. Если при открытии проекта есть контрольные точки новее последнего полного сохранения, Lumi может предложить их вместо того, чтобы молча отбросить более свежую работу. Восстановленные изображения открываются под отдельным именем, чтобы быстрое сохранение не могло затереть оригинал.
Рабочий формат
.lum нужен, чтобы продолжать картину в Lumi. Сведённые форматы и форматы совместимости — для публикации, передачи и других программ. Поскольку проект — это каталог из многих файлов, его стоит архивировать, если ему нужно путешествовать.
Рабочий файл остаётся богатым и редактируемым. Экспорт — это то, как готовое или передаваемое изображение покидает эту структуру.