[Libreoffice-commits] core.git: filter/inc filter/source sd/source

Muthu Subramanian sumuthu at suse.com
Fri Mar 8 03:48:47 PST 2013


 filter/inc/filter/msfilter/msdffimp.hxx |    4 +++-
 filter/source/msfilter/msdffimp.cxx     |   31 ++++++++++++++++++++++++++++++-
 sd/source/ui/unoidl/unoobj.cxx          |    3 +--
 3 files changed, 34 insertions(+), 4 deletions(-)

New commits:
commit 2f3e1c77b2e2304f9a718d35f6b12daef261e2c1
Author: Muthu Subramanian <sumuthu at suse.com>
Date:   Fri Mar 8 17:30:40 2013 +0530

    n#699334: Legacy diagram import (PPTX).
    
    Minimalistic implementation.
    Had to rework on some parts because of the rebasing.

diff --git a/filter/inc/filter/msfilter/msdffimp.hxx b/filter/inc/filter/msfilter/msdffimp.hxx
index 8e625d4..6359277 100644
--- a/filter/inc/filter/msfilter/msdffimp.hxx
+++ b/filter/inc/filter/msfilter/msdffimp.hxx
@@ -67,6 +67,7 @@ struct SvxMSDffShapeOrder;
 class SvxMSDffManager;
 class SfxItemSet;
 class SdrObject;
+class SdrTextObj;
 struct DffObjData;
 
 class MSFILTER_DLLPUBLIC DffPropertyReader : public DffPropSet
@@ -503,7 +504,7 @@ protected :
 
     // Fontwork objects use a new implementation of ReadObjText because the old
     // one does not properly import multiple paragraphs.
-    void ReadObjText( const OUString& rText, SdrObject* pObj ) const;
+    static void ReadObjText( const OUString& rText, SdrObject* pObj );
 
 // the following method needs to be overridden for the import of OLE objects
     virtual sal_Bool GetOLEStorageName( long nOLEId,
@@ -600,6 +601,7 @@ public:
     void    SetSvxMSDffSettings( sal_uInt32 nSettings ) { nSvxMSDffSettings = nSettings; };
 
     static sal_Bool     MakeContentStream( SotStorage * pStor, const GDIMetaFile & );
+    static void         ReadObjText( SvStream& rStream, SdrObject* pObj );
     static sal_Bool     ConvertToOle2( SvStream& rStm,
                                        sal_uInt32 nLen,
                                        const GDIMetaFile*,
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 41fe692..6ead1ee 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -3444,10 +3444,39 @@ Color SvxMSDffManager::MSO_CLR_ToColor( sal_uInt32 nColorCode, sal_uInt16 nConte
     return aColor;
 }
 
+void SvxMSDffManager::ReadObjText( SvStream& rStream, SdrObject* pObj )
+{
+    DffRecordHeader aRecHd;
+    rStream >> aRecHd;
+    if( aRecHd.nRecType == DFF_msofbtClientTextbox || aRecHd.nRecType == 0x1022 )
+    {
+        while( rStream.GetError() == 0 && rStream.Tell() < aRecHd.GetRecEndFilePos() )
+        {
+            DffRecordHeader aHd;
+            rStream >> aHd;
+            switch( aHd.nRecType )
+            {
+                case DFF_PST_TextBytesAtom:
+                case DFF_PST_TextCharsAtom:
+                    {
+                        bool bUniCode = ( aHd.nRecType == DFF_PST_TextCharsAtom );
+                        sal_uInt32 nBytes = aHd.nRecLen;
+                        String aStr = MSDFFReadZString( rStream, nBytes, bUniCode );
+                        ReadObjText( aStr, pObj );
+                    }
+                    break;
+                default:
+                    break;
+            }
+            aHd.SeekToEndOfRecord( rStream );
+        }
+    }
+}
+
 // sj: I just want to set a string for a text object that may contain multiple
 // paragraphs. If I now take a look at the follwing code I get the impression that
 // our outliner is too complicate to be used properly,
-void SvxMSDffManager::ReadObjText( const OUString& rText, SdrObject* pObj ) const
+void SvxMSDffManager::ReadObjText( const OUString& rText, SdrObject* pObj )
 {
     SdrTextObj* pText = PTR_CAST( SdrTextObj, pObj );
     if ( pText )
diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx
index d46264d..856f64f 100644
--- a/sd/source/ui/unoidl/unoobj.cxx
+++ b/sd/source/ui/unoidl/unoobj.cxx
@@ -623,7 +623,6 @@ void SAL_CALL SdXShape::setPropertyValue( const ::rtl::OUString& aPropertyName,
                     SetMasterDepend( ::cppu::any2bool(aValue) );
                     break;
 
-#ifdef FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
                 case WID_LEGACYFRAGMENT:
                     {
                         uno::Reference< io::XInputStream > xInputStream;
@@ -636,7 +635,7 @@ void SAL_CALL SdXShape::setPropertyValue( const ::rtl::OUString& aPropertyName,
                         }
                     }
                     break;
-#endif
+
                 case WID_ANIMPATH:
                 {
                     uno::Reference< drawing::XShape > xShape( aValue, uno::UNO_QUERY );


More information about the Libreoffice-commits mailing list