private static ColumnInfoRecord CreateColInfo(int firstCol, int lastCol)
 {
     ColumnInfoRecord columnInfoRecord = new ColumnInfoRecord();
     columnInfoRecord.FirstColumn = ((short)firstCol);
     columnInfoRecord.LastColumn = ((short)lastCol);
     return columnInfoRecord;
 }
        public void TestGetCellWidth()
        {
            InternalSheet sheet = InternalSheet.CreateSheet();
            ColumnInfoRecord nci = new ColumnInfoRecord();

            // Prepare test model
            nci.FirstColumn = 5;
            nci.LastColumn = 10;
            nci.ColumnWidth = 100;


            sheet._columnInfos.InsertColumn(nci);

            Assert.AreEqual(100, sheet.GetColumnWidth(5));
            Assert.AreEqual(100, sheet.GetColumnWidth(6));
            Assert.AreEqual(100, sheet.GetColumnWidth(7));
            Assert.AreEqual(100, sheet.GetColumnWidth(8));
            Assert.AreEqual(100, sheet.GetColumnWidth(9));
            Assert.AreEqual(100, sheet.GetColumnWidth(10));

            sheet.SetColumnWidth(6, 200);

            Assert.AreEqual(100, sheet.GetColumnWidth(5));
            Assert.AreEqual(200, sheet.GetColumnWidth(6));
            Assert.AreEqual(100, sheet.GetColumnWidth(7));
            Assert.AreEqual(100, sheet.GetColumnWidth(8));
            Assert.AreEqual(100, sheet.GetColumnWidth(9));
            Assert.AreEqual(100, sheet.GetColumnWidth(10));
        }
 public static ColumnInfoRecord[] GetRecords(ColumnInfoRecordsAggregate agg)
 {
     CIRCollector circ = new CIRCollector();
     agg.VisitContainedRecords(circ);
     ArrayList list = circ._list;
     ColumnInfoRecord[] result = new ColumnInfoRecord[list.Count];
     result = (ColumnInfoRecord[])list.ToArray(typeof(ColumnInfoRecord));
     return result;
 }
示例#4
0
        public override Object Clone()
        {
            ColumnInfoRecord rec = new ColumnInfoRecord();

            rec.field_1_first_col = field_1_first_col;
            rec.field_2_last_col  = field_2_last_col;
            rec.field_3_col_width = field_3_col_width;
            rec.field_4_xf_index  = field_4_xf_index;
            rec.field_5_options   = field_5_options;
            rec.field_6_reserved  = field_6_reserved;
            return(rec);
        }
示例#5
0
        public override Object Clone()
        {
            ColumnInfoRecord rec = new ColumnInfoRecord();

            rec._first_col       = _first_col;
            rec._last_col        = _last_col;
            rec._col_width       = _col_width;
            rec._xf_index        = _xf_index;
            rec._options         = _options;
            rec.field_6_reserved = field_6_reserved;
            return(rec);
        }
        public void TestBasic() {
		byte[] data = HexRead.ReadFromString("7D 00 0C 00 14 00 9B 00 C7 19 0F 00 01 13 00 00");

		RecordInputStream in1 = TestcaseRecordInputStream.Create(data);
		ColumnInfoRecord cir = new ColumnInfoRecord(in1);
		Assert.AreEqual(0, in1.Remaining);

		Assert.AreEqual(20, cir.FirstColumn);
		Assert.AreEqual(155, cir.LastColumn);
		Assert.AreEqual(6599, cir.ColumnWidth);
		Assert.AreEqual(15, cir.XFIndex);
		Assert.AreEqual(true, cir.IsHidden);
		Assert.AreEqual(3, cir.OutlineLevel);
		Assert.AreEqual(true, cir.IsCollapsed);
		Assert.IsTrue(Arrays.Equals(data, cir.Serialize()));
	}
 /**
  * @return true if the format, options and column width match
  */
 public bool FormatMatches(ColumnInfoRecord other)
 {
     if (field_4_xf_index != other.field_4_xf_index)
     {
         return false;
     }
     if (field_5_options != other.field_5_options)
     {
         return false;
     }
     if (field_3_col_width != other.field_3_col_width)
     {
         return false;
     }
     return true;
 }
