Introduce IImageCreator interface for image creation, and update ImageCreatorSharp to implement it. Add ImageCreatorAlternate (adapter) and ImageCreatorMapper (runtime selector) classes. Extend PicSettings with ImageCreatorProvider to control backend selection. Update DI registrations and refactor ImageCreationStuff to depend on IImageCreator, enabling backend switching via configuration.
25 lines
785 B
C#
25 lines
785 B
C#
using System.Drawing;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace MaddoShared;
|
|
|
|
// Minimal alternate adapter that currently delegates to ImageCreatorSharp.
|
|
// Later this can be replaced with a different library implementation.
|
|
public class ImageCreatorAlternate : IImageCreator
|
|
{
|
|
private readonly ImageCreatorSharp _inner;
|
|
private readonly ILogger<ImageCreatorAlternate> _logger;
|
|
|
|
public ImageCreatorAlternate(ImageCreatorSharp inner, ILogger<ImageCreatorAlternate> logger)
|
|
{
|
|
_inner = inner;
|
|
_logger = logger;
|
|
}
|
|
|
|
public Task CreateImageAsync(ImageState imgState, Image logo)
|
|
{
|
|
_logger.LogDebug("Using alternate image creator adapter");
|
|
return _inner.CreateImageAsync(imgState, logo);
|
|
}
|
|
}
|