summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2018-03-20 09:46:57 +0100
committerMike Kaganski <mike.kaganski@collabora.com>2018-03-20 10:44:04 +0100
commit992a477840506c73495cabcebc9febd0cc9fe1c5 (patch)
treec8fb8924b3905f042e1b84d8d42d576e5d14c84b /sd
parent43446fa03995fb5d1379fc0afbeec36c9dedfde2 (diff)
Speed up SdPage comparison
Move trivial comparisons to front; return early on object comparison Change-Id: I4db927ac87dbb165e80b70046ff44a260b8a504b Reviewed-on: https://gerrit.libreoffice.org/51624 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r--sd/source/core/sdpage2.cxx46
1 files changed, 28 insertions, 18 deletions
diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx
index deab43fa74fa..61fd29db97f7 100644
--- a/sd/source/core/sdpage2.cxx
+++ b/sd/source/core/sdpage2.cxx
@@ -558,24 +558,34 @@ void SdPage::setTransitionDuration ( double fTranstionDuration )
bool SdPage::Equals(const SdPage& rOtherPage) const
{
- bool isEqual = GetObjCount() == rOtherPage.GetObjCount();
- if( isEqual )
- {
- for(size_t i = 0; i < GetObjCount(); ++i)
- isEqual = isEqual && GetObj(i)->Equals(*(rOtherPage.GetObj(i)));
- }
-
- return (isEqual && mePageKind == rOtherPage.mePageKind && meAutoLayout == rOtherPage.meAutoLayout &&
- mePresChange == rOtherPage.mePresChange && rtl::math::approxEqual(mfTime, rOtherPage.mfTime) &&
- mbSoundOn == rOtherPage.mbSoundOn && mbExcluded == rOtherPage.mbExcluded &&
- maLayoutName == rOtherPage.maLayoutName && maSoundFile == rOtherPage.maSoundFile &&
- mbLoopSound == rOtherPage.mbLoopSound && mbStopSound == rOtherPage.mbStopSound &&
- maBookmarkName == rOtherPage.maBookmarkName && mbScaleObjects == rOtherPage.mbScaleObjects &&
- mbBackgroundFullSize == rOtherPage.mbBackgroundFullSize && meCharSet == rOtherPage.meCharSet &&
- mnPaperBin == rOtherPage.mnPaperBin && mnTransitionType == rOtherPage.mnTransitionType &&
- mnTransitionSubtype == rOtherPage.mnTransitionSubtype && mbTransitionDirection == rOtherPage.mbTransitionDirection &&
- mnTransitionFadeColor == rOtherPage.mnTransitionFadeColor &&
- rtl::math::approxEqual(mfTransitionDuration, rOtherPage.mfTransitionDuration));
+ if (GetObjCount() != rOtherPage.GetObjCount() ||
+ mePageKind != rOtherPage.mePageKind ||
+ meAutoLayout != rOtherPage.meAutoLayout ||
+ mePresChange != rOtherPage.mePresChange ||
+ !rtl::math::approxEqual(mfTime, rOtherPage.mfTime) ||
+ mbSoundOn != rOtherPage.mbSoundOn ||
+ mbExcluded != rOtherPage.mbExcluded ||
+ maLayoutName != rOtherPage.maLayoutName ||
+ maSoundFile != rOtherPage.maSoundFile ||
+ mbLoopSound != rOtherPage.mbLoopSound ||
+ mbStopSound != rOtherPage.mbStopSound ||
+ maBookmarkName != rOtherPage.maBookmarkName ||
+ mbScaleObjects != rOtherPage.mbScaleObjects ||
+ mbBackgroundFullSize != rOtherPage.mbBackgroundFullSize ||
+ meCharSet != rOtherPage.meCharSet ||
+ mnPaperBin != rOtherPage.mnPaperBin ||
+ mnTransitionType != rOtherPage.mnTransitionType ||
+ mnTransitionSubtype != rOtherPage.mnTransitionSubtype ||
+ mbTransitionDirection != rOtherPage.mbTransitionDirection ||
+ mnTransitionFadeColor != rOtherPage.mnTransitionFadeColor ||
+ !rtl::math::approxEqual(mfTransitionDuration, rOtherPage.mfTransitionDuration))
+ return false;
+
+ for(size_t i = 0; i < GetObjCount(); ++i)
+ if (!GetObj(i)->Equals(*(rOtherPage.GetObj(i))))
+ return false;
+
+ return true;
}
void SdPage::createAnnotation( css::uno::Reference< css::office::XAnnotation >& xAnnotation )