示例#8
0
 /**
  * @return true if the format, options and column width match
  */
 public bool FormatMatches(ColumnInfoRecord other)
 {
     if (_xf_index != other._xf_index)
     {
         return(false);
     }
     if (_options != other._options)
     {
         return(false);
     }
     if (_col_width != other._col_width)
     {
         return(false);
     }
     return(true);
 }
        public void TestZeroResevedBytes_bug48332()
        {
            // Taken from bugzilla attachment 24661 (offset 0x1E73)
            byte[] inpData = HexRead.ReadFromString("7D 00 0A 00 00 00 00 00 D5 19 0F 00 02 00");
            byte[] outData = HexRead.ReadFromString("7D 00 0C 00 00 00 00 00 D5 19 0F 00 02 00 00 00");

            RecordInputStream in1 = TestcaseRecordInputStream.Create(inpData);
            ColumnInfoRecord cir;
            try
            {
                cir = new ColumnInfoRecord(in1);
            }
            catch (RuntimeException e)
            {
                if (e.Message.Equals("Unusual record size remaining=(0)"))
                {
                    throw new AssertionException("Identified bug 48332");
                }
                throw e;
            }
            Assert.AreEqual(0, in1.Remaining);
            Assert.IsTrue(Arrays.Equals(outData, cir.Serialize()));
        }
示例#10
0
 private ColumnInfoRecord CopyColInfo(ColumnInfoRecord ci)
 {
     return (ColumnInfoRecord)ci.Clone();
 }
示例#11
0
        /// <summary>
        /// Sets the column.
        /// </summary>
        /// <param name="targetColumnIx">The target column ix.</param>
        /// <param name="xfIndex">Index of the xf.</param>
        /// <param name="width">The width.</param>
        /// <param name="level">The level.</param>
        /// <param name="hidden">The hidden.</param>
        /// <param name="collapsed">The collapsed.</param>
        public void SetColumn(int targetColumnIx, short? xfIndex, int? width, int? level, bool? hidden, bool? collapsed)
        {
            ColumnInfoRecord ci = null;
            int k = 0;

            for (k = 0; k < records.Count; k++)
            {
                ColumnInfoRecord tci = (ColumnInfoRecord)records[k];
                if (tci.ContainsColumn(targetColumnIx))
                {
                    ci = tci;
                    break;
                }
                if (tci.FirstColumn > targetColumnIx)
                {
                    // call targetColumnIx infos after k are for later targetColumnIxs
                    break; // exit now so k will be the correct insert pos
                }
            }

            if (ci == null)
            {
                // okay so there IsN'T a targetColumnIx info record that cover's this targetColumnIx so lets Create one!
                ColumnInfoRecord nci = new ColumnInfoRecord();

                nci.FirstColumn = targetColumnIx;
                nci.LastColumn = targetColumnIx;
                SetColumnInfoFields(nci, xfIndex, width, level, hidden, collapsed);
                InsertColumn(k, nci);
                AttemptMergeColInfoRecords(k);
                return;
            }

            bool styleChanged = ci.XFIndex != xfIndex;
            bool widthChanged = ci.ColumnWidth != width;
            bool levelChanged = ci.OutlineLevel != level;
            bool hiddenChanged = ci.IsHidden != hidden;
            bool collapsedChanged = ci.IsCollapsed != collapsed;
            bool targetColumnIxChanged = styleChanged || widthChanged || levelChanged || hiddenChanged || collapsedChanged;
            if (!targetColumnIxChanged)
            {
                // do nothing...nothing Changed.
                return;
            }
            if ((ci.FirstColumn == targetColumnIx)
                     && (ci.LastColumn == targetColumnIx))
            {                               // if its only for this cell then
                // ColumnInfo ci for a single column, the target column
                SetColumnInfoFields(ci, xfIndex, width, level, hidden, collapsed);
                AttemptMergeColInfoRecords(k);
                return;
            }
            if ((ci.FirstColumn == targetColumnIx)
                     || (ci.LastColumn == targetColumnIx))
            {
                // The target column is at either end of the multi-column ColumnInfo ci
                // we'll just divide the info and create a new one
                if (ci.FirstColumn == targetColumnIx)
                {
                    ci.FirstColumn = targetColumnIx + 1;
                }
                else
                {
                    ci.LastColumn = targetColumnIx - 1;
                    k++; // adjust insert pos to insert after
                }
                ColumnInfoRecord nci = CopyColInfo(ci);

                nci.FirstColumn = targetColumnIx;
                nci.LastColumn = targetColumnIx;

                SetColumnInfoFields(nci, xfIndex, width, level, hidden, collapsed);

                InsertColumn(k, nci);
                AttemptMergeColInfoRecords(k);
            }
            else
            {
                //split to 3 records
                ColumnInfoRecord ciStart = ci;
                ColumnInfoRecord ciMid = CopyColInfo(ci);
                ColumnInfoRecord ciEnd = CopyColInfo(ci);
                int lastcolumn = ci.LastColumn;

                ciStart.LastColumn = (targetColumnIx - 1);

                ciMid.FirstColumn=(targetColumnIx);
                ciMid.LastColumn=(targetColumnIx);
                SetColumnInfoFields(ciMid, xfIndex, width, level, hidden, collapsed);
                InsertColumn(++k, ciMid);

                ciEnd.FirstColumn = (targetColumnIx + 1);
                ciEnd.LastColumn = (lastcolumn);
                InsertColumn(++k, ciEnd);
                // no need to attemptMergeColInfoRecords because we 
                // know both on each side are different
            }
        }
