Esempio n. 1
0
        internal void CalculateDelayedFooter(RPLWriter rplWriter, Interactivity interactivity)
        {
            PageSection pageFooter  = m_reportSectionDef.Page.PageFooter;
            PageContext pageContext = new PageContext(m_pageContext, PageContext.PageContextFlags.FullOnPage, PageContext.IgnorePBReasonFlag.HeaderFooter);

            pageContext.RPLSectionArea = PageContext.RPLReportSectionArea.Footer;
            m_footer = new PageHeadFoot(pageFooter, m_reportSectionDef.Width, pageContext);
            m_footer.CalculateItem(rplWriter, pageContext, isHeader: false, interactivity, native: true);
            m_itemsOnPage++;
        }
Esempio n. 2
0
 internal void Reset()
 {
     m_header           = null;
     m_footer           = null;
     m_rplReportSection = null;
     m_bodyOffset       = 0L;
     m_offset           = 0L;
     m_itemRenderSizes  = null;
     m_sectionIndex     = -1;
     m_bodyHelper       = null;
     m_itemsOnPage      = 0;
     if (Done)
     {
         m_body = null;
     }
 }
Esempio n. 3
0
        private void WriteEndItemToRPLStream2008(BinaryWriter spbifWriter, int itemsOnPage, PageHeadFoot header, PageHeadFoot footer, double reportWidth, double reportHeight)
        {
            Stream baseStream = spbifWriter.BaseStream;

            if (header != null)
            {
                reportWidth = Math.Max(reportWidth, header.ItemRenderSizes.Width);
            }
            if (footer != null)
            {
                reportWidth = Math.Max(reportWidth, footer.ItemRenderSizes.Width);
            }
            long position = baseStream.Position;

            spbifWriter.Write((byte)16);
            spbifWriter.Write(m_pageContentOffset);
            spbifWriter.Write(itemsOnPage);
            spbifWriter.Write(0f);
            spbifWriter.Write(0f);
            spbifWriter.Write((float)reportWidth);
            spbifWriter.Write((float)reportHeight);
            spbifWriter.Write(0);
            spbifWriter.Write((byte)0);
            spbifWriter.Write(m_columnsOffset);
            if (header != null)
            {
                header.ItemRenderSizes.Width = reportWidth;
                header.WritePageItemRenderSizes(spbifWriter);
            }
            if (footer != null)
            {
                footer.ItemRenderSizes.Width = reportWidth;
                footer.WritePageItemRenderSizes(spbifWriter);
            }
            m_pageContentOffset = baseStream.Position;
            spbifWriter.Write((byte)254);
            spbifWriter.Write(position);
            spbifWriter.Write(byte.MaxValue);
            long position2 = baseStream.Position;

            spbifWriter.Write((byte)18);
            spbifWriter.Write(m_offset);
            spbifWriter.Write(1);
            spbifWriter.Write(m_pageContentOffset);
            spbifWriter.Write((byte)254);
            spbifWriter.Write(position2);
            spbifWriter.Write(byte.MaxValue);
        }
