using System;
using System.Collections.Generic;
using System.IO;
using Avalonia.Media;
using Avalonia.Media.Imaging;
using Avalonia.Metadata;
namespace Avalonia.Platform
{
///
/// Defines the main platform-specific interface for the rendering subsystem.
///
[Unstable]
public interface IPlatformRenderInterface
{
///
/// Creates an ellipse geometry implementation.
///
/// The bounds of the ellipse.
/// An ellipse geometry..
IGeometryImpl CreateEllipseGeometry(Rect rect);
///
/// Creates a line geometry implementation.
///
/// The start of the line.
/// The end of the line.
/// A line geometry.
IGeometryImpl CreateLineGeometry(Point p1, Point p2);
///
/// Creates a rectangle geometry implementation.
///
/// The bounds of the rectangle.
/// A rectangle.
IGeometryImpl CreateRectangleGeometry(Rect rect);
///
/// Creates a stream geometry implementation.
///
/// An .
IStreamGeometryImpl CreateStreamGeometry();
///
/// Creates a geometry group implementation.
///
/// The fill rule.
/// The geometries to group.
/// A combined geometry.
IGeometryImpl CreateGeometryGroup(FillRule fillRule, IReadOnlyList children);
///
/// Creates a geometry group implementation.
///
/// The combine mode
/// The first geometry.
/// The second geometry.
/// A combined geometry.
IGeometryImpl CreateCombinedGeometry(GeometryCombineMode combineMode, Geometry g1, Geometry g2);
///
/// Created a geometry implementation for the glyph run.
///
/// The glyph run to build a geometry from.
/// The geometry returned contains the combined geometry of all glyphs in the glyph run.
IGeometryImpl BuildGlyphRunGeometry(GlyphRun glyphRun);
///
/// Creates a renderer.
///
///
/// The list of native platform surfaces that can be used for output.
///
/// An .
IRenderTarget CreateRenderTarget(IEnumerable