From 3243be3ec5b248cb999e009e558d4bab88e4692a Mon Sep 17 00:00:00 2001 From: Eliot Jones Date: Wed, 22 Jan 2020 13:45:52 +0000 Subject: [PATCH] change rectangle drawing logic for tests support rotated output rectangles in the visual verification tests. --- .../GenerateLetterBoundingBoxImages.cs | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/UglyToad.PdfPig.Tests/Integration/VisualVerification/GenerateLetterBoundingBoxImages.cs b/src/UglyToad.PdfPig.Tests/Integration/VisualVerification/GenerateLetterBoundingBoxImages.cs index b4033a55..f05a4692 100644 --- a/src/UglyToad.PdfPig.Tests/Integration/VisualVerification/GenerateLetterBoundingBoxImages.cs +++ b/src/UglyToad.PdfPig.Tests/Integration/VisualVerification/GenerateLetterBoundingBoxImages.cs @@ -3,6 +3,7 @@ using System; using System.Drawing; using System.IO; + using PdfPig.Core; using Xunit; public class GenerateLetterBoundingBoxImages @@ -104,21 +105,19 @@ var page = document.GetPage(1); var violetPen = new Pen(Color.BlueViolet, 1); - var greenPen = new Pen(Color.GreenYellow, 1); + var greenPen = new Pen(Color.Crimson, 1); using (var bitmap = new Bitmap(image)) using (var graphics = Graphics.FromImage(bitmap)) { foreach (var word in page.GetWords()) { - graphics.DrawRectangle(greenPen, new Rectangle((int)word.BoundingBox.Left, - imageHeight - (int)word.BoundingBox.Top, (int)word.BoundingBox.Width, (int)word.BoundingBox.Height)); + DrawRectangle(word.BoundingBox, graphics, greenPen, imageHeight); } foreach (var letter in page.Letters) { - graphics.DrawRectangle(violetPen, new Rectangle((int)letter.GlyphRectangle.Left, - imageHeight - (int)(letter.GlyphRectangle.Bottom + letter.GlyphRectangle.Height), (int)Math.Max(1, letter.GlyphRectangle.Width), (int)letter.GlyphRectangle.Height)); + DrawRectangle(letter.GlyphRectangle, graphics, violetPen, imageHeight); } var imageName = $"{file}.jpg"; @@ -135,6 +134,25 @@ } } + private static void DrawRectangle(PdfRectangle rectangle, Graphics graphics, Pen pen, + int imageHeight) + { + int GetY(PdfPoint p) + { + return imageHeight - (int) p.Y; + } + + Point GetPoint(PdfPoint p) + { + return new Point((int)p.X, GetY(p)); + } + + graphics.DrawLine(pen, GetPoint(rectangle.BottomLeft), GetPoint(rectangle.BottomRight)); + graphics.DrawLine(pen, GetPoint(rectangle.BottomRight), GetPoint(rectangle.TopRight)); + graphics.DrawLine(pen, GetPoint(rectangle.TopRight), GetPoint(rectangle.TopLeft)); + graphics.DrawLine(pen, GetPoint(rectangle.TopLeft), GetPoint(rectangle.BottomLeft)); + } + private static Image GetCorrespondingImage(string filename) { var pdf = GetFilename(filename);