Esempio n. 4
0
        internal bool CalculatePage(RPLWriter rplWriter, int page, int totalPages, int regionPageNumber, int regionTotalPages, bool firstSectionOnPage, bool lastSection, Interactivity interactivity, double heightToBeUsed, ref PageItemHelper lastBodyInfo, ref bool delayedHeader, ref bool delayedFooter, ref bool lastSectionOnPage)
        {
            m_pageContext.EvaluatePageHeaderFooter = false;
            PageSection pageHeader   = m_reportSectionDef.Page.PageHeader;
            PageSection pageFooter   = m_reportSectionDef.Page.PageFooter;
            bool        renderHeader = false;
            bool        renderFooter = false;

            if (pageHeader != null || pageFooter != null)
            {
                m_reportSectionDef.SetPage(regionPageNumber, regionTotalPages, page, totalPages);
            }
            if ((rplWriter != null || (interactivity != null && !interactivity.Done && interactivity.NeedPageHeaderFooter)) && m_reportSectionDef.NeedsReportItemsOnPage)
            {
                InitialCheckForHeader(pageHeader, page, totalPages, firstSectionOnPage, ref renderHeader);
                InitialCheckForFooter(pageFooter, page, totalPages, lastSection, ref renderFooter);
                if (renderHeader || renderFooter)
                {
                    m_pageContext.EvaluatePageHeaderFooter = true;
                }
            }
            WriteStartItemToStream(rplWriter);
            double parentHeight = 0.0;

            m_body.UpdateItem(lastBodyInfo);
            m_body.CalculatePage(rplWriter, lastBodyInfo, m_pageContext, null, null, 0.0, ref parentHeight, interactivity);
            m_pageContext.ApplyPageName(page);
            m_itemsOnPage++;
            if (m_pageContext.CancelPage)
            {
                m_body = null;
                return(false);
            }
            WriteBodyColumnsToStream(rplWriter);
            CreateReportSectionSizes(rplWriter);
            CheckForLastSectionOnPage(heightToBeUsed, lastSection, ref lastSectionOnPage);
            if (rplWriter != null || (interactivity != null && !interactivity.Done && interactivity.NeedPageHeaderFooter))
            {
                if (!m_reportSectionDef.NeedsReportItemsOnPage)
                {
                    InitialCheckForHeader(pageHeader, page, totalPages, firstSectionOnPage, ref renderHeader);
                    InitialCheckForFooter(pageFooter, page, totalPages, lastSection, ref renderFooter);
                }
                FinalCheckForHeader(pageHeader, page, lastSection && Done, firstSectionOnPage, ref renderHeader);
                FinalCheckForFooter(pageFooter, page, lastSection && Done, lastSectionOnPage, ref renderFooter);
                if (pageHeader != null || pageFooter != null)
                {
                    string pageName = m_pageContext.PageTotalInfo.GetPageName(page);
                    m_reportSectionDef.SetPageName(pageName);
                    m_reportSectionDef.GetPageSections();
                }
                PageContext pageContext = new PageContext(m_pageContext, PageContext.PageContextFlags.FullOnPage, PageContext.IgnorePBReasonFlag.HeaderFooter);
                if (renderFooter)
                {
                    if ((m_pageContext.VersionPicker == RPLVersionEnum.RPL2008 || pageContext.VersionPicker == RPLVersionEnum.RPL2008WithImageConsolidation) & lastSectionOnPage)
                    {
                        delayedFooter = true;
                    }
                    if (!delayedFooter)
                    {
                        pageContext.RPLSectionArea = PageContext.RPLReportSectionArea.Footer;
                        m_footer = new PageHeadFoot(pageFooter, m_reportSectionDef.Width, pageContext);
                        if (m_pageContext.VersionPicker == RPLVersionEnum.RPL2008 || m_pageContext.VersionPicker == RPLVersionEnum.RPL2008WithImageConsolidation)
                        {
                            m_footer.CalculateItem(rplWriter, pageContext, isHeader: false, interactivity, native: false);
                        }
                        else
                        {
                            m_footer.CalculateItem(rplWriter, pageContext, isHeader: false, interactivity, native: true);
                        }
                        m_itemsOnPage++;
                    }
                    if (m_pageContext.CancelPage)
                    {
                        m_body   = null;
                        m_footer = null;
                        return(false);
                    }
                }
                if (renderHeader)
                {
                    if (m_pageContext.VersionPicker == RPLVersionEnum.RPL2008 || pageContext.VersionPicker == RPLVersionEnum.RPL2008WithImageConsolidation)
                    {
                        if (firstSectionOnPage)
                        {
                            delayedHeader = true;
                        }
                    }
                    else if (page > 1 && firstSectionOnPage && !pageHeader.PrintOnLastPage && !m_pageContext.AddFirstPageHeaderFooter)
                    {
                        delayedHeader = true;
                    }
                    if (!delayedHeader)
                    {
                        pageContext.RPLSectionArea = PageContext.RPLReportSectionArea.Header;
                        m_header = new PageHeadFoot(pageHeader, m_reportSectionDef.Width, pageContext);
                        if (m_pageContext.VersionPicker == RPLVersionEnum.RPL2008 || m_pageContext.VersionPicker == RPLVersionEnum.RPL2008WithImageConsolidation)
                        {
                            m_header.CalculateItem(rplWriter, pageContext, isHeader: true, interactivity, native: false);
                        }
                        else
                        {
                            m_header.CalculateItem(rplWriter, pageContext, isHeader: true, interactivity, native: true);
                        }
                        m_itemsOnPage++;
                    }
                    if (m_pageContext.CancelPage)
                    {
                        m_body   = null;
                        m_footer = null;
                        m_header = null;
                        return(false);
                    }
                }
            }
            if (!delayedHeader || m_pageContext.VersionPicker == RPLVersionEnum.RPL2008 || m_pageContext.VersionPicker == RPLVersionEnum.RPL2008WithImageConsolidation)
            {
                UpdateReportSectionSizes(rplWriter);
                WriteEndItemToStream(rplWriter);
            }
            lastBodyInfo = null;
            return(true);
        }
Esempio n. 5
0
        internal void WriteEndItemToStream(RPLWriter rplWriter, int sectionStartIndex, int itemsOnPage, PageHeadFoot header, PageHeadFoot footer, double bodyWidth, double bodyHeight, string pageName)
        {
            if (rplWriter == null)
            {
                return;
            }
            BinaryWriter binaryWriter = rplWriter.BinaryWriter;

            if (binaryWriter != null)
            {
                if (m_pageContext.VersionPicker == RPLVersionEnum.RPL2008 || m_pageContext.VersionPicker == RPLVersionEnum.RPL2008WithImageConsolidation)
                {
                    WriteEndItemToRPLStream2008(binaryWriter, itemsOnPage, header, footer, bodyWidth, bodyHeight);
                }
                else
                {
                    WriteEndItemToRPLStream(binaryWriter, pageName);
                }
            }
            else
            {
                WriteEndItemToRPLOM(rplWriter, sectionStartIndex, pageName);
            }
        }