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

Andre Fischer af at apache.org
Mon Mar 25 16:57:17 PDT 2013


 filter/source/msfilter/msdffimp.cxx |   31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

New commits:
commit 5278c7770a350771a96780c0e0d7a0bdae0d55b9
Author: Andre Fischer <af at apache.org>
Date:   Tue Jul 10 10:01:05 2012 +0000

    #i119872# Fixed import of custom shapes from PPT.
    
    Reported by: Li Feng Wang
    Patch by: Jianyuan Li
    Review by: Andre Fischer

diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index cf760ef..6a98e71 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -2243,23 +2243,24 @@ void DffPropertyReader::ApplyCustomShapeGeometryAttributes( SvStream& rIn, SfxIt
                 {
                     rIn >> nTmp;
                     nCommand = EnhancedCustomShapeSegmentCommand::UNKNOWN;
-                    nCnt = (sal_Int16)( nTmp & 0xfff );
-                    switch( nTmp >> 12 )
+                    nCnt = (sal_Int16)( nTmp & 0x1fff );//Last 13 bits for segment points number
+                    switch( nTmp >> 13 )//First 3 bits for command type
                     {
                         case 0x0: nCommand = EnhancedCustomShapeSegmentCommand::LINETO; if ( !nCnt ) nCnt = 1; break;
-                        case 0x1: nCommand = EnhancedCustomShapeSegmentCommand::LINETO; if ( !nCnt ) nCnt = 1; break;   // seems to the relative lineto
-                        case 0x4: nCommand = EnhancedCustomShapeSegmentCommand::MOVETO; if ( !nCnt ) nCnt = 1; break;
-                        case 0x2: nCommand = EnhancedCustomShapeSegmentCommand::CURVETO; if ( !nCnt ) nCnt = 1; break;
-                        case 0x3: nCommand = EnhancedCustomShapeSegmentCommand::CURVETO; if ( !nCnt ) nCnt = 1; break;  // seems to be the relative curveto
-                        case 0x8: nCommand = EnhancedCustomShapeSegmentCommand::ENDSUBPATH; nCnt = 0; break;
-                        case 0x6: nCommand = EnhancedCustomShapeSegmentCommand::CLOSESUBPATH; nCnt = 0; break;
-                        case 0xa:
-                        case 0xb:
+                        case 0x1: nCommand = EnhancedCustomShapeSegmentCommand::CURVETO; if ( !nCnt ) nCnt = 1; break;
+                        case 0x2: nCommand = EnhancedCustomShapeSegmentCommand::MOVETO; if ( !nCnt ) nCnt = 1; break;
+                        case 0x3: nCommand = EnhancedCustomShapeSegmentCommand::CLOSESUBPATH; nCnt = 0; break;
+                        case 0x4: nCommand = EnhancedCustomShapeSegmentCommand::ENDSUBPATH; nCnt = 0; break;
+                        case 0x5:
+                        case 0x6:
                         {
-                            switch ( ( nTmp >> 8 ) & 0xf )
+                            switch ( ( nTmp >> 8 ) & 0x1f )//5 bits next to command type is for path escape type
                             {
                                 case 0x0:
                                 {
+                                    //It is msopathEscapeExtension which is transformed into LINETO.
+                                    //If issue happens, I think this part can be comment so that it will be taken as unknow command.
+                                    //When export, origin data will be export without any change.
                                     nCommand = EnhancedCustomShapeSegmentCommand::LINETO;
                                     if ( !nCnt )
                                         nCnt = 1;
commit c789d126aacda9c5d2ccf3c51d669b1796180f66
Author: Andre Fischer <af at apache.org>
Date:   Fri Jul 6 12:07:22 2012 +0000

    #i119887# Fixing import of shadow direction.
    
    Reported by: Li Feng Wang
    Patch by: Jianyuan Li
    Review by: Andre Fischer

diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 96b69b7..cf760ef 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -2604,15 +2604,13 @@ void DffPropertyReader::ApplyAttributes( SvStream& rIn, SfxItemSet& rSet, DffObj
     {
         sal_Int32 nVal = static_cast< sal_Int32 >( GetPropertyValue( DFF_Prop_shadowOffsetX ) );
         rManager.ScaleEmu( nVal );
-        if ( nVal )
-            rSet.Put( SdrShadowXDistItem( nVal ) );
+        rSet.Put( SdrShadowXDistItem( nVal ) );
     }
     if ( IsProperty( DFF_Prop_shadowOffsetY ) )
     {
         sal_Int32 nVal = static_cast< sal_Int32 >( GetPropertyValue( DFF_Prop_shadowOffsetY ) );
         rManager.ScaleEmu( nVal );
-        if ( nVal )
-            rSet.Put( SdrShadowYDistItem( nVal ) );
+        rSet.Put( SdrShadowYDistItem( nVal ) );
     }
     if ( IsProperty( DFF_Prop_fshadowObscured ) )
     {
commit cf4260b85213b263f78c51d33557176c813989ef
Author: Andre Fischer <af at apache.org>
Date:   Mon Jul 9 11:04:52 2012 +0000

    #i119888# Fixed import of gradient colored shapes from PPT.
    
    Reported by: Li Feng Wang
    Patch by: Jianyuan Li
    Review by: Andre Fischer

diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 86fabbd..96b69b7 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -2664,7 +2664,7 @@ void DffPropertyReader::ApplyAttributes( SvStream& rIn, SfxItemSet& rSet, DffObj
     }
     ApplyLineAttributes( rSet, rObjData.eShapeType ); // #i28269#
     ApplyFillAttributes( rIn, rSet, rObjData );
-    if ( rObjData.eShapeType != mso_sptNil )
+    if ( rObjData.eShapeType != mso_sptNil || IsProperty( DFF_Prop_pVertices ) )
     {
         ApplyCustomShapeGeometryAttributes( rIn, rSet, rObjData );
         ApplyCustomShapeTextAttributes( rSet );


More information about the Libreoffice-commits mailing list