|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.Drawing.Drawing2D;
using System.Numerics;
namespace System.Drawing.Tests;
public partial class Graphics_GetContextTests
{
[Fact]
public void GetContextInfo_New_DefaultGraphics()
{
using Bitmap image = new(10, 10);
using Graphics graphics = Graphics.FromImage(image);
graphics.GetContextInfo(out PointF offset);
Assert.True(offset.IsEmpty);
graphics.GetContextInfo(out offset, out Region? clip);
Assert.True(offset.IsEmpty);
Assert.Null(clip);
}
[Fact]
public void GetContextInfo_New_Clipping()
{
using Bitmap image = new(10, 10);
using Graphics graphics = Graphics.FromImage(image);
using Region initialClip = new(new Rectangle(1, 2, 9, 10));
graphics.Clip = initialClip;
graphics.GetContextInfo(out PointF offset);
Assert.True(offset.IsEmpty);
graphics.GetContextInfo(out offset, out Region? clip);
Assert.True(offset.IsEmpty);
Assert.NotNull(clip);
Assert.Equal(initialClip.GetBounds(graphics), clip.GetBounds(graphics));
clip.Dispose();
}
[Fact]
public void GetContextInfo_New_Transform()
{
using Bitmap image = new(10, 10);
using Graphics graphics = Graphics.FromImage(image);
graphics.TransformElements = Matrix3x2.CreateTranslation(1, 2);
graphics.GetContextInfo(out PointF offset);
Assert.Equal(new PointF(1, 2), offset);
graphics.GetContextInfo(out offset, out Region? clip);
Assert.Null(clip);
Assert.Equal(new PointF(1, 2), offset);
}
[Fact]
public void GetContextInfo_New_ClipAndTransform()
{
using Bitmap image = new(10, 10);
using Graphics graphics = Graphics.FromImage(image);
using Region initialClip = new(new Rectangle(1, 2, 9, 10));
graphics.Clip = initialClip;
graphics.TransformElements = Matrix3x2.CreateTranslation(1, 2);
graphics.GetContextInfo(out PointF offset);
Assert.Equal(new PointF(1, 2), offset);
graphics.GetContextInfo(out offset, out Region? clip);
Assert.NotNull(clip);
Assert.Equal(new RectangleF(0, 0, 9, 10), clip.GetBounds(graphics));
Assert.Equal(new PointF(1, 2), offset);
clip.Dispose();
}
[Fact]
public void GetContextInfo_New_TransformAndClip()
{
using Bitmap image = new(10, 10);
using Graphics graphics = Graphics.FromImage(image);
using Region initialClip = new(new Rectangle(1, 2, 9, 10));
graphics.TransformElements = Matrix3x2.CreateTranslation(1, 2);
graphics.Clip = initialClip;
graphics.GetContextInfo(out PointF offset);
Assert.Equal(new PointF(1, 2), offset);
graphics.GetContextInfo(out offset, out Region? clip);
Assert.NotNull(clip);
Assert.Equal(new RectangleF(1, 2, 9, 10), clip.GetBounds(graphics));
Assert.Equal(new PointF(1, 2), offset);
clip.Dispose();
}
[Fact]
public void GetContextInfo_New_ClipAndTransformSaveState()
{
using Bitmap image = new(10, 10);
using Graphics graphics = Graphics.FromImage(image);
using Region initialClip = new(new Rectangle(1, 2, 9, 10));
graphics.Clip = initialClip;
graphics.TransformElements = Matrix3x2.CreateTranslation(1, 2);
GraphicsState state = graphics.Save();
graphics.GetContextInfo(out PointF offset);
Assert.Equal(new PointF(2, 4), offset);
graphics.GetContextInfo(out offset, out Region? clip);
Assert.NotNull(clip);
Assert.Equal(new RectangleF(0, 0, 8, 8), clip.GetBounds(graphics));
Assert.Equal(new PointF(2, 4), offset);
clip.Dispose();
}
[Fact]
public void GetContextInfo_New_ClipAndTransformSaveAndRestoreState()
{
using Bitmap image = new(10, 10);
using Graphics graphics = Graphics.FromImage(image);
graphics.SetClip(new Rectangle(1, 2, 9, 10));
graphics.TransformElements = Matrix3x2.CreateTranslation(1, 2);
GraphicsState state = graphics.Save();
graphics.GetContextInfo(out PointF offset, out Region? clip);
graphics.Restore(state);
Assert.NotNull(clip);
Assert.Equal(new RectangleF(0, 0, 8, 8), clip.GetBounds(graphics));
Assert.Equal(new PointF(2, 4), offset);
clip.Dispose();
}
}
|