summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2021-04-14 13:11:22 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-04-14 18:32:26 +0200
commit94afb3663b1618b66daa7cc7199cbd5c9f387e0f (patch)
tree30df24d41fc7dafb04c589dbb66de10c43ebc4ae
parent67067c3fd017bd0d5cb91218c4ee4befd0f824ba (diff)
reduce allocation in TextListStyle some more
These child objects do not need to use shared_ptr, since no-one else holds a pointer to them, and we always allocate them, so just allocate them inline the parent object. Change-Id: I96ab644a3a2f1e962df02d590c6a9944ef4a9ce3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114085 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--oox/inc/drawingml/textliststyle.hxx2
-rw-r--r--oox/inc/drawingml/textparagraph.hxx2
-rw-r--r--oox/inc/drawingml/textparagraphproperties.hxx4
-rw-r--r--oox/source/drawingml/shape.cxx4
-rw-r--r--oox/source/drawingml/textbody.cxx2
-rw-r--r--oox/source/drawingml/textliststyle.cxx17
-rw-r--r--oox/source/drawingml/textliststylecontext.cxx24
-rw-r--r--oox/source/drawingml/textparagraph.cxx12
-rw-r--r--oox/source/ppt/presentationfragmenthandler.cxx4
-rw-r--r--oox/source/ppt/slidemastertextstylescontext.cxx2
-rw-r--r--oox/source/ppt/slidepersist.cxx2
11 files changed, 33 insertions, 42 deletions
diff --git a/oox/inc/drawingml/textliststyle.hxx b/oox/inc/drawingml/textliststyle.hxx
index ac84cc9d903d..cd770457575f 100644
--- a/oox/inc/drawingml/textliststyle.hxx
+++ b/oox/inc/drawingml/textliststyle.hxx
@@ -27,7 +27,7 @@
namespace oox::drawingml
{
constexpr int NUM_TEXT_LIST_STYLE_ENTRIES = 9;
-typedef std::array<std::shared_ptr<TextParagraphProperties>, NUM_TEXT_LIST_STYLE_ENTRIES>
+typedef std::array<TextParagraphProperties, NUM_TEXT_LIST_STYLE_ENTRIES>
TextParagraphPropertiesArray;
class TextListStyle
diff --git a/oox/inc/drawingml/textparagraph.hxx b/oox/inc/drawingml/textparagraph.hxx
index 5139c51b9b26..df39f8841c76 100644
--- a/oox/inc/drawingml/textparagraph.hxx
+++ b/oox/inc/drawingml/textparagraph.hxx
@@ -61,7 +61,7 @@ public:
const TextCharacterProperties& rTextStyleProperties,
const TextListStyle& rTextListStyle) const;
- TextParagraphPropertiesPtr getParagraphStyle(
+ TextParagraphProperties* getParagraphStyle(
const TextListStyle& rTextListStyle) const;
void insertAt(
diff --git a/oox/inc/drawingml/textparagraphproperties.hxx b/oox/inc/drawingml/textparagraphproperties.hxx
index 7dd41610024b..dd508179c13d 100644
--- a/oox/inc/drawingml/textparagraphproperties.hxx
+++ b/oox/inc/drawingml/textparagraphproperties.hxx
@@ -33,10 +33,6 @@ namespace com::sun::star {
namespace oox::drawingml {
-class TextParagraphProperties;
-
-typedef std::shared_ptr< TextParagraphProperties > TextParagraphPropertiesPtr;
-
class BulletList
{
public:
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 819d117d4fa9..729fb3c3712f 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -1050,8 +1050,8 @@ Reference< XShape > const & Shape::createAndInsert(
mpTextBody->getTextProperties().pushRotationAdjustments();
aShapeProps.assignUsed( mpTextBody->getTextProperties().maPropertyMap );
// Push char properties as well - specifically useful when this is a placeholder
- if( mpMasterTextListStyle && mpMasterTextListStyle->getListStyle()[0]->getTextCharacterProperties().moHeight.has() )
- aShapeProps.setProperty(PROP_CharHeight, GetFontHeight( mpMasterTextListStyle->getListStyle()[0]->getTextCharacterProperties().moHeight.get() ));
+ if( mpMasterTextListStyle && mpMasterTextListStyle->getListStyle()[0].getTextCharacterProperties().moHeight.has() )
+ aShapeProps.setProperty(PROP_CharHeight, GetFontHeight( mpMasterTextListStyle->getListStyle()[0].getTextCharacterProperties().moHeight.get() ));
}
// applying properties
diff --git a/oox/source/drawingml/textbody.cxx b/oox/source/drawingml/textbody.cxx
index 4c5495e6c040..c6abacf7d485 100644
--- a/oox/source/drawingml/textbody.cxx
+++ b/oox/source/drawingml/textbody.cxx
@@ -119,7 +119,7 @@ void TextBody::ApplyStyleEmpty(
aTextCharacterProps.pushToPropSet(aPropSet, rFilterBase);
// Apply paragraph properties
- TextParagraphPropertiesPtr pTextParagraphStyle = maParagraphs[0]->getParagraphStyle(aCombinedTextStyle);
+ TextParagraphProperties* pTextParagraphStyle = maParagraphs[0]->getParagraphStyle(aCombinedTextStyle);
if (pTextParagraphStyle)
{
Reference< XPropertySet > xProps(xText, UNO_QUERY);
diff --git a/oox/source/drawingml/textliststyle.cxx b/oox/source/drawingml/textliststyle.cxx
index da170cae03eb..0b757159e5bc 100644
--- a/oox/source/drawingml/textliststyle.cxx
+++ b/oox/source/drawingml/textliststyle.cxx
@@ -24,11 +24,6 @@ namespace oox::drawingml {
TextListStyle::TextListStyle()
{
- for ( int i = 0; i < NUM_TEXT_LIST_STYLE_ENTRIES; i++ )
- {
- maListStyle[i] = std::make_shared<TextParagraphProperties>( );
- maAggregationListStyle[i] = std::make_shared<TextParagraphProperties>( );
- }
}
TextListStyle::~TextListStyle()
@@ -39,8 +34,8 @@ TextListStyle::TextListStyle(const TextListStyle& rStyle)
{
for ( size_t i = 0; i < NUM_TEXT_LIST_STYLE_ENTRIES; i++ )
{
- maListStyle[i] = std::make_shared<TextParagraphProperties>( *rStyle.maListStyle[i] );
- maAggregationListStyle[i] = std::make_shared<TextParagraphProperties>( *rStyle.maAggregationListStyle[i] );
+ maListStyle[i] = rStyle.maListStyle[i];
+ maAggregationListStyle[i] = rStyle.maAggregationListStyle[i];
}
}
@@ -50,8 +45,8 @@ TextListStyle& TextListStyle::operator=(const TextListStyle& rStyle)
{
for ( size_t i = 0; i < NUM_TEXT_LIST_STYLE_ENTRIES; i++ )
{
- *maListStyle[i] = *rStyle.maListStyle[i];
- *maAggregationListStyle[i] = *rStyle.maAggregationListStyle[i];
+ maListStyle[i] = rStyle.maListStyle[i];
+ maAggregationListStyle[i] = rStyle.maAggregationListStyle[i];
}
}
return *this;
@@ -60,7 +55,7 @@ TextListStyle& TextListStyle::operator=(const TextListStyle& rStyle)
static void applyStyleList( const TextParagraphPropertiesArray& rSourceListStyle, TextParagraphPropertiesArray& rDestListStyle )
{
for ( size_t i = 0; i < NUM_TEXT_LIST_STYLE_ENTRIES; i++ )
- rDestListStyle[i]->apply(*rSourceListStyle[i]);
+ rDestListStyle[i].apply(rSourceListStyle[i]);
}
void TextListStyle::apply( const TextListStyle& rTextListStyle )
@@ -75,7 +70,7 @@ void TextListStyle::dump() const
for ( int i = 0; i < NUM_TEXT_LIST_STYLE_ENTRIES; i++ )
{
SAL_INFO("oox.drawingml", "text list style level: " << i);
- maListStyle[i]->dump();
+ maListStyle[i].dump();
}
}
#endif
diff --git a/oox/source/drawingml/textliststylecontext.cxx b/oox/source/drawingml/textliststylecontext.cxx
index c1d865b2adc9..f2abd9b91c21 100644
--- a/oox/source/drawingml/textliststylecontext.cxx
+++ b/oox/source/drawingml/textliststylecontext.cxx
@@ -44,29 +44,29 @@ ContextHandlerRef TextListStyleContext::onCreateContext( sal_Int32 aElementToken
switch( aElementToken )
{
case A_TOKEN( defPPr ): // CT_TextParagraphProperties
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getListStyle()[ 0 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 0 ] );
case A_TOKEN( outline1pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getAggregationListStyle()[ 0 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getAggregationListStyle()[ 0 ] );
case A_TOKEN( outline2pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getAggregationListStyle()[ 1 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getAggregationListStyle()[ 1 ] );
case A_TOKEN( lvl1pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getListStyle()[ 0 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 0 ] );
case A_TOKEN( lvl2pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getListStyle()[ 1 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 1 ] );
case A_TOKEN( lvl3pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getListStyle()[ 2 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 2 ] );
case A_TOKEN( lvl4pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getListStyle()[ 3 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 3 ] );
case A_TOKEN( lvl5pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getListStyle()[ 4 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 4 ] );
case A_TOKEN( lvl6pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getListStyle()[ 5 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 5 ] );
case A_TOKEN( lvl7pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getListStyle()[ 6 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 6 ] );
case A_TOKEN( lvl8pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getListStyle()[ 7 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 7 ] );
case A_TOKEN( lvl9pPr ):
- return new TextParagraphPropertiesContext( *this, rAttribs, *mrTextListStyle.getListStyle()[ 8 ] );
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 8 ] );
}
return this;
diff --git a/oox/source/drawingml/textparagraph.cxx b/oox/source/drawingml/textparagraph.cxx
index ca33caa9f767..88c086b0c07f 100644
--- a/oox/source/drawingml/textparagraph.cxx
+++ b/oox/source/drawingml/textparagraph.cxx
@@ -49,7 +49,7 @@ TextCharacterProperties TextParagraph::getCharacterStyle (
const TextCharacterProperties& rTextStyleProperties,
const TextListStyle& rTextListStyle) const
{
- TextParagraphPropertiesPtr pTextParagraphStyle = getParagraphStyle(rTextListStyle);
+ const TextParagraphProperties* pTextParagraphStyle = getParagraphStyle(rTextListStyle);
TextCharacterProperties aTextCharacterStyle;
if (pTextParagraphStyle)
@@ -59,7 +59,7 @@ TextCharacterProperties TextParagraph::getCharacterStyle (
return aTextCharacterStyle;
}
-TextParagraphPropertiesPtr TextParagraph::getParagraphStyle(
+TextParagraphProperties* TextParagraph::getParagraphStyle(
const TextListStyle& rTextListStyle) const
{
sal_Int16 nLevel = maProperties.getLevel();
@@ -69,11 +69,11 @@ TextParagraphPropertiesPtr TextParagraph::getParagraphStyle(
const TextParagraphPropertiesArray& rListStyle = rTextListStyle.getListStyle();
if (nLevel >= static_cast< sal_Int16 >(rListStyle.size()))
nLevel = 0;
- TextParagraphPropertiesPtr pTextParagraphStyle;
+ const TextParagraphProperties* pTextParagraphStyle = nullptr;
if (!rListStyle.empty())
- pTextParagraphStyle = rListStyle[nLevel];
+ pTextParagraphStyle = &rListStyle[nLevel];
- return pTextParagraphStyle;
+ return const_cast<TextParagraphProperties*>(pTextParagraphStyle);
}
void TextParagraph::insertAt(
@@ -126,7 +126,7 @@ void TextParagraph::insertAt(
PropertyMap aioBulletList;
Reference< XPropertySet > xProps( xAt, UNO_QUERY);
- TextParagraphPropertiesPtr pTextParagraphStyle = getParagraphStyle(rTextListStyle);
+ TextParagraphProperties* pTextParagraphStyle = getParagraphStyle(rTextListStyle);
if ( pTextParagraphStyle )
{
TextParagraphProperties aParaProp;
diff --git a/oox/source/ppt/presentationfragmenthandler.cxx b/oox/source/ppt/presentationfragmenthandler.cxx
index 9e14a260b846..1c737952872f 100644
--- a/oox/source/ppt/presentationfragmenthandler.cxx
+++ b/oox/source/ppt/presentationfragmenthandler.cxx
@@ -87,11 +87,11 @@ PresentationFragmentHandler::PresentationFragmentHandler(XmlFilterBase& rFilter,
, mbCommentAuthorsRead(false)
{
TextParagraphPropertiesArray& rParagraphDefaultsVector( mpTextListStyle->getListStyle() );
- for (auto const& elem : rParagraphDefaultsVector)
+ for (auto & elem : rParagraphDefaultsVector)
{
// ppt is having zero bottom margin per default, whereas OOo is 0,5cm,
// so this attribute needs to be set always
- elem->getParaBottomMargin() = TextSpacing( 0 );
+ elem.getParaBottomMargin() = TextSpacing( 0 );
}
}
diff --git a/oox/source/ppt/slidemastertextstylescontext.cxx b/oox/source/ppt/slidemastertextstylescontext.cxx
index 4d98fd5a5839..de326c9bb8a1 100644
--- a/oox/source/ppt/slidemastertextstylescontext.cxx
+++ b/oox/source/ppt/slidemastertextstylescontext.cxx
@@ -67,7 +67,7 @@ SlideMasterTextStylesContext::~SlideMasterTextStylesContext()
if ( aTextListStylePtr ) // sj: the master list style is the last instance of from where properties
{ // are obtained. i got some documents without having the textsize set at
for ( int i = 0; i < 9; i++ ) // any point, the master reference application is using 18pt then
- aTextListStylePtr->getListStyle()[ i ]->getTextCharacterProperties().moHeight = 1800;
+ aTextListStylePtr->getListStyle()[ i ].getTextCharacterProperties().moHeight = 1800;
return new oox::drawingml::TextListStyleContext( *this, *aTextListStylePtr );
}
diff --git a/oox/source/ppt/slidepersist.cxx b/oox/source/ppt/slidepersist.cxx
index 2b4169bf6062..fae4e5541d96 100644
--- a/oox/source/ppt/slidepersist.cxx
+++ b/oox/source/ppt/slidepersist.cxx
@@ -215,7 +215,7 @@ void SlidePersist::createBackground( const XmlFilterBase& rFilterBase )
static void setTextStyle( Reference< beans::XPropertySet > const & rxPropSet, const XmlFilterBase& rFilter,
oox::drawingml::TextListStylePtr const & pTextListStylePtr, int nLevel )
{
- ::oox::drawingml::TextParagraphPropertiesPtr pTextParagraphPropertiesPtr( pTextListStylePtr->getListStyle()[ nLevel ] );
+ ::oox::drawingml::TextParagraphProperties* pTextParagraphPropertiesPtr( &pTextListStylePtr->getListStyle()[ nLevel ] );
if( pTextParagraphPropertiesPtr == nullptr )
{
// no properties. return