writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 32 --------------- writerfilter/source/dmapper/StyleSheetTable.cxx | 18 ++++++++ writerfilter/source/dmapper/StyleSheetTable.hxx | 6 ++ 3 files changed, 24 insertions(+), 32 deletions(-)
New commits: commit 108d4a6391eee22642fcb18ba429c2c9f4d8c818 Author: Justin Luth <justin.l...@collabora.com> AuthorDate: Sat Jul 28 22:17:36 2018 +0300 Commit: Justin Luth <justin_l...@sil.org> CommitDate: Tue Jul 31 07:53:10 2018 +0200 writerfilter: create StyleSheetEntry::GetMergedInheritedProperties This is a useful function. Make it more widely available. Change-Id: I729c908eaf26e17c16198d14dcb89069ec6ca70c Reviewed-on: https://gerrit.libreoffice.org/58261 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_l...@sil.org> diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 2e9bfa959249..3c4bb61457e7 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -78,36 +78,6 @@ void DomainMapperTableHandler::startTable(const TablePropertyMapPtr& pProps) #endif } - -PropertyMapPtr lcl_SearchParentStyleSheetAndMergeProperties(const StyleSheetEntryPtr& rStyleSheet, const StyleSheetTablePtr& pStyleSheetTable) -{ - PropertyMapPtr pRet; - - if (!rStyleSheet) - return pRet; - - if(!rStyleSheet->sBaseStyleIdentifier.isEmpty()) - { - const StyleSheetEntryPtr pParentStyleSheet = pStyleSheetTable->FindStyleSheetByISTD(rStyleSheet->sBaseStyleIdentifier); - //a loop in the style hierarchy, bail out - if (pParentStyleSheet == rStyleSheet) - return pRet; - - pRet = lcl_SearchParentStyleSheetAndMergeProperties( pParentStyleSheet, pStyleSheetTable ); - } - else - { - pRet = new PropertyMap; - } - - if (pRet) - { - pRet->InsertProps(rStyleSheet->pProperties); - } - - return pRet; -} - void lcl_mergeBorder( PropertyIds nId, const PropertyMapPtr& pOrig, const PropertyMapPtr& pDest ) { boost::optional<PropertyMap::Property> pOrigVal = pOrig->getProperty(nId); @@ -388,7 +358,7 @@ TableStyleSheetEntry * DomainMapperTableHandler::endTableGetTableStyle(TableInfo m_aTableProperties = pEmptyProps; - PropertyMapPtr pMergedProperties = lcl_SearchParentStyleSheetAndMergeProperties(pStyleSheet, pStyleSheetTable); + PropertyMapPtr pMergedProperties = pStyleSheet->GetMergedInheritedProperties(pStyleSheetTable); table::BorderLine2 aBorderLine; TableInfo rStyleInfo; diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx index 8e71f5f28f2d..95d645a08bb1 100644 --- a/writerfilter/source/dmapper/StyleSheetTable.cxx +++ b/writerfilter/source/dmapper/StyleSheetTable.cxx @@ -161,6 +161,24 @@ void StyleSheetEntry::AppendInteropGrabBag(const beans::PropertyValue& rValue) m_aInteropGrabBag.push_back(rValue); } +PropertyMapPtr StyleSheetEntry::GetMergedInheritedProperties(const StyleSheetTablePtr& pStyleSheetTable) +{ + PropertyMapPtr pRet; + if ( pStyleSheetTable && !sBaseStyleIdentifier.isEmpty() && sBaseStyleIdentifier != sStyleIdentifierD ) + { + const StyleSheetEntryPtr pParentStyleSheet = pStyleSheetTable->FindStyleSheetByISTD(sBaseStyleIdentifier); + if ( pParentStyleSheet ) + pRet = pParentStyleSheet->GetMergedInheritedProperties(pStyleSheetTable); + } + + if ( !pRet ) + pRet = new PropertyMap; + + pRet->InsertProps(pProperties); + + return pRet; +} + void lcl_mergeProps( const PropertyMapPtr& pToFill, const PropertyMapPtr& pToAdd, TblStyleType nStyleId ) { static const PropertyIds pPropsToCheck[] = diff --git a/writerfilter/source/dmapper/StyleSheetTable.hxx b/writerfilter/source/dmapper/StyleSheetTable.hxx index a5e1df2685d6..686779acbd71 100644 --- a/writerfilter/source/dmapper/StyleSheetTable.hxx +++ b/writerfilter/source/dmapper/StyleSheetTable.hxx @@ -47,6 +47,8 @@ enum StyleType STYLE_TYPE_TABLE, STYLE_TYPE_LIST }; +class StyleSheetTable; +typedef tools::SvRef<StyleSheetTable> StyleSheetTablePtr; struct StyleSheetTable_Impl; class StyleSheetEntry : public virtual SvRefBase @@ -71,6 +73,9 @@ public: css::beans::PropertyValue GetInteropGrabBag(); ///< Used for table styles, has a name. css::beans::PropertyValues GetInteropGrabBagSeq(); ///< Used for existing styles, just a list of properties. + // Get all properties, merged with the all of the parent's properties + PropertyMapPtr GetMergedInheritedProperties(const StyleSheetTablePtr& pStyleSheetTable); + StyleSheetEntry(); virtual ~StyleSheetEntry() override; }; @@ -113,7 +118,6 @@ private: void applyDefaults(bool bParaProperties); }; -typedef tools::SvRef< StyleSheetTable > StyleSheetTablePtr; class TableStyleSheetEntry : _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits