Beispiel #1
0
        internal void WriteEndItemToStream(RPLWriter rplWriter, List <ReportSection> sectionsOnPage)
        {
            BinaryWriter binaryWriter = rplWriter.BinaryWriter;

            if (binaryWriter != null)
            {
                rplWriter.BinaryWriter.Write(byte.MaxValue);
                Stream baseStream = binaryWriter.BaseStream;
                long   position   = baseStream.Position;
                binaryWriter.Write((byte)16);
                binaryWriter.Write(m_pageOffset);
                int count = sectionsOnPage.Count;
                binaryWriter.Write(count);
                for (int i = 0; i < count; i++)
                {
                    sectionsOnPage[i].WriteMeasurement(binaryWriter);
                }
                m_pageOffset = baseStream.Position;
                binaryWriter.Write((byte)254);
                binaryWriter.Write(position);
                binaryWriter.Write(byte.MaxValue);
                position = baseStream.Position;
                binaryWriter.Write((byte)18);
                binaryWriter.Write(m_offset);
                binaryWriter.Write(1);
                binaryWriter.Write(m_pageOffset);
                binaryWriter.Write((byte)254);
                binaryWriter.Write(position);
                binaryWriter.Write(byte.MaxValue);
            }
            else
            {
                int            count2         = sectionsOnPage.Count;
                RPLPageLayout  pageLayout     = sectionsOnPage[0].WritePageLayout(rplWriter, m_pageContext);
                RPLPageContent rPLPageContent = new RPLPageContent(count2, pageLayout);
                for (int j = 0; j < count2; j++)
                {
                    RPLMeasurement measurement = null;
                    sectionsOnPage[j].AddToPage(rPLPageContent, out measurement);
                    rPLPageContent.ReportSectionSizes[j] = measurement;
                }
                rplWriter.Report.RPLPaginatedPages[0] = rPLPageContent;
            }
        }
        internal void WriteItemStyle(RPLWriter rplWriter, PageContext pageContext)
        {
            if (rplWriter == null)
            {
                return;
            }
            Style style = m_source.Style;

            if (style == null)
            {
                return;
            }
            BinaryWriter binaryWriter = rplWriter.BinaryWriter;

            if (binaryWriter != null)
            {
                WriteSharedStyle(binaryWriter, style, pageContext);
                StyleInstance style2 = m_source.Instance.Style;
                if (style2 != null)
                {
                    WriteNonSharedStyleWithoutTag(binaryWriter, style, style2, pageContext);
                }
                binaryWriter.Write(byte.MaxValue);
                return;
            }
            RPLPageLayout pageLayout = m_pageLayout;

            if (pageLayout != null)
            {
                RPLStyleProps rPLStyleProps  = WriteSharedStyle(style, pageContext);
                RPLStyleProps rPLStyleProps2 = null;
                StyleInstance style3         = m_source.Instance.Style;
                if (style3 != null)
                {
                    rPLStyleProps2 = WriteNonSharedStyle(style, style3, pageContext);
                }
                if (rPLStyleProps != null || rPLStyleProps2 != null)
                {
                    pageLayout.Style = new RPLElementStyle(rPLStyleProps2, rPLStyleProps);
                }
            }
        }
Beispiel #3
0
        internal override void WriteCustomSharedItemProps(BinaryWriter spbifWriter, RPLWriter rplWriter, PageContext pageContext)
        {
            switch (((Microsoft.ReportingServices.OnDemandReportRendering.Image)m_source).Sizing)
            {
            case Microsoft.ReportingServices.OnDemandReportRendering.Image.Sizings.Clip:
                spbifWriter.Write((byte)41);
                spbifWriter.Write((byte)3);
                break;

            case Microsoft.ReportingServices.OnDemandReportRendering.Image.Sizings.Fit:
                spbifWriter.Write((byte)41);
                spbifWriter.Write((byte)1);
                break;

            case Microsoft.ReportingServices.OnDemandReportRendering.Image.Sizings.FitProportional:
                spbifWriter.Write((byte)41);
                spbifWriter.Write((byte)2);
                break;
            }
        }
 internal override void RegisterTextBoxes(RPLWriter rplWriter, PageContext pageContext)
 {
     if (rplWriter == null || m_textBoxValues == null || pageContext.Common.InSubReport)
     {
         return;
     }
     if (rplWriter.DelayedTBLevels == 0)
     {
         foreach (string key in m_textBoxValues.Keys)
         {
             foreach (object item in m_textBoxValues[key])
             {
                 pageContext.AddTextBox(key, item);
             }
         }
     }
     else
     {
         rplWriter.AddTextBoxes(m_textBoxValues);
     }
 }
