blob: d50ba36a882848b2b81e0d2b1b71a955a4e9fc93 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _XMLEXP_HXX
#define _XMLEXP_HXX
#include <xmloff/xmlexp.hxx>
#include "xmlitmap.hxx"
#include <xmloff/uniref.hxx>
#include <xmloff/xmltoken.hxx>
class SwPaM;
class SwFmt;
class SwFrmFmt;
class SvXMLUnitConverter;
class SvXMLExportItemMapper;
class SvXMLAutoStylePoolP;
class SwTableLine;
class SwTableLines;
class SwTableBox;
class SwXMLTableColumn_Impl;
class SwXMLTableLines_Impl;
class SwXMLTableLinesCache_Impl;
class SwXMLTableColumnsSortByWidth_Impl;
class SwXMLTableFrmFmtsSort_Impl;
class SwXMLTableInfo_Impl;
class SwTableNode;
class XMLPropertySetMapper;
class SwXMLExport : public SvXMLExport
{
friend class SwXMLExpContext;
#ifdef XML_CORE_API
SwPaM *pCurPaM; // the current PaM
SwPaM *pOrigPaM; // the original PaM
#endif
SvXMLUnitConverter *pTwipUnitConv;
SvXMLExportItemMapper *pTableItemMapper;
SwXMLTableLinesCache_Impl *pTableLines;
SvXMLItemMapEntriesRef xTableItemMap;
SvXMLItemMapEntriesRef xTableRowItemMap;
SvXMLItemMapEntriesRef xTableCellItemMap;
UniReference < XMLPropertySetMapper > xParaPropMapper;
sal_Bool bExportWholeDoc : 1;// export whole document?
sal_Bool bBlock : 1; // export text block?
sal_Bool bExportFirstTableOnly : 1;
sal_Bool bShowProgress : 1;
sal_Bool bSavedShowChanges : 1;
void _InitItemExport();
void _FinitItemExport();
void ExportTableLinesAutoStyles( const SwTableLines& rLines,
sal_uInt32 nAbsWidth,
sal_uInt32 nBaseWidth,
const ::rtl::OUString& rNamePrefix,
SwXMLTableColumnsSortByWidth_Impl& rExpCols,
SwXMLTableFrmFmtsSort_Impl& rExpRows,
SwXMLTableFrmFmtsSort_Impl& rExpCells,
SwXMLTableInfo_Impl& rTblInfo,
sal_Bool bTop=sal_False );
void ExportFmt( const SwFmt& rFmt, enum ::xmloff::token::XMLTokenEnum eClass = ::xmloff::token::XML_TOKEN_INVALID );
void ExportTableFmt( const SwFrmFmt& rFmt, sal_uInt32 nAbsWidth );
void ExportTableColumnStyle( const SwXMLTableColumn_Impl& rCol );
void ExportTableBox( const SwTableBox& rBox, sal_uInt16 nColSpan, sal_uInt16 nRowSpan,
SwXMLTableInfo_Impl& rTblInfo );
void ExportTableLine( const SwTableLine& rLine,
const SwXMLTableLines_Impl& rLines,
SwXMLTableInfo_Impl& rTblInfo );
void ExportTableLines( const SwTableLines& rLines,
SwXMLTableInfo_Impl& rTblInfo,
sal_uInt16 nHeaderRows = 0 );
virtual void _ExportMeta();
virtual void _ExportFontDecls();
virtual void _ExportStyles( sal_Bool bUsed );
virtual void _ExportAutoStyles();
virtual void _ExportMasterStyles();
virtual void SetBodyAttributes();
virtual void _ExportContent();
virtual void GetViewSettings(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aProps);
virtual void GetConfigurationSettings(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aProps);
virtual sal_Int32 GetDocumentSpecificSettings( ::std::list< SettingsGroup >& _out_rSettings );
#ifdef XML_CORE_API
void SetCurPaM( SwPaM& rPaM, sal_Bool bWhole, sal_Bool bTabOnly );
#endif
// string constants for table cell export
const ::rtl::OUString sNumberFormat;
const ::rtl::OUString sIsProtected;
const ::rtl::OUString sCell;
void setBlockMode();
protected:
virtual XMLTextParagraphExport* CreateTextParagraphExport();
virtual SvXMLAutoStylePoolP* CreateAutoStylePool();
virtual XMLPageExport* CreatePageExport();
virtual XMLShapeExport* CreateShapeExport();
virtual XMLFontAutoStylePool* CreateFontAutoStylePool();
public:
// #110680#
SwXMLExport(
const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xServiceFactory,
sal_uInt16 nExportFlags = EXPORT_ALL);
#ifdef XML_CORE_API
// #110680#
SwXMLExport(
const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xServiceFactory,
const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & rModel,
SwPaM& rPaM,
const ::rtl::OUString& rFileName,
const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & rHandler,
const ::com::sun::star::uno::Reference< ::com::sun::star::document::XGraphicObjectResolver > &,
sal_Bool bExpWholeDoc,
sal_Bool bExpFirstTableOnly,
sal_Bool bShowProgr );
#endif
virtual ~SwXMLExport();
virtual sal_uInt32 exportDoc( enum ::xmloff::token::XMLTokenEnum eClass = ::xmloff::token::XML_TOKEN_INVALID );
inline const SvXMLUnitConverter& GetTwipUnitConverter() const;
void ExportTableAutoStyles( const SwTableNode& rTblNd );
void ExportTable( const SwTableNode& rTblNd );
SvXMLExportItemMapper& GetTableItemMapper() { return *pTableItemMapper; }
const UniReference < XMLPropertySetMapper >& GetParaPropMapper()
{
return xParaPropMapper;
}
sal_Bool IsShowProgress() const { return bShowProgress; }
void SetShowProgress( sal_Bool b ) { bShowProgress = b; }
sal_Bool IsBlockMode() const { return bBlock; }
// XUnoTunnel
static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw();
virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
// XServiceInfo (override parent method)
::rtl::OUString SAL_CALL getImplementationName()
throw( ::com::sun::star::uno::RuntimeException );
};
inline const SvXMLUnitConverter& SwXMLExport::GetTwipUnitConverter() const
{
return *pTwipUnitConv;
}
#endif // _XMLEXP_HXX