internal override bool Render()
        {
            RPLItemMeasurement rPLItemMeasurement = null;
            bool             flag           = true;
            string           author         = "";
            string           title          = "";
            string           description    = "";
            AutoFit          autoFit        = m_writer.AutoFit;
            float            width          = 0f;
            float            leftMargin     = 0f;
            float            rightMargin    = 0f;
            RPLPageLayout    rplPageLayout  = null;
            List <RPLReport> rplReportCache = new List <RPLReport>();
            bool             hasHeaderSoFar = false;
            bool             hasFooterSoFar = false;
            SectionEntry     sectionEntry   = null;

            while (!m_spbProcessing.Done)
            {
                if (!flag)
                {
                    m_writer.WritePageBreak();
                }
                m_spbProcessing.GetNextPage(out m_rplReport);
                RPLPageContent   rPLPageContent   = m_rplReport.RPLPaginatedPages[0];
                RPLReportSection rPLReportSection = rPLPageContent.GetNextReportSection();
                bool             pageCached       = false;
                bool             firstSection     = true;
                while (rPLReportSection != null)
                {
                    rPLItemMeasurement = rPLReportSection.Columns[0];
                    float           width2 = rPLReportSection.BodyArea.Width;
                    RPLHeaderFooter footer = null;
                    SectionEntry    se     = null;
                    if (!firstSection || sectionEntry == null || string.CompareOrdinal(sectionEntry.SectionId, rPLReportSection.ID) != 0)
                    {
                        if (RSTrace.RenderingTracer.TraceVerbose)
                        {
                            RSTrace.RenderingTracer.Trace("The left or right margin is either <0 or the sum exceeds the page width.");
                        }
                        sectionEntry = (se = RenderHeaderFooters(rPLReportSection, firstSection, ref pageCached, rplReportCache, ref footer, ref hasHeaderSoFar, ref hasFooterSoFar));
                    }
                    flag  = SetFirstPageDimensions(flag, rPLPageContent, ref rplPageLayout, ref leftMargin, ref rightMargin, ref width, ref title, ref author, ref description);
                    width = RevisePageDimensions(leftMargin, rightMargin, width, width2, autoFit);
                    RenderHeaderBetweenSections(rPLReportSection, firstSection);
                    RenderBodyContent(width2, rPLItemMeasurement);
                    rPLReportSection = AdvanceToNextSection(rPLPageContent, rPLReportSection, ref firstSection, sectionEntry, footer, se);
                }
                if (!m_spbProcessing.Done && !pageCached)
                {
                    m_rplReport.Release();
                }
            }
            m_writer.WriteParagraphEnd();
            m_writer.SetPageDimensions(m_pageHeight, width, leftMargin, rightMargin, rplPageLayout.MarginTop, rplPageLayout.MarginBottom);
            FinishRendering(rplReportCache, title, author, description);
            return(true);
        }
        public override bool Render()
        {
            RPLItemMeasurement rPLItemMeasurement = null;
            bool             flag           = true;
            string           author         = "";
            string           title          = "";
            string           description    = "";
            AutoFit          autoFit        = base.m_writer.AutoFit;
            float            num            = 0f;
            float            leftMargin     = 0f;
            float            rightMargin    = 0f;
            RPLPageLayout    rPLPageLayout  = null;
            List <RPLReport> rplReportCache = new List <RPLReport>();
            bool             flag2          = false;
            bool             flag3          = false;
            SectionEntry     sectionEntry   = null;

            while (!base.m_spbProcessing.Done)
            {
                if (!flag)
                {
                    base.m_writer.WritePageBreak();
                }
                base.m_spbProcessing.GetNextPage(out base.m_rplReport);
                RPLPageContent   rPLPageContent   = base.m_rplReport.RPLPaginatedPages[0];
                RPLReportSection rPLReportSection = rPLPageContent.GetNextReportSection();
                bool             flag4            = false;
                bool             flag5            = true;
                while (rPLReportSection != null)
                {
                    rPLItemMeasurement = rPLReportSection.Columns[0];
                    float           width  = rPLReportSection.BodyArea.Width;
                    RPLHeaderFooter footer = null;
                    SectionEntry    se     = null;
                    if (!flag5 || sectionEntry == null || string.CompareOrdinal(sectionEntry.SectionId, rPLReportSection.ID) != 0)
                    {
                        if (RSTrace.RenderingTracer.TraceVerbose)
                        {
                            RSTrace.RenderingTracer.Trace("The left or right margin is either <0 or the sum exceeds the page width.");
                        }
                        sectionEntry = (se = this.RenderHeaderFooters(rPLReportSection, flag5, ref flag4, rplReportCache, ref footer, ref flag2, ref flag3));
                    }
                    flag = base.SetFirstPageDimensions(flag, rPLPageContent, ref rPLPageLayout, ref leftMargin, ref rightMargin, ref num, ref title, ref author, ref description);
                    num  = base.RevisePageDimensions(leftMargin, rightMargin, num, width, autoFit);
                    base.RenderHeaderBetweenSections(rPLReportSection, flag5);
                    base.RenderBodyContent(width, rPLItemMeasurement);
                    rPLReportSection = base.AdvanceToNextSection(rPLPageContent, rPLReportSection, ref flag5, sectionEntry, footer, se);
                }
                if (!base.m_spbProcessing.Done && !flag4)
                {
                    base.m_rplReport.Release();
                }
            }
            base.m_writer.WriteParagraphEnd();
            base.m_writer.SetPageDimensions(base.m_pageHeight, num, leftMargin, rightMargin, rPLPageLayout.MarginTop, rPLPageLayout.MarginBottom);
            base.FinishRendering(rplReportCache, title, author, description);
            return(true);
        }
        private SectionEntry RenderHeaderFooters(RPLReportSection section, bool firstSection, ref bool pageCached, List <RPLReport> rplReportCache, ref RPLHeaderFooter footer, ref bool hasHeaderSoFar, ref bool hasFooterSoFar)
        {
            SectionEntry result = new SectionEntry(section);

            if (section.Footer != null)
            {
                footer = (section.Footer.Element as RPLHeaderFooter);
                if (footer.Children != null && footer.Children.Length != 0)
                {
                    hasFooterSoFar = true;
                }
            }
            if (section.Header != null)
            {
                RPLHeaderFooter rPLHeaderFooter = section.Header.Element as RPLHeaderFooter;
                if (rPLHeaderFooter.Children != null && rPLHeaderFooter.Children.Length != 0)
                {
                    hasHeaderSoFar = true;
                }
            }
            CachePage(ref pageCached, rplReportCache);
            m_inHeaderFooter = true;
            if (firstSection)
            {
                m_needsToResetTextboxes = true;
            }
            RPLItemMeasurement header = section.Header;

            if (hasHeaderSoFar)
            {
                m_writer.StartHeader();
                if (header != null)
                {
                    RenderRectangle((RPLContainer)header.Element, 0f, canGrow: true, header, new BorderContext(), inTablix: false, ignoreStyles: true);
                }
                m_writer.FinishHeader();
            }
            RPLItemMeasurement footer2 = section.Footer;

            if (hasFooterSoFar)
            {
                m_writer.StartFooter();
                if (footer2 != null)
                {
                    RenderRectangle((RPLContainer)footer2.Element, 0f, canGrow: true, footer2, new BorderContext(), inTablix: false, ignoreStyles: true);
                }
                m_writer.FinishFooter();
            }
            if (firstSection)
            {
                bool flag  = header != null;
                bool flag2 = flag && !(header.Element.ElementPropsDef as RPLHeaderFooterPropsDef).PrintOnFirstPage;
                bool flag3 = footer2 != null;
                bool flag4 = flag3 && !(footer2.Element.ElementPropsDef as RPLHeaderFooterPropsDef).PrintOnFirstPage;
                if ((flag2 || flag4) && (flag || flag3))
                {
                    if (hasHeaderSoFar)
                    {
                        m_writer.StartHeader(firstPage: true);
                        if (flag && !flag2)
                        {
                            RenderRectangle((RPLContainer)header.Element, 0f, canGrow: true, header, new BorderContext(), inTablix: false, ignoreStyles: true);
                        }
                        m_writer.FinishHeader();
                    }
                    if (hasFooterSoFar)
                    {
                        m_writer.StartFooter(firstPage: true);
                        if (flag3 && !flag4)
                        {
                            RenderRectangle((RPLContainer)footer2.Element, 0f, canGrow: true, footer2, new BorderContext(), inTablix: false, ignoreStyles: true);
                        }
                        m_writer.FinishFooter();
                    }
                    m_writer.HasTitlePage = true;
                }
                m_needsToResetTextboxes = false;
            }
            m_inHeaderFooter = false;
            return(result);
        }
        internal void WriteStartItemToStream(RPLWriter rplWriter, bool isHeader, PageContext pageContext, bool native)
        {
            if (rplWriter == null)
            {
                return;
            }
            BinaryWriter binaryWriter = rplWriter.BinaryWriter;

            if (binaryWriter != null)
            {
                Stream baseStream = binaryWriter.BaseStream;
                m_offset = baseStream.Position;
                bool flag = false;
                if (pageContext.VersionPicker == RPLVersionEnum.RPL2008 || pageContext.VersionPicker == RPLVersionEnum.RPL2008WithImageConsolidation)
                {
                    if (native)
                    {
                        if (isHeader)
                        {
                            binaryWriter.Write((byte)4);
                        }
                        else
                        {
                            binaryWriter.Write((byte)5);
                        }
                    }
                    else
                    {
                        binaryWriter.Write((byte)10);
                        flag = true;
                    }
                }
                else if (isHeader)
                {
                    binaryWriter.Write((byte)4);
                }
                else
                {
                    binaryWriter.Write((byte)5);
                }
                binaryWriter.Write((byte)15);
                binaryWriter.Write((byte)0);
                binaryWriter.Write((byte)1);
                binaryWriter.Write(SourceID);
                if (!flag)
                {
                    binaryWriter.Write((byte)44);
                    binaryWriter.Write(m_source.PrintOnFirstPage);
                    if (pageContext.VersionPicker != 0 && pageContext.VersionPicker != RPLVersionEnum.RPL2008WithImageConsolidation)
                    {
                        binaryWriter.Write((byte)47);
                        binaryWriter.Write(m_source.PrintBetweenSections);
                    }
                }
                Style style = m_source.Style;
                if (style != null)
                {
                    WriteSharedStyle(binaryWriter, style, pageContext, 6);
                    binaryWriter.Write(byte.MaxValue);
                    binaryWriter.Write((byte)1);
                    binaryWriter.Write((byte)0);
                    binaryWriter.Write(SourceUniqueName);
                    StyleInstance styleInstance = GetStyleInstance(m_source, null);
                    if (styleInstance != null)
                    {
                        WriteNonSharedStyle(binaryWriter, style, styleInstance, pageContext, 6, null);
                    }
                }
                else
                {
                    binaryWriter.Write(byte.MaxValue);
                    binaryWriter.Write((byte)1);
                    binaryWriter.Write((byte)0);
                    binaryWriter.Write(SourceUniqueName);
                }
                binaryWriter.Write(byte.MaxValue);
                binaryWriter.Write(byte.MaxValue);
                return;
            }
            m_rplElement = new RPLHeaderFooter();
            m_rplElement.ElementProps.Definition.ID = SourceID;
            RPLHeaderFooterPropsDef obj = m_rplElement.ElementProps.Definition as RPLHeaderFooterPropsDef;

            obj.PrintOnFirstPage                 = m_source.PrintOnFirstPage;
            obj.PrintBetweenSections             = m_source.PrintBetweenSections;
            m_rplElement.ElementProps.UniqueName = SourceUniqueName;
            Style style2 = m_source.Style;

            if (style2 != null)
            {
                m_rplElement.ElementProps.Definition.SharedStyle = WriteSharedStyle(style2, pageContext);
                StyleInstance styleInstance2 = GetStyleInstance(m_source, null);
                if (styleInstance2 != null)
                {
                    m_rplElement.ElementProps.NonSharedStyle = WriteNonSharedStyle(style2, styleInstance2, pageContext, null);
                }
            }
        }
        internal override bool Render()
        {
            RPLItemMeasurement rPLItemMeasurement = null;
            bool             flag           = true;
            string           author         = "";
            string           title          = "";
            string           description    = "";
            AutoFit          autoFit        = m_writer.AutoFit;
            float            width          = 0f;
            float            leftMargin     = 0f;
            float            rightMargin    = 0f;
            RPLPageLayout    rplPageLayout  = null;
            bool             flag2          = false;
            List <RPLReport> rplReportCache = new List <RPLReport>();

            while (!m_spbProcessing.Done)
            {
                if (!flag)
                {
                    m_writer.WritePageBreak();
                }
                m_spbProcessing.GetNextPage(out m_rplReport);
                RPLPageContent   rPLPageContent   = m_rplReport.RPLPaginatedPages[0];
                RPLReportSection rPLReportSection = rPLPageContent.GetNextReportSection();
                bool             pageCached       = false;
                bool             firstSection     = true;
                while (rPLReportSection != null)
                {
                    rPLItemMeasurement = rPLReportSection.Columns[0];
                    float           width2       = rPLReportSection.BodyArea.Width;
                    RPLHeaderFooter footer       = null;
                    SectionEntry    sectionEntry = null;
                    if (!firstSection || m_sections.Count == 0 || string.CompareOrdinal(m_sections[m_sections.Count - 1].SectionId, rPLReportSection.ID) != 0)
                    {
                        if (RSTrace.RenderingTracer.TraceVerbose)
                        {
                            RSTrace.RenderingTracer.Trace("The left or right margin is either <0 or the sum exceeds the page width.");
                        }
                        sectionEntry = new SectionEntry(rPLReportSection);
                        if (rPLReportSection.Footer != null)
                        {
                            footer = (rPLReportSection.Footer.Element as RPLHeaderFooter);
                        }
                        if (sectionEntry.HeaderMeasurement != null || sectionEntry.FooterMeasurement != null)
                        {
                            flag2 = true;
                        }
                        m_sections.Add(sectionEntry);
                        CachePage(ref pageCached, rplReportCache);
                    }
                    flag  = SetFirstPageDimensions(flag, rPLPageContent, ref rplPageLayout, ref leftMargin, ref rightMargin, ref width, ref title, ref author, ref description);
                    width = RevisePageDimensions(leftMargin, rightMargin, width, width2, autoFit);
                    RenderHeaderBetweenSections(rPLReportSection, firstSection);
                    RenderBodyContent(width2, rPLItemMeasurement);
                    rPLReportSection = AdvanceToNextSection(rPLPageContent, rPLReportSection, ref firstSection, m_sections[m_sections.Count - 1], footer, sectionEntry);
                }
                if (!m_spbProcessing.Done && !pageCached)
                {
                    m_rplReport.Release();
                }
            }
            m_writer.WriteParagraphEnd();
            m_writer.SetPageDimensions(m_pageHeight, width, leftMargin, rightMargin, rplPageLayout.MarginTop, rplPageLayout.MarginBottom);
            if (flag2)
            {
                m_inHeaderFooter = true;
                m_writer.InitHeaderFooter();
                bool flag3 = false;
                m_needsToResetTextboxes = true;
                for (int i = 0; i < m_sections.Count; i++)
                {
                    RPLItemMeasurement headerMeasurement = m_sections[i].HeaderMeasurement;
                    if (headerMeasurement != null)
                    {
                        RenderRectangle((RPLContainer)headerMeasurement.Element, 0f, canGrow: true, headerMeasurement, new BorderContext(), inTablix: false, ignoreStyles: true);
                    }
                    m_writer.FinishHeader(i);
                    RPLItemMeasurement footerMeasurement = m_sections[i].FooterMeasurement;
                    if (footerMeasurement != null)
                    {
                        RenderRectangle((RPLContainer)footerMeasurement.Element, 0f, canGrow: true, footerMeasurement, new BorderContext(), inTablix: false, ignoreStyles: true);
                    }
                    m_writer.FinishFooter(i);
                    if (i != 0)
                    {
                        continue;
                    }
                    bool flag4 = headerMeasurement != null;
                    bool flag5 = flag4 && !(headerMeasurement.Element.ElementPropsDef as RPLHeaderFooterPropsDef).PrintOnFirstPage;
                    bool flag6 = footerMeasurement != null;
                    bool flag7 = flag6 && !(footerMeasurement.Element.ElementPropsDef as RPLHeaderFooterPropsDef).PrintOnFirstPage;
                    flag3 = ((flag5 || flag7) && (flag4 || flag6));
                    if (flag3)
                    {
                        if (flag4 && !flag5)
                        {
                            RenderRectangle((RPLContainer)headerMeasurement.Element, 0f, canGrow: true, headerMeasurement, new BorderContext(), inTablix: false, ignoreStyles: true);
                        }
                        m_writer.FinishHeader(i, Word97Writer.HeaderFooterLocation.First);
                        if (flag6 && !flag7)
                        {
                            RenderRectangle((RPLContainer)footerMeasurement.Element, 0f, canGrow: true, footerMeasurement, new BorderContext(), inTablix: false, ignoreStyles: true);
                        }
                        m_writer.FinishFooter(i, Word97Writer.HeaderFooterLocation.First);
                    }
                    m_needsToResetTextboxes = false;
                }
                m_writer.FinishHeadersFooters(flag3);
                m_inHeaderFooter = false;
            }
            FinishRendering(rplReportCache, title, author, description);
            return(true);
        }
        public override bool Render()
        {
            RPLItemMeasurement rPLItemMeasurement = null;
            bool             flag           = true;
            string           author         = "";
            string           title          = "";
            string           description    = "";
            AutoFit          autoFit        = base.m_writer.AutoFit;
            float            num            = 0f;
            float            leftMargin     = 0f;
            float            rightMargin    = 0f;
            RPLPageLayout    rPLPageLayout  = null;
            bool             flag2          = false;
            List <RPLReport> rplReportCache = new List <RPLReport>();

            while (!base.m_spbProcessing.Done)
            {
                if (!flag)
                {
                    base.m_writer.WritePageBreak();
                }
                base.m_spbProcessing.GetNextPage(out base.m_rplReport);
                RPLPageContent   rPLPageContent   = base.m_rplReport.RPLPaginatedPages[0];
                RPLReportSection rPLReportSection = rPLPageContent.GetNextReportSection();
                bool             flag3            = false;
                bool             flag4            = true;
                while (rPLReportSection != null)
                {
                    rPLItemMeasurement = rPLReportSection.Columns[0];
                    float           width        = rPLReportSection.BodyArea.Width;
                    RPLHeaderFooter footer       = null;
                    SectionEntry    sectionEntry = null;
                    if (!flag4 || this.m_sections.Count == 0 || string.CompareOrdinal(this.m_sections[this.m_sections.Count - 1].SectionId, rPLReportSection.ID) != 0)
                    {
                        if (RSTrace.RenderingTracer.TraceVerbose)
                        {
                            RSTrace.RenderingTracer.Trace("The left or right margin is either <0 or the sum exceeds the page width.");
                        }
                        sectionEntry = new SectionEntry(rPLReportSection);
                        if (rPLReportSection.Footer != null)
                        {
                            footer = (rPLReportSection.Footer.Element as RPLHeaderFooter);
                        }
                        if (sectionEntry.HeaderMeasurement != null || sectionEntry.FooterMeasurement != null)
                        {
                            flag2 = true;
                        }
                        this.m_sections.Add(sectionEntry);
                        base.CachePage(ref flag3, rplReportCache);
                    }
                    flag = base.SetFirstPageDimensions(flag, rPLPageContent, ref rPLPageLayout, ref leftMargin, ref rightMargin, ref num, ref title, ref author, ref description);
                    num  = base.RevisePageDimensions(leftMargin, rightMargin, num, width, autoFit);
                    base.RenderHeaderBetweenSections(rPLReportSection, flag4);
                    base.RenderBodyContent(width, rPLItemMeasurement);
                    rPLReportSection = base.AdvanceToNextSection(rPLPageContent, rPLReportSection, ref flag4, this.m_sections[this.m_sections.Count - 1], footer, sectionEntry);
                }
                if (!base.m_spbProcessing.Done && !flag3)
                {
                    base.m_rplReport.Release();
                }
            }
            base.m_writer.WriteParagraphEnd();
            base.m_writer.SetPageDimensions(base.m_pageHeight, num, leftMargin, rightMargin, rPLPageLayout.MarginTop, rPLPageLayout.MarginBottom);
            if (flag2)
            {
                base.m_inHeaderFooter = true;
                base.m_writer.InitHeaderFooter();
                bool flag5 = false;
                base.m_needsToResetTextboxes = true;
                for (int i = 0; i < this.m_sections.Count; i++)
                {
                    RPLItemMeasurement headerMeasurement = this.m_sections[i].HeaderMeasurement;
                    if (headerMeasurement != null)
                    {
                        base.RenderRectangle((RPLContainer)headerMeasurement.Element, 0f, true, headerMeasurement, new BorderContext(), false, true);
                    }
                    base.m_writer.FinishHeader(i);
                    RPLItemMeasurement footerMeasurement = this.m_sections[i].FooterMeasurement;
                    if (footerMeasurement != null)
                    {
                        base.RenderRectangle((RPLContainer)footerMeasurement.Element, 0f, true, footerMeasurement, new BorderContext(), false, true);
                    }
                    base.m_writer.FinishFooter(i);
                    if (i == 0)
                    {
                        bool flag6 = headerMeasurement != null;
                        bool flag7 = flag6 && !(headerMeasurement.Element.ElementPropsDef as RPLHeaderFooterPropsDef).PrintOnFirstPage;
                        bool flag8 = footerMeasurement != null;
                        bool flag9 = flag8 && !(footerMeasurement.Element.ElementPropsDef as RPLHeaderFooterPropsDef).PrintOnFirstPage;
                        flag5 = ((flag7 || flag9) && (flag6 || flag8));
                        if (flag5)
                        {
                            if (flag6 && !flag7)
                            {
                                base.RenderRectangle((RPLContainer)headerMeasurement.Element, 0f, true, headerMeasurement, new BorderContext(), false, true);
                            }
                            base.m_writer.FinishHeader(i, Word97Writer.HeaderFooterLocation.First);
                            if (flag8 && !flag9)
                            {
                                base.RenderRectangle((RPLContainer)footerMeasurement.Element, 0f, true, footerMeasurement, new BorderContext(), false, true);
                            }
                            base.m_writer.FinishFooter(i, Word97Writer.HeaderFooterLocation.First);
                        }
                        base.m_needsToResetTextboxes = false;
                    }
                }
                base.m_writer.FinishHeadersFooters(flag5);
                base.m_inHeaderFooter = false;
            }
            base.FinishRendering(rplReportCache, title, author, description);
            return(true);
        }