|
|
|
@ -11,19 +11,23 @@ namespace Avalonia.Rendering.SceneGraph |
|
|
|
/// Initializes a new instance of the <see cref="ClipNode"/> class that represents a
|
|
|
|
/// clip push.
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="transform">The current transform.</param>
|
|
|
|
/// <param name="clip">The clip to push.</param>
|
|
|
|
public ClipNode(Rect clip) |
|
|
|
public ClipNode(Matrix transform, Rect clip) |
|
|
|
{ |
|
|
|
Transform = transform; |
|
|
|
Clip = clip; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Initializes a new instance of the <see cref="ClipNode"/> class that represents a
|
|
|
|
/// clip push.
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="transform">The current transform.</param>
|
|
|
|
/// <param name="clip">The clip to push.</param>
|
|
|
|
public ClipNode(RoundedRect clip) |
|
|
|
public ClipNode(Matrix transform, RoundedRect clip) |
|
|
|
{ |
|
|
|
Transform = transform; |
|
|
|
Clip = clip; |
|
|
|
} |
|
|
|
|
|
|
|
@ -43,23 +47,31 @@ namespace Avalonia.Rendering.SceneGraph |
|
|
|
/// </summary>
|
|
|
|
public RoundedRect? Clip { get; } |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets the transform with which the node will be drawn.
|
|
|
|
/// </summary>
|
|
|
|
public Matrix Transform { get; } |
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
public bool HitTest(Point p) => false; |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Determines if this draw operation equals another.
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="transform">The transform of the other draw operation.</param>
|
|
|
|
/// <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(RoundedRect? clip) => Clip == clip; |
|
|
|
public bool Equals(Matrix transform, RoundedRect? clip) => Transform == transform && Clip == clip; |
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
public void Render(IDrawingContextImpl context) |
|
|
|
{ |
|
|
|
context.Transform = Transform; |
|
|
|
|
|
|
|
if (Clip.HasValue) |
|
|
|
{ |
|
|
|
context.PushClip(Clip.Value); |
|
|
|
|