// -----------------------------------------------------------------------
//
// Copyright 2015 MIT Licence. See licence.md for more information.
//
// -----------------------------------------------------------------------
namespace Perspex.Platform
{
using System;
using Perspex.Media;
///
/// Describes a geometry using drawing commands.
///
public interface IStreamGeometryContextImpl : IDisposable
{
///
/// Draws an arc to the specified point.
///
/// The destination point.
/// The radii of an oval whose perimeter is used to draw the angle.
/// The rotation angle of the oval that specifies the curve.
/// true to draw the arc greater than 180 degrees; otherwise, false.
///
/// A value that indicates whether the arc is drawn in the Clockwise or Counterclockwise direction.
///
void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection);
///
/// Begins a new figure.
///
/// The starting point for the figure.
/// Whether the figure is filled.
void BeginFigure(Point startPoint, bool isFilled);
///
/// Draws a Bezier curve to the specified point.
///
/// The first control point used to specify the shape of the curve.
/// The second control point used to specify the shape of the curve.
/// The destination point for the end of the curve.
void BezierTo(Point point1, Point point2, Point point3);
///
/// Draws a line to the specified point.
///
/// The destination point.
void LineTo(Point point);
///
/// Ends the figure started by .
///
/// Whether the figure is closed.
void EndFigure(bool isClosed);
}
}