M6.7: refine edge + freeze + UI

Refine Edge tool (Alt+W cycles Roto Brush / Refine Edge), Layer panel
roto strokes with matte overlays (Alpha Boundary in pink, Alpha, Alpha
Overlay, View Search Region), segmentation span bar, Freeze/Propagate in
the Layer panel and Effect Controls, background propagation polling,
docs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Thomas
2026-10-02 22:27:22 -04:00
co-authored by Claude Opus 5.5
parent 07330bca6b
commit ed72e67155
13 changed files with 467 additions and 15 deletions
+2 -2
View File
@@ -378,14 +378,12 @@ fn status(s: &mut Session, p: &Value) -> Result<Value> {
let (layer, g) = group(s, cid, lid, uid)?;
let (layer, g) = (layer.clone(), g.clone());
let d = data_of(&g);
let computed = s.roto_computed(cid, lid, uid);
out["layer"] = json!(lid.0);
out["effect"] = json!(uid);
out["base"] = json!(d.base);
out["span"] = json!(d.span);
out["strokes"] = json!(d.strokes.len());
out["strokeFrames"] = json!(d.stroke_frames());
out["computed"] = json!(computed.iter().filter(|(_, c)| **c).map(|(f, _)| *f).collect::<Vec<_>>());
out["frozen"] = json!(frozen_of(&g));
out["pending"] = json!(s.roto_pending.contains(&(cid, lid, uid)));
out["limits"] = json!(rt::frame_limits(&comp, &layer));
@@ -420,5 +418,7 @@ fn status(s: &mut Session, p: &Value) -> Result<Value> {
}
}
}
let computed = s.roto_computed(cid, lid, uid);
out["computed"] = json!(computed.iter().filter(|(_, c)| **c).map(|(f, _)| *f).collect::<Vec<_>>());
Ok(out)
}