internal void NextPage(RPLWriter rplWriter, int totalPages) { WriteStartItemToStream(rplWriter); double num = 0.0; ReportSection reportSection = m_sections[0]; _ = m_sections.Count; double num2 = 0.0; List <ReportSection> list = new List <ReportSection>(); List <ReportSection> list2 = new List <ReportSection>(); bool isFirstSectionOnPage = true; RoundedDouble roundedDouble = new RoundedDouble(m_pageContext.UsablePageHeight); for (int i = 0; i < m_sections.Count; i++) { ReportSection reportSection2 = m_sections[i]; ReportSection nextSection = null; if (i < m_sections.Count - 1) { nextSection = m_sections[i + 1]; } double num3 = reportSection2.NextPage(rplWriter, m_pageContext.PageNumber, totalPages, num, roundedDouble.Value - num, nextSection, isFirstSectionOnPage); if (num3 > 0.0) { num += num3; list2.Add(reportSection2); } num2 = Math.Max(num2, reportSection2.LeftEdge); if (reportSection2.Done) { list.Add(reportSection2); } if (roundedDouble == num) { break; } isFirstSectionOnPage = false; } if (num2 == 0.0) { foreach (ReportSection item in list) { m_sections.Remove(item); } } if (rplWriter != null) { reportSection.WriteDelayedSectionHeader(rplWriter, Done); WriteEndItemToStream(rplWriter, list2); } if (m_pageContext.PropertyCacheState == PageContext.CacheState.RPLStream) { m_pageContext.ItemPropsStart = null; m_pageContext.SharedImages = null; } }
internal void SetContext() { ReportSectionCollection reportSections = m_report.ReportSections; for (int i = 0; i < reportSections.Count; i++) { ReportSection reportSection = new ReportSection(reportSections[i], m_pageContext, m_pageSettings, m_pageSettings.SectionPaginationSettings[i]); reportSection.SetContext(); m_sections.Add(reportSection); } }
internal double NextPage(RPLWriter rplWriter, int pageNumber, int totalPages, double top, double availableHeight, ReportSection nextSection, bool isFirstSectionOnPage) { double num = 0.0; bool flag = nextSection == null; if (!flag) { SectionPaginationSettings sectionPaginationSettings = nextSection.SectionPaginationSettings; num = 2.5399999618530273 + sectionPaginationSettings.FooterHeight; PageSection pageHeader = nextSection.ROMReportSection.Page.PageHeader; if (pageHeader != null && pageHeader.PrintBetweenSections) { num += sectionPaginationSettings.HeaderHeight; } } double num2 = 0.0; PageSection pageHeader2 = m_reportSection.Page.PageHeader; PageSection pageFooter = m_reportSection.Page.PageFooter; bool flag2 = pageHeader2?.PrintBetweenSections ?? false; bool flag3 = pageFooter?.PrintBetweenSections ?? false; m_needsHeaderHeight = (isFirstSectionOnPage ? (pageHeader2 != null) : flag2); if (m_needsHeaderHeight) { num2 += m_sectionPageSettings.HeaderHeight; availableHeight -= num2; } if (pageFooter != null) { availableHeight -= m_sectionPageSettings.FooterHeight; } bool flag4 = false; bool flag5 = false; m_reportSection.SetPage(m_pageContext.PageNumberRegion, m_pageContext.Common.GetTotalPagesRegion(pageNumber), pageNumber, totalPages); bool needsReportItemsOnPage = m_reportSection.NeedsReportItemsOnPage; bool flag6 = m_pageContext.PropertyCacheState != PageContext.CacheState.CountPages; m_pageContext.EvaluatePageHeaderFooter = false; if (needsReportItemsOnPage && flag6) { if ((flag2 && !isFirstSectionOnPage) || HasHeaderOnPage(pageNumber, totalPages)) { flag4 = true; } if (HasFooterOnPage(pageNumber, totalPages) || (flag3 && !flag)) { flag5 = true; } if (flag4 || flag5) { m_pageContext.EvaluatePageHeaderFooter = true; } } if (rplWriter != null) { m_columns = new List <ColumnDetail>(m_sectionPageSettings.Columns); WriteStartItemToStream(rplWriter); } long num3 = 0L; if (!Done) { double columnWidth = m_sectionPageSettings.ColumnWidth; m_pageContext.Common.Pagination.CurrentColumnWidth = columnWidth; m_columnHeight = availableHeight; m_pageContext.Common.Pagination.CurrentColumnHeight = m_columnHeight; int num4 = 0; int columns = m_sectionPageSettings.Columns; RoundedDouble roundedDouble = new RoundedDouble(m_topEdge); RoundedDouble roundedDouble2 = new RoundedDouble(m_leftEdge); m_pageContext.VerticalPageNumber = m_verticalPageNumber; while (num4 < columns) { bool anyAncestorHasKT = false; if (m_leftEdge == 0.0) { if (m_pageContext.TextBoxDuplicates != null) { m_pageContext.TextBoxDuplicates = null; m_reportBody.ResolveDuplicates(m_pageContext, m_topEdge, null, recalculate: false); } m_reportBody.CalculateVertical(m_pageContext, m_topEdge, m_topEdge + availableHeight, null, new List <PageItem>(), ref anyAncestorHasKT, hasUnpinnedAncestors: false); m_verticalPageNumber++; m_pageContext.VerticalPageNumber = m_verticalPageNumber; } anyAncestorHasKT = false; m_reportBody.CalculateHorizontal(m_pageContext, m_leftEdge, m_leftEdge + columnWidth, null, new List <PageItem>(), ref anyAncestorHasKT, hasUnpinnedAncestors: false); num3 = m_pageContext.PropertyCacheWriter.BaseStream.Position; m_reportBody.AddToPage(rplWriter, m_pageContext, m_leftEdge, m_topEdge, m_leftEdge + columnWidth, m_topEdge + availableHeight, PageItem.RepeatState.None); rplWriter?.RegisterSectionItemizedData(); m_pageContext.PropertyCacheWriter.BaseStream.Seek(num3, SeekOrigin.Begin); if (rplWriter != null) { m_columns.Add(new ColumnDetail(0.0 - m_leftEdge, 0.0 - m_topEdge, m_reportBody)); } m_leftEdge += columnWidth; roundedDouble2.Value = m_leftEdge; if (num4 == 0 && m_reportBody.ItemPageSizes.Bottom - m_topEdge < availableHeight) { m_columnHeight = m_reportBody.ItemPageSizes.Bottom - m_topEdge; } if (roundedDouble2 >= m_reportBody.ItemPageSizes.Width) { m_leftEdge = 0.0; m_topEdge += availableHeight; roundedDouble.Value = m_topEdge; m_reportBody.ResetHorizontal(spanPages: true, null); m_pageContext.Common.PaginatingHorizontally = false; } else { m_pageContext.Common.PaginatingHorizontally = true; } num4++; if (roundedDouble >= m_reportBody.ItemPageSizes.Bottom) { m_reportBody = null; m_topEdge = 0.0; m_leftEdge = 0.0; break; } } } double num5 = availableHeight - m_columnHeight; if (Done && !flag && pageFooter != null && !flag3) { num5 += m_sectionPageSettings.FooterHeight; } bool flag7 = false; if (num5 < num || flag) { m_columnHeight = availableHeight; flag7 = true; num2 += m_sectionPageSettings.FooterHeight; } else if (flag3) { num2 += m_sectionPageSettings.FooterHeight; } m_itemPageSizes.Height = num2 + m_columnHeight; m_itemPageSizes.Top = top; WriteColumns(rplWriter); m_columns = null; if (Done && flag && totalPages == 0) { totalPages = pageNumber; } if (flag6) { flag4 = ((!isFirstSectionOnPage) ? flag2 : HasHeaderOnPage(pageNumber, totalPages)); flag5 = ((!flag7) ? flag3 : HasFooterOnPage(pageNumber, totalPages)); } if (flag4 || flag5) { m_pageContext.Common.CheckPageNameChanged(); m_reportSection.SetPageName(m_pageContext.PageName); m_reportSection.GetPageSections(); if (flag4 && !IsHeaderUnknown(isFirstSectionOnPage, pageNumber, totalPages)) { RenderHeader(rplWriter); } else { m_header = null; flag4 = false; } if (flag5) { RenderFooter(rplWriter); } else { m_footer = null; } if (rplWriter != null && (flag4 || flag5)) { rplWriter.RegisterSectionHeaderFooter(); } } if (!IsHeaderUnknown(isFirstSectionOnPage, pageNumber, totalPages)) { WriteEndItemToStream(rplWriter); m_wroteEndToStream = true; } else { m_wroteEndToStream = false; } rplWriter?.RegisterPageItemizedData(); return(m_itemPageSizes.Height); }