// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using System.Collections.Generic;
using System.IO;
using Avalonia.Media;
namespace Avalonia.Platform
{
///
/// Defines the main platform-specific interface for the rendering subsystem.
///
public interface IPlatformRenderInterface
{
///
/// Creates a formatted text implementation.
///
/// The text.
/// The base typeface.
/// The font size.
/// The text alignment.
/// The text wrapping mode.
/// The text layout constraints.
/// The style spans.
/// An .
IFormattedTextImpl CreateFormattedText(
string text,
Typeface typeface,
double fontSize,
TextAlignment textAlignment,
TextWrapping wrapping,
Size constraint,
IReadOnlyList spans);
///
/// 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 renderer.
///
///
/// The list of native platform surfaces that can be used for output.
///
/// An .
IRenderTarget CreateRenderTarget(IEnumerable