using ErsatzTV.Core.Domain; using ErsatzTV.Core.FFmpeg; using ErsatzTV.Core.Graphics; namespace ErsatzTV.Core.Interfaces.Streaming; public record GraphicsEngineContext( string ChannelNumber, MediaItem MediaItem, List Elements, Resolution SquarePixelFrameSize, Resolution FrameSize, int FrameRate, DateTimeOffset ChannelStartTime, DateTimeOffset ContentStartTime, TimeSpan Seek, TimeSpan Duration); public abstract record GraphicsElementContext; public record WatermarkElementContext(WatermarkOptions Options) : GraphicsElementContext; public record TextElementDataContext(TextGraphicsElement TextElement, Dictionary Variables) : GraphicsElementContext, ITemplateDataContext { public int EpgEntries => TextElement.EpgEntries; } public record ImageElementContext(ImageGraphicsElement ImageElement) : GraphicsElementContext; public record SubtitleElementDataContext( SubtitlesGraphicsElement SubtitlesElement, Dictionary Variables) : GraphicsElementContext, ITemplateDataContext { public int EpgEntries => SubtitlesElement.EpgEntries; } public interface ITemplateDataContext { int EpgEntries { get; } }