private static MeasuredDocumentPage AddPage(Document document, Size size, Rectangle contentArea) { var page = new MeasuredDocumentPage(document) { Size = size, ContentArea = contentArea }; page.Index = document.Pages.Count; document.Pages.Add(page); return(page); }
private static void FitFlex(MeasuredDocumentPage page, LinkedList <Measurement> flexList, ref double height) { var head = flexList.First; while (head != null) { var result = TryFitMeasurement(page, head.Value, flexList, true, ref height); var previous = head; head = head.Next; if (result == FitResult.Continue) { flexList.Remove(previous); } } }
private static FitResult TryFitMeasurement(MeasuredDocumentPage page, Measurement measurement, LinkedList <Measurement> flexList, bool flexMode, ref double height) { var size = measurement.TotalSize + measurement.AccumulatedExtra.TotalSize; if (measurement.AccumulatedExtra.Subs.Count > 0) { height -= 5; } if (size.Height > height) { if (measurement.Flexible) { if (flexMode) { return(FitResult.Stop); } else { flexList.AddLast(measurement); return(FitResult.Enqueue); } } else { return(FitResult.AddPage); } } if (measurement.Element.Page == null) { measurement.Element.Page = page; } height -= size.Height; page.Measurements.Add(measurement); return(FitResult.Continue); }