3.5 KiB
3.5 KiB
Proposal
Why
В инструменте правок фото сейчас только раздел «Свет» (экспозиция, контраст, света, тени, белые, чёрные, точечная кривая). Пользователи не могут скорректировать цвет: баланс белого, вибрацию, насыщенность, отдельные оттенки и тонирование. Добавить цветовые правки — востребованное расширение неразрушающего редактирования, которое уже работает в Galo.
What Changes
- Расширить
EditParamsновым блокомColor: баланс белого (Темп, Оттенок), Вибрация (Vibrance), Насыщенность, Цветовой микшер (Тон/Насыщенность/Яркость по оттенкам), Точечный цвет и Цветокоррекция. - Сервер (Go): рендер цветовых правок на пикселях исходного объекта, порядок
операций — свет, затем цвет; результат записывается в те же роли
edit,edit_thumb,edit_medium,edit_preview. - Клиент (TypeScript): цветовые ползунки и элементы управления в
PhotoEditPanel, живой превью черезlight.wasmс тестом паритета (wasmMatchesReference). - WASM (Rust): расширение
frontend/wasm/light/цветовыми операциями и пересборкаstatic/light.wasm. - Хранение:
photo.edit_paramsостаётсяmap[string]anyJSON-блоба — старые фото без ключаcolorрендерятся без цветовых правок, миграций схемы не требуется.
Capabilities
Modified Capabilities
photos: требование «Неразрушающее редактирование фотографии» расширяется цветовыми параметрами правок. Потребуется дельта-спекаspecs/photos/spec.mdв рамках этого изменения.
New Capabilities
Нет — цветовое редактирование входит в существующую способность photos.
Impact
backend/internal/photos/edit.go—ColorParams,EditParams.Color,Normalized/IsEmpty/JSON.backend/internal/photos/edit_render.go—applyColor/applyColorRows,decodeAndAdjustприменяет свет и цвет.backend/internal/photos/edit_service.go— валидация и сохранение без изменений логики (параметрcolorдобавится в JSON).frontend/src/lib/edit.ts—ColorParams, цветовые ползунки,readEditParams/isEmptyEditParams/normalizeEditParamsс цветом,applyColorToPixels.frontend/src/lib/light-wasm.ts— вызов WASM для цвета, поддержка паритета.frontend/src/lib/components/PhotoEditPanel.svelte— новый раздел «Цвет».frontend/src/lib/components/Viewer.svelte— превью с цветом.frontend/wasm/light/(Rust) +static/light.wasm— цветовые операции.- Тесты:
edit_test.go,edit.test.ts,light-wasm.test.ts.