filter/source/msfilter/msdffimp.cxx |   20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

New commits:
commit 3475d300ef29866542007e295569075e592bde66
Author: Ivan Timofeev <timofeev....@gmail.com>
Date:   Wed Jan 25 20:54:27 2012 +0100

    fdo#43193: fix rotation of shapes in imported MS documents
    
    Signed-off-by: Petr Mladek <pmla...@suse.cz>

diff --git a/filter/source/msfilter/msdffimp.cxx 
b/filter/source/msfilter/msdffimp.cxx
index 5764c66..784b5a0 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -4643,6 +4643,8 @@ SdrObject* SvxMSDffManager::ImportGroup( const 
DffRecordHeader& rHd, SvStream& r
     rSt >> aRecHd;
     if ( aRecHd.nRecType == DFF_msofbtSpContainer )
     {
+        sal_Int32 nGroupRotateAngle = 0;
+        sal_Int32 nSpFlags = 0;
         mnFix16Angle = 0;
 
         aRecHd.SeekToBegOfRecord(rSt);
@@ -4650,15 +4652,19 @@ SdrObject* SvxMSDffManager::ImportGroup( const 
DffRecordHeader& rHd, SvStream& r
         pRet = ImportObj( rSt, pClientData, rClientRect, rGlobalChildRect, 
nCalledByGroup + 1, pShapeId );
         if ( pRet )
         {
+            nSpFlags = nGroupShapeFlags;
+            nGroupRotateAngle = mnFix16Angle;
+
             Rectangle aClientRect( rClientRect );
+
             Rectangle aGlobalChildRect;
             if ( !nCalledByGroup || rGlobalChildRect.IsEmpty() )
                 aGlobalChildRect = GetGlobalChildAnchor( rHd, rSt, aClientRect 
);
             else
                 aGlobalChildRect = rGlobalChildRect;
 
-            if ( ( mnFix16Angle > 4500 && mnFix16Angle <= 13500 )
-                || ( mnFix16Angle > 22500 && mnFix16Angle <= 31500 ) )
+            if ( ( nGroupRotateAngle > 4500 && nGroupRotateAngle <= 13500 )
+                || ( nGroupRotateAngle > 22500 && nGroupRotateAngle <= 31500 ) 
)
             {
                 sal_Int32 nHalfWidth = ( aClientRect.GetWidth() + 1 ) >> 1;
                 sal_Int32 nHalfHeight = ( aClientRect.GetHeight() + 1 ) >> 1;
@@ -4704,18 +4710,18 @@ SdrObject* SvxMSDffManager::ImportGroup( const 
DffRecordHeader& rHd, SvStream& r
                 aRecHd2.SeekToEndOfRecord( rSt );
             }
 
-            if ( mnFix16Angle )
+            if ( nGroupRotateAngle )
             {
-                double a = mnFix16Angle * nPi180;
-                pRet->NbcRotate( aClientRect.Center(), mnFix16Angle, sin( a ), 
cos( a ) );
+                double a = nGroupRotateAngle * nPi180;
+                pRet->NbcRotate( aClientRect.Center(), nGroupRotateAngle, sin( 
a ), cos( a ) );
             }
-            if ( nGroupShapeFlags & SP_FFLIPV )                // Vertical 
flip?
+            if ( nSpFlags & SP_FFLIPV )     // Vertical flip?
             {  // BoundRect in aBoundRect
                 Point aLeft( aClientRect.Left(), ( aClientRect.Top() + 
aClientRect.Bottom() ) >> 1 );
                 Point aRight( aLeft.X() + 1000, aLeft.Y() );
                 pRet->NbcMirror( aLeft, aRight );
             }
-            if ( nGroupShapeFlags & SP_FFLIPH )                // Horizontal 
flip?
+            if ( nSpFlags & SP_FFLIPH )     // Horizontal flip?
             {  // BoundRect in aBoundRect
                 Point aTop( ( aClientRect.Left() + aClientRect.Right() ) >> 1, 
aClientRect.Top() );
                 Point aBottom( aTop.X(), aTop.Y() + 1000 );
_______________________________________________
Libreoffice-commits mailing list
Libreoffice-commits@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to