diff options
author | Michael Stahl <mstahl@redhat.com> | 2015-10-22 21:21:15 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2015-10-27 14:39:57 +0100 |
commit | fe546a9a3180c87ce6b400ea1f69b483b952d72b (patch) | |
tree | dd332cd9598fd7eedc4c279417354de90d6ae015 /oox | |
parent | 03802af730d37ca4ca2a42d78906b713f39bb9e2 (diff) |
oox: replace boost::ptr_vector with std::vector<std::unique_ptr>
With one additional m_Effects.clear() in EffectProperties::assignUsed()
to make it idempotent like it was before and avoid duplicating elements.
Change-Id: I105535a2a250e682a5d6976e0c7f74374b1f31ac
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/drawingml/effectproperties.cxx | 16 | ||||
-rw-r--r-- | oox/source/drawingml/effectproperties.hxx | 13 | ||||
-rw-r--r-- | oox/source/drawingml/effectpropertiescontext.cxx | 32 | ||||
-rw-r--r-- | oox/source/drawingml/shape.cxx | 7 |
4 files changed, 43 insertions, 25 deletions
diff --git a/oox/source/drawingml/effectproperties.cxx b/oox/source/drawingml/effectproperties.cxx index 3fd388215665..3ec31e0f8b03 100644 --- a/oox/source/drawingml/effectproperties.cxx +++ b/oox/source/drawingml/effectproperties.cxx @@ -14,6 +14,7 @@ #include "oox/token/tokens.hxx" #include <basegfx/numeric/ftools.hxx> +#include <o3tl/make_unique.hxx> namespace oox { namespace drawingml { @@ -28,14 +29,22 @@ void EffectShadowProperties::assignUsed(const EffectShadowProperties& rSourcePro void EffectProperties::assignUsed( const EffectProperties& rSourceProps ) { maShadow.assignUsed(rSourceProps.maShadow); - if( rSourceProps.maEffects.size() > 0 ) - maEffects = rSourceProps.maEffects; + if (!rSourceProps.m_Effects.empty()) + { + m_Effects.clear(); + m_Effects.reserve(rSourceProps.m_Effects.size()); + for (auto const& it : rSourceProps.m_Effects) + { + m_Effects.push_back(o3tl::make_unique<Effect>(*it)); + } + } } void EffectProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelper& rGraphicHelper ) const { - for( boost::ptr_vector< Effect >::const_iterator it = maEffects.begin(); it != maEffects.end(); ++it ) + for (auto const& it : m_Effects) + { if( it->msName == "outerShdw" ) { sal_Int32 nAttrDir = 0, nAttrDist = 0; @@ -59,6 +68,7 @@ void EffectProperties::pushToPropMap( PropertyMap& rPropMap, rPropMap.setProperty( PROP_ShadowColor, it->moColor.getColor(rGraphicHelper ) ); rPropMap.setProperty( PROP_ShadowTransparence, it->moColor.getTransparency()); } + } } css::beans::PropertyValue Effect::getEffect() diff --git a/oox/source/drawingml/effectproperties.hxx b/oox/source/drawingml/effectproperties.hxx index 4256b8d776d3..9089e1dc0679 100644 --- a/oox/source/drawingml/effectproperties.hxx +++ b/oox/source/drawingml/effectproperties.hxx @@ -10,11 +10,12 @@ #ifndef INCLUDED_OOX_DRAWINGML_EFFECTPROPERTIES_HXX #define INCLUDED_OOX_DRAWINGML_EFFECTPROPERTIES_HXX -#include <map> #include <oox/drawingml/color.hxx> #include <oox/helper/propertymap.hxx> -#include <boost/ptr_container/ptr_vector.hpp> +#include <memory> +#include <vector> +#include <map> namespace oox { namespace drawingml { @@ -44,7 +45,13 @@ struct EffectProperties EffectShadowProperties maShadow; /** Stores all effect properties, including those not supported by core yet */ - boost::ptr_vector< Effect > maEffects; + std::vector<std::unique_ptr<Effect>> m_Effects; + + EffectProperties() {} + EffectProperties(EffectProperties const& rOther) + { + assignUsed(rOther); + } /** Overwrites all members that are explicitly set in rSourceProps. */ void assignUsed( const EffectProperties& rSourceProps ); diff --git a/oox/source/drawingml/effectpropertiescontext.cxx b/oox/source/drawingml/effectpropertiescontext.cxx index d1d0cd9e935a..3f79cb7a93a3 100644 --- a/oox/source/drawingml/effectpropertiescontext.cxx +++ b/oox/source/drawingml/effectpropertiescontext.cxx @@ -13,6 +13,8 @@ #include "drawingml/fillpropertiesgroupcontext.hxx" #include "oox/helper/attributelist.hxx" +#include <o3tl/make_unique.hxx> + using namespace ::oox::core; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::xml::sax; @@ -70,28 +72,28 @@ void EffectPropertiesContext::saveUnsupportedAttribs( Effect& rEffect, const Att ContextHandlerRef EffectPropertiesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) { - sal_Int32 nPos = mrEffectProperties.maEffects.size(); - mrEffectProperties.maEffects.push_back( new Effect() ); + sal_Int32 nPos = mrEffectProperties.m_Effects.size(); + mrEffectProperties.m_Effects.push_back(o3tl::make_unique<Effect>()); switch( nElement ) { case A_TOKEN( outerShdw ): { - mrEffectProperties.maEffects[nPos].msName = "outerShdw"; - saveUnsupportedAttribs( mrEffectProperties.maEffects[nPos], rAttribs ); + mrEffectProperties.m_Effects[nPos]->msName = "outerShdw"; + saveUnsupportedAttribs(*mrEffectProperties.m_Effects[nPos], rAttribs); mrEffectProperties.maShadow.moShadowDist = rAttribs.getInteger( XML_dist, 0 ); mrEffectProperties.maShadow.moShadowDir = rAttribs.getInteger( XML_dir, 0 ); - return new ColorContext( *this, mrEffectProperties.maEffects[nPos].moColor ); + return new ColorContext(*this, mrEffectProperties.m_Effects[nPos]->moColor); } break; case A_TOKEN( innerShdw ): { - mrEffectProperties.maEffects[nPos].msName = "innerShdw"; - saveUnsupportedAttribs( mrEffectProperties.maEffects[nPos], rAttribs ); + mrEffectProperties.m_Effects[nPos]->msName = "innerShdw"; + saveUnsupportedAttribs(*mrEffectProperties.m_Effects[nPos], rAttribs); mrEffectProperties.maShadow.moShadowDist = rAttribs.getInteger( XML_dist, 0 ); mrEffectProperties.maShadow.moShadowDir = rAttribs.getInteger( XML_dir, 0 ); - return new ColorContext( *this, mrEffectProperties.maEffects[nPos].moColor ); + return new ColorContext(*this, mrEffectProperties.m_Effects[nPos]->moColor); } break; case A_TOKEN( glow ): @@ -100,20 +102,20 @@ ContextHandlerRef EffectPropertiesContext::onCreateContext( sal_Int32 nElement, case A_TOKEN( blur ): { if( nElement == A_TOKEN( glow ) ) - mrEffectProperties.maEffects[nPos].msName = "glow"; + mrEffectProperties.m_Effects[nPos]->msName = "glow"; else if( nElement == A_TOKEN( softEdge ) ) - mrEffectProperties.maEffects[nPos].msName = "softEdge"; + mrEffectProperties.m_Effects[nPos]->msName = "softEdge"; else if( nElement == A_TOKEN( reflection ) ) - mrEffectProperties.maEffects[nPos].msName = "reflection"; + mrEffectProperties.m_Effects[nPos]->msName = "reflection"; else if( nElement == A_TOKEN( blur ) ) - mrEffectProperties.maEffects[nPos].msName = "blur"; - saveUnsupportedAttribs( mrEffectProperties.maEffects[nPos], rAttribs ); - return new ColorContext( *this, mrEffectProperties.maEffects[nPos].moColor ); + mrEffectProperties.m_Effects[nPos]->msName = "blur"; + saveUnsupportedAttribs(*mrEffectProperties.m_Effects[nPos], rAttribs); + return new ColorContext(*this, mrEffectProperties.m_Effects[nPos]->moColor); } break; } - mrEffectProperties.maEffects.pop_back(); + mrEffectProperties.m_Effects.pop_back(); return 0; } diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index 04ca3a158164..c7728bbd1e20 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -953,12 +953,11 @@ Reference< XShape > Shape::createAndInsert( } // store unsupported effect attributes in the grab bag - if( aEffectProperties.maEffects.size() > 0 ) + if (!aEffectProperties.m_Effects.empty()) { - Sequence< PropertyValue > aEffects( aEffectProperties.maEffects.size() ); + Sequence<PropertyValue> aEffects(aEffectProperties.m_Effects.size()); sal_uInt32 i = 0; - for( boost::ptr_vector< Effect >::iterator it = aEffectProperties.maEffects.begin(); - it != aEffectProperties.maEffects.end(); ++it ) + for (auto const& it : aEffectProperties.m_Effects) { PropertyValue aEffect = it->getEffect(); if( !aEffect.Name.isEmpty() ) |