From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- reportdesign/source/filter/xml/xmlExport.hxx | 161 +++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 reportdesign/source/filter/xml/xmlExport.hxx (limited to 'reportdesign/source/filter/xml/xmlExport.hxx') diff --git a/reportdesign/source/filter/xml/xmlExport.hxx b/reportdesign/source/filter/xml/xmlExport.hxx new file mode 100644 index 000000000..f82d85aa7 --- /dev/null +++ b/reportdesign/source/filter/xml/xmlExport.hxx @@ -0,0 +1,161 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +#ifndef INCLUDED_REPORTDESIGN_SOURCE_FILTER_XML_XMLEXPORT_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_FILTER_XML_XMLEXPORT_HXX + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace rptxml +{ +using namespace ::xmloff::token; +using namespace css::uno; +using namespace css::container; +using namespace css::lang; +using namespace css::beans; +using namespace css::document; +using namespace css::text; +using namespace css::report; +using namespace css::io; +using namespace css::xml::sax; + + +class ORptExport : public SvXMLExport +{ +public: + struct TCell + { + sal_Int32 nColSpan; + sal_Int32 nRowSpan; + Reference xElement; + bool bSet; + TCell( sal_Int32 _nColSpan, + sal_Int32 _nRowSpan, + Reference const & _xElement = Reference()) : + nColSpan(_nColSpan) + ,nRowSpan(_nRowSpan) + ,xElement(_xElement) + ,bSet(xElement.is()) + {} + + TCell( ) : + nColSpan(1) + ,nRowSpan(1) + ,bSet(true) + {} + }; + typedef ::std::pair< OUString ,OUString> TStringPair; + typedef ::std::map< Reference ,OUString > TPropertyStyleMap; + typedef ::std::map< Reference , std::vector> TGridStyleMap; + typedef ::std::vector< TCell > TRow; + typedef ::std::vector< ::std::pair< bool, TRow > > TGrid; + typedef ::std::map< Reference ,TGrid > TSectionsGrid; + typedef ::std::map< Reference ,Reference > TGroupFunctionMap; +private: + TSectionsGrid m_aSectionsGrid; + + TPropertyStyleMap m_aAutoStyleNames; + TGridStyleMap m_aColumnStyleNames; + TGridStyleMap m_aRowStyleNames; + TGroupFunctionMap m_aGroupFunctionMap; + + OUString m_sTableStyle; + OUString m_sCellStyle; + rtl::Reference < SvXMLExportPropertyMapper> m_xTableStylesExportPropertySetMapper; + rtl::Reference < SvXMLExportPropertyMapper> m_xCellStylesExportPropertySetMapper; + rtl::Reference < SvXMLExportPropertyMapper> m_xColumnStylesExportPropertySetMapper; + rtl::Reference < SvXMLExportPropertyMapper> m_xRowStylesExportPropertySetMapper; + rtl::Reference < SvXMLExportPropertyMapper > m_xParaPropMapper; + rtl::Reference < XMLPropertyHandlerFactory > m_xPropHdlFactory; + + mutable rtl::Reference < XMLPropertySetMapper > m_xCellStylesPropertySetMapper; + Reference m_xReportDefinition; + bool m_bAllreadyFilled; + + void exportReport(const Reference& _xReportDefinition); /// + void exportReportAttributes(const Reference& _xReport); + void exportFunctions(const Reference& _xFunctions); /// + void exportFunction(const Reference< XFunction>& _xFunction); + void exportMasterDetailFields(const Reference& _xReportComponent); + void exportComponent(const Reference& _xReportComponent); + void exportGroup(const Reference& _xReportDefinition,sal_Int32 _nPos,bool _bExportAutoStyle = false); + void exportStyleName(XPropertySet* _xProp,SvXMLAttributeList& _rAtt,const OUString& _sName); + void exportSection(const Reference& _xProp,bool bHeader = false); + void exportContainer(const Reference< XSection>& _xSection); + void exportShapes(const Reference< XSection>& _xSection,bool _bAddParagraph = true); + void exportTableColumns(const Reference< XSection>& _xSection); + void exportSectionAutoStyle(const Reference& _xProp); + void exportReportElement(const Reference& _xReportElement); + void exportFormatConditions(const Reference& _xReportElement); + void exportAutoStyle(XPropertySet* _xProp,const Reference& _xParentFormattedField = Reference()); + void exportAutoStyle(const Reference& _xProp); + void exportReportComponentAutoStyles(const Reference& _xProp); + void collectComponentStyles(); + void collectStyleNames(XmlStyleFamily _nFamily,const ::std::vector< sal_Int32>& _aSize, std::vector& _rStyleNames); + void collectStyleNames(XmlStyleFamily _nFamily,const ::std::vector< sal_Int32>& _aSize, const ::std::vector< sal_Int32>& _aSizeAutoGrow, std::vector& _rStyleNames); + void exportParagraph(const Reference< XReportControlModel >& _xReportElement); + bool exportFormula(enum ::xmloff::token::XMLTokenEnum eName,const OUString& _sFormula); + void exportGroupsExpressionAsFunction(const Reference< XGroups>& _xGroups); + static OUString convertFormula(const OUString& _sFormula); + + virtual void SetBodyAttributes() override; + +protected: + + virtual void ExportStyles_( bool bUsed ) override; + virtual void ExportAutoStyles_() override; + virtual void ExportContent_() override; + virtual void ExportMasterStyles_() override; + virtual void ExportFontDecls_() override; + virtual SvXMLAutoStylePoolP* CreateAutoStylePool() override; + virtual XMLShapeExport* CreateShapeExport() override; + + virtual ~ORptExport() override {}; +public: + + ORptExport(const Reference< XComponentContext >& _rxContext, OUString const & implementationName, SvXMLExportFlags nExportFlag); + + // XExporter + virtual void SAL_CALL setSourceDocument( const css::uno::Reference< css::lang::XComponent >& xDoc ) override; + + const Reference& getReportDefinition() const { return m_xReportDefinition; } + + const rtl::Reference < XMLPropertySetMapper >& GetCellStylePropertyMapper() const { return m_xCellStylesPropertySetMapper;} +}; + + +} // rptxml + +#endif // INCLUDED_REPORTDESIGN_SOURCE_FILTER_XML_XMLEXPORT_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3