private void ProcessPageItemToken(byte token, BinaryReader reader, long offsetEndPage) { RSTrace.RenderingTracer.Assert(reader != null, "The pagination stream is null."); RSTrace.RenderingTracer.Assert(offsetEndPage > 0, "The pagination stream is corrupt."); switch (token) { case 1: this.m_itemPageSizes = new ItemSizes(); if (this.m_itemPageSizes.ReadPaginationInfo(reader, offsetEndPage) == 0) { break; } throw new InvalidDataException(SPBRes.InvalidPaginationStream); case 2: this.m_itemPageSizes = new PaddItemSizes(); if (this.m_itemPageSizes.ReadPaginationInfo(reader, offsetEndPage) == 0) { break; } throw new InvalidDataException(SPBRes.InvalidPaginationStream); case 3: this.m_state = (PageItem.State)reader.ReadByte(); break; case 21: this.m_defLeftValue = reader.ReadDouble(); break; case 4: this.m_pageItemsAbove = PageItemHelper.ReadIntList(reader, offsetEndPage); break; case 5: this.m_pageItemsLeft = PageItemHelper.ReadIntList(reader, offsetEndPage); break; default: throw new InvalidDataException(SPBRes.InvalidTokenPaginationProperties(token.ToString(CultureInfo.InvariantCulture))); } if (reader.BaseStream.Position <= offsetEndPage) { return; } throw new InvalidDataException(SPBRes.InvalidPaginationStream); }
private static void ReadTablixProperties(PageTablixHelper item, BinaryReader reader, long offsetEndPage) { RSTrace.RenderingTracer.Assert(item != null, "The item helper is null."); RSTrace.RenderingTracer.Assert(reader != null, "The pagination stream is null."); RSTrace.RenderingTracer.Assert(offsetEndPage > 0, "The pagination stream is corrupt."); byte b = reader.ReadByte(); while (b != 255 && reader.BaseStream.Position <= offsetEndPage) { switch (b) { case 16: item.LevelForRepeat = reader.ReadInt32(); break; case 22: item.IgnoreTotalsOnLastLevel = reader.ReadBoolean(); break; case 17: item.TablixCreateState = PageItemHelper.ReadIntList(reader, offsetEndPage); break; case 18: item.MembersInstanceIndex = PageItemHelper.ReadIntList(reader, offsetEndPage); break; case 19: { byte b2 = reader.ReadByte(); PageItemHelper pageItemHelper = null; switch (b2) { case 5: case 6: { PageItemContainerHelper pageItemContainerHelper = new PageItemContainerHelper(b2); pageItemHelper = pageItemContainerHelper; PageItemHelper.ReadPageItemContainerProperties(pageItemContainerHelper, reader, offsetEndPage); break; } case 1: case 2: case 3: case 8: case 9: case 10: case 12: case 15: case 17: pageItemHelper = new PageItemHelper(b2); PageItemHelper.ReadPageItemProperties(pageItemHelper, reader, offsetEndPage); break; case 4: pageItemHelper = new PageItemHelper(b2); PageItemHelper.ReadSubReportProperties(pageItemHelper, reader, offsetEndPage); break; case 11: { PageTablixHelper pageTablixHelper = new PageTablixHelper(b2); pageItemHelper = pageTablixHelper; PageItemHelper.ReadTablixProperties(pageTablixHelper, reader, offsetEndPage); break; } default: throw new InvalidDataException(SPBRes.InvalidTokenPaginationItems(b2.ToString("x", CultureInfo.InvariantCulture))); } item.ChildPage = pageItemHelper; break; } default: item.ProcessPageItemToken(b, reader, offsetEndPage); break; } b = reader.ReadByte(); } if (reader.BaseStream.Position <= offsetEndPage) { return; } throw new InvalidDataException(SPBRes.InvalidPaginationStream); }