1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include "chartsheetfragment.hxx"
22 #include <oox/helper/attributelist.hxx>
23 #include "biffinputstream.hxx"
24 #include "pagesettings.hxx"
25 #include "viewsettings.hxx"
26 #include "workbooksettings.hxx"
27 #include "worksheetsettings.hxx"
32 using namespace ::oox::core
;
34 ChartsheetFragment::ChartsheetFragment( const WorksheetHelper
& rHelper
, const OUString
& rFragmentPath
) :
35 WorksheetFragmentBase( rHelper
, rFragmentPath
)
39 ContextHandlerRef
ChartsheetFragment::onCreateContext( sal_Int32 nElement
, const AttributeList
& rAttribs
)
41 switch( getCurrentElement() )
43 case XML_ROOT_CONTEXT
:
44 if( nElement
== XLS_TOKEN( chartsheet
) ) return this;
47 case XLS_TOKEN( chartsheet
):
50 case XLS_TOKEN( sheetViews
): return this;
52 case XLS_TOKEN( sheetPr
): getWorksheetSettings().importChartSheetPr( rAttribs
); break;
53 case XLS_TOKEN( sheetProtection
): getWorksheetSettings().importChartProtection( rAttribs
); break;
54 case XLS_TOKEN( pageMargins
): getPageSettings().importPageMargins( rAttribs
); break;
55 case XLS_TOKEN( pageSetup
): getPageSettings().importChartPageSetup( getRelations(), rAttribs
); break;
56 case XLS_TOKEN( headerFooter
): getPageSettings().importHeaderFooter( rAttribs
); return this;
57 case XLS_TOKEN( picture
): getPageSettings().importPicture( getRelations(), rAttribs
); break;
58 case XLS_TOKEN( drawing
): importDrawing( rAttribs
); break;
62 case XLS_TOKEN( sheetViews
):
63 if( nElement
== XLS_TOKEN( sheetView
) ) getSheetViewSettings().importChartSheetView( rAttribs
);
66 case XLS_TOKEN( headerFooter
):
69 case XLS_TOKEN( firstHeader
):
70 case XLS_TOKEN( firstFooter
):
71 case XLS_TOKEN( oddHeader
):
72 case XLS_TOKEN( oddFooter
):
73 case XLS_TOKEN( evenHeader
):
74 case XLS_TOKEN( evenFooter
): return this; // collect contents in onCharacters()
81 void ChartsheetFragment::onCharacters( const OUString
& rChars
)
83 switch( getCurrentElement() )
85 case XLS_TOKEN( firstHeader
):
86 case XLS_TOKEN( firstFooter
):
87 case XLS_TOKEN( oddHeader
):
88 case XLS_TOKEN( oddFooter
):
89 case XLS_TOKEN( evenHeader
):
90 case XLS_TOKEN( evenFooter
):
91 getPageSettings().importHeaderFooterCharacters( rChars
, getCurrentElement() );
96 ContextHandlerRef
ChartsheetFragment::onCreateRecordContext( sal_Int32 nRecId
, SequenceInputStream
& rStrm
)
98 switch( getCurrentElement() )
100 case XML_ROOT_CONTEXT
:
101 if( nRecId
== BIFF12_ID_WORKSHEET
) return this;
104 case BIFF12_ID_WORKSHEET
:
107 case BIFF12_ID_CHARTSHEETVIEWS
: return this;
109 case BIFF12_ID_CHARTSHEETPR
: getWorksheetSettings().importChartSheetPr( rStrm
); break;
110 case BIFF12_ID_CHARTPROTECTION
: getWorksheetSettings().importChartProtection( rStrm
); break;
111 case BIFF12_ID_PAGEMARGINS
: getPageSettings().importPageMargins( rStrm
); break;
112 case BIFF12_ID_CHARTPAGESETUP
: getPageSettings().importChartPageSetup( getRelations(), rStrm
); break;
113 case BIFF12_ID_HEADERFOOTER
: getPageSettings().importHeaderFooter( rStrm
); break;
114 case BIFF12_ID_PICTURE
: getPageSettings().importPicture( getRelations(), rStrm
); break;
115 case BIFF12_ID_DRAWING
: importDrawing( rStrm
); break;
119 case BIFF12_ID_CHARTSHEETVIEWS
:
120 if( nRecId
== BIFF12_ID_CHARTSHEETVIEW
) getSheetViewSettings().importChartSheetView( rStrm
);
126 const RecordInfo
* ChartsheetFragment::getRecordInfos() const
128 static const RecordInfo spRecInfos
[] =
130 { BIFF12_ID_CHARTSHEETVIEW
, BIFF12_ID_CHARTSHEETVIEW
+ 1 },
131 { BIFF12_ID_CHARTSHEETVIEWS
, BIFF12_ID_CHARTSHEETVIEWS
+ 1 },
132 { BIFF12_ID_CUSTOMCHARTVIEW
, BIFF12_ID_CUSTOMCHARTVIEW
+ 1 },
133 { BIFF12_ID_CUSTOMCHARTVIEWS
, BIFF12_ID_CUSTOMCHARTVIEWS
+ 1 },
134 { BIFF12_ID_HEADERFOOTER
, BIFF12_ID_HEADERFOOTER
+ 1 },
135 { BIFF12_ID_WORKSHEET
, BIFF12_ID_WORKSHEET
+ 1 },
141 void ChartsheetFragment::initializeImport()
143 // initial processing in base class WorksheetHelper
144 initializeWorksheetImport();
147 void ChartsheetFragment::finalizeImport()
149 // final processing in base class WorksheetHelper
150 finalizeWorksheetImport();
153 // private --------------------------------------------------------------------
155 void ChartsheetFragment::importDrawing( const AttributeList
& rAttribs
)
157 setDrawingPath( getFragmentPathFromRelId( rAttribs
.getString( R_TOKEN( id
), OUString() ) ) );
160 void ChartsheetFragment::importDrawing( SequenceInputStream
& rStrm
)
162 setDrawingPath( getFragmentPathFromRelId( BiffHelper::readString( rStrm
) ) );
168 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */