From 67bba2a40f0eea8831df8d71f161c88243b642d3 Mon Sep 17 00:00:00 2001 From: BobLd <38405645+BobLd@users.noreply.github.com> Date: Sat, 20 Jun 2020 15:55:19 +0100 Subject: [PATCH] update RecursiveXYCut code with RecursiveXYCutOptions --- Document-Layout-Analysis.md | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/Document-Layout-Analysis.md b/Document-Layout-Analysis.md index 4a59de3..f8e3a7b 100644 --- a/Document-Layout-Analysis.md +++ b/Document-Layout-Analysis.md @@ -136,23 +136,33 @@ The method can be tailored by providing a __minimum block width__, and __horizon - Minimum block width is set to 1/3 of page width: ```csharp -var blocks = RecursiveXYCut.Instance.GetBlocks(words, page.Width / 3.0); +var blocks = RecursiveXYCut.Instance.GetBlocks(words, + new RecursiveXYCut.RecursiveXYCutOptions() + { + MinimumWidth = page.Width / 3.0 + }); ``` - Average of the page letters' height and width is used as gap size (the values won’t change), and minimum block width is set to 1/3 of page width: ```csharp var blocks = RecursiveXYCut.Instance.GetBlocks(words, - page.Width / 3m, - page.Letters.Average(l => l.GlyphRectangle.Width), - page.Letters.Average(l => l.GlyphRectangle.Height)); + new RecursiveXYCut.RecursiveXYCutOptions() + { + MinimumWidth = page.Width / 3.0, + DominantFontWidthFunc = _ => page.Letters.Average(l => l.GlyphRectangle.Width), + DominantFontHeightFunc = _ => page.Letters.Average(l => l.GlyphRectangle.Height) + }); ``` - A function that will be applied to each block letters’ height and width can also be provided. Here we use the average and minimum block width is set to 1/3 of page width: ```csharp var blocks = RecursiveXYCut.Instance.GetBlocks(words, - page.Width / 3m, - width => width.Average(), - height => height.Average()); + new RecursiveXYCut.RecursiveXYCutOptions() + { + MinimumWidth = page.Width / 3.0, + DominantFontWidthFunc = letters => letters.Select(l => l.GlyphRectangle.Width).Average(), + DominantFontHeightFunc = letters => letters.Select(l => l.GlyphRectangle.Height).Average() + }); ``` ### Results