mirror of https://github.com/SixLabors/ImageSharp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.4 KiB
44 lines
1.4 KiB
// Copyright (c) Six Labors.
|
|
// Licensed under the Six Labors Split License.
|
|
|
|
using SixLabors.ImageSharp.PixelFormats;
|
|
|
|
namespace SixLabors.ImageSharp.Formats.Qoi;
|
|
|
|
internal class QoiDecoder : ImageDecoder
|
|
{
|
|
private QoiDecoder()
|
|
{
|
|
}
|
|
|
|
public static QoiDecoder Instance { get; } = new();
|
|
|
|
/// <inheritdoc />
|
|
protected override Image<TPixel> Decode<TPixel>(DecoderOptions options, Stream stream, CancellationToken cancellationToken)
|
|
{
|
|
Guard.NotNull(options, nameof(options));
|
|
Guard.NotNull(stream, nameof(stream));
|
|
|
|
QoiDecoderCore decoder = new(options);
|
|
Image<TPixel> image = decoder.Decode<TPixel>(options.Configuration, stream, cancellationToken);
|
|
|
|
ScaleToTargetSize(options, image);
|
|
|
|
return image;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
protected override Image Decode(DecoderOptions options, Stream stream, CancellationToken cancellationToken)
|
|
{
|
|
Guard.NotNull(options, nameof(options));
|
|
Guard.NotNull(stream, nameof(stream));
|
|
return this.Decode<Rgba32>(options, stream, cancellationToken);
|
|
}
|
|
|
|
protected override ImageInfo Identify(DecoderOptions options, Stream stream, CancellationToken cancellationToken)
|
|
{
|
|
Guard.NotNull(options, nameof(options));
|
|
Guard.NotNull(stream, nameof(stream));
|
|
return new QoiDecoderCore(options).Identify(options.Configuration, stream, cancellationToken);
|
|
}
|
|
}
|
|
|