feat: expand color strip sources with gradient references and effect improvements
Add gradient_id field to color strip sources for referencing reusable gradient entities. Improve audio stream processing and effect stream with new parameters.
This commit is contained in:
@@ -567,6 +567,13 @@ async def preview_color_strip_ws(
|
||||
if not stream_cls:
|
||||
raise ValueError(f"Unsupported preview source_type: {source.source_type}")
|
||||
s = stream_cls(source)
|
||||
# Inject gradient store for palette resolution
|
||||
if hasattr(s, "set_gradient_store"):
|
||||
try:
|
||||
from wled_controller.api.dependencies import get_gradient_store
|
||||
s.set_gradient_store(get_gradient_store())
|
||||
except Exception:
|
||||
pass
|
||||
if hasattr(s, "configure"):
|
||||
s.configure(led_count)
|
||||
# Inject sync clock if requested
|
||||
|
||||
@@ -70,6 +70,8 @@ class ColorStripSourceCreate(BaseModel):
|
||||
scale: Optional[float] = Field(None, description="Spatial scale 0.5-5.0", ge=0.5, le=5.0)
|
||||
mirror: Optional[bool] = Field(None, description="Mirror/bounce mode (meteor/comet)")
|
||||
custom_palette: Optional[List[List[float]]] = Field(None, description="Custom palette stops [[pos,R,G,B],...]")
|
||||
# gradient entity reference (effect, gradient, audio types)
|
||||
gradient_id: Optional[str] = Field(None, description="Gradient entity ID (overrides palette/inline stops)")
|
||||
# gradient-type easing
|
||||
easing: Optional[str] = Field(None, description="Gradient interpolation easing: linear|ease_in_out|step|cubic")
|
||||
# composite-type fields
|
||||
@@ -135,6 +137,8 @@ class ColorStripSourceUpdate(BaseModel):
|
||||
scale: Optional[float] = Field(None, description="Spatial scale 0.5-5.0", ge=0.5, le=5.0)
|
||||
mirror: Optional[bool] = Field(None, description="Mirror/bounce mode")
|
||||
custom_palette: Optional[List[List[float]]] = Field(None, description="Custom palette stops [[pos,R,G,B],...]")
|
||||
# gradient entity reference (effect, gradient, audio types)
|
||||
gradient_id: Optional[str] = Field(None, description="Gradient entity ID (overrides palette/inline stops)")
|
||||
# gradient-type easing
|
||||
easing: Optional[str] = Field(None, description="Gradient interpolation easing: linear|ease_in_out|step|cubic")
|
||||
# composite-type fields
|
||||
@@ -202,6 +206,7 @@ class ColorStripSourceResponse(BaseModel):
|
||||
scale: Optional[float] = Field(None, description="Spatial scale")
|
||||
mirror: Optional[bool] = Field(None, description="Mirror/bounce mode")
|
||||
custom_palette: Optional[List[List[float]]] = Field(None, description="Custom palette stops")
|
||||
gradient_id: Optional[str] = Field(None, description="Gradient entity ID")
|
||||
# gradient-type easing
|
||||
easing: Optional[str] = Field(None, description="Gradient interpolation easing")
|
||||
# composite-type fields
|
||||
|
||||
Reference in New Issue
Block a user