diff options
-rw-r--r-- | include/svx/svdobj.hxx | 2 | ||||
-rw-r--r-- | sd/inc/sdpage.hxx | 2 | ||||
-rw-r--r-- | sd/source/core/drawdoc3.cxx | 2 | ||||
-rw-r--r-- | sd/source/core/sdpage2.cxx | 38 | ||||
-rw-r--r-- | svx/source/svdraw/svdobj.cxx | 42 |
5 files changed, 35 insertions, 51 deletions
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx index e85d6de002c0..3d7ded0a7fe9 100644 --- a/include/svx/svdobj.hxx +++ b/include/svx/svdobj.hxx @@ -788,7 +788,7 @@ public: // #i121917# virtual bool HasText() const; - OString stringify() const; + bool Equals(const SdrObject&) const;; virtual void dumpAsXml(struct _xmlTextWriter* pWriter) const; diff --git a/sd/inc/sdpage.hxx b/sd/inc/sdpage.hxx index b4b72390b6bf..4edb82d0c874 100644 --- a/sd/inc/sdpage.hxx +++ b/sd/inc/sdpage.hxx @@ -375,7 +375,7 @@ public: void addAnnotation( const css::uno::Reference< css::office::XAnnotation >& xAnnotation, int nIndex ); void removeAnnotation( const css::uno::Reference< css::office::XAnnotation >& xAnnotation ); const sd::AnnotationVector& getAnnotations() const { return maAnnotations; } - OString stringify() const; + bool Equals(const SdPage&) const; virtual void dumpAsXml(struct _xmlTextWriter* pWriter) const override; sal_uInt16 getPageId() { return mnPageId; } diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx index 23c687e6dc1e..69b6a83d6ef3 100644 --- a/sd/source/core/drawdoc3.cxx +++ b/sd/source/core/drawdoc3.cxx @@ -111,7 +111,7 @@ void InsertBookmarkAsPage_FindDuplicateLayouts::operator()( SdDrawDocument& rDoc { // Ignore Layouts with "Default" these seem to be special - in the sense that there are lot of assumption all over Impress // about this - if( bRenameDuplicates && aTest != SdResId( STR_LAYOUT_DEFAULT_NAME ) && pTestPage->stringify() != pBMMPage->stringify() ) + if( bRenameDuplicates && aTest != SdResId( STR_LAYOUT_DEFAULT_NAME ) && !(pTestPage->Equals(*pBMMPage)) ) { pBookmarkDoc->RenameLayoutTemplate( pBMMPage->GetLayoutName(), pBMMPage->GetName() + "_"); diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx index c4168094d373..65a7eaaabde8 100644 --- a/sd/source/core/sdpage2.cxx +++ b/sd/source/core/sdpage2.cxx @@ -557,25 +557,27 @@ void SdPage::setTransitionDuration ( double fTranstionDuration ) ActionChanged(); } -OString SdPage::stringify() const +bool SdPage::Equals(const SdPage& rOtherPage) const { - OStringBuffer aString(100); - aString.append((sal_Int32)mePageKind).append((sal_Int32)meAutoLayout).append((sal_Int32)mePresChange).append(mfTime).append(mbSoundOn).append(mbExcluded). - append(OUStringToOString( maLayoutName, RTL_TEXTENCODING_UTF8 )). - append(OUStringToOString(maSoundFile, RTL_TEXTENCODING_UTF8 )). - append(mbLoopSound).append(mbStopSound). - /*append(OUStringToOString(maCreatedPageName, RTL_TEXTENCODING_UTF8)). - append(OUStringToOString(maFileName, RTL_TEXTENCODING_UTF8)).*/ - append(OUStringToOString(maBookmarkName, RTL_TEXTENCODING_UTF8)). - append(mbScaleObjects).append(mbBackgroundFullSize).append((sal_Int32)meCharSet).append((sal_Int32)mnPaperBin). - append((sal_Int32)meOrientation).append((sal_Int32)mnTransitionType).append((sal_Int32)mnTransitionSubtype).append(mbTransitionDirection). - append(mnTransitionFadeColor).append(mfTransitionDuration);//.append(mbIsPrecious); - - const size_t n = GetObjCount(); - for(size_t i = 0; i < n; ++i) - aString.append(GetObj(i)->stringify()); - return aString.makeStringAndClear(); -} + 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 && meOrientation == rOtherPage.meOrientation && + mnTransitionType == rOtherPage.mnTransitionType && mnTransitionSubtype == rOtherPage.mnTransitionSubtype && + mbTransitionDirection == rOtherPage.mbTransitionDirection && mnTransitionFadeColor == rOtherPage.mnTransitionFadeColor && + rtl::math::approxEqual(mfTransitionDuration, rOtherPage.mfTransitionDuration)); + } void SdPage::createAnnotation( css::uno::Reference< css::office::XAnnotation >& xAnnotation ) { diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index 2a1881eb974d..a21af0f7f328 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -1690,36 +1690,18 @@ bool SdrObject::HasTextEdit() const return false; } -OString SdrObject::stringify() const -{ - OStringBuffer aString(100); - aString.append(aAnchor.X()). - append(aAnchor.Y()). - append(aGridOffset.X()). - append(aGridOffset.Y()). - append((sal_Int32)nOrdNum). - append((sal_Int32)mnNavigationPosition). - append(mbSupportTextIndentingOnLineWidthChange). - append(mbLineIsOutsideGeometry). - append(bMarkProt). - append(bIs3DObj). - append(bIsEdge). - append(bClosedObj). - append(bNotVisibleAsMaster). - append(bEmptyPresObj). - append(mbVisible). - append(bNoPrint). - append(bSizProt). - append(bMovProt). - append(false). - append(bInserted). - append(false). - append(bVirtObj). - append(sal_uInt8(mnLayerID)); - - aString.append(GetMergedItemSet().stringify()); - - return aString.makeStringAndClear(); +bool SdrObject::Equals(const SdrObject& rOtherObj) const +{ + return (aAnchor.X() == rOtherObj.aAnchor.X() && aAnchor.Y() == rOtherObj.aAnchor.Y() && + aGridOffset.X() == rOtherObj.aGridOffset.X() && aGridOffset.Y() == rOtherObj.aGridOffset.Y() && + nOrdNum == rOtherObj.nOrdNum && mnNavigationPosition == rOtherObj.mnNavigationPosition && + mbSupportTextIndentingOnLineWidthChange == rOtherObj.mbSupportTextIndentingOnLineWidthChange && + mbLineIsOutsideGeometry == rOtherObj.mbLineIsOutsideGeometry && bMarkProt == rOtherObj.bMarkProt && + bIs3DObj == rOtherObj.bIs3DObj && bIsEdge == rOtherObj.bIsEdge && bClosedObj == rOtherObj.bClosedObj && + bNotVisibleAsMaster == rOtherObj.bNotVisibleAsMaster && bEmptyPresObj == rOtherObj.bEmptyPresObj && + mbVisible == rOtherObj.mbVisible && bNoPrint == rOtherObj.bNoPrint && bSizProt == rOtherObj.bSizProt && + bMovProt == rOtherObj.bMovProt && bInserted == rOtherObj.bInserted && bVirtObj == rOtherObj.bVirtObj && + mnLayerID == rOtherObj.mnLayerID && GetMergedItemSet().Equals(rOtherObj.GetMergedItemSet(), false) ); } void SdrObject::dumpAsXml(xmlTextWriterPtr pWriter) const |