using System; using System.Collections.Generic; using System.Text; namespace PDFPatcher.Model { [System.Diagnostics.DebuggerDisplay("{Direction}({Region.Top},{Region.Left})Lines={Lines.Count}")] sealed class TextRegion { internal WritingDirection Direction { get; set; } internal Bound Region { get; private set; } /// /// 获取文本区域中的行。 /// 不应该调用此属性的 Add 方法添加行,而应使用 方法。 /// internal List Lines { get; private set; } internal TextRegion() { Lines = new List(); } internal TextRegion(TextLine text) : this() { Region = new Bound(text.Region); AddLine(text); } internal void AddLine(TextLine line) { if (Direction == WritingDirection.Unknown) { var d = Region.GetDistance(line.Region, WritingDirection.Unknown); Direction = (d.Location == DistanceInfo.Placement.Up || d.Location == DistanceInfo.Placement.Down) ? WritingDirection.Vertical : (d.Location == DistanceInfo.Placement.Left || d.Location == DistanceInfo.Placement.Right) ? WritingDirection.Horizontal : WritingDirection.Unknown; } Lines.Add(line); Region.Merge(line.Region); } } }