// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Processing
{
///
/// Brush represents a logical configuration of a brush which can be used to source pixel colors
///
///
/// A brush is a simple class that will return an that will perform the
/// logic for retrieving pixel values for specific locations.
///
public interface IBrush
{
///
/// Creates the applicator for this brush.
///
/// The pixel type.
/// The configuration instance to use when performing operations.
/// The graphic options.
/// The source image.
/// The region the brush will be applied to.
///
/// The for this brush.
///
///
/// The when being applied to things like shapes would usually be the
/// bounding box of the shape not necessarily the bounds of the whole image.
///
BrushApplicator CreateApplicator(
Configuration configuration,
GraphicsOptions options,
ImageFrame source,
RectangleF region)
where TPixel : struct, IPixel;
}
}