示例#12
0
     /**
 * merges two column info records (if they are adjacent and have the same formatting, etc)
 * @return <c>false</c> if the two column records could not be merged
 */
     private static bool MergeColInfoRecords(ColumnInfoRecord ciA, ColumnInfoRecord ciB)
     {
         if (ciA.IsAdjacentBefore(ciB) && ciA.FormatMatches(ciB))
         {
             ciA.LastColumn = ciB.LastColumn;
             return true;
         }
         return false;
     }
示例#13
0
 public static int CompareColInfos(ColumnInfoRecord a, ColumnInfoRecord b)
 {
     return a.FirstColumn - b.FirstColumn;
 }
示例#14
0
 /**
  * Sets all non null fields into the <c>ci</c> parameter.
  */
 private static void SetColumnInfoFields(ColumnInfoRecord ci, short? xfStyle, int? width,
             int? level, Boolean? hidden, Boolean? collapsed)
 {
     if (xfStyle != null)
     {
         ci.XFIndex = Convert.ToInt16(xfStyle, CultureInfo.InvariantCulture);
     }
     if (width != null)
     {
         ci.ColumnWidth = Convert.ToInt32(width, CultureInfo.InvariantCulture);
     }
     if (level != null)
     {
         ci.OutlineLevel = (short)level;
     }
     if (hidden != null)
     {
         ci.IsHidden = Convert.ToBoolean(hidden, CultureInfo.InvariantCulture);
     }
     if (collapsed != null)
     {
         ci.IsCollapsed = Convert.ToBoolean(collapsed, CultureInfo.InvariantCulture);
     }
 }
示例#15
0
 /// <summary>
 /// Inserts a column into the aggregate (at the position specified
 /// by index
 /// </summary>
 /// <param name="idx">The index.</param>
 /// <param name="col">The columninfo.</param>
 public void InsertColumn(int idx, ColumnInfoRecord col)
 {
     records.Insert(idx, col);
 }
 public void TestOneReservedByte()
 {
     byte[] inpData = HexRead.ReadFromString("7D 00 0B 00 00 00 00 00 24 02 0F 00 00 00 01");
     byte[] outData = HexRead.ReadFromString("7D 00 0C 00 00 00 00 00 24 02 0F 00 00 00 01 00");
     RecordInputStream in1 = TestcaseRecordInputStream.Create(inpData);
     ColumnInfoRecord cir = new ColumnInfoRecord(in1);
     Assert.AreEqual(0, in1.Remaining);
     Assert.IsTrue(Arrays.Equals(outData, cir.Serialize()));
 }
示例#17
0
 public override Object Clone()
 {
     ColumnInfoRecord rec = new ColumnInfoRecord();
     rec._first_col = _first_col;
     rec._last_col = _last_col;
     rec._col_width = _col_width;
     rec._xf_index = _xf_index;
     rec._options = _options;
     rec.field_6_reserved = field_6_reserved;
     return rec;
 }
示例#18
0
 public bool IsAdjacentBefore(ColumnInfoRecord other)
 {
     return _last_col == other._first_col - 1;
 }
