summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2015-10-22 21:21:15 +0200
committerMichael Stahl <mstahl@redhat.com>2015-10-27 14:39:57 +0100
commitfe546a9a3180c87ce6b400ea1f69b483b952d72b (patch)
treedd332cd9598fd7eedc4c279417354de90d6ae015 /oox
parent03802af730d37ca4ca2a42d78906b713f39bb9e2 (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.cxx16
-rw-r--r--oox/source/drawingml/effectproperties.hxx13
-rw-r--r--oox/source/drawingml/effectpropertiescontext.cxx32
-rw-r--r--oox/source/drawingml/shape.cxx7
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() )