using Domain.Interfaces; namespace Domain.RenderPart; public abstract class RenderPartBase : IFrameRender { protected readonly IEnumerable _layers; protected uint _row; protected uint _col; public Guid RenderId { get; private set; } protected RenderPartBase(IEnumerable layers, uint row, uint col, Guid renderId) { _layers = layers; _row = row; _col = col; RenderId = renderId; } public abstract Task> Execute(CancellationToken cancellationToken); public abstract long EstimateMemoryUsage(); protected abstract Task RenderImage(); protected virtual Task CreateFrameInfo() { throw new NotImplementedException(); return Task.FromResult(new ExpIniFileGenerator.FrameExpInfo()); } protected virtual uint SetFrameNumber(uint row, uint column, uint columnsInRow) { return column + (row * columnsInRow); } protected Task SaveFrame() { return Task.CompletedTask; } }