Files
LlamaCasty/Services/IFullScreenDetector.cs
gramps 0bd17ab428 feat(ui): Show Desktop toggle, avatar login, chat preview, backdrop seeding, border animations
- Source.ShowDesktop bool persisted in DB (schema migration + LayoutStore)
- ClearBackdropCaptureAsync clears CaptureKey + VideoImageSource for static fallback
- Top bar: red/green/pulsing status light, avatar via BitmapImage, Log In button
- ShowStartStream now requires IsConnected
- RunMockChatPreviewAsync: simple async loop, ChatPreviewEnabled property on Source
- EnsureDefaultBackdrop called on every scene switch, seeds all 5 scenes
- SeedEndingBackdrop replaces existing, SeedChatBackdrop added
- SceneCatalog: Chat scene display name corrected (layer = 'YouTube Chat')
- Left panel spacing consistency, context menu reordered
- Border animation rendering via code-behind Storyboard approach
- 3 new backdrop assets (ending-backdrop.jpg, chat-backdrop.jpg, live-backdrop.jpg)
- Build 0 warnings, 178 tests passing
2026-08-20 18:02:41 -07:00

35 lines
1.3 KiB
C#

namespace ytLive.Services;
/// <summary>
/// Identifies which monitor holds a full-screen window (a game/app running
/// borderless or exclusive fullscreen). Seam so ScreenCaptureManager is
/// testable without Win32 interop.
/// </summary>
public interface IFullScreenDetector
{
/// <summary>
/// The index of the monitor a full-screen foreground window covers, or null
/// when the foreground window is windowed, missing, or one of our own.
/// </summary>
int? GetForegroundFullScreenMonitorIndex();
/// <summary>Index of the primary (taskbar-hosting) monitor.</summary>
int PrimaryMonitorIndex();
/// <summary>All monitors in capture-key order (enumeration order).</summary>
IReadOnlyList<DisplayInfo> GetDisplays();
/// <summary>
/// Raised on the UI thread whenever the foreground window changes.
/// Payload is the full-screen monitor index, or null when the new
/// foreground window is not full-screen / is one of our own windows.
/// </summary>
event Action<int?>? FullscreenMonitorChanged;
/// <summary>Hook EVENT_SYSTEM_FOREGROUND so <see cref="FullscreenMonitorChanged"/> fires.</summary>
void StartWatching();
/// <summary>Unhook the foreground listener.</summary>
void StopWatching();
}