summaryrefslogtreecommitdiff
path: root/sc/source/filter/excel/xeview.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/filter/excel/xeview.cxx')
-rw-r--r--sc/source/filter/excel/xeview.cxx540
1 files changed, 0 insertions, 540 deletions
diff --git a/sc/source/filter/excel/xeview.cxx b/sc/source/filter/excel/xeview.cxx
deleted file mode 100644
index 9b21c2b4d..000000000
--- a/sc/source/filter/excel/xeview.cxx
+++ /dev/null
@@ -1,540 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sc.hxx"
-#include "xeview.hxx"
-#include "document.hxx"
-#include "scextopt.hxx"
-#include "viewopti.hxx"
-#include "xelink.hxx"
-#include "xestyle.hxx"
-
-using namespace ::oox;
-
-using ::rtl::OString;
-
-// Workbook view settings records =============================================
-
-XclExpWindow1::XclExpWindow1( const XclExpRoot& rRoot ) :
- XclExpRecord( EXC_ID_WINDOW1, 18 ),
- mnFlags( 0 ),
- mnTabBarSize( 600 )
-{
- const ScViewOptions& rViewOpt = rRoot.GetDoc().GetViewOptions();
- ::set_flag( mnFlags, EXC_WIN1_HOR_SCROLLBAR, rViewOpt.GetOption( VOPT_HSCROLL ) );
- ::set_flag( mnFlags, EXC_WIN1_VER_SCROLLBAR, rViewOpt.GetOption( VOPT_VSCROLL ) );
- ::set_flag( mnFlags, EXC_WIN1_TABBAR, rViewOpt.GetOption( VOPT_TABCONTROLS ) );
-
- double fTabBarWidth = rRoot.GetExtDocOptions().GetDocSettings().mfTabBarWidth;
- if( (0.0 <= fTabBarWidth) && (fTabBarWidth <= 1.0) )
- mnTabBarSize = static_cast< sal_uInt16 >( fTabBarWidth * 1000.0 + 0.5 );
-}
-
-void XclExpWindow1::SaveXml( XclExpXmlStream& rStrm )
-{
- const XclExpTabInfo& rTabInfo = rStrm.GetRoot().GetTabInfo();
-
- rStrm.GetCurrentStream()->singleElement( XML_workbookView,
- // OOXTODO: XML_visibility, // ST_visibilty
- // OOXTODO: XML_minimized, // bool
- XML_showHorizontalScroll, XclXmlUtils::ToPsz( ::get_flag( mnFlags, EXC_WIN1_HOR_SCROLLBAR ) ),
- XML_showVerticalScroll, XclXmlUtils::ToPsz( ::get_flag( mnFlags, EXC_WIN1_VER_SCROLLBAR ) ),
- XML_showSheetTabs, XclXmlUtils::ToPsz( ::get_flag( mnFlags, EXC_WIN1_TABBAR ) ),
- XML_xWindow, "0",
- XML_yWindow, "0",
- XML_windowWidth, OString::valueOf( (sal_Int32)0x4000 ).getStr(),
- XML_windowHeight, OString::valueOf( (sal_Int32)0x2000 ).getStr(),
- XML_tabRatio, OString::valueOf( (sal_Int32)mnTabBarSize ).getStr(),
- XML_firstSheet, OString::valueOf( (sal_Int32)rTabInfo.GetFirstVisXclTab() ).getStr(),
- XML_activeTab, OString::valueOf( (sal_Int32)rTabInfo.GetDisplayedXclTab() ).getStr(),
- // OOXTODO: XML_autoFilterDateGrouping, // bool; AUTOFILTER12? 87Eh
- FSEND );
-}
-
-void XclExpWindow1::WriteBody( XclExpStream& rStrm )
-{
- const XclExpTabInfo& rTabInfo = rStrm.GetRoot().GetTabInfo();
-
- rStrm << sal_uInt16( 0 ) // X position of the window
- << sal_uInt16( 0 ) // Y position of the window
- << sal_uInt16( 0x4000 ) // width of the window
- << sal_uInt16( 0x2000 ) // height of the window
- << mnFlags
- << rTabInfo.GetDisplayedXclTab()
- << rTabInfo.GetFirstVisXclTab()
- << rTabInfo.GetXclSelectedCount()
- << mnTabBarSize;
-}
-
-// Sheet view settings records ================================================
-
-XclExpWindow2::XclExpWindow2( const XclExpRoot& rRoot,
- const XclTabViewData& rData, sal_uInt32 nGridColorId ) :
- XclExpRecord( EXC_ID_WINDOW2, (rRoot.GetBiff() == EXC_BIFF8) ? 18 : 10 ),
- maGridColor( rData.maGridColor ),
- mnGridColorId( nGridColorId ),
- mnFlags( 0 ),
- maFirstXclPos( rData.maFirstXclPos ),
- mnNormalZoom( rData.mnNormalZoom ),
- mnPageZoom( rData.mnPageZoom )
-{
- ::set_flag( mnFlags, EXC_WIN2_SHOWFORMULAS, rData.mbShowFormulas );
- ::set_flag( mnFlags, EXC_WIN2_SHOWGRID, rData.mbShowGrid );
- ::set_flag( mnFlags, EXC_WIN2_SHOWHEADINGS, rData.mbShowHeadings );
- ::set_flag( mnFlags, EXC_WIN2_FROZEN, rData.mbFrozenPanes );
- ::set_flag( mnFlags, EXC_WIN2_SHOWZEROS, rData.mbShowZeros );
- ::set_flag( mnFlags, EXC_WIN2_DEFGRIDCOLOR, rData.mbDefGridColor );
- ::set_flag( mnFlags, EXC_WIN2_MIRRORED, rData.mbMirrored );
- ::set_flag( mnFlags, EXC_WIN2_SHOWOUTLINE, rData.mbShowOutline );
- ::set_flag( mnFlags, EXC_WIN2_FROZENNOSPLIT, rData.mbFrozenPanes );
- ::set_flag( mnFlags, EXC_WIN2_SELECTED, rData.mbSelected );
- ::set_flag( mnFlags, EXC_WIN2_DISPLAYED, rData.mbDisplayed );
- ::set_flag( mnFlags, EXC_WIN2_PAGEBREAKMODE, rData.mbPageMode );
-}
-
-void XclExpWindow2::WriteBody( XclExpStream& rStrm )
-{
- const XclExpRoot& rRoot = rStrm.GetRoot();
-
- rStrm << mnFlags
- << maFirstXclPos;
-
- switch( rRoot.GetBiff() )
- {
- case EXC_BIFF3:
- case EXC_BIFF4:
- case EXC_BIFF5:
- rStrm << maGridColor;
- break;
- case EXC_BIFF8:
- rStrm << rRoot.GetPalette().GetColorIndex( mnGridColorId )
- << sal_uInt16( 0 )
- << mnPageZoom
- << mnNormalZoom
- << sal_uInt32( 0 );
- break;
- default: DBG_ERROR_BIFF();
- }
-}
-
-// ----------------------------------------------------------------------------
-
-XclExpScl::XclExpScl( sal_uInt16 nZoom ) :
- XclExpRecord( EXC_ID_SCL, 4 ),
- mnNum( nZoom ),
- mnDenom( 100 )
-{
- Shorten( 2 );
- Shorten( 5 );
-}
-
-void XclExpScl::Shorten( sal_uInt16 nFactor )
-{
- while( (mnNum % nFactor == 0) && (mnDenom % nFactor == 0) )
- {
- mnNum = mnNum / nFactor;
- mnDenom = mnDenom / nFactor;
- }
-}
-
-void XclExpScl::WriteBody( XclExpStream& rStrm )
-{
- OSL_ENSURE_BIFF( rStrm.GetRoot().GetBiff() >= EXC_BIFF4 );
- rStrm << mnNum << mnDenom;
-}
-
-// ----------------------------------------------------------------------------
-
-XclExpPane::XclExpPane( const XclTabViewData& rData ) :
- XclExpRecord( EXC_ID_PANE, 10 ),
- mnSplitX( rData.mnSplitX ),
- mnSplitY( rData.mnSplitY ),
- maSecondXclPos( rData.maSecondXclPos ),
- mnActivePane( rData.mnActivePane )
-{
- OSL_ENSURE( rData.IsSplit(), "XclExpPane::XclExpPane - no PANE record for unsplit view" );
-}
-
-static const char* lcl_GetActivePane( sal_uInt8 nActivePane )
-{
- switch( nActivePane )
- {
- case EXC_PANE_TOPLEFT: return "topLeft"; //break;
- case EXC_PANE_TOPRIGHT: return "topRight"; //break;
- case EXC_PANE_BOTTOMLEFT: return "bottomLeft"; //break;
- case EXC_PANE_BOTTOMRIGHT: return "bottomRight"; //break;
- }
- return "**error: lcl_GetActivePane";
-}
-
-void XclExpPane::SaveXml( XclExpXmlStream& rStrm )
-{
- rStrm.GetCurrentStream()->singleElement( XML_pane,
- XML_xSplit, OString::valueOf( (sal_Int32)mnSplitX ).getStr(),
- XML_ySplit, OString::valueOf( (sal_Int32)mnSplitY ).getStr(),
- XML_topLeftCell, XclXmlUtils::ToOString( maSecondXclPos ).getStr(),
- XML_activePane, lcl_GetActivePane( mnActivePane ),
- // OOXTODO: XML_state,
- FSEND );
-}
-
-void XclExpPane::WriteBody( XclExpStream& rStrm )
-{
- rStrm << mnSplitX
- << static_cast<sal_uInt16>( mnSplitY )
- << maSecondXclPos
- << mnActivePane;
- if( rStrm.GetRoot().GetBiff() >= EXC_BIFF5 )
- rStrm << sal_uInt8( 0 );
-}
-
-// ----------------------------------------------------------------------------
-
-XclExpSelection::XclExpSelection( const XclTabViewData& rData, sal_uInt8 nPane ) :
- XclExpRecord( EXC_ID_SELECTION, 15 ),
- mnPane( nPane )
-{
- if( const XclSelectionData* pSelData = rData.GetSelectionData( nPane ) )
- maSelData = *pSelData;
-
- // find the cursor position in the selection list (or add it)
- XclRangeList& rXclSel = maSelData.maXclSelection;
- bool bFound = false;
- for( XclRangeList::const_iterator aIt = rXclSel.begin(), aEnd = rXclSel.end(); !bFound && (aIt != aEnd); ++aIt )
- if( (bFound = aIt->Contains( maSelData.maXclCursor )) == true )
- maSelData.mnCursorIdx = static_cast< sal_uInt16 >( aIt - rXclSel.begin() );
- /* Cursor cell not found in list? (e.g. inactive pane, or removed in
- ConvertRangeList(), because Calc cursor on invalid pos)
- -> insert the valid Excel cursor. */
- if( !bFound )
- {
- maSelData.mnCursorIdx = static_cast< sal_uInt16 >( rXclSel.size() );
- rXclSel.push_back( XclRange( maSelData.maXclCursor ) );
- }
-}
-
-void XclExpSelection::SaveXml( XclExpXmlStream& rStrm )
-{
- rStrm.GetCurrentStream()->singleElement( XML_selection,
- XML_pane, lcl_GetActivePane( mnPane ),
- XML_activeCell, XclXmlUtils::ToOString( maSelData.maXclCursor ).getStr(),
- XML_activeCellId, OString::valueOf( (sal_Int32) maSelData.mnCursorIdx ).getStr(),
- XML_sqref, XclXmlUtils::ToOString( maSelData.maXclSelection ).getStr(),
- FSEND );
-}
-
-void XclExpSelection::WriteBody( XclExpStream& rStrm )
-{
- rStrm << mnPane // pane for this selection
- << maSelData.maXclCursor // cell cursor
- << maSelData.mnCursorIdx; // index to range containing cursor
- maSelData.maXclSelection.Write( rStrm, false );
-}
-
-// ----------------------------------------------------------------------------
-
-XclExpTabBgColor::XclExpTabBgColor( const XclTabViewData& rTabViewData ) :
- XclExpRecord( EXC_ID_SHEETEXT, 18 ),
- mrTabViewData( rTabViewData )
-{
-}
-//TODO Fix savexml...
-/*void XclExpTabBgColor::SaveXml( XclExpXmlStream& rStrm )
-{
-}*/
-
-void XclExpTabBgColor::WriteBody( XclExpStream& rStrm )
-{
- if ( mrTabViewData.IsDefaultTabBgColor() )
- return;
- sal_uInt16 rt = 0x0862; //rt
- sal_uInt16 grbitFrt = 0x0000; //grbit must be set to 0
- sal_uInt32 unused = 0x00000000; //Use twice...
- sal_uInt32 cb = 0x00000014; // Record Size, may be larger in future...
- sal_uInt16 reserved = 0x0000; //trailing bits are 0
- sal_uInt16 TabBgColorIndex;
- XclExpPalette& rPal = rStrm.GetRoot().GetPalette();
- TabBgColorIndex = rPal.GetColorIndex(mrTabViewData.mnTabBgColorId);
- if (TabBgColorIndex < 8 || TabBgColorIndex > 63 ) // only numbers 8 - 63 are valid numbers
- TabBgColorIndex = 127; //Excel specs: 127 makes excel ignore tab color information.
- rStrm << rt << grbitFrt << unused << unused << cb << TabBgColorIndex << reserved;
-}
-
-// Sheet view settings ========================================================
-
-namespace {
-
-/** Converts a Calc zoom factor into an Excel zoom factor. Returns 0 for a default zoom value. */
-sal_uInt16 lclGetXclZoom( long nScZoom, sal_uInt16 nDefXclZoom )
-{
- sal_uInt16 nXclZoom = limit_cast< sal_uInt16 >( nScZoom, EXC_ZOOM_MIN, EXC_ZOOM_MAX );
- return (nXclZoom == nDefXclZoom) ? 0 : nXclZoom;
-}
-
-} // namespace
-
-// ----------------------------------------------------------------------------
-
-XclExpTabViewSettings::XclExpTabViewSettings( const XclExpRoot& rRoot, SCTAB nScTab ) :
- XclExpRoot( rRoot ),
- mnGridColorId( XclExpPalette::GetColorIdFromIndex( EXC_COLOR_WINDOWTEXT ) )
-{
- // *** sheet flags ***
-
- const XclExpTabInfo& rTabInfo = GetTabInfo();
- maData.mbSelected = rTabInfo.IsSelectedTab( nScTab );
- maData.mbDisplayed = rTabInfo.IsDisplayedTab( nScTab );
- maData.mbMirrored = rTabInfo.IsMirroredTab( nScTab );
-
- const ScViewOptions& rViewOpt = GetDoc().GetViewOptions();
- maData.mbShowFormulas = rViewOpt.GetOption( VOPT_FORMULAS );
- maData.mbShowHeadings = rViewOpt.GetOption( VOPT_HEADER );
- maData.mbShowZeros = rViewOpt.GetOption( VOPT_NULLVALS );
- maData.mbShowOutline = rViewOpt.GetOption( VOPT_OUTLINER );
-
- // *** sheet options: cursor, selection, splits, grid color, zoom ***
-
- if( const ScExtTabSettings* pTabSett = GetExtDocOptions().GetTabSettings( nScTab ) )
- {
- const ScExtTabSettings& rTabSett = *pTabSett;
- XclExpAddressConverter& rAddrConv = GetAddressConverter();
-
- // first visible cell in top-left pane
- if( (rTabSett.maFirstVis.Col() >= 0) && (rTabSett.maFirstVis.Row() >= 0) )
- maData.maFirstXclPos = rAddrConv.CreateValidAddress( rTabSett.maFirstVis, false );
-
- // first visible cell in additional pane(s)
- if( (rTabSett.maSecondVis.Col() >= 0) && (rTabSett.maSecondVis.Row() >= 0) )
- maData.maSecondXclPos = rAddrConv.CreateValidAddress( rTabSett.maSecondVis, false );
-
- // active pane
- switch( rTabSett.meActivePane )
- {
- case SCEXT_PANE_TOPLEFT: maData.mnActivePane = EXC_PANE_TOPLEFT; break;
- case SCEXT_PANE_TOPRIGHT: maData.mnActivePane = EXC_PANE_TOPRIGHT; break;
- case SCEXT_PANE_BOTTOMLEFT: maData.mnActivePane = EXC_PANE_BOTTOMLEFT; break;
- case SCEXT_PANE_BOTTOMRIGHT: maData.mnActivePane = EXC_PANE_BOTTOMRIGHT; break;
- }
-
- // freeze/split position
- maData.mbFrozenPanes = rTabSett.mbFrozenPanes;
- if( maData.mbFrozenPanes )
- {
- /* Frozen panes: handle split position as row/column positions.
- #i35812# Excel uses number of visible rows/columns, Calc uses position of freeze. */
- SCCOL nFreezeScCol = rTabSett.maFreezePos.Col();
- if( (0 < nFreezeScCol) && (nFreezeScCol <= GetXclMaxPos().Col()) )
- maData.mnSplitX = static_cast< sal_uInt16 >( nFreezeScCol ) - maData.maFirstXclPos.mnCol;
- SCROW nFreezeScRow = rTabSett.maFreezePos.Row();
- if( (0 < nFreezeScRow) && (nFreezeScRow <= GetXclMaxPos().Row()) )
- maData.mnSplitY = static_cast< sal_uInt32 >( nFreezeScRow ) - maData.maFirstXclPos.mnRow;
- // if both splits are left out (address overflow), remove the frozen flag
- maData.mbFrozenPanes = maData.IsSplit();
-
- // #i20671# frozen panes: mostright/mostbottom pane is active regardless of cursor position
- if( maData.HasPane( EXC_PANE_BOTTOMRIGHT ) )
- maData.mnActivePane = EXC_PANE_BOTTOMRIGHT;
- else if( maData.HasPane( EXC_PANE_TOPRIGHT ) )
- maData.mnActivePane = EXC_PANE_TOPRIGHT;
- else if( maData.HasPane( EXC_PANE_BOTTOMLEFT ) )
- maData.mnActivePane = EXC_PANE_BOTTOMLEFT;
- }
- else
- {
- // split window: position is in twips
- maData.mnSplitX = ulimit_cast< sal_uInt16 >( rTabSett.maSplitPos.X() );
- maData.mnSplitY = ulimit_cast< sal_uInt32 >( rTabSett.maSplitPos.Y() );
- }
-
- // selection
- CreateSelectionData( EXC_PANE_TOPLEFT, rTabSett.maCursor, rTabSett.maSelection );
- CreateSelectionData( EXC_PANE_TOPRIGHT, rTabSett.maCursor, rTabSett.maSelection );
- CreateSelectionData( EXC_PANE_BOTTOMLEFT, rTabSett.maCursor, rTabSett.maSelection );
- CreateSelectionData( EXC_PANE_BOTTOMRIGHT, rTabSett.maCursor, rTabSett.maSelection );
-
- // grid color
- const Color& rGridColor = rTabSett.maGridColor;
- maData.mbDefGridColor = rGridColor.GetColor() == COL_AUTO;
- if( !maData.mbDefGridColor )
- {
- if( GetBiff() == EXC_BIFF8 )
- mnGridColorId = GetPalette().InsertColor( rGridColor, EXC_COLOR_GRID );
- else
- maData.maGridColor = rGridColor;
- }
- maData.mbShowGrid = rTabSett.mbShowGrid;
-
- // view mode and zoom
- maData.mbPageMode = (GetBiff() == EXC_BIFF8) && rTabSett.mbPageMode;
- maData.mnNormalZoom = lclGetXclZoom( rTabSett.mnNormalZoom, EXC_WIN2_NORMALZOOM_DEF );
- maData.mnPageZoom = lclGetXclZoom( rTabSett.mnPageZoom, EXC_WIN2_PAGEZOOM_DEF );
- maData.mnCurrentZoom = maData.mbPageMode ? maData.mnPageZoom : maData.mnNormalZoom;
- }
-
- // Tab Bg Color
- if ( GetBiff() == EXC_BIFF8 && !GetDoc().IsDefaultTabBgColor(nScTab) )
- {
- XclExpPalette& rPal = GetPalette();
- maData.maTabBgColor = GetDoc().GetTabBgColor(nScTab);
- maData.mnTabBgColorId = rPal.InsertColor(maData.maTabBgColor, EXC_COLOR_TABBG, EXC_COLOR_NOTABBG );
- }
-}
-
-void XclExpTabViewSettings::Save( XclExpStream& rStrm )
-{
- WriteWindow2( rStrm );
- WriteScl( rStrm );
- WritePane( rStrm );
- WriteSelection( rStrm, EXC_PANE_TOPLEFT );
- WriteSelection( rStrm, EXC_PANE_TOPRIGHT );
- WriteSelection( rStrm, EXC_PANE_BOTTOMLEFT );
- WriteSelection( rStrm, EXC_PANE_BOTTOMRIGHT );
- WriteTabBgColor( rStrm );
-}
-
-static void lcl_WriteSelection( XclExpXmlStream& rStrm, const XclTabViewData& rData, sal_uInt8 nPane )
-{
- if( rData.HasPane( nPane ) )
- XclExpSelection( rData, nPane ).SaveXml( rStrm );
-}
-
-OString lcl_GetZoom( sal_uInt16 nZoom )
-{
- if( nZoom )
- return OString::valueOf( (sal_Int32)nZoom );
- return OString( "100" );
-}
-
-void XclExpTabViewSettings::SaveXml( XclExpXmlStream& rStrm )
-{
- sax_fastparser::FSHelperPtr& rWorksheet = rStrm.GetCurrentStream();
- rWorksheet->startElement( XML_sheetViews, FSEND );
- rWorksheet->startElement( XML_sheetView,
- XML_windowProtection, XclXmlUtils::ToPsz( maData.mbFrozenPanes ),
- XML_showFormulas, XclXmlUtils::ToPsz( maData.mbShowFormulas ),
- XML_showGridLines, XclXmlUtils::ToPsz( maData.mbShowGrid ),
- XML_showRowColHeaders, XclXmlUtils::ToPsz( maData.mbShowHeadings ),
- XML_showZeros, XclXmlUtils::ToPsz( maData.mbShowZeros ),
- XML_rightToLeft, XclXmlUtils::ToPsz( maData.mbMirrored ),
- XML_tabSelected, XclXmlUtils::ToPsz( maData.mbSelected ),
- // OOXTODO: XML_showRuler,
- XML_showOutlineSymbols, XclXmlUtils::ToPsz( maData.mbShowOutline ),
- XML_defaultGridColor, mnGridColorId == XclExpPalette::GetColorIdFromIndex( EXC_COLOR_WINDOWTEXT ) ? "true" : "false",
- // OOXTODO: XML_showWhiteSpace,
- XML_view, maData.mbPageMode ? "pageBreakPreview" : "normal", // OOXTODO: pageLayout
- XML_topLeftCell, XclXmlUtils::ToOString( maData.maFirstXclPos ).getStr(),
- XML_colorId, OString::valueOf( (sal_Int32) rStrm.GetRoot().GetPalette().GetColorIndex( mnGridColorId ) ).getStr(),
- XML_zoomScale, lcl_GetZoom( maData.mnCurrentZoom ).getStr(),
- XML_zoomScaleNormal, lcl_GetZoom( maData.mnNormalZoom ).getStr(),
- // OOXTODO: XML_zoomScaleSheetLayoutView,
- XML_zoomScalePageLayoutView, lcl_GetZoom( maData.mnPageZoom ).getStr(),
- XML_workbookViewId, "0", // OOXTODO? 0-based index of document(xl/workbook.xml)/workbook/bookviews/workbookView
- // should always be 0, as we only generate 1 such element.
- FSEND );
- if( maData.IsSplit() )
- {
- XclExpPane aPane( maData );
- aPane.SaveXml( rStrm );
- }
- lcl_WriteSelection( rStrm, maData, EXC_PANE_TOPLEFT );
- lcl_WriteSelection( rStrm, maData, EXC_PANE_TOPRIGHT );
- lcl_WriteSelection( rStrm, maData, EXC_PANE_BOTTOMLEFT );
- lcl_WriteSelection( rStrm, maData, EXC_PANE_BOTTOMRIGHT );
- rWorksheet->endElement( XML_sheetView );
- // OOXTODO: XML_extLst
- rWorksheet->endElement( XML_sheetViews );
-}
-
-// private --------------------------------------------------------------------
-
-void XclExpTabViewSettings::CreateSelectionData( sal_uInt8 nPane,
- const ScAddress& rCursor, const ScRangeList& rSelection )
-{
- if( maData.HasPane( nPane ) )
- {
- XclSelectionData& rSelData = maData.CreateSelectionData( nPane );
-
- // first step: use top-left visible cell as cursor
- rSelData.maXclCursor.mnCol = ((nPane == EXC_PANE_TOPLEFT) || (nPane == EXC_PANE_BOTTOMLEFT)) ?
- maData.maFirstXclPos.mnCol : maData.maSecondXclPos.mnCol;
- rSelData.maXclCursor.mnRow = ((nPane == EXC_PANE_TOPLEFT) || (nPane == EXC_PANE_TOPRIGHT)) ?
- maData.maFirstXclPos.mnRow : maData.maSecondXclPos.mnRow;
-
- // second step, active pane: create actual selection data with current cursor position
- if( nPane == maData.mnActivePane )
- {
- XclExpAddressConverter& rAddrConv = GetAddressConverter();
- // cursor position (keep top-left pane position from above, if rCursor is invalid)
- if( (rCursor.Col() >= 0) && (rCursor.Row() >= 0) )
- rSelData.maXclCursor = rAddrConv.CreateValidAddress( rCursor, false );
- // selection
- rAddrConv.ConvertRangeList( rSelData.maXclSelection, rSelection, false );
- }
- }
-}
-
-void XclExpTabViewSettings::WriteWindow2( XclExpStream& rStrm ) const
-{
-// #i43553# GCC 3.3 parse error
-// XclExpWindow2( GetRoot(), maData, mnGridColorId ).Save( rStrm );
- XclExpWindow2 aWindow2( GetRoot(), maData, mnGridColorId );
- aWindow2.Save( rStrm );
-}
-
-void XclExpTabViewSettings::WriteScl( XclExpStream& rStrm ) const
-{
- if( maData.mnCurrentZoom != 0 )
- XclExpScl( maData.mnCurrentZoom ).Save( rStrm );
-}
-
-void XclExpTabViewSettings::WritePane( XclExpStream& rStrm ) const
-{
- if( maData.IsSplit() )
-// #i43553# GCC 3.3 parse error
-// XclExpPane( GetRoot(), maData ).Save( rStrm );
- {
- XclExpPane aPane( maData );
- aPane.Save( rStrm );
- }
-}
-
-void XclExpTabViewSettings::WriteSelection( XclExpStream& rStrm, sal_uInt8 nPane ) const
-{
- if( maData.HasPane( nPane ) )
- XclExpSelection( maData, nPane ).Save( rStrm );
-}
-
-void XclExpTabViewSettings::WriteTabBgColor( XclExpStream& rStrm ) const
-{
- if ( !maData.IsDefaultTabBgColor() )
- XclExpTabBgColor( maData ).Save( rStrm );
-}
-// ============================================================================
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */