diff --git a/samples/ControlCatalog/Pages/ImagePage.xaml.cs b/samples/ControlCatalog/Pages/ImagePage.xaml.cs
index 511b01c7ac..5b3169a1b0 100644
--- a/samples/ControlCatalog/Pages/ImagePage.xaml.cs
+++ b/samples/ControlCatalog/Pages/ImagePage.xaml.cs
@@ -70,7 +70,7 @@ namespace ControlCatalog.Pages
3 => new PixelRect(new PixelPoint(bitmapWidth - cropSize.Width, 0), cropSize),
4 => new PixelRect(new PixelPoint(0, bitmapHeight - cropSize.Height), cropSize),
5 => new PixelRect(new PixelPoint(bitmapWidth - cropSize.Width, bitmapHeight - cropSize.Height), cropSize),
- _ => PixelRect.Empty
+ _ => default
};
}
diff --git a/src/Avalonia.Base/CornerRadius.cs b/src/Avalonia.Base/CornerRadius.cs
index d56a0ef19d..1666fac2e1 100644
--- a/src/Avalonia.Base/CornerRadius.cs
+++ b/src/Avalonia.Base/CornerRadius.cs
@@ -61,9 +61,13 @@ namespace Avalonia
public double BottomLeft { get; }
///
- /// Gets a value indicating whether all corner radii are set to 0.
+ /// Gets a value indicating whether the instance has default values (all corner radii are set to 0).
///
- public bool IsEmpty => TopLeft.Equals(0) && IsUniform;
+ public bool IsDefault => TopLeft == 0 && TopRight == 0 && BottomLeft == 0 && BottomRight == 0;
+
+ ///
+ [Obsolete("Use IsDefault instead.")]
+ public bool IsEmpty => IsDefault;
///
/// Gets a value indicating whether all corner radii are equal.
@@ -79,7 +83,6 @@ namespace Avalonia
{
// ReSharper disable CompareOfFloatsByEqualityOperator
return TopLeft == other.TopLeft &&
-
TopRight == other.TopRight &&
BottomRight == other.BottomRight &&
BottomLeft == other.BottomLeft;
diff --git a/src/Avalonia.Base/Media/BoxShadow.cs b/src/Avalonia.Base/Media/BoxShadow.cs
index fa94dd83eb..dd2c23f4ae 100644
--- a/src/Avalonia.Base/Media/BoxShadow.cs
+++ b/src/Avalonia.Base/Media/BoxShadow.cs
@@ -45,7 +45,14 @@ namespace Avalonia.Media
}
}
- public bool IsEmpty => OffsetX == 0 && OffsetY == 0 && Blur == 0 && Spread == 0;
+ ///
+ /// Gets a value indicating whether the instance has default values.
+ ///
+ public bool IsDefault => OffsetX == 0 && OffsetY == 0 && Blur == 0 && Spread == 0;
+
+ ///
+ [Obsolete("Use IsDefault instead.")]
+ public bool IsEmpty => IsDefault;
private readonly static char[] s_Separator = new char[] { ' ', '\t' };
@@ -82,7 +89,7 @@ namespace Avalonia.Media
{
var sb = StringBuilderCache.Acquire();
- if (IsEmpty)
+ if (IsDefault)
{
return "none";
}
diff --git a/src/Avalonia.Base/Media/BoxShadows.cs b/src/Avalonia.Base/Media/BoxShadows.cs
index 4265e4efbc..50ae7699dd 100644
--- a/src/Avalonia.Base/Media/BoxShadows.cs
+++ b/src/Avalonia.Base/Media/BoxShadows.cs
@@ -21,7 +21,7 @@ namespace Avalonia.Media
{
_first = shadow;
_list = null;
- Count = _first.IsEmpty ? 0 : 1;
+ Count = _first.IsDefault ? 0 : 1;
}
public BoxShadows(BoxShadow first, BoxShadow[] rest)
@@ -120,7 +120,7 @@ namespace Avalonia.Media
get
{
foreach(var boxShadow in this)
- if (!boxShadow.IsEmpty && boxShadow.IsInset)
+ if (!boxShadow.IsDefault && boxShadow.IsInset)
return true;
return false;
}
diff --git a/src/Avalonia.Base/Media/FormattedText.cs b/src/Avalonia.Base/Media/FormattedText.cs
index 138e8b79eb..774580415a 100644
--- a/src/Avalonia.Base/Media/FormattedText.cs
+++ b/src/Avalonia.Base/Media/FormattedText.cs
@@ -1379,7 +1379,7 @@ namespace Avalonia.Media
}
}
- if (accumulatedBounds?.PlatformImpl == null || accumulatedBounds.PlatformImpl.Bounds.IsEmpty)
+ if (accumulatedBounds?.PlatformImpl == null || accumulatedBounds.PlatformImpl.Bounds.IsDefault)
{
return null;
}
diff --git a/src/Avalonia.Base/Media/Geometry.cs b/src/Avalonia.Base/Media/Geometry.cs
index c31a6699c2..2019f54c70 100644
--- a/src/Avalonia.Base/Media/Geometry.cs
+++ b/src/Avalonia.Base/Media/Geometry.cs
@@ -30,7 +30,7 @@ namespace Avalonia.Media
///
/// Gets the geometry's bounding rectangle.
///
- public Rect Bounds => PlatformImpl?.Bounds ?? Rect.Empty;
+ public Rect Bounds => PlatformImpl?.Bounds ?? default;
///
/// Gets the platform-specific implementation of the geometry.
@@ -84,7 +84,7 @@ namespace Avalonia.Media
///
/// The stroke thickness.
/// The bounding rectangle.
- public Rect GetRenderBounds(IPen pen) => PlatformImpl?.GetRenderBounds(pen) ?? Rect.Empty;
+ public Rect GetRenderBounds(IPen pen) => PlatformImpl?.GetRenderBounds(pen) ?? default;
///
/// Indicates whether the geometry's fill contains the specified point.
diff --git a/src/Avalonia.Base/Media/GeometryDrawing.cs b/src/Avalonia.Base/Media/GeometryDrawing.cs
index 7df7d25954..26cc2c3cab 100644
--- a/src/Avalonia.Base/Media/GeometryDrawing.cs
+++ b/src/Avalonia.Base/Media/GeometryDrawing.cs
@@ -69,7 +69,7 @@ namespace Avalonia.Media
public override Rect GetBounds()
{
IPen pen = Pen ?? s_boundsPen;
- return Geometry?.GetRenderBounds(pen) ?? Rect.Empty;
+ return Geometry?.GetRenderBounds(pen) ?? default;
}
}
}
diff --git a/src/Avalonia.Base/Media/GlyphRunDrawing.cs b/src/Avalonia.Base/Media/GlyphRunDrawing.cs
index 7e0d5c3c81..242b9913fa 100644
--- a/src/Avalonia.Base/Media/GlyphRunDrawing.cs
+++ b/src/Avalonia.Base/Media/GlyphRunDrawing.cs
@@ -32,7 +32,7 @@
public override Rect GetBounds()
{
- return GlyphRun != null ? new Rect(GlyphRun.Size) : Rect.Empty;
+ return GlyphRun != null ? new Rect(GlyphRun.Size) : default;
}
}
}
diff --git a/src/Avalonia.Base/Media/ImageDrawing.cs b/src/Avalonia.Base/Media/ImageDrawing.cs
index 82f97b52b4..d3e5c4841b 100644
--- a/src/Avalonia.Base/Media/ImageDrawing.cs
+++ b/src/Avalonia.Base/Media/ImageDrawing.cs
@@ -42,7 +42,7 @@ namespace Avalonia.Media
var imageSource = ImageSource;
var rect = Rect;
- if (imageSource is object && !rect.IsEmpty)
+ if (imageSource is object && !rect.IsDefault)
{
context.DrawImage(imageSource, rect);
}
diff --git a/src/Avalonia.Base/Media/Imaging/CroppedBitmap.cs b/src/Avalonia.Base/Media/Imaging/CroppedBitmap.cs
index 70f9fbf567..525a543b70 100644
--- a/src/Avalonia.Base/Media/Imaging/CroppedBitmap.cs
+++ b/src/Avalonia.Base/Media/Imaging/CroppedBitmap.cs
@@ -78,8 +78,8 @@ namespace Avalonia.Media.Imaging
get
{
if (Source is not IBitmap bmp)
- return Size.Empty;
- if (SourceRect.IsEmpty)
+ return default;
+ if (SourceRect.IsDefault)
return Source.Size;
return SourceRect.Size.ToSizeWithDpi(bmp.Dpi);
}
diff --git a/src/Avalonia.Base/Media/TextFormatting/TextLineImpl.cs b/src/Avalonia.Base/Media/TextFormatting/TextLineImpl.cs
index 3241dfd12b..d893468052 100644
--- a/src/Avalonia.Base/Media/TextFormatting/TextLineImpl.cs
+++ b/src/Avalonia.Base/Media/TextFormatting/TextLineImpl.cs
@@ -532,7 +532,7 @@ namespace Avalonia.Media.TextFormatting
var startX = Start;
double currentWidth = 0;
- var currentRect = Rect.Empty;
+ var currentRect = default(Rect);
TextRunBounds lastRunBounds = default;
@@ -748,7 +748,7 @@ namespace Avalonia.Media.TextFormatting
var startX = WidthIncludingTrailingWhitespace;
double currentWidth = 0;
- var currentRect = Rect.Empty;
+ var currentRect = default(Rect);
for (var index = TextRuns.Count - 1; index >= 0; index--)
{
diff --git a/src/Avalonia.Base/PixelRect.cs b/src/Avalonia.Base/PixelRect.cs
index 855ba104ad..469f33e7fd 100644
--- a/src/Avalonia.Base/PixelRect.cs
+++ b/src/Avalonia.Base/PixelRect.cs
@@ -12,6 +12,7 @@ namespace Avalonia
///
/// An empty rectangle.
///
+ [Obsolete("Use the default keyword instead.")]
public static readonly PixelRect Empty = default;
///
@@ -133,9 +134,13 @@ namespace Avalonia
public PixelPoint Center => new PixelPoint(X + (Width / 2), Y + (Height / 2));
///
- /// Gets a value that indicates whether the rectangle is empty.
+ /// Gets a value indicating whether the instance has default values (the rectangle is empty).
///
- public bool IsEmpty => Width == 0 && Height == 0;
+ public bool IsDefault => Width == 0 && Height == 0;
+
+ ///
+ [Obsolete("Use IsDefault instead.")]
+ public bool IsEmpty => IsDefault;
///
/// Checks for equality between two s.
@@ -257,7 +262,7 @@ namespace Avalonia
}
else
{
- return Empty;
+ return default;
}
}
@@ -290,11 +295,11 @@ namespace Avalonia
/// The union.
public PixelRect Union(PixelRect rect)
{
- if (IsEmpty)
+ if (IsDefault)
{
return rect;
}
- else if (rect.IsEmpty)
+ else if (rect.IsDefault)
{
return this;
}
diff --git a/src/Avalonia.Base/Rect.cs b/src/Avalonia.Base/Rect.cs
index a91b089a33..831ab28adc 100644
--- a/src/Avalonia.Base/Rect.cs
+++ b/src/Avalonia.Base/Rect.cs
@@ -18,7 +18,8 @@ namespace Avalonia
///
/// An empty rectangle.
///
- public static readonly Rect Empty = default(Rect);
+ [Obsolete("Use the default keyword instead.")]
+ public static readonly Rect Empty = default;
///
/// The X position.
@@ -169,12 +170,16 @@ namespace Avalonia
public Point Center => new Point(_x + (_width / 2), _y + (_height / 2));
///
- /// Gets a value that indicates whether the rectangle is empty.
+ /// Gets a value indicating whether the instance has default values (the rectangle is empty).
///
// ReSharper disable CompareOfFloatsByEqualityOperator
- public bool IsEmpty => _width == 0 && _height == 0;
+ public bool IsDefault => _width == 0 && _height == 0;
// ReSharper restore CompareOfFloatsByEqualityOperator
+ ///
+ [Obsolete("Use IsDefault instead.")]
+ public bool IsEmpty => IsDefault;
+
///
/// Checks for equality between two s.
///
@@ -390,7 +395,7 @@ namespace Avalonia
}
else
{
- return Empty;
+ return default;
}
}
@@ -457,13 +462,13 @@ namespace Avalonia
///
public Rect Normalize()
{
- Rect rect = this;
+ Rect rect = this;
if(double.IsNaN(rect.Right) || double.IsNaN(rect.Bottom) ||
double.IsNaN(rect.X) || double.IsNaN(rect.Y) ||
double.IsNaN(Height) || double.IsNaN(Width))
{
- return Rect.Empty;
+ return default;
}
if (rect.Width < 0)
@@ -493,11 +498,11 @@ namespace Avalonia
/// The union.
public Rect Union(Rect rect)
{
- if (IsEmpty)
+ if (IsDefault)
{
return rect;
}
- else if (rect.IsEmpty)
+ else if (rect.IsDefault)
{
return this;
}
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs b/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs
index 03859d241f..e6bbba6ec0 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs
@@ -163,7 +163,7 @@ internal class CompositorDrawingContextProxy : IDrawingContextImpl, IDrawingCont
public CompositionDrawList? VisualBrushDrawList { get; set; }
public Size GetRenderTargetSize(IVisualBrush brush)
{
- return VisualBrushDrawList?.Size ?? Size.Empty;
+ return VisualBrushDrawList?.Size ?? default;
}
public void RenderVisualBrush(IDrawingContextImpl context, IVisualBrush brush)
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionDrawListVisual.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionDrawListVisual.cs
index 6cbd2797f9..8dc088fed1 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionDrawListVisual.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionDrawListVisual.cs
@@ -37,7 +37,7 @@ internal class ServerCompositionDrawListVisual : ServerCompositionContainerVisua
{
if (_contentBounds == null)
{
- var rect = Rect.Empty;
+ var rect = default(Rect);
if(_renderCommands!=null)
foreach (var cmd in _renderCommands)
rect = rect.Union(cmd.Item.Bounds);
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs
index 8ecc43dd6e..0fc5cecef3 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs
@@ -90,7 +90,7 @@ namespace Avalonia.Rendering.Composition.Server
Compositor.UpdateServerTime();
- if(_dirtyRect.IsEmpty && !_redrawRequested)
+ if(_dirtyRect.IsDefault && !_redrawRequested)
return;
Revision++;
@@ -119,7 +119,7 @@ namespace Avalonia.Rendering.Composition.Server
_dirtyRect = new Rect(0, 0, layerSize.Width, layerSize.Height);
}
- if (!_dirtyRect.IsEmpty)
+ if (!_dirtyRect.IsDefault)
{
var visualBrushHelper = new CompositorDrawingContextProxy.VisualBrushRenderer();
using (var context = _layer.CreateDrawingContext(visualBrushHelper))
@@ -162,7 +162,7 @@ namespace Avalonia.Rendering.Composition.Server
}
RenderedVisuals = 0;
- _dirtyRect = Rect.Empty;
+ _dirtyRect = default;
}
}
@@ -181,7 +181,7 @@ namespace Avalonia.Rendering.Composition.Server
public void AddDirtyRect(Rect rect)
{
- if(rect.IsEmpty)
+ if(rect.IsDefault)
return;
var snapped = SnapToDevicePixels(rect, Scaling);
DebugEvents?.RectInvalidated(rect);
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.cs
index d724e14298..387998f8d6 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.cs
@@ -37,7 +37,7 @@ namespace Avalonia.Rendering.Composition.Server
return;
currentTransformedClip = currentTransformedClip.Intersect(_combinedTransformedClipBounds);
- if(currentTransformedClip.IsEmpty)
+ if(currentTransformedClip.IsDefault)
return;
Root!.RenderedVisuals++;
@@ -139,7 +139,7 @@ namespace Avalonia.Rendering.Composition.Server
if (ownBounds != _oldOwnContentBounds || positionChanged)
{
_oldOwnContentBounds = ownBounds;
- if (ownBounds.IsEmpty)
+ if (ownBounds.IsDefault)
TransformedOwnContentBounds = default;
else
TransformedOwnContentBounds =
@@ -163,7 +163,7 @@ namespace Avalonia.Rendering.Composition.Server
EffectiveOpacity = Opacity * (Parent?.EffectiveOpacity ?? 1);
IsVisibleInFrame = _parent?.IsVisibleInFrame != false && Visible && EffectiveOpacity > 0.04 && !_isBackface &&
- !_combinedTransformedClipBounds.IsEmpty;
+ !_combinedTransformedClipBounds.IsDefault;
if (wasVisible != IsVisibleInFrame || positionChanged)
{
@@ -192,7 +192,7 @@ namespace Avalonia.Rendering.Composition.Server
void AddDirtyRect(Rect rc)
{
- if(rc == Rect.Empty)
+ if(rc == default)
return;
Root?.AddDirtyRect(rc);
}
diff --git a/src/Avalonia.Base/Rendering/DeferredRenderer.cs b/src/Avalonia.Base/Rendering/DeferredRenderer.cs
index 05aa1d1ea4..0074de26d1 100644
--- a/src/Avalonia.Base/Rendering/DeferredRenderer.cs
+++ b/src/Avalonia.Base/Rendering/DeferredRenderer.cs
@@ -309,7 +309,7 @@ namespace Avalonia.Rendering
///
Size IVisualBrushRenderer.GetRenderTargetSize(IVisualBrush brush)
{
- return TryGetChildScene(_currentDraw)?.Size ?? Size.Empty;
+ return TryGetChildScene(_currentDraw)?.Size ?? default;
}
///
@@ -461,7 +461,7 @@ namespace Avalonia.Rendering
{
clipBounds = node.ClipBounds.Intersect(clipBounds);
- if (!clipBounds.IsEmpty && node.Opacity > 0)
+ if (!clipBounds.IsDefault && node.Opacity > 0)
{
var isLayerRoot = node.Visual == layer;
diff --git a/src/Avalonia.Base/Rendering/DirtyRects.cs b/src/Avalonia.Base/Rendering/DirtyRects.cs
index f4b6a6b6ce..723fe400b3 100644
--- a/src/Avalonia.Base/Rendering/DirtyRects.cs
+++ b/src/Avalonia.Base/Rendering/DirtyRects.cs
@@ -10,6 +10,9 @@ namespace Avalonia.Rendering
{
private List _rects = new List();
+ ///
+ /// Gets a value indicating whether the collection of dirty rectangles is empty.
+ ///
public bool IsEmpty => _rects.Count == 0;
///
@@ -27,7 +30,7 @@ namespace Avalonia.Rendering
///
public void Add(Rect rect)
{
- if (!rect.IsEmpty)
+ if (!rect.IsDefault)
{
for (var i = 0; i < _rects.Count; ++i)
{
diff --git a/src/Avalonia.Base/Rendering/ImmediateRenderer.cs b/src/Avalonia.Base/Rendering/ImmediateRenderer.cs
index 1c797a5348..f588dfd948 100644
--- a/src/Avalonia.Base/Rendering/ImmediateRenderer.cs
+++ b/src/Avalonia.Base/Rendering/ImmediateRenderer.cs
@@ -136,7 +136,7 @@ namespace Avalonia.Rendering
///
public void AddDirty(Visual visual)
{
- if (visual.Bounds != Rect.Empty)
+ if (!visual.Bounds.IsDefault)
{
var m = visual.TransformToVisual(_root);
@@ -201,7 +201,7 @@ namespace Avalonia.Rendering
Size IVisualBrushRenderer.GetRenderTargetSize(IVisualBrush brush)
{
(brush.Visual as IVisualBrushInitialize)?.EnsureInitialized();
- return brush.Visual?.Bounds.Size ?? Size.Empty;
+ return brush.Visual?.Bounds.Size ?? default;
}
///
diff --git a/src/Avalonia.Base/Rendering/SceneGraph/BitmapBlendModeNode.cs b/src/Avalonia.Base/Rendering/SceneGraph/BitmapBlendModeNode.cs
index 98e89f6549..b1190a159b 100644
--- a/src/Avalonia.Base/Rendering/SceneGraph/BitmapBlendModeNode.cs
+++ b/src/Avalonia.Base/Rendering/SceneGraph/BitmapBlendModeNode.cs
@@ -27,7 +27,7 @@ namespace Avalonia.Rendering.SceneGraph
}
///
- public Rect Bounds => Rect.Empty;
+ public Rect Bounds => default;
///
/// Gets the BitmapBlend to be pushed or null if the operation represents a pop.
diff --git a/src/Avalonia.Base/Rendering/SceneGraph/ClipNode.cs b/src/Avalonia.Base/Rendering/SceneGraph/ClipNode.cs
index 90430bed02..e1bfaa4aa3 100644
--- a/src/Avalonia.Base/Rendering/SceneGraph/ClipNode.cs
+++ b/src/Avalonia.Base/Rendering/SceneGraph/ClipNode.cs
@@ -40,7 +40,7 @@ namespace Avalonia.Rendering.SceneGraph
}
///
- public Rect Bounds => Rect.Empty;
+ public Rect Bounds => default;
///
/// Gets the clip to be pushed or null if the operation represents a pop.
diff --git a/src/Avalonia.Base/Rendering/SceneGraph/GeometryClipNode.cs b/src/Avalonia.Base/Rendering/SceneGraph/GeometryClipNode.cs
index 667b66420b..842edf2bcb 100644
--- a/src/Avalonia.Base/Rendering/SceneGraph/GeometryClipNode.cs
+++ b/src/Avalonia.Base/Rendering/SceneGraph/GeometryClipNode.cs
@@ -28,7 +28,7 @@ namespace Avalonia.Rendering.SceneGraph
}
///
- public Rect Bounds => Rect.Empty;
+ public Rect Bounds => default;
///
/// Gets the clip to be pushed or null if the operation represents a pop.
diff --git a/src/Avalonia.Base/Rendering/SceneGraph/OpacityMaskNode.cs b/src/Avalonia.Base/Rendering/SceneGraph/OpacityMaskNode.cs
index 5fd200ddff..3ecc07fa54 100644
--- a/src/Avalonia.Base/Rendering/SceneGraph/OpacityMaskNode.cs
+++ b/src/Avalonia.Base/Rendering/SceneGraph/OpacityMaskNode.cs
@@ -19,7 +19,7 @@ namespace Avalonia.Rendering.SceneGraph
/// The bounds of the mask.
/// Auxiliary data required to draw the brush.
public OpacityMaskNode(IBrush mask, Rect bounds, IDisposable? aux = null)
- : base(Rect.Empty, Matrix.Identity, aux)
+ : base(default, Matrix.Identity, aux)
{
Mask = mask.ToImmutable();
MaskBounds = bounds;
@@ -30,7 +30,7 @@ namespace Avalonia.Rendering.SceneGraph
/// opacity mask pop.
///
public OpacityMaskNode()
- : base(Rect.Empty, Matrix.Identity, null)
+ : base(default, Matrix.Identity, null)
{
}
diff --git a/src/Avalonia.Base/Rendering/SceneGraph/OpacityNode.cs b/src/Avalonia.Base/Rendering/SceneGraph/OpacityNode.cs
index 8fc630588f..e41e639067 100644
--- a/src/Avalonia.Base/Rendering/SceneGraph/OpacityNode.cs
+++ b/src/Avalonia.Base/Rendering/SceneGraph/OpacityNode.cs
@@ -26,7 +26,7 @@ namespace Avalonia.Rendering.SceneGraph
}
///
- public Rect Bounds => Rect.Empty;
+ public Rect Bounds => default;
///
/// Gets the opacity to be pushed or null if the operation represents a pop.
diff --git a/src/Avalonia.Base/Rendering/SceneGraph/SceneBuilder.cs b/src/Avalonia.Base/Rendering/SceneGraph/SceneBuilder.cs
index d54bd3fad8..55ff772772 100644
--- a/src/Avalonia.Base/Rendering/SceneGraph/SceneBuilder.cs
+++ b/src/Avalonia.Base/Rendering/SceneGraph/SceneBuilder.cs
@@ -331,8 +331,8 @@ namespace Avalonia.Rendering.SceneGraph
scene.Size = newSize;
- Rect horizontalDirtyRect = Rect.Empty;
- Rect verticalDirtyRect = Rect.Empty;
+ Rect horizontalDirtyRect = default;
+ Rect verticalDirtyRect = default;
if (newSize.Width > oldSize.Width)
{
@@ -429,7 +429,7 @@ namespace Avalonia.Rendering.SceneGraph
else
{
layer.OpacityMask = null;
- layer.OpacityMaskRect = Rect.Empty;
+ layer.OpacityMaskRect = default;
}
layer.GeometryClip = node.HasAncestorGeometryClip ?
diff --git a/src/Avalonia.Base/Size.cs b/src/Avalonia.Base/Size.cs
index 5f20206200..aec237afae 100644
--- a/src/Avalonia.Base/Size.cs
+++ b/src/Avalonia.Base/Size.cs
@@ -28,8 +28,9 @@ namespace Avalonia
public static readonly Size Infinity = new Size(double.PositiveInfinity, double.PositiveInfinity);
///
- /// A size representing zero
+ /// A size representing zero.
///
+ [Obsolete("Use the default keyword instead.")]
public static readonly Size Empty = new Size(0, 0);
///
@@ -309,9 +310,6 @@ namespace Avalonia
///
/// Gets a value indicating whether the Width and Height values are zero.
///
- public bool IsDefault
- {
- get { return (_width == 0) && (_height == 0); }
- }
+ public bool IsDefault => (_width == 0) && (_height == 0);
}
}
diff --git a/src/Avalonia.Base/Thickness.cs b/src/Avalonia.Base/Thickness.cs
index c8e6d7dfd2..f9e4355edd 100644
--- a/src/Avalonia.Base/Thickness.cs
+++ b/src/Avalonia.Base/Thickness.cs
@@ -97,10 +97,9 @@ namespace Avalonia
///
public double Bottom => _bottom;
- ///
- /// Gets a value indicating whether all sides are set to 0.
- ///
- public bool IsEmpty => Left.Equals(0) && IsUniform;
+ ///
+ [Obsolete("Use IsDefault instead.")]
+ public bool IsEmpty => IsDefault;
///
/// Gets a value indicating whether all sides are equal.
@@ -292,15 +291,13 @@ namespace Avalonia
left = this._left;
top = this._top;
right = this._right;
- bottom = this._bottom;
+ bottom = this._bottom;
}
///
- /// Gets a value indicating whether the left, top, right and bottom thickness values are zero.
+ /// Gets a value indicating whether the instance has default values
+ /// (the left, top, right and bottom values are zero).
///
- public bool IsDefault
- {
- get { return (_left == 0) && (_top == 0) && (_right == 0) && (_bottom == 0); }
- }
+ public bool IsDefault => (_left == 0) && (_top == 0) && (_right == 0) && (_bottom == 0);
}
}
diff --git a/src/Avalonia.Controls.DataGrid/DataGrid.cs b/src/Avalonia.Controls.DataGrid/DataGrid.cs
index fe3445a30a..5dcad83601 100644
--- a/src/Avalonia.Controls.DataGrid/DataGrid.cs
+++ b/src/Avalonia.Controls.DataGrid/DataGrid.cs
@@ -1123,7 +1123,7 @@ namespace Avalonia.Controls
EnsureColumnHeadersVisibility();
if (!newValueCols)
{
- _columnHeadersPresenter.Measure(Size.Empty);
+ _columnHeadersPresenter.Measure(default(Size));
}
else
{
@@ -1164,7 +1164,7 @@ namespace Avalonia.Controls
_topLeftCornerHeader.IsVisible = newValueRows && newValueCols;
if (_topLeftCornerHeader.IsVisible)
{
- _topLeftCornerHeader.Measure(Size.Empty);
+ _topLeftCornerHeader.Measure(default(Size));
}
}
diff --git a/src/Avalonia.Controls.DataGrid/DataGridCheckBoxColumn.cs b/src/Avalonia.Controls.DataGrid/DataGridCheckBoxColumn.cs
index 6b1796e50b..c308312398 100644
--- a/src/Avalonia.Controls.DataGrid/DataGridCheckBoxColumn.cs
+++ b/src/Avalonia.Controls.DataGrid/DataGridCheckBoxColumn.cs
@@ -192,14 +192,14 @@ namespace Avalonia.Controls
void OnLayoutUpdated(object sender, EventArgs e)
{
- if(!editingCheckBox.Bounds.IsEmpty)
+ if(!editingCheckBox.Bounds.IsDefault)
{
editingCheckBox.LayoutUpdated -= OnLayoutUpdated;
ProcessPointerArgs();
}
}
- if(editingCheckBox.Bounds.IsEmpty)
+ if(editingCheckBox.Bounds.IsDefault)
{
editingCheckBox.LayoutUpdated += OnLayoutUpdated;
}
diff --git a/src/Avalonia.Controls.DataGrid/Primitives/DataGridCellsPresenter.cs b/src/Avalonia.Controls.DataGrid/Primitives/DataGridCellsPresenter.cs
index 38d559a031..06a77f0894 100644
--- a/src/Avalonia.Controls.DataGrid/Primitives/DataGridCellsPresenter.cs
+++ b/src/Avalonia.Controls.DataGrid/Primitives/DataGridCellsPresenter.cs
@@ -161,7 +161,7 @@ namespace Avalonia.Controls.Primitives
{
// Clip
RectangleGeometry rg = new RectangleGeometry();
- rg.Rect = Rect.Empty;
+ rg.Rect = default;
cell.Clip = rg;
}
}
diff --git a/src/Avalonia.Controls.DataGrid/Primitives/DataGridColumnHeadersPresenter.cs b/src/Avalonia.Controls.DataGrid/Primitives/DataGridColumnHeadersPresenter.cs
index b34f52f47d..f9b84793c6 100644
--- a/src/Avalonia.Controls.DataGrid/Primitives/DataGridColumnHeadersPresenter.cs
+++ b/src/Avalonia.Controls.DataGrid/Primitives/DataGridColumnHeadersPresenter.cs
@@ -305,7 +305,7 @@ namespace Avalonia.Controls.Primitives
}
if (!OwningGrid.AreColumnHeadersVisible)
{
- return Size.Empty;
+ return default;
}
double height = OwningGrid.ColumnHeaderHeight;
bool autoSizeHeight;
diff --git a/src/Avalonia.Controls.DataGrid/Primitives/DataGridDetailsPresenter.cs b/src/Avalonia.Controls.DataGrid/Primitives/DataGridDetailsPresenter.cs
index 543485b311..07e7708003 100644
--- a/src/Avalonia.Controls.DataGrid/Primitives/DataGridDetailsPresenter.cs
+++ b/src/Avalonia.Controls.DataGrid/Primitives/DataGridDetailsPresenter.cs
@@ -112,7 +112,7 @@ namespace Avalonia.Controls.Primitives
{
if (OwningGrid == null || Children.Count == 0)
{
- return Size.Empty;
+ return default;
}
double desiredWidth = OwningGrid.AreRowDetailsFrozen ?
diff --git a/src/Avalonia.Controls/Flyouts/FlyoutBase.cs b/src/Avalonia.Controls/Flyouts/FlyoutBase.cs
index 3ff248f0be..8455495830 100644
--- a/src/Avalonia.Controls/Flyouts/FlyoutBase.cs
+++ b/src/Avalonia.Controls/Flyouts/FlyoutBase.cs
@@ -435,7 +435,7 @@ namespace Avalonia.Controls.Primitives
{
Size sz;
// Popup.Child can't be null here, it was set in ShowAtCore.
- if (Popup.Child!.DesiredSize == Size.Empty)
+ if (Popup.Child!.DesiredSize.IsDefault)
{
// Popup may not have been shown yet. Measure content
sz = LayoutHelper.MeasureChild(Popup.Child, Size.Infinity, new Thickness());
@@ -457,7 +457,7 @@ namespace Avalonia.Controls.Primitives
PopupPositioning.PopupPositionerConstraintAdjustment.SlideY;
}
- var trgtBnds = Target?.Bounds ?? Rect.Empty;
+ var trgtBnds = Target?.Bounds ?? default;
switch (Placement)
{
diff --git a/src/Avalonia.Controls/LayoutTransformControl.cs b/src/Avalonia.Controls/LayoutTransformControl.cs
index 5668b79e81..766a712c88 100644
--- a/src/Avalonia.Controls/LayoutTransformControl.cs
+++ b/src/Avalonia.Controls/LayoutTransformControl.cs
@@ -91,7 +91,7 @@ namespace Avalonia.Controls
arrangedsize = TransformRoot.Bounds.Size;
// This is the first opportunity under Silverlight to find out the Child's true DesiredSize
- if (IsSizeSmaller(finalSizeTransformed, arrangedsize) && (Size.Empty == _childActualSize))
+ if (IsSizeSmaller(finalSizeTransformed, arrangedsize) && _childActualSize.IsDefault)
{
//// Unfortunately, all the work so far is invalid because the wrong DesiredSize was used
//// Make a note of the actual DesiredSize
@@ -102,7 +102,7 @@ namespace Avalonia.Controls
else
{
// Clear the "need to measure/arrange again" flag
- _childActualSize = Size.Empty;
+ _childActualSize = default;
}
// Return result to perform the transformation
@@ -122,7 +122,7 @@ namespace Avalonia.Controls
}
Size measureSize;
- if (_childActualSize == Size.Empty)
+ if (_childActualSize.IsDefault)
{
// Determine the largest size after the transformation
measureSize = ComputeLargestTransformedSize(availableSize);
@@ -206,7 +206,7 @@ namespace Avalonia.Controls
///
/// Actual DesiredSize of Child element (the value it returned from its MeasureOverride method).
///
- private Size _childActualSize = Size.Empty;
+ private Size _childActualSize = default;
///
/// RenderTransform/MatrixTransform applied to TransformRoot.
@@ -281,7 +281,7 @@ namespace Avalonia.Controls
private Size ComputeLargestTransformedSize(Size arrangeBounds)
{
// Computed largest transformed size
- Size computedSize = Size.Empty;
+ Size computedSize = default;
// Detect infinite bounds and constrain the scenario
bool infiniteWidth = double.IsInfinity(arrangeBounds.Width);
diff --git a/src/Avalonia.Controls/NativeControlHost.cs b/src/Avalonia.Controls/NativeControlHost.cs
index bcf0866129..18dc1b1264 100644
--- a/src/Avalonia.Controls/NativeControlHost.cs
+++ b/src/Avalonia.Controls/NativeControlHost.cs
@@ -145,7 +145,7 @@ namespace Avalonia.Controls
if (IsEffectivelyVisible && bounds.HasValue)
{
- if (bounds.Value.IsEmpty)
+ if (bounds.Value.IsDefault)
return false;
_attachment?.ShowInBounds(bounds.Value);
}
diff --git a/src/Avalonia.Controls/Presenters/ItemsPresenter.cs b/src/Avalonia.Controls/Presenters/ItemsPresenter.cs
index 924c4567f6..96c9b7b5d9 100644
--- a/src/Avalonia.Controls/Presenters/ItemsPresenter.cs
+++ b/src/Avalonia.Controls/Presenters/ItemsPresenter.cs
@@ -77,7 +77,7 @@ namespace Avalonia.Controls.Presenters
}
///
- Size IScrollable.Extent => Virtualizer?.Extent ?? Size.Empty;
+ Size IScrollable.Extent => Virtualizer?.Extent ?? default;
///
Vector IScrollable.Offset
@@ -136,12 +136,12 @@ namespace Avalonia.Controls.Presenters
///
protected override Size MeasureOverride(Size availableSize)
{
- return Virtualizer?.MeasureOverride(availableSize) ?? Size.Empty;
+ return Virtualizer?.MeasureOverride(availableSize) ?? default;
}
protected override Size ArrangeOverride(Size finalSize)
{
- return Virtualizer?.ArrangeOverride(finalSize) ?? Size.Empty;
+ return Virtualizer?.ArrangeOverride(finalSize) ?? default;
}
///
diff --git a/src/Avalonia.Controls/Primitives/PopupPositioning/ManagedPopupPositioner.cs b/src/Avalonia.Controls/Primitives/PopupPositioning/ManagedPopupPositioner.cs
index a80a60350e..62e5f37273 100644
--- a/src/Avalonia.Controls/Primitives/PopupPositioning/ManagedPopupPositioner.cs
+++ b/src/Avalonia.Controls/Primitives/PopupPositioning/ManagedPopupPositioner.cs
@@ -112,7 +112,7 @@ namespace Avalonia.Controls.Primitives.PopupPositioning
?? screens.FirstOrDefault(s => s.Bounds.Intersects(parentGeometry))
?? screens.FirstOrDefault();
- if (targetScreen != null && targetScreen.WorkingArea.IsEmpty)
+ if (targetScreen != null && targetScreen.WorkingArea.IsDefault)
{
return targetScreen.Bounds;
}
diff --git a/src/Avalonia.Controls/Repeater/ViewportManager.cs b/src/Avalonia.Controls/Repeater/ViewportManager.cs
index e24ed37f1e..10e3dd57a0 100644
--- a/src/Avalonia.Controls/Repeater/ViewportManager.cs
+++ b/src/Avalonia.Controls/Repeater/ViewportManager.cs
@@ -465,7 +465,7 @@ namespace Avalonia.Controls
_pendingViewportShift = default;
_unshiftableShift = default;
- if (_visibleWindow.IsEmpty)
+ if (_visibleWindow.IsDefault)
{
// We got cleared.
_layoutExtent = default;
@@ -551,7 +551,7 @@ namespace Avalonia.Controls
private void TryInvalidateMeasure()
{
// Don't invalidate measure if we have an invalid window.
- if (!_visibleWindow.IsEmpty)
+ if (!_visibleWindow.IsDefault)
{
// We invalidate measure instead of just invalidating arrange because
// we don't invalidate measure in UpdateViewport if the view is changing to
diff --git a/src/Avalonia.Controls/Shapes/Shape.cs b/src/Avalonia.Controls/Shapes/Shape.cs
index 1a7218ff2a..e2a13512a5 100644
--- a/src/Avalonia.Controls/Shapes/Shape.cs
+++ b/src/Avalonia.Controls/Shapes/Shape.cs
@@ -292,7 +292,7 @@ namespace Avalonia.Controls.Shapes
return finalSize;
}
- return Size.Empty;
+ return default;
}
internal static (Size size, Matrix transform) CalculateSizeAndTransform(Size availableSize, Rect shapeBounds, Stretch Stretch)
diff --git a/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs b/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs
index be0c7ed7a7..9bb4b34976 100644
--- a/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs
+++ b/src/Avalonia.Headless/HeadlessPlatformRenderInterface.cs
@@ -215,7 +215,7 @@ namespace Avalonia.Headless
class HeadlessStreamingGeometryStub : HeadlessGeometryStub, IStreamGeometryImpl
{
- public HeadlessStreamingGeometryStub() : base(Rect.Empty)
+ public HeadlessStreamingGeometryStub() : base(default)
{
}
diff --git a/src/Browser/Avalonia.Browser/WebEmbeddableControlRoot.cs b/src/Browser/Avalonia.Browser/WebEmbeddableControlRoot.cs
index e389ee98ea..df1a24fa0f 100644
--- a/src/Browser/Avalonia.Browser/WebEmbeddableControlRoot.cs
+++ b/src/Browser/Avalonia.Browser/WebEmbeddableControlRoot.cs
@@ -18,7 +18,7 @@ namespace Avalonia.Browser
_onFirstRender = onFirstRender;
}
- public Rect Bounds => Rect.Empty;
+ public Rect Bounds => default;
public bool HasRendered => _hasRendered;
diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs
index f18330ba8a..848da1bfb6 100644
--- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs
+++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs
@@ -362,7 +362,7 @@ namespace Avalonia.Skia
foreach (var boxShadow in boxShadows)
{
- if (!boxShadow.IsEmpty && !boxShadow.IsInset)
+ if (!boxShadow.IsDefault && !boxShadow.IsInset)
{
using (var shadow = BoxShadowFilter.Create(_boxShadowPaint, boxShadow, _currentOpacity))
{
@@ -418,7 +418,7 @@ namespace Avalonia.Skia
foreach (var boxShadow in boxShadows)
{
- if (!boxShadow.IsEmpty && boxShadow.IsInset)
+ if (!boxShadow.IsDefault && boxShadow.IsInset)
{
using (var shadow = BoxShadowFilter.Create(_boxShadowPaint, boxShadow, _currentOpacity))
{
diff --git a/src/Skia/Avalonia.Skia/GeometryImpl.cs b/src/Skia/Avalonia.Skia/GeometryImpl.cs
index 4037cc4a35..1141763097 100644
--- a/src/Skia/Avalonia.Skia/GeometryImpl.cs
+++ b/src/Skia/Avalonia.Skia/GeometryImpl.cs
@@ -244,7 +244,7 @@ namespace Avalonia.Skia
public void Invalidate()
{
CachedStrokePath?.Dispose();
- CachedGeometryRenderBounds = Rect.Empty;
+ CachedGeometryRenderBounds = default;
_cachedStrokeWidth = default(float);
}
}
diff --git a/src/Skia/Avalonia.Skia/StreamGeometryImpl.cs b/src/Skia/Avalonia.Skia/StreamGeometryImpl.cs
index 86450690e6..df847d2224 100644
--- a/src/Skia/Avalonia.Skia/StreamGeometryImpl.cs
+++ b/src/Skia/Avalonia.Skia/StreamGeometryImpl.cs
@@ -34,7 +34,7 @@ namespace Avalonia.Skia
///
/// Initializes a new instance of the class.
///
- public StreamGeometryImpl() : this(CreateEmptyPath(), Rect.Empty)
+ public StreamGeometryImpl() : this(CreateEmptyPath(), default)
{
}
diff --git a/tests/Avalonia.Base.UnitTests/RectTests.cs b/tests/Avalonia.Base.UnitTests/RectTests.cs
index 95a438b287..c44b328ed5 100644
--- a/tests/Avalonia.Base.UnitTests/RectTests.cs
+++ b/tests/Avalonia.Base.UnitTests/RectTests.cs
@@ -52,7 +52,7 @@ namespace Avalonia.Base.UnitTests
double.PositiveInfinity, double.PositiveInfinity)
.Normalize();
- Assert.Equal(Rect.Empty, result);
+ Assert.Equal(default, result);
}
}
}
diff --git a/tests/Avalonia.Base.UnitTests/Rendering/DeferredRendererTests_HitTesting.cs b/tests/Avalonia.Base.UnitTests/Rendering/DeferredRendererTests_HitTesting.cs
index 52a9f58006..4f11af7327 100644
--- a/tests/Avalonia.Base.UnitTests/Rendering/DeferredRendererTests_HitTesting.cs
+++ b/tests/Avalonia.Base.UnitTests/Rendering/DeferredRendererTests_HitTesting.cs
@@ -403,7 +403,7 @@ namespace Avalonia.Base.UnitTests.Rendering
root.Measure(Size.Infinity);
root.Arrange(new Rect(container.DesiredSize));
- root.Renderer.Paint(Rect.Empty);
+ root.Renderer.Paint(default);
var result = root.Renderer.HitTest(new Point(50, 150), root, null).First();
Assert.Equal(item1, result);
@@ -419,7 +419,7 @@ namespace Avalonia.Base.UnitTests.Rendering
container.InvalidateArrange();
container.Arrange(new Rect(container.DesiredSize));
- root.Renderer.Paint(Rect.Empty);
+ root.Renderer.Paint(default);
result = root.Renderer.HitTest(new Point(50, 150), root, null).First();
Assert.Equal(item2, result);
diff --git a/tests/Avalonia.Base.UnitTests/Rendering/SceneGraph/DrawOperationTests.cs b/tests/Avalonia.Base.UnitTests/Rendering/SceneGraph/DrawOperationTests.cs
index 2fac968206..07d2d672ae 100644
--- a/tests/Avalonia.Base.UnitTests/Rendering/SceneGraph/DrawOperationTests.cs
+++ b/tests/Avalonia.Base.UnitTests/Rendering/SceneGraph/DrawOperationTests.cs
@@ -13,9 +13,9 @@ namespace Avalonia.Base.UnitTests.Rendering.SceneGraph
[Fact]
public void Empty_Bounds_Remain_Empty()
{
- var target = new TestDrawOperation(Rect.Empty, Matrix.Identity, null);
+ var target = new TestDrawOperation(default, Matrix.Identity, null);
- Assert.Equal(Rect.Empty, target.Bounds);
+ Assert.Equal(default, target.Bounds);
}
[Theory]
diff --git a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs
index 08fd777ac6..2d1dad6be0 100644
--- a/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs
+++ b/tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs
@@ -569,8 +569,8 @@ namespace Avalonia.Controls.UnitTests.Presenters
var target = CreateTarget(itemCount: 10);
var items = (IList)target.Items;
target.ApplyTemplate();
- target.Measure(Size.Empty);
- target.Arrange(Rect.Empty);
+ target.Measure(default(Size));
+ target.Arrange(default);
// Check for issue #591: this should not throw.
target.ScrollIntoView(0);
diff --git a/tests/Avalonia.Controls.UnitTests/Shapes/RectangleTests.cs b/tests/Avalonia.Controls.UnitTests/Shapes/RectangleTests.cs
index 8d8ce10d4c..067d709ae1 100644
--- a/tests/Avalonia.Controls.UnitTests/Shapes/RectangleTests.cs
+++ b/tests/Avalonia.Controls.UnitTests/Shapes/RectangleTests.cs
@@ -18,7 +18,7 @@ namespace Avalonia.Controls.UnitTests.Shapes
target.Measure(new Size(100, 100));
var geometry = Assert.IsType(target.RenderedGeometry);
- Assert.Equal(Rect.Empty, geometry.Rect);
+ Assert.Equal(default, geometry.Rect);
}
[Fact]