using System.Drawing;
namespace PaintDotNet
{
///
/// Provides an interface for the methods that UnaryPixelOp and BinaryPixelOp share.
/// For UnaryPixelOp, this produces the function, "dst = F(src)"
/// For BinaryPixelOp, this produces the function, "dst = F(dst, src)"
///
public interface IPixelOp
{
///
/// This version of Apply has the liberty to decompose the rectangle of interest
/// or do whatever types of optimizations it wants to with it. This is generally
/// done to split the Apply operation into multiple threads.
///
void Apply(Surface dst, Point dstOffset, Surface src, Point srcOffset, Size roiSize);
///
/// This is the version of Apply that will always do exactly what you tell it do,
/// without optimizations or otherwise.
///
void ApplyBase(Surface dst, Point dstOffset, Surface src, Point srcOffset, Size roiSize);
///
/// This version of Apply will perform on a scanline, not just a rectangle.
///
void Apply(Surface dst, Point dstOffset, Surface src, Point srcOffset, int scanLength);
}
}