Browse Source

Remove IEncoderOptions

pull/2269/head
James Jackson-South 3 years ago
parent
commit
48b3abe079
  1. 33
      src/ImageSharp/Formats/IEncoderOptions.cs
  2. 16
      src/ImageSharp/Formats/ImageEncoder.cs
  3. 2
      src/ImageSharp/Formats/Png/PngEncoderCore.cs

33
src/ImageSharp/Formats/IEncoderOptions.cs

@ -1,33 +0,0 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Processing.Processors.Quantization;
namespace SixLabors.ImageSharp.Formats;
/// <summary>
/// Defines the contract for basic encoder options.
/// </summary>
public interface IEncoderOptions
{
/// <summary>
/// Gets a value indicating whether to ignore decoded metadata when encoding.
/// </summary>
bool SkipMetadata { get; init; }
}
/// <summary>
/// Defines the contract for encoder options that allow color palette generation via quantization.
/// </summary>
public interface IQuantizingEncoderOptions : IEncoderOptions
{
/// <summary>
/// Gets the quantizer used to generate the color palette.
/// </summary>
IQuantizer Quantizer { get; init; }
/// <summary>
/// Gets the <see cref="IPixelSamplingStrategy"/> used for quantization when building color palettes.
/// </summary>
IPixelSamplingStrategy PixelSamplingStrategy { get; init; }
}

16
src/ImageSharp/Formats/ImageEncoder.cs

@ -10,9 +10,11 @@ namespace SixLabors.ImageSharp.Formats;
/// <summary>
/// The base class for all image encoders.
/// </summary>
public abstract class ImageEncoder : IImageEncoder, IEncoderOptions
public abstract class ImageEncoder : IImageEncoder
{
/// <inheritdoc/>
/// <summary>
/// Gets a value indicating whether to ignore decoded metadata when encoding.
/// </summary>
public bool SkipMetadata { get; init; }
/// <inheritdoc/>
@ -27,11 +29,15 @@ public abstract class ImageEncoder : IImageEncoder, IEncoderOptions
/// <summary>
/// The base class for all image encoders that allow color palette generation via quantization.
/// </summary>
public abstract class QuantizingImageEncoder : ImageEncoder, IQuantizingEncoderOptions
public abstract class QuantizingImageEncoder : ImageEncoder
{
/// <inheritdoc/>
/// <summary>
/// Gets the quantizer used to generate the color palette.
/// </summary>
public IQuantizer Quantizer { get; init; } = KnownQuantizers.Octree;
/// <inheritdoc/>
/// <summary>
/// Gets the <see cref="IPixelSamplingStrategy"/> used for quantization when building color palettes.
/// </summary>
public IPixelSamplingStrategy PixelSamplingStrategy { get; init; } = new DefaultPixelSamplingStrategy();
}

2
src/ImageSharp/Formats/Png/PngEncoderCore.cs

@ -1280,7 +1280,7 @@ internal sealed class PngEncoderCore : IImageEncoderInternals, IDisposable
/// <param name="bitDepth">The bits per component.</param>
/// <param name="image">The image.</param>
private static IndexedImageFrame<TPixel> CreateQuantizedFrame<TPixel>(
IQuantizingEncoderOptions encoder,
QuantizingImageEncoder encoder,
PngColorType colorType,
byte bitDepth,
Image<TPixel> image)

Loading…
Cancel
Save