sal/inc/rtl/strbuf.hxx       |   17 +++++++++++++++++
 sd/inc/sdpage.hxx            |    3 +++
 sd/source/core/drawdoc3.cxx  |   22 ++++++++++++++++------
 sd/source/core/sdpage2.cxx   |   37 +++++++++++++++++++++++++++++++++++++
 svl/inc/svl/itemset.hxx      |    1 +
 svl/source/items/itemset.cxx |   16 ++++++++++++++++
 svx/inc/svx/svdobj.hxx       |    2 ++
 svx/source/svdraw/svdobj.cxx |   40 ++++++++++++++++++++++++++++++++++++++++
 8 files changed, 132 insertions(+), 6 deletions(-)

New commits:
commit c67cbc42ec5f0d37f70aeda4e11e3dd90edad892
Author: Muthu Subramanian <sumu...@collabora.com>
Date:   Thu Dec 12 12:57:02 2013 +0530

    Force int16 as int32

diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx
index 2aceba9..f61cab0 100644
--- a/sd/source/core/sdpage2.cxx
+++ b/sd/source/core/sdpage2.cxx
@@ -599,8 +599,8 @@ OString SdPage::stringify() const
              /*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(mnPaperBin).
-             
append((sal_Int32)meOrientation).append(mnTransitionType).append(mnTransitionSubtype).append(mbTransitionDirection).
+             
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);
 
     sal_Int32 n = GetObjCount();
commit 3c16c85a8766aa6f4b4e292a9d1700e1a35366c1
Author: Muthu Subramanian <sumu...@collabora.com>
Date:   Thu Dec 12 12:55:39 2013 +0530

    Force enums as ints - to avoid warning/errors.

diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx
index 9f621fd..2aceba9 100644
--- a/sd/source/core/sdpage2.cxx
+++ b/sd/source/core/sdpage2.cxx
@@ -592,15 +592,15 @@ void SdPage::setTransitionDuration ( double 
fTranstionDuration )
 OString SdPage::stringify() const
 {
     OStringBuffer aString(100);
-    
aString.append(mePageKind).append(meAutoLayout).append(mbSelected).append(mePresChange).append(mbSoundOn).append(mbExcluded).
+    
aString.append((sal_Int32)mePageKind).append((sal_Int32)meAutoLayout).append(mbSelected).append((sal_Int32)mePresChange).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(meCharSet).append(mnPaperBin).
-             
append(meOrientation).append(mnTransitionType).append(mnTransitionSubtype).append(mbTransitionDirection).
+             
append(mbScaleObjects).append(mbBackgroundFullSize).append((sal_Int32)meCharSet).append(mnPaperBin).
+             
append((sal_Int32)meOrientation).append(mnTransitionType).append(mnTransitionSubtype).append(mbTransitionDirection).
              
append(mnTransitionFadeColor).append(mfTransitionDuration);//.append(mbIsPrecious);
 
     sal_Int32 n = GetObjCount();
commit a3e222581b3ded07285a5e1ad18f5a5abb5d95b9
Author: Muthu Subramanian <sumu...@collabora.com>
Date:   Thu Dec 12 12:53:55 2013 +0530

    Add append(bool) to OStringBuffer.

diff --git a/sal/inc/rtl/strbuf.hxx b/sal/inc/rtl/strbuf.hxx
index ed627ce..d8112ea 100644
--- a/sal/inc/rtl/strbuf.hxx
+++ b/sal/inc/rtl/strbuf.hxx
@@ -510,6 +510,23 @@ public:
     }
 
     /**
+        Appends the string representation of the <code>bool</code>
+        argument to the string buffer.
+
+        The argument is converted to a string as if by the method
+        <code>String.valueOf</code>, and the characters of that
+        string are then appended to this string buffer.
+
+        @param   b   a <code>bool</code>.
+        @return  this string buffer.
+     */
+    OStringBuffer & append(bool b)
+    {
+        sal_Char sz[RTL_STR_MAX_VALUEOFBOOLEAN];
+        return append( sz, rtl_str_valueOfBoolean( sz, b ) );
+    }
+
+    /**
         Appends the string representation of the <code>char</code>
         argument to this string buffer.
 
commit 4e09cb4645e1b8b0393acf956c325150fe1c52fc
Author: Muthu Subramanian <sumu...@collabora.com>
Date:   Thu Dec 12 12:50:13 2013 +0530

    n#753460: Copying slides having same master page name.

diff --git a/sd/inc/sdpage.hxx b/sd/inc/sdpage.hxx
index f62b2ae..0c99930 100644
--- a/sd/inc/sdpage.hxx
+++ b/sd/inc/sdpage.hxx
@@ -382,6 +382,9 @@ public:
     void removeAnnotation( const ::com::sun::star::uno::Reference< 
::com::sun::star::office::XAnnotation >& xAnnotation );
     const sd::AnnotationVector& getAnnotations() const { return maAnnotations; 
}
     bool hasAnnotations() const { return !maAnnotations.empty(); }
+    sal_uInt64 getHash() const;
+    virtual OString stringify() const;
+
 
 private:
     bool mbIsPrecious;
diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx
index e2d7039..7f493d8 100644
--- a/sd/source/core/drawdoc3.cxx
+++ b/sd/source/core/drawdoc3.cxx
@@ -72,12 +72,12 @@ class InsertBookmarkAsPage_FindDuplicateLayouts
 public:
     InsertBookmarkAsPage_FindDuplicateLayouts( std::vector<rtl::OUString> 
&rLayoutsToTransfer )
         : mrLayoutsToTransfer(rLayoutsToTransfer) {}
-    void operator()( SdDrawDocument&, SdPage* );
+    void operator()( SdDrawDocument&, SdPage*, bool, SdDrawDocument* );
 private:
     std::vector<rtl::OUString> &mrLayoutsToTransfer;
 };
 
-void InsertBookmarkAsPage_FindDuplicateLayouts::operator()( SdDrawDocument& 
rDoc, SdPage* pBMMPage )
+void InsertBookmarkAsPage_FindDuplicateLayouts::operator()( SdDrawDocument& 
rDoc, SdPage* pBMMPage, bool bRenameDuplicates, SdDrawDocument* pBookmarkDoc )
 {
     // now check for duplicate masterpage and layout names
     // ===================================================
@@ -105,7 +105,17 @@ void 
InsertBookmarkAsPage_FindDuplicateLayouts::operator()( SdDrawDocument& rDoc
         rtl::OUString aTest(aFullTest);
 
         if (aTest == aLayout)
-            bFound = true;
+        {
+            if( bRenameDuplicates && pTestPage->getHash() != 
pBMMPage->getHash() )
+            {
+                pBookmarkDoc->RenameLayoutTemplate( pBMMPage->GetLayoutName(), 
OUString(pBMMPage->GetName())+=OUString("_") );
+                aLayout = pBMMPage->GetName();
+
+                break;
+            }
+            else
+                bFound = true;
+        }
     }
 
     if (!bFound)
@@ -120,7 +130,7 @@ void InsertBookmarkAsPage_FindDuplicateLayouts::operator()( 
SdDrawDocument& rDoc
 
 static void lcl_IterateBookmarkPages( SdDrawDocument &rDoc, SdDrawDocument* 
pBookmarkDoc,
                                const std::vector<rtl::OUString> 
&rBookmarkList, sal_uInt16 nBMSdPageCount,
-                               InsertBookmarkAsPage_FindDuplicateLayouts& 
rPageIterator )
+                               InsertBookmarkAsPage_FindDuplicateLayouts& 
rPageIterator, bool bRenameDuplicates = false )
 {
     //
     // Refactored copy'n'pasted layout name collection from 
InsertBookmarkAsPage
@@ -180,7 +190,7 @@ static void lcl_IterateBookmarkPages( SdDrawDocument &rDoc, 
SdDrawDocument* pBoo
         if( pBMMPage )
         {
             // yes, call functor
-            rPageIterator( rDoc, pBMMPage );
+            rPageIterator( rDoc, pBMMPage, bRenameDuplicates, pBookmarkDoc );
         }
     }
 }
@@ -498,7 +508,7 @@ sal_Bool SdDrawDocument::InsertBookmarkAsPage(
     //
     std::vector<rtl::OUString> aLayoutsToTransfer;
     InsertBookmarkAsPage_FindDuplicateLayouts aSearchFunctor( 
aLayoutsToTransfer );
-    lcl_IterateBookmarkPages( *this, pBookmarkDoc, rBookmarkList, 
nBMSdPageCount, aSearchFunctor );
+    lcl_IterateBookmarkPages( *this, pBookmarkDoc, rBookmarkList, 
nBMSdPageCount, aSearchFunctor, ( rBookmarkList.empty() && pBookmarkDoc != this 
) );
 
 
     /**************************************************************************
diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx
index 13fda31..9f621fd 100644
--- a/sd/source/core/sdpage2.cxx
+++ b/sd/source/core/sdpage2.cxx
@@ -45,6 +45,7 @@
 
 #include <tools/tenccvt.hxx>
 #include <svl/itemset.hxx>
+#include <rtl/strbuf.hxx>
 
 using namespace ::sd;
 using namespace ::com::sun::star;
@@ -53,6 +54,16 @@ using namespace ::com::sun::star::office;
 
 extern void NotifyDocumentEvent( SdDrawDocument* pDocument, const 
rtl::OUString& rEventName, const Reference< XInterface >& xSource );
 
+static sal_uInt64 lcl_getHash( OString aString )
+{
+    sal_Int32  len = aString.getLength();
+    sal_uInt64 nHash = 0;
+
+    for( sal_Int32 i = 0; i < len; i++ )
+        nHash = (nHash << 5) - nHash + aString[i];
+    return nHash;
+}
+
 /*************************************************************************
 |*
 |* SetPresentationLayout, setzt: Layoutnamen, Masterpage-Verkn�pfung und
@@ -578,6 +589,32 @@ void SdPage::setTransitionDuration ( double 
fTranstionDuration )
     ActionChanged();
 }
 
+OString SdPage::stringify() const
+{
+    OStringBuffer aString(100);
+    
aString.append(mePageKind).append(meAutoLayout).append(mbSelected).append(mePresChange).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(meCharSet).append(mnPaperBin).
+             
append(meOrientation).append(mnTransitionType).append(mnTransitionSubtype).append(mbTransitionDirection).
+             
append(mnTransitionFadeColor).append(mfTransitionDuration);//.append(mbIsPrecious);
+
+    sal_Int32 n = GetObjCount();
+    for(sal_Int32 i = 0; i < n; i++)
+        aString.append(GetObj(i)->stringify());
+    return aString.makeStringAndClear();
+}
+
+sal_uInt64 SdPage::getHash() const
+{
+    return lcl_getHash( stringify() );
+}
+
+
 namespace sd {
 extern void createAnnotation( Reference< XAnnotation >& xAnnotation, SdPage* 
pPage );
 extern SdrUndoAction* CreateUndoInsertOrRemoveAnnotation( const Reference< 
XAnnotation >& xAnnotation, bool bInsert );
diff --git a/svl/inc/svl/itemset.hxx b/svl/inc/svl/itemset.hxx
index a38398a..47ed7ef 100644
--- a/svl/inc/svl/itemset.hxx
+++ b/svl/inc/svl/itemset.hxx
@@ -119,6 +119,7 @@ public:
     virtual sal_uInt16              ClearItem( sal_uInt16 nWhich = 0);
     virtual void                ClearInvalidItems( sal_Bool bHardDefault = 
sal_False );
             void                InvalidateAllItems(); // HACK(via nWhich = 0) 
???
+            void                InvalidateDefaultItems();
 
     inline void                 SetParent( const SfxItemSet* pNew );
 
diff --git a/svl/source/items/itemset.cxx b/svl/source/items/itemset.cxx
index 27f2a8d..c531048 100644
--- a/svl/source/items/itemset.cxx
+++ b/svl/source/items/itemset.cxx
@@ -1790,7 +1790,23 @@ SfxAllItemSet::SfxAllItemSet(const SfxItemSet &rCopy)
 
 // -----------------------------------------------------------------------
 
+void SfxItemSet::InvalidateDefaultItems()
+{
+    DBG_CHKTHIS(SfxItemSet, DbgCheckItemSet);
+    sal_uInt16* pPtr = _pWhichRanges;
+    SfxItemArray ppFnd = _aItems;
 
+    while( *pPtr )
+    {
+        for ( sal_uInt16 nWhich = *pPtr; nWhich <= *(pPtr+1); ++nWhich, 
++ppFnd )
+            if ( *ppFnd && *ppFnd != (SfxPoolItem *)-1 && **ppFnd == 
_pPool->GetDefaultItem( nWhich ) )
+            {
+                _pPool->Remove( **ppFnd );
+                *ppFnd = (SfxPoolItem*)-1;
+            }
+        pPtr += 2;
+    }
+}
 
 SfxAllItemSet::SfxAllItemSet(const SfxAllItemSet &rCopy)
 :   SfxItemSet(rCopy),
diff --git a/svx/inc/svx/svdobj.hxx b/svx/inc/svx/svdobj.hxx
index cf6d266..35a023f 100644
--- a/svx/inc/svx/svdobj.hxx
+++ b/svx/inc/svx/svdobj.hxx
@@ -1056,6 +1056,8 @@ public:
     /// @see mbDoNotInsertIntoPageAutomatically
     bool IsDoNotInsertIntoPageAutomatically() const;
 
+    virtual OString stringify() const;
+
 protected:
     /** Sets a new UNO shape
       *
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index 09cc658..0f81315 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -109,6 +109,7 @@
 #include <basegfx/matrix/b2dhommatrixtools.hxx>
 #include <svx/sdrobjectfilter.hxx>
 #include "svdconv.hxx"
+#include <rtl/strbuf.hxx>
 
 using namespace ::com::sun::star;
 
@@ -1766,6 +1767,45 @@ 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(bGrouped).
+            append(bInserted).
+            append(bNetLock).
+            append(bVirtObj).
+            //append(maBLIPSizeRectangle).
+            append(mnLayerID);
+
+    SvMemoryStream aStream;
+    OString aLine;
+    SfxItemSet aSet(GetMergedItemSet());
+    aSet.InvalidateDefaultItems();
+    aSet.Store(aStream, true);
+    aStream.Flush();
+    aString.append((const char *)aStream.GetData(), aStream.GetEndOfData());
+
+    return aString.makeStringAndClear();
+}
+
 sal_Bool SdrObject::BegTextEdit(SdrOutliner& /*rOutl*/)
 {
     return false;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to