示例#19
0
 public override Object Clone()
 {
     ColumnInfoRecord rec = new ColumnInfoRecord();
     rec.field_1_first_col = field_1_first_col;
     rec.field_2_last_col = field_2_last_col;
     rec.field_3_col_width = field_3_col_width;
     rec.field_4_xf_index = field_4_xf_index;
     rec.field_5_options = field_5_options;
     rec.field_6_reserved = field_6_reserved;
     return rec;
 }
 private static void ConfirmCIR(ColumnInfoRecord[] cirs,
     int ix, int startColIx, int endColIx, int level, bool isHidden, bool isCollapsed)
 {
     ColumnInfoRecord cir = cirs[ix];
     Assert.AreEqual(startColIx, cir.FirstColumn, "startColIx");
     Assert.AreEqual(endColIx, cir.LastColumn, "endColIx");
     Assert.AreEqual(level, cir.OutlineLevel, "level");
     Assert.AreEqual(isHidden, cir.IsHidden, "hidden");
     Assert.AreEqual(isCollapsed, cir.IsCollapsed, "collapsed");
 }
示例#21
0
 public bool IsAdjacentBefore(ColumnInfoRecord other)
 {
     return(_last_col == other._first_col - 1);
 }
示例#22
0
 /**
  * Sets all non null fields into the <c>ci</c> parameter.
  */
 private void SetColumnInfoFields(ColumnInfoRecord ci, short xfStyle, short width, int level, bool hidden, bool collapsed)
 {
     ci.XFIndex = (xfStyle);
     ci.ColumnWidth = (width);
     ci.OutlineLevel = (short)level;
     ci.IsHidden = (hidden);
     ci.IsCollapsed = (collapsed);
 }
示例#23
0
文件: TestSheet.cs 项目: 89sos98/npoi
        public void TestXFIndexForColumn()
        {
            short TEST_IDX = 10;
            short DEFAULT_IDX = 0xF; // 15
            short xfindex = short.MinValue;
            InternalSheet sheet = InternalSheet.CreateSheet();

            // without ColumnInfoRecord
            xfindex = sheet.GetXFIndexForColAt((short)0);
            Assert.AreEqual(DEFAULT_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)1);
            Assert.AreEqual(DEFAULT_IDX, xfindex);

            ColumnInfoRecord nci = new ColumnInfoRecord();
            sheet.ColumnInfos.InsertColumn(nci);

            // single column ColumnInfoRecord
            nci.FirstColumn = ((short)2);
            nci.LastColumn = ((short)2);
            nci.XFIndex = (TEST_IDX);
            xfindex = sheet.GetXFIndexForColAt((short)0);
            Assert.AreEqual(DEFAULT_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)1);
            Assert.AreEqual(DEFAULT_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)2);
            Assert.AreEqual(TEST_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)3);
            Assert.AreEqual(DEFAULT_IDX, xfindex);

            // ten column ColumnInfoRecord
            nci.FirstColumn = ((short)2);
            nci.LastColumn = ((short)11);
            nci.XFIndex = (TEST_IDX);
            xfindex = sheet.GetXFIndexForColAt((short)1);
            Assert.AreEqual(DEFAULT_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)2);
            Assert.AreEqual(TEST_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)6);
            Assert.AreEqual(TEST_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)11);
            Assert.AreEqual(TEST_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)12);
            Assert.AreEqual(DEFAULT_IDX, xfindex);

            // single column ColumnInfoRecord starting at index 0
            nci.FirstColumn = ((short)0);
            nci.LastColumn = ((short)0);
            nci.XFIndex = (TEST_IDX);
            xfindex = sheet.GetXFIndexForColAt((short)0);
            Assert.AreEqual(TEST_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)1);
            Assert.AreEqual(DEFAULT_IDX, xfindex);

            // ten column ColumnInfoRecord starting at index 0
            nci.FirstColumn = ((short)0);
            nci.LastColumn = ((short)9);
            nci.XFIndex = (TEST_IDX);
            xfindex = sheet.GetXFIndexForColAt((short)0);
            Assert.AreEqual(TEST_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)7);
            Assert.AreEqual(TEST_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)9);
            Assert.AreEqual(TEST_IDX, xfindex);
            xfindex = sheet.GetXFIndexForColAt((short)10);
            Assert.AreEqual(DEFAULT_IDX, xfindex);
        }
示例#24
0
 /// <summary>
 /// Inserts a column into the aggregate (at the end of the list).
 /// </summary>
 /// <param name="col">The column.</param>
 public void InsertColumn(ColumnInfoRecord col)
 {
     records.Add(col);
     records.Sort(CIRComparator.instance);
 }