internal void WriteTo(BinaryWriter tableWriter, BinaryWriter mainWriter, int lastCp) { tableWriter.Write(0); int count = m_cpOffsets.Count; for (int i = 0; i < count; i++) { tableWriter.Write(m_cpOffsets[i]); } tableWriter.Write(lastCp); SprmBuffer sprmBuffer = m_grpprl; if (UseTitlePage) { SprmBuffer obj = (SprmBuffer)m_grpprl.Clone(); obj.AddSprm(12298, 1, null); sprmBuffer = obj; } for (int j = 0; j < count + 1; j++) { tableWriter.Write(new byte[2]); tableWriter.Write((int)mainWriter.BaseStream.Position); tableWriter.Write(new byte[6]); if (j == 1) { sprmBuffer = m_grpprl; AddSprm(12297, 0, null); } mainWriter.Write((short)sprmBuffer.Offset); mainWriter.Write(sprmBuffer.Buf); } }
internal void InitTableRow(float leftStart, float rowHeight, float[] columnWidths, AutoFit autoFit) { if (m_tapx.Offset == 14) { float num = 0f; foreach (float num2 in columnWidths) { num += num2; } if (num / 25.4f > 22f) { RSTrace.RenderingTracer.Trace(TraceLevel.Verbose, "The maximum page width of the report exceeds 22 inches (55.88 centimeters)."); } else if (columnWidths.Length > 63) { RSTrace.RenderingTracer.Trace(TraceLevel.Verbose, "The rendered report contains a table that has more than 63 columns."); } m_columnWidths = columnWidths; m_numColumns = columnWidths.Length; m_borderColors = new CellBorderColor(m_numColumns); m_cellShading = new CellShading(m_numColumns, m_tableShd); m_cellPadding = new CellPadding(m_numColumns); CreateTableDefSprm(leftStart); if (autoFit != AutoFit.Never) { m_tapx.AddSprm(13845, (int)autoFit, null); } if (m_tableShd != null) { m_tapx.AddSprm(54880, 0, m_tableShd); } m_startOffset = m_tapx.Offset; } else { m_tapx.Clear(m_startOffset, m_tapx.Buf.Length - m_startOffset); int tcLocation = GetTcLocation(m_numColumns, 0); m_tapx.Clear(tcLocation, m_numColumns * 20); m_borderColors.Reset(); m_cellShading.Reset(); m_cellPadding.Reset(); m_tapx.Reset(m_startOffset); } m_rowHeight = Word97Writer.ToTwips(rowHeight); WriteExactRowHeight = false; WriteRowHeight = true; }
internal TableData(int tableLevel, bool layoutTable) { m_tapx = new SprmBuffer(2048, 2); m_tapx.AddSprm(9238, 1, null); m_tapx.AddSprm((ushort)((tableLevel > 1) ? 9292 : 9239), 1, null); m_tapx.AddSprm(26185, tableLevel, null); m_tableBorders = new BorderCode[4]; m_tableBorders[0] = new BorderCode(); m_tableBorders[1] = new BorderCode(); m_tableBorders[2] = new BorderCode(); m_tableBorders[3] = new BorderCode(); m_cellBorders = new BorderCode[4]; m_cellBorders[0] = new BorderCode(); m_cellBorders[1] = new BorderCode(); m_cellBorders[2] = new BorderCode(); m_cellBorders[3] = new BorderCode(); m_layoutTable = layoutTable; }
internal void CommitParagraph(int cpEnd, TableData currentRow, Stream dataStream) { byte[] array = m_grpprl.Buf; int num = m_grpprl.Offset; if (currentRow != null) { array = currentRow.Tapx; num = array.Length; if (num >= 488) { int param = (int)dataStream.Length; BinaryWriter binaryWriter = new BinaryWriter(dataStream); binaryWriter.Write((ushort)(array.Length - 2)); binaryWriter.Write(array, 2, array.Length - 2); binaryWriter.Flush(); SprmBuffer sprmBuffer = new SprmBuffer(8, 2); sprmBuffer.AddSprm(26182, param, null); array = sprmBuffer.Buf; num = sprmBuffer.Offset; } } if (!AddPropToPapFkp(m_papFkp, cpEnd, m_papFcOffset, new byte[13], m_papOffsetOffset, array, num, m_papGrpprlOffset)) { m_papTable.Write(m_papFkp, 0, m_papFkp.Length); m_papOffsets.Add(m_parStart * 2 + m_fcStart); Array.Clear(m_papFkp, 0, m_papFkp.Length); LittleEndian.PutInt(m_papFkp, m_parStart * 2 + m_fcStart); m_papFcOffset = 4; m_papOffsetOffset = m_papFcOffset; m_papGrpprlOffset = 510; AddPropToPapFkp(m_papFkp, cpEnd, m_papFcOffset, new byte[13], m_papOffsetOffset, array, num, m_papGrpprlOffset); } m_papFkp[511]++; m_papFcOffset += 4; m_papOffsetOffset += 17; int num2 = num + 1; m_papGrpprlOffset = m_papGrpprlOffset - num2 - num2 % 2; m_parStart = cpEnd; m_grpprl.ClearStyle(); m_grpprl.Reset(); }