mirror of https://github.com/SixLabors/ImageSharp
10 changed files with 92 additions and 35 deletions
@ -0,0 +1,38 @@ |
|||||
|
// Copyright (c) Six Labors and contributors.
|
||||
|
// Licensed under the Apache License, Version 2.0.
|
||||
|
|
||||
|
using System; |
||||
|
|
||||
|
using SixLabors.ImageSharp.PixelFormats; |
||||
|
|
||||
|
namespace SixLabors.ImageSharp.Processing.Processors.Quantization |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// Defines an abstraction to represent a quantized image frame where the pixels indexed by a color palette.
|
||||
|
/// </summary>
|
||||
|
/// <typeparam name="TPixel">The pixel format.</typeparam>
|
||||
|
public interface IQuantizedFrame<TPixel> : IDisposable |
||||
|
where TPixel : struct, IPixel<TPixel> |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// Gets the width of this <see cref="QuantizedFrame{TPixel}"/>.
|
||||
|
/// </summary>
|
||||
|
int Width { get; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Gets the height of this <see cref="QuantizedFrame{TPixel}"/>.
|
||||
|
/// </summary>
|
||||
|
int Height { get; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Gets the color palette of this <see cref="QuantizedFrame{TPixel}"/>.
|
||||
|
/// </summary>
|
||||
|
ReadOnlyMemory<TPixel> Palette { get; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Gets the pixels of this <see cref="QuantizedFrame{TPixel}"/>.
|
||||
|
/// </summary>
|
||||
|
/// <returns>The <see cref="Span{T}"/>The pixel span.</returns>
|
||||
|
ReadOnlySpan<byte> GetPixelSpan(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,29 @@ |
|||||
|
// Copyright (c) Six Labors and contributors.
|
||||
|
// Licensed under the Apache License, Version 2.0.
|
||||
|
|
||||
|
using System; |
||||
|
using System.Runtime.CompilerServices; |
||||
|
|
||||
|
using SixLabors.ImageSharp.PixelFormats; |
||||
|
|
||||
|
namespace SixLabors.ImageSharp.Processing.Processors.Quantization |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// Contains extension methods for <see cref="IQuantizedFrame{TPixel}"/>.
|
||||
|
/// </summary>
|
||||
|
public static class QuantizedFrameExtensions |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// Gets the representation of the pixels as a <see cref="Span{T}"/> of contiguous memory
|
||||
|
/// at row <paramref name="rowIndex"/> beginning from the the first pixel on that row.
|
||||
|
/// </summary>
|
||||
|
/// <param name="frame">The <see cref="IQuantizedFrame{TPixel}"/>.</param>
|
||||
|
/// <param name="rowIndex">The row.</param>
|
||||
|
/// <typeparam name="TPixel">The pixel type.</typeparam>
|
||||
|
/// <returns>The pixel row as a <see cref="ReadOnlySpan{T}"/>.</returns>
|
||||
|
[MethodImpl(InliningOptions.ShortMethod)] |
||||
|
public static ReadOnlySpan<byte> GetRowSpan<TPixel>(this IQuantizedFrame<TPixel> frame, int rowIndex) |
||||
|
where TPixel : struct, IPixel<TPixel> |
||||
|
=> frame.GetPixelSpan().Slice(rowIndex * frame.Width, frame.Width); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue