using System; using System.Collections.Generic; using Artemis.Core.Services.Core; using Artemis.Core.SkiaSharp; using RGB.NET.Core; namespace Artemis.Core.Services; /// /// Represents a service that manages the render loop and renderers. /// public interface IRenderService : IArtemisService { /// /// Gets the graphics context to be used for rendering /// IManagedGraphicsContext? GraphicsContext { get; } /// /// Gets the RGB surface to which is being rendered. /// RGBSurface Surface { get; } /// /// Gets a list of registered renderers. /// List Renderers { get; } /// /// Gets or sets a boolean indicating whether rendering is paused. /// bool IsPaused { get; set; } /// /// Gets or sets a boolean indicating whether to flush the RGB.NET LEDs during next update /// bool FlushLeds { get; set; } /// /// The time the last frame took to render /// TimeSpan FrameTime { get; } /// /// The amount of frames rendered each second /// public int FrameRate { get; } /// /// Initializes the render service and starts rendering. /// void Initialize(); /// /// Occurs whenever a frame is rendering, after modules have rendered /// event EventHandler FrameRendering; /// /// Occurs whenever a frame is finished rendering and the render pipeline is closed /// event EventHandler FrameRendered; }