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; }
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); }
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; }
/** * @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())); }
private ColumnInfoRecord CopyColInfo(ColumnInfoRecord ci) { return (ColumnInfoRecord)ci.Clone(); }
/// <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 } }
/** * 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; }
public static int CompareColInfos(ColumnInfoRecord a, ColumnInfoRecord b) { return a.FirstColumn - b.FirstColumn; }
/** * 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); } }
/// <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())); }
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 bool IsAdjacentBefore(ColumnInfoRecord other) { return _last_col == other._first_col - 1; }
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"); }
public bool IsAdjacentBefore(ColumnInfoRecord other) { return(_last_col == other._first_col - 1); }
/** * 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); }
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); }
/// <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); }