writerfilter/source/dmapper/DomainMapper_Impl.cxx | 148 +++++----------------- 1 file changed, 37 insertions(+), 111 deletions(-)
New commits: commit 250922293b4ba375b95325db4810c6e8cf650829 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Jun 23 21:23:31 2014 +0200 Use comphelper::SequenceAsHashMap Change-Id: Ib4bd5d231fddb0b27c61fcc28d34fad8ef3e8cf0 diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index c2e357e1..e0de4db 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -76,6 +76,7 @@ #include <vcl/outdev.hxx> #include <officecfg/Office/Common.hxx> #include <filter/msfilter/util.hxx> +#include <comphelper/sequenceashashmap.hxx> using namespace ::com::sun::star; namespace writerfilter { @@ -696,7 +697,7 @@ void DomainMapper_Impl::clearDeferredBreaks() } -void lcl_MoveBorderPropertiesToFrame(uno::Sequence<beans::PropertyValue>& rFrameProperties, +void lcl_MoveBorderPropertiesToFrame(comphelper::SequenceAsHashMap& rFrameProperties, uno::Reference<text::XTextRange> xStartTextRange, uno::Reference<text::XTextRange> xEndTextRange ) { @@ -723,22 +724,16 @@ void lcl_MoveBorderPropertiesToFrame(uno::Sequence<beans::PropertyValue>& rFrame PROP_BOTTOM_BORDER_DISTANCE }; - sal_uInt32 nStart = rFrameProperties.getLength(); sal_uInt32 nBorderPropertyCount = sizeof( aBorderProperties ) / sizeof(PropertyIds); - rFrameProperties.realloc(nStart + nBorderPropertyCount); - beans::PropertyValue* pFrameProperties = rFrameProperties.getArray(); PropertyNameSupplier& rPropNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier(); for( sal_uInt32 nProperty = 0; nProperty < nBorderPropertyCount; ++nProperty) { OUString sPropertyName = rPropNameSupplier.GetName(aBorderProperties[nProperty]); - pFrameProperties[nStart].Name = sPropertyName; - pFrameProperties[nStart].Value = xTextRangeProperties->getPropertyValue(sPropertyName); + rFrameProperties[sPropertyName] = xTextRangeProperties->getPropertyValue(sPropertyName); if( nProperty < 4 ) xTextRangeProperties->setPropertyValue( sPropertyName, uno::makeAny(table::BorderLine2())); - ++nStart; } - rFrameProperties.realloc(nStart); } catch( const uno::Exception& ) { @@ -791,29 +786,10 @@ void DomainMapper_Impl::CheckUnregisteredFrameConversion( ) StyleSheetEntryPtr pParaStyle = GetStyleSheetTable()->FindStyleSheetByConvertedStyleName(rAppendContext.pLastParagraphProperties->GetParaStyleName()); - uno::Sequence< beans::PropertyValue > aFrameProperties(pParaStyle ? 17: 9); + comphelper::SequenceAsHashMap aFrameProperties; if ( pParaStyle.get( ) ) { - beans::PropertyValue* pFrameProperties = aFrameProperties.getArray(); - pFrameProperties[0].Name = rPropNameSupplier.GetName(PROP_WIDTH); - pFrameProperties[1].Name = rPropNameSupplier.GetName(PROP_HEIGHT); - pFrameProperties[2].Name = rPropNameSupplier.GetName(PROP_SIZE_TYPE); - pFrameProperties[3].Name = rPropNameSupplier.GetName(PROP_WIDTH_TYPE); - pFrameProperties[4].Name = rPropNameSupplier.GetName(PROP_HORI_ORIENT); - pFrameProperties[5].Name = rPropNameSupplier.GetName(PROP_HORI_ORIENT_POSITION); - pFrameProperties[6].Name = rPropNameSupplier.GetName(PROP_HORI_ORIENT_RELATION); - pFrameProperties[7].Name = rPropNameSupplier.GetName(PROP_VERT_ORIENT); - pFrameProperties[8].Name = rPropNameSupplier.GetName(PROP_VERT_ORIENT_POSITION); - pFrameProperties[9].Name = rPropNameSupplier.GetName(PROP_VERT_ORIENT_RELATION); - pFrameProperties[10].Name = rPropNameSupplier.GetName(PROP_SURROUND); - pFrameProperties[11].Name = rPropNameSupplier.GetName(PROP_LEFT_MARGIN); - pFrameProperties[12].Name = rPropNameSupplier.GetName(PROP_RIGHT_MARGIN); - pFrameProperties[13].Name = rPropNameSupplier.GetName(PROP_TOP_MARGIN); - pFrameProperties[14].Name = rPropNameSupplier.GetName(PROP_BOTTOM_MARGIN); - pFrameProperties[15].Name = rPropNameSupplier.GetName(PROP_BACK_COLOR_TRANSPARENCY); - pFrameProperties[16].Name = "FrameInteropGrabBag"; - const ParagraphProperties* pStyleProperties = dynamic_cast<const ParagraphProperties*>( pParaStyle->pProperties.get() ); if (!pStyleProperties) return; @@ -824,34 +800,34 @@ void DomainMapper_Impl::CheckUnregisteredFrameConversion( ) bool bAutoWidth = nWidth < 1; if( bAutoWidth ) nWidth = DEFAULT_FRAME_MIN_WIDTH; - pFrameProperties[0].Value <<= nWidth; + aFrameProperties[rPropNameSupplier.GetName(PROP_WIDTH)] <<= nWidth; - pFrameProperties[1].Value <<= + aFrameProperties[rPropNameSupplier.GetName(PROP_HEIGHT)] <<= rAppendContext.pLastParagraphProperties->Geth() > 0 ? rAppendContext.pLastParagraphProperties->Geth() : pStyleProperties->Geth() > 0 ? pStyleProperties->Geth() : DEFAULT_FRAME_MIN_HEIGHT; - pFrameProperties[2].Value <<= sal_Int16( + aFrameProperties[rPropNameSupplier.GetName(PROP_SIZE_TYPE)] <<= sal_Int16( rAppendContext.pLastParagraphProperties->GethRule() >= 0 ? rAppendContext.pLastParagraphProperties->GethRule() : pStyleProperties->GethRule() >=0 ? pStyleProperties->GethRule() : text::SizeType::VARIABLE); - pFrameProperties[3].Value <<= bAutoWidth ? text::SizeType::MIN : text::SizeType::FIX; + aFrameProperties[rPropNameSupplier.GetName(PROP_WIDTH_TYPE)] <<= bAutoWidth ? text::SizeType::MIN : text::SizeType::FIX; sal_Int16 nHoriOrient = sal_Int16( rAppendContext.pLastParagraphProperties->GetxAlign() >= 0 ? rAppendContext.pLastParagraphProperties->GetxAlign() : pStyleProperties->GetxAlign() >= 0 ? pStyleProperties->GetxAlign() : text::HoriOrientation::NONE ); - pFrameProperties[4].Value <<= nHoriOrient; + aFrameProperties[rPropNameSupplier.GetName(PROP_HORI_ORIENT)] <<= nHoriOrient; //set a non negative default value - pFrameProperties[5].Value <<= + aFrameProperties[rPropNameSupplier.GetName(PROP_HORI_ORIENT_POSITION)] <<= rAppendContext.pLastParagraphProperties->IsxValid() ? rAppendContext.pLastParagraphProperties->Getx() : pStyleProperties->IsxValid() ? pStyleProperties->Getx() : DEFAULT_VALUE; //Default the anchor in case FramePr_hAnchor is missing ECMA 17.3.1.11 - pFrameProperties[6].Value <<= sal_Int16( + aFrameProperties[rPropNameSupplier.GetName(PROP_HORI_ORIENT_RELATION)] <<= sal_Int16( rAppendContext.pLastParagraphProperties->GethAnchor() >= 0 ? rAppendContext.pLastParagraphProperties->GethAnchor() : pStyleProperties->GethAnchor() >=0 ? pStyleProperties->GethAnchor() : text::RelOrientation::FRAME ); @@ -860,21 +836,21 @@ void DomainMapper_Impl::CheckUnregisteredFrameConversion( ) rAppendContext.pLastParagraphProperties->GetyAlign() >= 0 ? rAppendContext.pLastParagraphProperties->GetyAlign() : pStyleProperties->GetyAlign() >= 0 ? pStyleProperties->GetyAlign() : text::VertOrientation::NONE ); - pFrameProperties[7].Value <<= nVertOrient; + aFrameProperties[rPropNameSupplier.GetName(PROP_VERT_ORIENT)] <<= nVertOrient; //set a non negative default value - pFrameProperties[8].Value <<= + aFrameProperties[rPropNameSupplier.GetName(PROP_VERT_ORIENT_POSITION)] <<= rAppendContext.pLastParagraphProperties->IsyValid() ? rAppendContext.pLastParagraphProperties->Gety() : pStyleProperties->IsyValid() ? pStyleProperties->Gety() : DEFAULT_VALUE; //Default the anchor in case FramePr_vAnchor is missing ECMA 17.3.1.11 - pFrameProperties[9].Value <<= sal_Int16( + aFrameProperties[rPropNameSupplier.GetName(PROP_VERT_ORIENT_RELATION)] <<= sal_Int16( rAppendContext.pLastParagraphProperties->GetvAnchor() >= 0 ? rAppendContext.pLastParagraphProperties->GetvAnchor() : pStyleProperties->GetvAnchor() >= 0 ? pStyleProperties->GetvAnchor() : text::RelOrientation::FRAME ); - pFrameProperties[10].Value <<= text::WrapTextMode( + aFrameProperties[rPropNameSupplier.GetName(PROP_SURROUND)] <<= text::WrapTextMode( rAppendContext.pLastParagraphProperties->GetWrap() >= 0 ? rAppendContext.pLastParagraphProperties->GetWrap() : pStyleProperties->GetWrap() >= 0 ? pStyleProperties->GetWrap() : 0 ); @@ -889,8 +865,8 @@ void DomainMapper_Impl::CheckUnregisteredFrameConversion( ) rAppendContext.pLastParagraphProperties->GethSpace() : pStyleProperties->GethSpace() >= 0 ? pStyleProperties->GethSpace() : 0; - pFrameProperties[11].Value <<= nHoriOrient == text::HoriOrientation::LEFT ? 0 : nLeftDist; - pFrameProperties[12].Value <<= nHoriOrient == text::HoriOrientation::RIGHT ? 0 : nRightDist; + aFrameProperties[rPropNameSupplier.GetName(PROP_LEFT_MARGIN)] <<= nHoriOrient == text::HoriOrientation::LEFT ? 0 : nLeftDist; + aFrameProperties[rPropNameSupplier.GetName(PROP_RIGHT_MARGIN)] <<= nHoriOrient == text::HoriOrientation::RIGHT ? 0 : nRightDist; sal_Int32 nBottomDist; sal_Int32 nTopDist = nBottomDist = @@ -898,19 +874,19 @@ void DomainMapper_Impl::CheckUnregisteredFrameConversion( ) rAppendContext.pLastParagraphProperties->GetvSpace() : pStyleProperties->GetvSpace() >= 0 ? pStyleProperties->GetvSpace() : 0; - pFrameProperties[13].Value <<= nVertOrient == text::VertOrientation::TOP ? 0 : nTopDist; - pFrameProperties[14].Value <<= nVertOrient == text::VertOrientation::BOTTOM ? 0 : nBottomDist; + aFrameProperties[rPropNameSupplier.GetName(PROP_TOP_MARGIN)] <<= nVertOrient == text::VertOrientation::TOP ? 0 : nTopDist; + aFrameProperties[rPropNameSupplier.GetName(PROP_BOTTOM_MARGIN)] <<= nVertOrient == text::VertOrientation::BOTTOM ? 0 : nBottomDist; // If there is no fill, the Word default is 100% transparency. // Otherwise CellColorHandler has priority, and this setting // will be ignored. - pFrameProperties[15].Value <<= sal_Int32(100); + aFrameProperties[rPropNameSupplier.GetName(PROP_BACK_COLOR_TRANSPARENCY)] <<= sal_Int32(100); beans::PropertyValue aRet; uno::Sequence<beans::PropertyValue> aGrabBag(1); aRet.Name = "ParaFrameProperties"; aRet.Value <<= uno::Any(rAppendContext.pLastParagraphProperties->IsFrameMode()); aGrabBag[0] = aRet; - pFrameProperties[16].Value <<= aGrabBag; + aFrameProperties["FrameInteropGrabBag"] <<= aGrabBag; lcl_MoveBorderPropertiesToFrame(aFrameProperties, rAppendContext.pLastParagraphProperties->GetStartingRange(), @@ -918,110 +894,60 @@ void DomainMapper_Impl::CheckUnregisteredFrameConversion( ) } else { - beans::PropertyValue* pFrameProperties = aFrameProperties.getArray(); - pFrameProperties[0].Name = rPropNameSupplier.GetName(PROP_WIDTH); - pFrameProperties[1].Name = rPropNameSupplier.GetName(PROP_SIZE_TYPE); - pFrameProperties[2].Name = rPropNameSupplier.GetName(PROP_WIDTH_TYPE); - pFrameProperties[3].Name = rPropNameSupplier.GetName(PROP_HORI_ORIENT); - pFrameProperties[4].Name = rPropNameSupplier.GetName(PROP_VERT_ORIENT); - pFrameProperties[5].Name = rPropNameSupplier.GetName(PROP_LEFT_MARGIN); - pFrameProperties[6].Name = rPropNameSupplier.GetName(PROP_RIGHT_MARGIN); - pFrameProperties[7].Name = rPropNameSupplier.GetName(PROP_TOP_MARGIN); - pFrameProperties[8].Name = rPropNameSupplier.GetName(PROP_BOTTOM_MARGIN); - sal_Int32 nWidth = rAppendContext.pLastParagraphProperties->Getw(); bool bAutoWidth = nWidth < 1; if( bAutoWidth ) nWidth = DEFAULT_FRAME_MIN_WIDTH; - pFrameProperties[0].Value <<= nWidth; + aFrameProperties[rPropNameSupplier.GetName(PROP_WIDTH)] <<= nWidth; - pFrameProperties[1].Value <<= sal_Int16( + aFrameProperties[rPropNameSupplier.GetName(PROP_SIZE_TYPE)] <<= sal_Int16( rAppendContext.pLastParagraphProperties->GethRule() >= 0 ? rAppendContext.pLastParagraphProperties->GethRule() : text::SizeType::VARIABLE); - pFrameProperties[2].Value <<= bAutoWidth ? text::SizeType::MIN : text::SizeType::FIX; + aFrameProperties[rPropNameSupplier.GetName(PROP_WIDTH_TYPE)] <<= bAutoWidth ? text::SizeType::MIN : text::SizeType::FIX; sal_Int16 nHoriOrient = sal_Int16( rAppendContext.pLastParagraphProperties->GetxAlign() >= 0 ? rAppendContext.pLastParagraphProperties->GetxAlign() : text::HoriOrientation::NONE ); - pFrameProperties[3].Value <<= nHoriOrient; + aFrameProperties[rPropNameSupplier.GetName(PROP_HORI_ORIENT)] <<= nHoriOrient; sal_Int16 nVertOrient = sal_Int16( rAppendContext.pLastParagraphProperties->GetyAlign() >= 0 ? rAppendContext.pLastParagraphProperties->GetyAlign() : text::VertOrientation::NONE ); - pFrameProperties[4].Value <<= nVertOrient; + aFrameProperties[rPropNameSupplier.GetName(PROP_VERT_ORIENT)] <<= nVertOrient; sal_Int32 nVertDist = rAppendContext.pLastParagraphProperties->GethSpace(); if( nVertDist < 0 ) nVertDist = 0; - pFrameProperties[5].Value <<= nVertOrient == text::VertOrientation::TOP ? 0 : nVertDist; - pFrameProperties[6].Value <<= nVertOrient == text::VertOrientation::BOTTOM ? 0 : nVertDist; + aFrameProperties[rPropNameSupplier.GetName(PROP_LEFT_MARGIN)] <<= nVertOrient == text::VertOrientation::TOP ? 0 : nVertDist; + aFrameProperties[rPropNameSupplier.GetName(PROP_RIGHT_MARGIN)] <<= nVertOrient == text::VertOrientation::BOTTOM ? 0 : nVertDist; sal_Int32 nHoriDist = rAppendContext.pLastParagraphProperties->GetvSpace(); if( nHoriDist < 0 ) nHoriDist = 0; - pFrameProperties[7].Value <<= nHoriOrient == text::HoriOrientation::LEFT ? 0 : nHoriDist; - pFrameProperties[8].Value <<= nHoriOrient == text::HoriOrientation::RIGHT ? 0 : nHoriDist; + aFrameProperties[rPropNameSupplier.GetName(PROP_TOP_MARGIN)] <<= nHoriOrient == text::HoriOrientation::LEFT ? 0 : nHoriDist; + aFrameProperties[rPropNameSupplier.GetName(PROP_BOTTOM_MARGIN)] <<= nHoriOrient == text::HoriOrientation::RIGHT ? 0 : nHoriDist; if( rAppendContext.pLastParagraphProperties->Geth() > 0 ) - { - sal_Int32 nOldSize = aFrameProperties.getLength(); - aFrameProperties.realloc( nOldSize + 1 ); - pFrameProperties = aFrameProperties.getArray(); - pFrameProperties[nOldSize].Name = rPropNameSupplier.GetName(PROP_HEIGHT); - pFrameProperties[nOldSize].Value <<= rAppendContext.pLastParagraphProperties->Geth(); - } + aFrameProperties[rPropNameSupplier.GetName(PROP_HEIGHT)] <<= rAppendContext.pLastParagraphProperties->Geth(); if( rAppendContext.pLastParagraphProperties->IsxValid() ) - { - sal_Int32 nOldSize = aFrameProperties.getLength(); - aFrameProperties.realloc( nOldSize + 1 ); - pFrameProperties = aFrameProperties.getArray(); - pFrameProperties[nOldSize].Name = rPropNameSupplier.GetName(PROP_HORI_ORIENT_POSITION); - pFrameProperties[nOldSize].Value <<= rAppendContext.pLastParagraphProperties->Getx(); - } + aFrameProperties[rPropNameSupplier.GetName(PROP_HORI_ORIENT_POSITION)] <<= rAppendContext.pLastParagraphProperties->Getx(); if( rAppendContext.pLastParagraphProperties->GethAnchor() >= 0 ) - { - sal_Int32 nOldSize = aFrameProperties.getLength(); - aFrameProperties.realloc( nOldSize + 1 ); - pFrameProperties = aFrameProperties.getArray(); - pFrameProperties[nOldSize].Name = rPropNameSupplier.GetName(PROP_HORI_ORIENT_RELATION); - pFrameProperties[nOldSize].Value <<= sal_Int16( - rAppendContext.pLastParagraphProperties->GethAnchor() ); - } + aFrameProperties[rPropNameSupplier.GetName(PROP_HORI_ORIENT_RELATION)] <<= sal_Int16( rAppendContext.pLastParagraphProperties->GethAnchor() ); if( rAppendContext.pLastParagraphProperties->IsyValid() ) - { - sal_Int32 nOldSize = aFrameProperties.getLength(); - aFrameProperties.realloc( nOldSize + 1 ); - pFrameProperties = aFrameProperties.getArray(); - pFrameProperties[nOldSize].Name = rPropNameSupplier.GetName(PROP_VERT_ORIENT_POSITION); - pFrameProperties[nOldSize].Value <<= rAppendContext.pLastParagraphProperties->Gety(); - } + aFrameProperties[rPropNameSupplier.GetName(PROP_VERT_ORIENT_POSITION)] <<= rAppendContext.pLastParagraphProperties->Gety(); if( rAppendContext.pLastParagraphProperties->GetvAnchor() >= 0 ) - { - sal_Int32 nOldSize = aFrameProperties.getLength(); - aFrameProperties.realloc( nOldSize + 1 ); - pFrameProperties = aFrameProperties.getArray(); - pFrameProperties[nOldSize].Name = rPropNameSupplier.GetName(PROP_VERT_ORIENT_RELATION); - pFrameProperties[nOldSize].Value <<= sal_Int16( - rAppendContext.pLastParagraphProperties->GetvAnchor() ); - } + aFrameProperties[rPropNameSupplier.GetName(PROP_VERT_ORIENT_RELATION)] <<= sal_Int16( rAppendContext.pLastParagraphProperties->GetvAnchor() ); if( rAppendContext.pLastParagraphProperties->GetWrap() >= 0 ) - { - sal_Int32 nOldSize = aFrameProperties.getLength(); - aFrameProperties.realloc( nOldSize + 1 ); - pFrameProperties = aFrameProperties.getArray(); - pFrameProperties[nOldSize].Name = rPropNameSupplier.GetName(PROP_SURROUND); - pFrameProperties[nOldSize].Value <<= text::WrapTextMode( - rAppendContext.pLastParagraphProperties->GetWrap() ); - } + aFrameProperties[rPropNameSupplier.GetName(PROP_SURROUND)] <<= text::WrapTextMode( rAppendContext.pLastParagraphProperties->GetWrap() ); lcl_MoveBorderPropertiesToFrame(aFrameProperties, rAppendContext.pLastParagraphProperties->GetStartingRange(), @@ -1032,7 +958,7 @@ void DomainMapper_Impl::CheckUnregisteredFrameConversion( ) RegisterFrameConversion( rAppendContext.pLastParagraphProperties->GetStartingRange(), rAppendContext.pLastParagraphProperties->GetEndingRange(), - aFrameProperties ); + aFrameProperties.getAsConstPropertyValueList() ); } catch( const uno::Exception& ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits