Add 5 procedural LED effects, gradient presets, auto-crop min aspect ratio, static source polling optimization

New features:
- Procedural effect source type with fire, meteor, plasma, noise, and aurora algorithms
  using palette LUT system and 1D value noise generator
- 12 predefined gradient presets (rainbow, sunset, ocean, forest, fire, lava, aurora,
  ice, warm, cool, neon, pastel) selectable from a dropdown in the gradient editor
- Auto-crop filter: min aspect ratio parameter to prevent false-positive cropping
  in dark scenes on ultrawide displays

Optimization:
- Static/gradient sources without animation: stream thread sleeps 0.25s instead of
  frame_time; processor repolls at frame_time instead of 5ms (~40x fewer iterations)
- Inverted isinstance checks in routes to test for PictureColorStripSource only

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-23 01:03:16 +03:00
parent 9392741f08
commit a4083764fb
14 changed files with 1033 additions and 19 deletions

View File

@@ -589,6 +589,21 @@
"color_strip.gradient.position": "Позиция (0.01.0)",
"color_strip.gradient.bidir.hint": "Добавить второй цвет справа от этой остановки для создания резкого перехода в градиенте.",
"color_strip.gradient.min_stops": "Градиент должен содержать не менее 2 остановок",
"color_strip.gradient.preset": "Пресет:",
"color_strip.gradient.preset.hint": "Загрузить готовую палитру градиента. Выбор пресета заменяет текущие остановки.",
"color_strip.gradient.preset.custom": "— Свой —",
"color_strip.gradient.preset.rainbow": "Радуга",
"color_strip.gradient.preset.sunset": "Закат",
"color_strip.gradient.preset.ocean": "Океан",
"color_strip.gradient.preset.forest": "Лес",
"color_strip.gradient.preset.fire": "Огонь",
"color_strip.gradient.preset.lava": "Лава",
"color_strip.gradient.preset.aurora": "Аврора",
"color_strip.gradient.preset.ice": "Лёд",
"color_strip.gradient.preset.warm": "Тёплый",
"color_strip.gradient.preset.cool": "Холодный",
"color_strip.gradient.preset.neon": "Неон",
"color_strip.gradient.preset.pastel": "Пастельный",
"color_strip.animation": "Анимация",
"color_strip.animation.type": "Эффект:",
"color_strip.animation.type.hint": "Эффект анимации.",
@@ -617,5 +632,39 @@
"color_strip.color_cycle.add_color": "+ Добавить цвет",
"color_strip.color_cycle.speed": "Скорость:",
"color_strip.color_cycle.speed.hint": "Множитель скорости смены. 1.0 ≈ один полный цикл за 20 секунд; большие значения ускоряют смену.",
"color_strip.color_cycle.min_colors": "Смена цвета должна содержать не менее 2 цветов"
"color_strip.color_cycle.min_colors": "Смена цвета должна содержать не менее 2 цветов",
"color_strip.type.effect": "Эффект",
"color_strip.type.effect.hint": "Процедурные LED-эффекты (огонь, метеор, плазма, шум, аврора), генерируемые в реальном времени.",
"color_strip.effect.type": "Тип эффекта:",
"color_strip.effect.type.hint": "Выберите процедурный алгоритм.",
"color_strip.effect.fire": "Огонь",
"color_strip.effect.fire.desc": "Клеточный автомат, имитирующий поднимающееся пламя с диффузией тепла",
"color_strip.effect.meteor": "Метеор",
"color_strip.effect.meteor.desc": "Яркая точка движется по ленте с экспоненциально затухающим хвостом",
"color_strip.effect.plasma": "Плазма",
"color_strip.effect.plasma.desc": "Наложение синусоидальных волн с палитрой — классический демо-эффект",
"color_strip.effect.noise": "Шум",
"color_strip.effect.noise.desc": "Прокручиваемый фрактальный шум, отображённый на палитру",
"color_strip.effect.aurora": "Аврора",
"color_strip.effect.aurora.desc": "Наложенные шумовые полосы, дрейфующие и смешивающиеся — в стиле северного сияния",
"color_strip.effect.speed": "Скорость:",
"color_strip.effect.speed.hint": "Множитель скорости анимации эффекта (0.1 = очень медленно, 10.0 = очень быстро).",
"color_strip.effect.palette": "Палитра:",
"color_strip.effect.palette.hint": "Цветовая палитра для отображения значений эффекта в RGB-цвета.",
"color_strip.effect.color": "Цвет метеора:",
"color_strip.effect.color.hint": "Цвет головной точки метеора.",
"color_strip.effect.intensity": "Интенсивность:",
"color_strip.effect.intensity.hint": "Интенсивность эффекта — частота искр (огонь), затухание хвоста (метеор) или диапазон яркости (аврора).",
"color_strip.effect.scale": "Масштаб:",
"color_strip.effect.scale.hint": "Пространственный масштаб — частота волн (плазма), уровень масштабирования (шум) или ширина полос (аврора).",
"color_strip.effect.mirror": "Отражение:",
"color_strip.effect.mirror.hint": "Режим отскока — метеор меняет направление у краёв ленты вместо переноса.",
"color_strip.palette.fire": "Огонь",
"color_strip.palette.ocean": "Океан",
"color_strip.palette.lava": "Лава",
"color_strip.palette.forest": "Лес",
"color_strip.palette.rainbow": "Радуга",
"color_strip.palette.aurora": "Аврора",
"color_strip.palette.sunset": "Закат",
"color_strip.palette.ice": "Лёд"
}