|
|
@@ -1,36 +1,10 @@
|
|
|
-using System;
|
|
|
-using System.Linq;
|
|
|
-using QuestPDF.Drawing.SpacePlan;
|
|
|
-using QuestPDF.Infrastructure;
|
|
|
+using QuestPDF.Infrastructure;
|
|
|
|
|
|
namespace QuestPDF.Elements
|
|
|
{
|
|
|
internal class Rotate : ContainerElement
|
|
|
{
|
|
|
- public int TurnCount { get; set; }
|
|
|
- public int NormalizedTurnCount => (TurnCount % 4 + 4) % 4;
|
|
|
-
|
|
|
- internal override ISpacePlan Measure(Size availableSpace)
|
|
|
- {
|
|
|
- if (NormalizedTurnCount == 0 || NormalizedTurnCount == 2)
|
|
|
- return base.Measure(availableSpace);
|
|
|
-
|
|
|
- availableSpace = new Size(availableSpace.Height, availableSpace.Width);
|
|
|
- var childSpace = base.Measure(availableSpace) as Size;
|
|
|
-
|
|
|
- if (childSpace == null)
|
|
|
- return new Wrap();
|
|
|
-
|
|
|
- var targetSpace = new Size(childSpace.Height, childSpace.Width);
|
|
|
-
|
|
|
- if (childSpace is FullRender)
|
|
|
- return new FullRender(targetSpace);
|
|
|
-
|
|
|
- if (childSpace is PartialRender)
|
|
|
- return new PartialRender(targetSpace);
|
|
|
-
|
|
|
- throw new ArgumentException();
|
|
|
- }
|
|
|
+ public float Angle { get; set; } = 0;
|
|
|
|
|
|
internal override void Draw(Size availableSpace)
|
|
|
{
|
|
|
@@ -38,20 +12,10 @@ namespace QuestPDF.Elements
|
|
|
|
|
|
if (skiaCanvas == null)
|
|
|
return;
|
|
|
-
|
|
|
- var currentMatrix = skiaCanvas.TotalMatrix;
|
|
|
-
|
|
|
- if (NormalizedTurnCount == 1 || NormalizedTurnCount == 2)
|
|
|
- skiaCanvas.Translate(availableSpace.Width, 0);
|
|
|
|
|
|
- if (NormalizedTurnCount == 2 || NormalizedTurnCount == 3)
|
|
|
- skiaCanvas.Translate(0, availableSpace.Height);
|
|
|
-
|
|
|
- skiaCanvas.RotateRadians(NormalizedTurnCount * (float) Math.PI / 2f);
|
|
|
-
|
|
|
- if (NormalizedTurnCount == 1 || NormalizedTurnCount == 3)
|
|
|
- availableSpace = new Size(availableSpace.Height, availableSpace.Width);
|
|
|
+ var currentMatrix = skiaCanvas.TotalMatrix;
|
|
|
|
|
|
+ skiaCanvas.RotateDegrees(Angle);
|
|
|
Child?.Draw(availableSpace);
|
|
|
skiaCanvas.SetMatrix(currentMatrix);
|
|
|
}
|