[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-4.2' - 2 commits - svx/source vcl/source
Matúš Kukan
matus.kukan at collabora.com
Sun Jun 1 05:04:38 PDT 2014
svx/source/table/cell.cxx | 14 +++++++++-----
svx/source/table/cell.hxx | 1 +
vcl/source/gdi/outdev3.cxx | 6 ++++--
3 files changed, 14 insertions(+), 7 deletions(-)
New commits:
commit 088467ac7d7b53ea44b0e97b5e3e02be1dd364f3
Author: Matúš Kukan <matus.kukan at collabora.com>
Date: Tue May 27 16:37:30 2014 +0200
Related bnc#822625: Cache FontEntry with the original FontSelectPattern.
Otherwise we do not hit cache directly, only after expensive call to
ImplFindByFont.
(cherry picked from commits a6b00d16eb27a5e7e31c721671001a909ecef960
and 16a62079018aea0e72636bdb00576487b4e830b9)
Change-Id: If15b368feeba94c8fff8ee7cbe049fc4a2069768
diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index 537f8aa..a36fc85 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -2214,6 +2214,7 @@ ImplFontEntry* ImplFontCache::GetFontEntry( ImplDevFontList* pFontList,
ImplFontEntry* ImplFontCache::GetFontEntry( ImplDevFontList* pFontList,
FontSelectPattern& aFontSelData, ImplDirectFontSubstitution* pDevSpecific )
{
+ FontSelectPattern aFontSelDataOrig(aFontSelData);
// check if a directly matching logical font instance is already cached,
// the most recently used font usually has a hit rate of >50%
ImplFontEntry *pEntry = NULL;
@@ -2300,8 +2301,9 @@ ImplFontEntry* ImplFontCache::GetFontEntry( ImplDevFontList* pFontList,
}
#endif
- // add the new entry to the cache
- maFontInstanceList[ aFontSelData ] = pEntry;
+ // Add the new entry to the cache with the original FontSelectPattern,
+ // so that we can find it next time as a direct cache hit.
+ maFontInstanceList[ aFontSelDataOrig ] = pEntry;
}
mpFirstEntry = pEntry;
commit 7121ec16634c4a6ce586b61869aceb40cc7375d4
Author: Matúš Kukan <matus.kukan at collabora.com>
Date: Tue May 27 10:39:45 2014 +0200
Related bnc#822625: Cache minimum height for table cells.
Change-Id: I35e295347a046376289f5d4fd5468860d0b8f0ae
(cherry picked from commit 5792e76cb5beb630c135f57b74f57d74dd2dc2b0)
diff --git a/svx/source/table/cell.cxx b/svx/source/table/cell.cxx
index d4f199b..7e04db7 100644
--- a/svx/source/table/cell.cxx
+++ b/svx/source/table/cell.cxx
@@ -358,6 +358,7 @@ Cell::Cell( SdrTableObj& rTableObj, OutlinerParaObject* pOutlinerParaObject ) th
, mbMerged( sal_False )
, mnRowSpan( 1 )
, mnColSpan( 1 )
+, mnCachedMinHeight( -1 )
, mxTable( rTableObj.getTable() )
{
if( rTableObj.GetModel() )
@@ -524,6 +525,7 @@ void Cell::setMerged()
void Cell::notifyModified()
{
+ mnCachedMinHeight = -1;
if( mxTable.is() )
mxTable->setModified( sal_True );
}
@@ -680,8 +682,10 @@ sal_Int32 Cell::getMinimumHeight()
if( !mpProperties )
return 0;
+ if( mnCachedMinHeight != -1 )
+ return mnCachedMinHeight;
+
SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
- sal_Int32 nMinimumHeight = 0;
Rectangle aTextRect;
TakeTextAnchorRect( aTextRect );
@@ -692,7 +696,7 @@ sal_Int32 Cell::getMinimumHeight()
if(pEditOutliner)
{
pEditOutliner->SetMaxAutoPaperSize(aSize);
- nMinimumHeight = pEditOutliner->GetTextHeight()+1;
+ mnCachedMinHeight = pEditOutliner->GetTextHeight()+1;
}
else /*if ( hasText() )*/
{
@@ -705,12 +709,12 @@ sal_Int32 Cell::getMinimumHeight()
{
rOutliner.SetText(*GetOutlinerParaObject());
}
- nMinimumHeight=rOutliner.GetTextHeight()+1;
+ mnCachedMinHeight=rOutliner.GetTextHeight()+1;
rOutliner.Clear();
}
- nMinimumHeight += GetTextUpperDistance() + GetTextLowerDistance();
- return nMinimumHeight;
+ mnCachedMinHeight += GetTextUpperDistance() + GetTextLowerDistance();
+ return mnCachedMinHeight;
}
// -----------------------------------------------------------------------------
diff --git a/svx/source/table/cell.hxx b/svx/source/table/cell.hxx
index 1b26b1c..ba2c6f6 100644
--- a/svx/source/table/cell.hxx
+++ b/svx/source/table/cell.hxx
@@ -222,6 +222,7 @@ private:
::sal_Bool mbMerged;
::sal_Int32 mnRowSpan;
::sal_Int32 mnColSpan;
+ ::sal_Int32 mnCachedMinHeight;
Rectangle maCellRect;
More information about the Libreoffice-commits
mailing list