Beispiel #5
0
 internal override void WriteStartItemToStream(RPLWriter rplWriter, PageContext pageContext)
 {
     if (rplWriter != null)
     {
         BinaryWriter binaryWriter = rplWriter.BinaryWriter;
         if (binaryWriter != null)
         {
             long position = binaryWriter.BaseStream.Position;
             binaryWriter.Write((byte)8);
             WriteElementProps(binaryWriter, rplWriter, pageContext, position + 1);
             m_offset = binaryWriter.BaseStream.Position;
             binaryWriter.Write((byte)254);
             binaryWriter.Write(position);
             binaryWriter.Write(byte.MaxValue);
         }
         else if (m_rplElement == null)
         {
             m_rplElement = new RPLLine();
             WriteElementProps(m_rplElement.ElementProps, pageContext);
         }
     }
 }
 internal override void WriteStartItemToStream(RPLWriter rplWriter, PageContext pageContext)
 {
     if (rplWriter != null)
     {
         BinaryWriter binaryWriter = rplWriter.BinaryWriter;
         if (binaryWriter != null)
         {
             Stream baseStream = binaryWriter.BaseStream;
             m_offset = baseStream.Position;
             binaryWriter.Write(RPLFormatType);
             WriteElementProps(binaryWriter, rplWriter, pageContext, m_offset + 1);
         }
         else if (m_rplElement == null)
         {
             m_rplElement = CreateRPLElement();
             WriteElementProps(m_rplElement.ElementProps, pageContext);
         }
         else
         {
             m_rplElement = CreateRPLElement(m_rplElement.ElementProps, pageContext);
         }
     }
 }
        internal void WriteColumns(RPLWriter rplWriter)
        {
            if (rplWriter == null)
            {
                return;
            }
            BinaryWriter binaryWriter = rplWriter.BinaryWriter;

            if (binaryWriter != null)
            {
                Stream baseStream = binaryWriter.BaseStream;
                long   position   = baseStream.Position;
                binaryWriter.Write((byte)16);
                binaryWriter.Write(m_columnsOffset);
                binaryWriter.Write(m_columns.Count);
                foreach (ColumnDetail column in m_columns)
                {
                    column.WriteMeasurement(binaryWriter);
                }
                m_columnsOffset = baseStream.Position;
                binaryWriter.Write((byte)254);
                binaryWriter.Write(position);
                binaryWriter.Write(byte.MaxValue);
            }
            else
            {
                RPLReportSection rPLReportSection = new RPLReportSection(m_columns.Count);
                rPLReportSection.ID            = m_reportSection.ID;
                rPLReportSection.ColumnCount   = m_sectionPageSettings.Columns;
                rPLReportSection.ColumnSpacing = (float)m_sectionPageSettings.ColumnSpacing;
                for (int i = 0; i < m_columns.Count; i++)
                {
                    rPLReportSection.Columns[i] = m_columns[i].WriteMeasurement();
                }
                m_rplElement = rPLReportSection;
            }
        }
Beispiel #8
0
 internal override void WriteStartItemToStream(RPLWriter rplWriter, PageContext pageContext)
 {
     if (rplWriter != null)
     {
         BinaryWriter binaryWriter = rplWriter.BinaryWriter;
         if (binaryWriter != null)
         {
             Stream baseStream = binaryWriter.BaseStream;
             m_offset = baseStream.Position;
             binaryWriter.Write((byte)12);
             WriteElementProps(binaryWriter, rplWriter, pageContext, m_offset + 1);
         }
         else if (m_rplElement == null)
         {
             m_rplElement = new RPLSubReport();
             WriteElementProps(m_rplElement.ElementProps, pageContext);
         }
         else
         {
             RPLItemProps rplElementProps = m_rplElement.ElementProps as RPLItemProps;
             m_rplElement = new RPLSubReport(rplElementProps);
         }
     }
 }
 internal void WriteStartItemToStream(RPLWriter rplWriter)
 {
     if (rplWriter != null)
     {
         BinaryWriter binaryWriter = rplWriter.BinaryWriter;
         if (binaryWriter != null)
         {
             Stream baseStream = binaryWriter.BaseStream;
             m_offset     = baseStream.Position;
             m_pageOffset = baseStream.Position;
             binaryWriter.Write((byte)21);
             binaryWriter.Write((byte)22);
             binaryWriter.Write((byte)0);
             binaryWriter.Write(m_reportSection.ID);
             binaryWriter.Write((byte)1);
             binaryWriter.Write(m_sectionPageSettings.Columns);
             binaryWriter.Write((byte)2);
             binaryWriter.Write((float)m_sectionPageSettings.ColumnSpacing);
             binaryWriter.Write(byte.MaxValue);
             m_columnsOffset = baseStream.Position;
             binaryWriter.Write((byte)20);
         }
     }
 }
 internal override void WriteStartItemToStream(RPLWriter rplWriter, PageContext pageContext)
 {
 }
