using System.Windows.Media; namespace ytLive.Models; /// /// The transient zoom layer: a real scene element parked at z-index 1 (above the /// background, below every other layer) whose pixels are the 2x-magnified backdrop /// centred on the zoom box. The app paints it into the stream/recording exactly like /// any other layer. While inactive it is a 0x0 invisible placeholder that is never /// persisted (LayoutStore hand-rolls only Source/WebcamSceneConfig rows) — the VM /// re-inserts it on load and on scene creation, mirroring how backgrounds heal. /// public sealed class ZoomSceneElement : SceneElement { /// True only while a zoom box is live; flips Kind so the layer leaves /// the baked static base and composites per-frame. public bool IsZoomActive { get; set; } public override ElementKind Kind => IsZoomActive ? ElementKind.Dynamic : ElementKind.Static; public override bool IsZoomLayer => true; public override bool IsDraggable => false; /// Never rendered by the element template — the preview magnifier /// (ZoomBox) and the output resolver own its pixels. public override ImageSource? DisplaySource => null; }