Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 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();
        }