@ -0,0 +1,64 @@ |
|||
using System; |
|||
using Avalonia.Platform; |
|||
|
|||
namespace Avalonia.Rendering.SceneGraph |
|||
{ |
|||
/// <summary>
|
|||
/// A node in the scene graph which represents a clip push or pop.
|
|||
/// </summary>
|
|||
internal class ClipNode : IDrawOperation |
|||
{ |
|||
/// <summary>
|
|||
/// Initializes a new instance of the <see cref="ClipNode"/> class that represents an
|
|||
/// clip push.
|
|||
/// </summary>
|
|||
/// <param name="clip">The clip to push.</param>
|
|||
public ClipNode(Rect clip) |
|||
{ |
|||
Clip = clip; |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// Initializes a new instance of the <see cref="ClipNode"/> class that represents an
|
|||
/// opacity pop.
|
|||
/// </summary>
|
|||
public ClipNode() |
|||
{ |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public Rect Bounds => Rect.Empty; |
|||
|
|||
/// <summary>
|
|||
/// Gets the opacity to be pushed or null if the operation represents a pop.
|
|||
/// </summary>
|
|||
public Rect? Clip { get; } |
|||
|
|||
/// <inheritdoc/>
|
|||
public bool HitTest(Point p) => false; |
|||
|
|||
/// <summary>
|
|||
/// Determines if this draw operation equals another.
|
|||
/// </summary>
|
|||
/// <param name="clip">The clip of the other draw operation.</param>
|
|||
/// <returns>True if the draw operations are the same, otherwise false.</returns>
|
|||
/// <remarks>
|
|||
/// The properties of the other draw operation are passed in as arguments to prevent
|
|||
/// allocation of a not-yet-constructed draw operation object.
|
|||
/// </remarks>
|
|||
public bool Equals(Rect? clip) => Clip == clip; |
|||
|
|||
/// <inheritdoc/>
|
|||
public void Render(IDrawingContextImpl context) |
|||
{ |
|||
if (Clip.HasValue) |
|||
{ |
|||
context.PushClip(Clip.Value); |
|||
} |
|||
else |
|||
{ |
|||
context.PopClip(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 807 B |
|
Before Width: | Height: | Size: 612 B After Width: | Height: | Size: 988 B |
|
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 807 B |
|
Before Width: | Height: | Size: 942 B After Width: | Height: | Size: 988 B |
|
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 807 B |
|
Before Width: | Height: | Size: 942 B After Width: | Height: | Size: 988 B |