/** * Creates a PageSettingsBlock with default settings */ public PageSettingsBlock() { _plsRecords = new List<PLSAggregate>(); _rowBreaksRecord = new HorizontalPageBreakRecord(); _columnBreaksRecord = new VerticalPageBreakRecord(); header = new HeaderRecord(string.Empty); footer = new FooterRecord(string.Empty); _hCenter = CreateHCenter(); _vCenter = CreateVCenter(); printSetup = CreatePrintSetup(); }
/** * Shifts all the page breaks in the range "count" number of rows/columns * @param breaks The page record to be shifted * @param start Starting "main" value to shift breaks * @param stop Ending "main" value to shift breaks * @param count number of units (rows/columns) to shift by */ private static void ShiftBreaks(PageBreakRecord breaks, int start, int stop, int count) { IEnumerator iterator = breaks.GetBreaksEnumerator(); IList shiftedBreak = new ArrayList(); while(iterator.MoveNext()) { PageBreakRecord.Break breakItem = (PageBreakRecord.Break)iterator.Current; int breakLocation = breakItem.main; bool inStart = (breakLocation >= start); bool inEnd = (breakLocation <= stop); if(inStart && inEnd) shiftedBreak.Add(breakItem); } iterator = shiftedBreak.GetEnumerator(); while (iterator.MoveNext()) { PageBreakRecord.Break breakItem = (PageBreakRecord.Break)iterator.Current; breaks.RemoveBreak(breakItem.main); breaks.AddBreak((short)(breakItem.main+count), breakItem.subFrom, breakItem.subTo); } }
private bool ReadARecord(RecordStream rs) { switch (rs.PeekNextSid()) { case HorizontalPageBreakRecord.sid: CheckNotPresent(_rowBreaksRecord); _rowBreaksRecord = (PageBreakRecord)rs.GetNext(); break; case VerticalPageBreakRecord.sid: CheckNotPresent(_columnBreaksRecord); _columnBreaksRecord = (PageBreakRecord)rs.GetNext(); break; case HeaderRecord.sid: CheckNotPresent(header); header = (HeaderRecord)rs.GetNext(); break; case FooterRecord.sid: CheckNotPresent(footer); footer = (FooterRecord)rs.GetNext(); break; case HCenterRecord.sid: CheckNotPresent(_hCenter); _hCenter = (HCenterRecord)rs.GetNext(); break; case VCenterRecord.sid: CheckNotPresent(_vCenter); _vCenter = (VCenterRecord)rs.GetNext(); break; case LeftMarginRecord.sid: CheckNotPresent(_leftMargin); _leftMargin = (LeftMarginRecord)rs.GetNext(); break; case RightMarginRecord.sid: CheckNotPresent(_rightMargin); _rightMargin = (RightMarginRecord)rs.GetNext(); break; case TopMarginRecord.sid: CheckNotPresent(_topMargin); _topMargin = (TopMarginRecord)rs.GetNext(); break; case BottomMarginRecord.sid: CheckNotPresent(_bottomMargin); _bottomMargin = (BottomMarginRecord)rs.GetNext(); break; case UnknownRecord.PLS_004D: // PLS _plsRecords.Add(new PLSAggregate(rs)); break; case PrintSetupRecord.sid: CheckNotPresent(printSetup); printSetup = (PrintSetupRecord)rs.GetNext(); break; case UnknownRecord.BITMAP_00E9: // BITMAP CheckNotPresent(_bitmap); _bitmap = rs.GetNext(); break; case UnknownRecord.PRINTSIZE_0033: CheckNotPresent(_printSize); _printSize = rs.GetNext(); break; case HeaderFooterRecord.sid: HeaderFooterRecord hf = (HeaderFooterRecord)rs.GetNext(); if (hf.IsCurrentSheet) _headerFooter = hf; else _sviewHeaderFooters.Add(hf); break; default: // all other record types are not part of the PageSettingsBlock return false; } return true; }
private static void VisitIfPresent(PageBreakRecord r, RecordVisitor rv) { if (r != null) { if (r.IsEmpty) { // its OK to not serialize empty page break records return; } rv.VisitRecord(r); } }
/** * Shifts all the page breaks in the range "count" number of rows/columns * @param breaks The page record to be Shifted * @param start Starting "main" value to Shift breaks * @param stop Ending "main" value to Shift breaks * @param count number of Units (rows/columns) to Shift by */ public void ShiftBreaks(PageBreakRecord breaks, short start, short stop, int count) { if (rowBreaks == null) return; IEnumerator iterator = breaks.GetBreaksEnumerator(); IList ShiftedBreak = new ArrayList(); while (iterator.MoveNext()) { PageBreakRecord.Break breakItem = (PageBreakRecord.Break)iterator.Current; int breakLocation = breakItem.main; bool inStart = (breakLocation >= start); bool inEnd = (breakLocation <= stop); if (inStart && inEnd) ShiftedBreak.Add(breakItem); } iterator = ShiftedBreak.GetEnumerator(); while (iterator.MoveNext()) { PageBreakRecord.Break breakItem = (PageBreakRecord.Break)iterator.Current; breaks.RemoveBreak(breakItem.main); breaks.AddBreak(breakItem.main + count, breakItem.subFrom, breakItem.subTo); } }