Beispiel #11
0
        internal void WriteStartItemToStream(RPLWriter rplWriter)
        {
            if (rplWriter == null)
            {
                return;
            }
            BinaryWriter binaryWriter   = rplWriter.BinaryWriter;
            string       reportLanguage = GetReportLanguage(m_report);

            if (binaryWriter != null)
            {
                Stream baseStream = binaryWriter.BaseStream;
                m_offset = baseStream.Position;
                binaryWriter.Write((byte)0);
                binaryWriter.Write((byte)2);
                if (m_report.Name != null)
                {
                    binaryWriter.Write((byte)15);
                    binaryWriter.Write(m_report.Name);
                }
                if (m_report.Description != null)
                {
                    binaryWriter.Write((byte)9);
                    binaryWriter.Write(m_report.Description);
                }
                if (m_report.Author != null)
                {
                    binaryWriter.Write((byte)13);
                    binaryWriter.Write(m_report.Author);
                }
                if (m_report.AutoRefresh > 0)
                {
                    binaryWriter.Write((byte)14);
                    binaryWriter.Write(m_report.AutoRefresh);
                }
                DateTime executionTime = m_report.ExecutionTime;
                binaryWriter.Write((byte)12);
                binaryWriter.Write(executionTime.ToBinary());
                ReportUrl location = m_report.Location;
                if (location != null)
                {
                    binaryWriter.Write((byte)10);
                    binaryWriter.Write(location.ToString());
                }
                if (reportLanguage != null)
                {
                    binaryWriter.Write((byte)11);
                    binaryWriter.Write(reportLanguage);
                }
                binaryWriter.Write(byte.MaxValue);
                m_pageOffset = baseStream.Position;
                binaryWriter.Write((byte)19);
                binaryWriter.Write((byte)3);
                binaryWriter.Write((byte)16);
                binaryWriter.Write((float)m_pageSettings.PhysicalPageHeight);
                binaryWriter.Write((byte)17);
                binaryWriter.Write((float)m_pageSettings.PhysicalPageWidth);
                binaryWriter.Write((byte)20);
                binaryWriter.Write((float)m_pageSettings.MarginBottom);
                binaryWriter.Write((byte)19);
                binaryWriter.Write((float)m_pageSettings.MarginLeft);
                binaryWriter.Write((byte)21);
                binaryWriter.Write((float)m_pageSettings.MarginRight);
                binaryWriter.Write((byte)18);
                binaryWriter.Write((float)m_pageSettings.MarginTop);
                new ReportSectionPage(m_report.ReportSections[0].Page).WriteItemStyle(rplWriter, m_pageContext);
                binaryWriter.Write(byte.MaxValue);
            }
            else
            {
                RPLReport rPLReport = new RPLReport();
                rPLReport.ReportName        = m_report.Name;
                rPLReport.Description       = m_report.Description;
                rPLReport.Author            = m_report.Author;
                rPLReport.AutoRefresh       = m_report.AutoRefresh;
                rPLReport.ExecutionTime     = m_report.ExecutionTime;
                rPLReport.Location          = m_report.Location.ToString();
                rPLReport.Language          = reportLanguage;
                rPLReport.RPLVersion        = m_rplVersion;
                rPLReport.RPLPaginatedPages = new RPLPageContent[1];
                rplWriter.Report            = rPLReport;
            }
        }
        internal void WriteEndItemToStream(RPLWriter rplWriter)
        {
            if (rplWriter == null)
            {
                return;
            }
            PageHeadFoot header = m_header;

            m_header = null;
            PageHeadFoot footer = m_footer;

            m_footer = null;
            bool needsHeaderHeight = m_needsHeaderHeight;

            m_needsHeaderHeight = false;
            BinaryWriter binaryWriter = rplWriter.BinaryWriter;

            if (binaryWriter != null)
            {
                rplWriter.BinaryWriter.Write(byte.MaxValue);
                Stream baseStream = binaryWriter.BaseStream;
                long   position   = baseStream.Position;
                binaryWriter.Write((byte)16);
                binaryWriter.Write(m_pageOffset);
                binaryWriter.Write(1 + ((header != null) ? 1 : 0) + ((footer != null) ? 1 : 0));
                binaryWriter.Write((float)m_pageSettings.MarginLeft);
                if (needsHeaderHeight)
                {
                    binaryWriter.Write((float)m_sectionPageSettings.HeaderHeight);
                }
                else
                {
                    binaryWriter.Write(0f);
                }
                binaryWriter.Write((float)(m_pageSettings.PhysicalPageWidth - m_pageSettings.MarginLeft - m_pageSettings.MarginRight));
                binaryWriter.Write((float)m_columnHeight);
                binaryWriter.Write(0);
                binaryWriter.Write((byte)0);
                binaryWriter.Write(m_columnsOffset);
                header?.WritePageItemSizes(binaryWriter);
                footer?.WritePageItemSizes(binaryWriter);
                m_offset = baseStream.Position;
                binaryWriter.Write((byte)254);
                binaryWriter.Write(position);
                binaryWriter.Write(byte.MaxValue);
            }
            else
            {
                m_rplElement.BodyArea = new RPLMeasurement();
                float top = 0f;
                if (needsHeaderHeight)
                {
                    top = (float)m_sectionPageSettings.HeaderHeight;
                }
                m_rplElement.BodyArea.Top    = top;
                m_rplElement.BodyArea.Height = (float)m_columnHeight;
                if (header != null)
                {
                    m_rplElement.Header = header.WritePageItemSizes();
                }
                if (footer != null)
                {
                    m_rplElement.Footer = footer.WritePageItemSizes();
                }
            }
        }
        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);
        }