diff --git a/api/Avalonia.nupkg.xml b/api/Avalonia.nupkg.xml
index ea0bf4b88c..32ab43f84f 100644
--- a/api/Avalonia.nupkg.xml
+++ b/api/Avalonia.nupkg.xml
@@ -13,6 +13,12 @@
baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+ CP0001
+ T:Avalonia.Platform.IGeometryContext2
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
CP0001
T:Avalonia.Controls.Primitives.IScrollable
@@ -37,6 +43,12 @@
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0001
+ T:Avalonia.Platform.IGeometryContext2
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
CP0001
T:Avalonia.Controls.Primitives.IScrollable
@@ -85,6 +97,30 @@
baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+ CP0002
+ M:Avalonia.Media.StreamGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Media.StreamGeometryContext.CubicBezierTo(Avalonia.Point,Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Media.StreamGeometryContext.LineTo(Avalonia.Point)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Media.StreamGeometryContext.QuadraticBezierTo(Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
CP0002
M:Avalonia.Platform.IDrawingContextImplWithEffects.PushEffect(Avalonia.Media.IEffect)
@@ -97,6 +133,54 @@
baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+ CP0002
+ M:Avalonia.Platform.IGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Platform.IGeometryContext.CubicBezierTo(Avalonia.Point,Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Platform.IGeometryContext.LineTo(Avalonia.Point)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Platform.IGeometryContext.QuadraticBezierTo(Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Visuals.Platform.PathGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Visuals.Platform.PathGeometryContext.CubicBezierTo(Avalonia.Point,Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Visuals.Platform.PathGeometryContext.LineTo(Avalonia.Point)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Visuals.Platform.PathGeometryContext.QuadraticBezierTo(Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
CP0002
F:Avalonia.Controls.TextBlock.LetterSpacingProperty
@@ -283,6 +367,30 @@
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0002
+ M:Avalonia.Media.StreamGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Media.StreamGeometryContext.CubicBezierTo(Avalonia.Point,Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Media.StreamGeometryContext.LineTo(Avalonia.Point)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Media.StreamGeometryContext.QuadraticBezierTo(Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
CP0002
M:Avalonia.Platform.IDrawingContextImplWithEffects.PushEffect(Avalonia.Media.IEffect)
@@ -295,6 +403,54 @@
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0002
+ M:Avalonia.Platform.IGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Platform.IGeometryContext.CubicBezierTo(Avalonia.Point,Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Platform.IGeometryContext.LineTo(Avalonia.Point)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Platform.IGeometryContext.QuadraticBezierTo(Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Visuals.Platform.PathGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Visuals.Platform.PathGeometryContext.CubicBezierTo(Avalonia.Point,Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Visuals.Platform.PathGeometryContext.LineTo(Avalonia.Point)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0002
+ M:Avalonia.Visuals.Platform.PathGeometryContext.QuadraticBezierTo(Avalonia.Point,Avalonia.Point)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
CP0002
F:Avalonia.Controls.TextBlock.LetterSpacingProperty
@@ -487,6 +643,30 @@
baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+ CP0006
+ M:Avalonia.Platform.IGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection,System.Boolean)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0006
+ M:Avalonia.Platform.IGeometryContext.CubicBezierTo(Avalonia.Point,Avalonia.Point,Avalonia.Point,System.Boolean)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0006
+ M:Avalonia.Platform.IGeometryContext.LineTo(Avalonia.Point,System.Boolean)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0006
+ M:Avalonia.Platform.IGeometryContext.QuadraticBezierTo(Avalonia.Point,Avalonia.Point,System.Boolean)
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
CP0006
M:Avalonia.Input.Platform.IClipboard.SetDataAsync(Avalonia.Input.IAsyncDataTransfer)
@@ -595,6 +775,30 @@
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0006
+ M:Avalonia.Platform.IGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection,System.Boolean)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0006
+ M:Avalonia.Platform.IGeometryContext.CubicBezierTo(Avalonia.Point,Avalonia.Point,Avalonia.Point,System.Boolean)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0006
+ M:Avalonia.Platform.IGeometryContext.LineTo(Avalonia.Point,System.Boolean)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+
+ CP0006
+ M:Avalonia.Platform.IGeometryContext.QuadraticBezierTo(Avalonia.Point,Avalonia.Point,System.Boolean)
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
CP0006
M:Avalonia.Platform.IPlatformRenderInterfaceImportedImage.SnapshotWithTimelineSemaphores(Avalonia.Platform.IPlatformRenderInterfaceImportedSemaphore,System.UInt64,Avalonia.Platform.IPlatformRenderInterfaceImportedSemaphore,System.UInt64)
@@ -685,6 +889,18 @@
baseline/Avalonia/lib/netstandard2.0/Avalonia.OpenGL.dll
current/Avalonia/lib/netstandard2.0/Avalonia.OpenGL.dll
+
+ CP0008
+ T:Avalonia.Media.StreamGeometryContext
+ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
+ current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+
+ CP0008
+ T:Avalonia.Media.StreamGeometryContext
+ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
+ current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
CP0009
T:Avalonia.Platform.Screen
diff --git a/src/Avalonia.Base/Media/StreamGeometryContext.cs b/src/Avalonia.Base/Media/StreamGeometryContext.cs
index c8072564b1..05c17f2b4d 100644
--- a/src/Avalonia.Base/Media/StreamGeometryContext.cs
+++ b/src/Avalonia.Base/Media/StreamGeometryContext.cs
@@ -10,7 +10,7 @@ namespace Avalonia.Media
/// of is obtained by calling
/// .
///
- public class StreamGeometryContext : IGeometryContext, IGeometryContext2
+ public class StreamGeometryContext : IGeometryContext
{
private readonly IStreamGeometryContextImpl _impl;
@@ -34,15 +34,13 @@ namespace Avalonia.Media
_impl.SetFillRule(fillRule);
}
-
- ///
- public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection)
+ ///
+ public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked = true)
{
- _impl.ArcTo(point, size, rotationAngle, isLargeArc, sweepDirection);
+ _impl.ArcTo(point, size, rotationAngle, isLargeArc, sweepDirection, isStroked);
_currentPoint = point;
}
-
///
/// Draws an arc to the specified point using polylines, quadratic or cubic Bezier curves
/// Significantly more precise when drawing elliptic arcs with extreme width:height ratios.
@@ -59,34 +57,32 @@ namespace Avalonia.Media
PreciseEllipticArcHelper.ArcTo(this, _currentPoint, point, size, rotationAngle, isLargeArc, sweepDirection);
}
-
///
- public void BeginFigure(Point startPoint, bool isFilled)
+ public void BeginFigure(Point startPoint, bool isFilled = true)
{
_impl.BeginFigure(startPoint, isFilled);
_currentPoint = startPoint;
}
///
- public void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint)
+ public void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint, bool isStroked = true)
{
- _impl.CubicBezierTo(controlPoint1, controlPoint2, endPoint);
+ _impl.CubicBezierTo(controlPoint1, controlPoint2, endPoint, isStroked);
_currentPoint = endPoint;
}
///
- public void QuadraticBezierTo(Point controlPoint , Point endPoint)
+ public void QuadraticBezierTo(Point controlPoint, Point endPoint, bool isStroked = true)
{
- _impl.QuadraticBezierTo(controlPoint , endPoint);
+ _impl.QuadraticBezierTo(controlPoint, endPoint, isStroked);
_currentPoint = endPoint;
}
-
///
- public void LineTo(Point endPoint)
+ public void LineTo(Point point, bool isStroked = true)
{
- _impl.LineTo(endPoint);
- _currentPoint = endPoint;
+ _impl.LineTo(point, isStroked);
+ _currentPoint = point;
}
///
@@ -102,46 +98,5 @@ namespace Avalonia.Media
{
_impl.Dispose();
}
-
- ///
- public void LineTo(Point point, bool isStroked)
- {
- if (_impl is IGeometryContext2 context2)
- context2.LineTo(point, isStroked);
- else
- _impl.LineTo(point);
-
- _currentPoint = point;
- }
-
- public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked)
- {
- if (_impl is IGeometryContext2 context2)
- context2.ArcTo(point, size, rotationAngle, isLargeArc, sweepDirection, isStroked);
- else
- _impl.ArcTo(point, size, rotationAngle, isLargeArc, sweepDirection);
-
- _currentPoint = point;
- }
-
- public void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint, bool isStroked)
- {
- if (_impl is IGeometryContext2 context2)
- context2.CubicBezierTo(controlPoint1, controlPoint2, endPoint, isStroked);
- else
- _impl.CubicBezierTo(controlPoint1, controlPoint2, endPoint);
-
- _currentPoint = endPoint;
- }
-
- public void QuadraticBezierTo(Point controlPoint, Point endPoint, bool isStroked)
- {
- if (_impl is IGeometryContext2 context2)
- context2.QuadraticBezierTo(controlPoint, endPoint, isStroked);
- else
- _impl.QuadraticBezierTo(controlPoint, endPoint);
-
- _currentPoint = endPoint;
- }
}
}
diff --git a/src/Avalonia.Base/Platform/IGeometryContext.cs b/src/Avalonia.Base/Platform/IGeometryContext.cs
index 614b331761..4305dccd3f 100644
--- a/src/Avalonia.Base/Platform/IGeometryContext.cs
+++ b/src/Avalonia.Base/Platform/IGeometryContext.cs
@@ -18,7 +18,8 @@ namespace Avalonia.Platform
///
/// 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);
+ /// Whether the segment is stroked
+ void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked = true);
///
/// Begins a new figure.
@@ -33,20 +34,23 @@ namespace Avalonia.Platform
/// 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 CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint);
+ /// Whether the segment is stroked
+ void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint, bool isStroked = true);
///
/// Draws a quadratic Bezier curve to the specified point
///
- /// Control point
- /// DestinationPoint
- void QuadraticBezierTo(Point controlPoint , Point endPoint);
+ /// The control point used to specify the shape of the curve.
+ /// The destination point for the end of the curve.
+ /// Whether the segment is stroked
+ void QuadraticBezierTo(Point controlPoint, Point endPoint, bool isStroked = true);
///
/// Draws a line to the specified point.
///
- /// The destination point.
- void LineTo(Point endPoint);
+ /// The destination point.
+ /// Whether the segment is stroked
+ void LineTo(Point point, bool isStroked = true);
///
/// Ends the figure started by .
diff --git a/src/Avalonia.Base/Platform/IGeometryContext2.cs b/src/Avalonia.Base/Platform/IGeometryContext2.cs
deleted file mode 100644
index 4142430e9d..0000000000
--- a/src/Avalonia.Base/Platform/IGeometryContext2.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using Avalonia.Media;
-
-namespace Avalonia.Platform
-{
- // TODO12 combine with IGeometryContext
- public interface IGeometryContext2 : IGeometryContext
- {
- ///
- /// Draws a line to the specified point.
- ///
- /// The destination point.
- /// Whether the segment is stroked
- void LineTo(Point point, bool isStroked);
-
- ///
- /// 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 (in radians) 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.
- ///
- /// Whether the segment is stroked
- void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked);
-
- ///
- /// 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.
- /// Whether the segment is stroked
- void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint, bool isStroked);
-
- ///
- /// Draws a quadratic Bezier curve to the specified point
- ///
- /// Control point
- /// DestinationPoint
- /// Whether the segment is stroked
- void QuadraticBezierTo(Point controlPoint, Point endPoint, bool isStroked);
- }
-
-}
diff --git a/src/Avalonia.Base/Platform/PathGeometryContext.cs b/src/Avalonia.Base/Platform/PathGeometryContext.cs
index bcb4f2a272..a20c7cf26b 100644
--- a/src/Avalonia.Base/Platform/PathGeometryContext.cs
+++ b/src/Avalonia.Base/Platform/PathGeometryContext.cs
@@ -21,7 +21,7 @@ namespace Avalonia.Visuals.Platform
}
///
- public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection)
+ public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked = true)
{
var arcSegment = new ArcSegment
{
@@ -29,7 +29,8 @@ namespace Avalonia.Visuals.Platform
RotationAngle = rotationAngle,
IsLargeArc = isLargeArc,
SweepDirection = sweepDirection,
- Point = point
+ Point = point,
+ IsStroked = isStroked
};
CurrentFigureSegments().Add(arcSegment);
@@ -47,27 +48,39 @@ namespace Avalonia.Visuals.Platform
}
///
- public void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint)
+ public void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint, bool isStroked = true)
{
- var bezierSegment = new BezierSegment { Point1 = controlPoint1, Point2 = controlPoint2, Point3 = endPoint };
+ var bezierSegment = new BezierSegment
+ {
+ Point1 = controlPoint1,
+ Point2 = controlPoint2,
+ Point3 = endPoint,
+ IsStroked = isStroked
+ };
CurrentFigureSegments().Add(bezierSegment);
}
///
- public void QuadraticBezierTo(Point controlPoint , Point endPoint)
+ public void QuadraticBezierTo(Point controlPoint , Point endPoint, bool isStroked = true)
{
- var quadraticBezierSegment = new QuadraticBezierSegment { Point1 = controlPoint , Point2 = endPoint };
+ var quadraticBezierSegment = new QuadraticBezierSegment
+ {
+ Point1 = controlPoint,
+ Point2 = endPoint,
+ IsStroked = isStroked
+ };
CurrentFigureSegments().Add(quadraticBezierSegment);
}
///
- public void LineTo(Point endPoint)
+ public void LineTo(Point point, bool isStroked = true)
{
var lineSegment = new LineSegment
{
- Point = endPoint
+ Point = point,
+ IsStroked = isStroked
};
CurrentFigureSegments().Add(lineSegment);
diff --git a/src/Headless/Avalonia.Headless/HeadlessPlatformRenderInterface.cs b/src/Headless/Avalonia.Headless/HeadlessPlatformRenderInterface.cs
index 4bcc81846c..0a29b9a5b8 100644
--- a/src/Headless/Avalonia.Headless/HeadlessPlatformRenderInterface.cs
+++ b/src/Headless/Avalonia.Headless/HeadlessPlatformRenderInterface.cs
@@ -313,25 +313,25 @@ namespace Avalonia.Headless
_parent.Bounds = CalculateBounds();
}
- public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection)
+ public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked = true)
=> Track(point);
public void BeginFigure(Point startPoint, bool isFilled = true) => Track(startPoint);
- public void CubicBezierTo(Point point1, Point point2, Point point3)
+ public void CubicBezierTo(Point point1, Point point2, Point point3, bool isStroked = true)
{
Track(point1);
Track(point2);
Track(point3);
}
- public void QuadraticBezierTo(Point control, Point endPoint)
+ public void QuadraticBezierTo(Point control, Point endPoint, bool isStroked = true)
{
Track(control);
Track(endPoint);
}
- public void LineTo(Point point) => Track(point);
+ public void LineTo(Point point, bool isStroked = true) => Track(point);
public void EndFigure(bool isClosed)
{
diff --git a/src/Skia/Avalonia.Skia/StreamGeometryImpl.cs b/src/Skia/Avalonia.Skia/StreamGeometryImpl.cs
index 940a1c7247..f56cd274bf 100644
--- a/src/Skia/Avalonia.Skia/StreamGeometryImpl.cs
+++ b/src/Skia/Avalonia.Skia/StreamGeometryImpl.cs
@@ -1,5 +1,3 @@
-using System.Diagnostics.CodeAnalysis;
-using System.Drawing;
using Avalonia.Media;
using Avalonia.Platform;
using SkiaSharp;
@@ -78,7 +76,7 @@ namespace Avalonia.Skia
///
/// A Skia implementation of a .
///
- private class StreamContext : IStreamGeometryContextImpl, IGeometryContext2
+ private class StreamContext : IStreamGeometryContextImpl
{
private readonly StreamGeometryImpl _geometryImpl;
private SKPath Stroke => _geometryImpl._strokePath;
@@ -122,33 +120,7 @@ namespace Avalonia.Skia
}
///
- public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection)
- {
- var arc = isLargeArc ? SKPathArcSize.Large : SKPathArcSize.Small;
- var sweep = sweepDirection == SweepDirection.Clockwise
- ? SKPathDirection.Clockwise
- : SKPathDirection.CounterClockwise;
- Stroke.ArcTo(
- (float)size.Width,
- (float)size.Height,
- (float)rotationAngle,
- arc,
- sweep,
- (float)point.X,
- (float)point.Y);
- if (Duplicate)
- Fill.ArcTo(
- (float)size.Width,
- (float)size.Height,
- (float)rotationAngle,
- arc,
- sweep,
- (float)point.X,
- (float)point.Y);
- }
-
- ///
- public void BeginFigure(Point startPoint, bool isFilled)
+ public void BeginFigure(Point startPoint, bool isFilled = true)
{
if (!isFilled)
EnsureSeparateFillPath();
@@ -161,30 +133,6 @@ namespace Avalonia.Skia
Fill.MoveTo((float)startPoint.X, (float)startPoint.Y);
}
- ///
- public void CubicBezierTo(Point point1, Point point2, Point point3)
- {
- Stroke.CubicTo((float)point1.X, (float)point1.Y, (float)point2.X, (float)point2.Y, (float)point3.X, (float)point3.Y);
- if (Duplicate)
- Fill.CubicTo((float)point1.X, (float)point1.Y, (float)point2.X, (float)point2.Y, (float)point3.X, (float)point3.Y);
- }
-
- ///
- public void QuadraticBezierTo(Point point1, Point point2)
- {
- Stroke.QuadTo((float)point1.X, (float)point1.Y, (float)point2.X, (float)point2.Y);
- if (Duplicate)
- Fill.QuadTo((float)point1.X, (float)point1.Y, (float)point2.X, (float)point2.Y);
- }
-
- ///
- public void LineTo(Point point)
- {
- Stroke.LineTo((float)point.X, (float)point.Y);
- if (Duplicate)
- Fill.LineTo((float)point.X, (float)point.Y);
- }
-
///
public void EndFigure(bool isClosed)
{
@@ -209,7 +157,7 @@ namespace Avalonia.Skia
}
///
- public void LineTo(Point point, bool isStroked)
+ public void LineTo(Point point, bool isStroked = true)
{
if (isStroked)
{
@@ -225,7 +173,7 @@ namespace Avalonia.Skia
}
///
- public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked)
+ public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked = true)
{
var arc = isLargeArc ? SKPathArcSize.Large : SKPathArcSize.Small;
var sweep = sweepDirection == SweepDirection.Clockwise
@@ -260,7 +208,7 @@ namespace Avalonia.Skia
}
///
- public void CubicBezierTo(Point point1, Point point2, Point point3, bool isStroked)
+ public void CubicBezierTo(Point point1, Point point2, Point point3, bool isStroked = true)
{
if (isStroked)
{
@@ -276,7 +224,7 @@ namespace Avalonia.Skia
}
///
- public void QuadraticBezierTo(Point point1, Point point2, bool isStroked)
+ public void QuadraticBezierTo(Point point1, Point point2, bool isStroked = true)
{
if (isStroked)
{