//
// Copyright (c) James Jackson-South and contributors.
// Licensed under the Apache License, Version 2.0.
//
namespace ImageSharp.Processing
{
using System;
using System.Threading.Tasks;
using ImageSharp.PixelFormats;
using SixLabors.Primitives;
///
/// Encapsulates methods to alter the pixels of an image.
///
/// The pixel format.
public interface IImageProcessor
where TPixel : struct, IPixel
{
///
/// Gets or sets the parallel options for processing tasks in parallel.
///
ParallelOptions ParallelOptions { get; set; }
///
/// Gets or sets a value indicating whether to compress
/// or expand individual pixel colors the value on processing.
///
bool Compand { get; set; }
///
/// Applies the process to the specified portion of the specified .
///
/// The source image. Cannot be null.
///
/// The structure that specifies the portion of the image object to draw.
///
///
/// is null.
///
///
/// doesnt fit the dimension of the image.
///
void Apply(ImageBase source, Rectangle sourceRectangle);
}
}