/////////////////////////////////////////////////////////////////////////////////
// Paint.NET //
// Copyright (C) dotPDN LLC, Rick Brewster, Tom Jackson, and contributors. //
// Portions Copyright (C) Microsoft Corporation. All Rights Reserved. //
// See license-pdn.txt for full licensing and attribution details. //
/////////////////////////////////////////////////////////////////////////////////
using System;
using Cairo;
namespace Pinta.Core
{
///
/// Provides a standard interface for allowing an object to draw itself on to a given Surface.
///
public interface ISurfaceDraw
{
///
/// Draws the object on to the given Surface.
///
/// The Surface to draw to.
void Draw(ImageSurface dst);
///
/// Draws the object on to the given Surface after passing each pixel through
/// the given pixel operation as in: dst = pixelOp(dst, src)
///
/// The Surface to draw to.
/// The pixelOp to use for rendering.
void Draw(ImageSurface dst, PixelOp pixelOp);
///
/// Draws the object on to the given Surface starting at the given (x,y) offset.
///
/// The Surface to draw to.
/// The value to be added to every X coordinate that is used for drawing.
/// The value to be added to every Y coordinate that is used for drawing.
void Draw(ImageSurface dst, int tX, int tY);
///
/// Draws the object on to the given Surface starting at the given (x,y) offset after
/// passing each pixel through the given pixel operation as in: dst = pixelOp(dst, src)
///
/// The Surface to draw to.
/// The value to be added to every X coordinate that is used for drawing.
/// The value to be added to every Y coordinate that is used for drawing.
void Draw(ImageSurface dst, int tX, int tY, PixelOp pixelOp);
}
}