oox/source/drawingml/customshapeproperties.cxx | 1 + oox/source/token/properties.txt | 1 + svx/inc/svx/EnhancedCustomShape2d.hxx | 1 + svx/inc/svx/svdoashp.hxx | 1 + svx/source/customshapes/EnhancedCustomShape2d.cxx | 5 +++++ svx/source/customshapes/EnhancedCustomShapeEngine.cxx | 10 ++++++++-- svx/source/svdraw/svdoashp.cxx | 12 ++++++++++++ 7 files changed, 29 insertions(+), 2 deletions(-)
New commits: commit d2e74fcd33c36d190c0cefa9615e810e2e713a24 Author: Muthu Subramanian <sumu...@suse.com> Date: Mon Apr 9 18:24:11 2012 +0530 fdo43752: PPTX import fix affected odp imports. Related bugs: n#719989, n#719997 (cherry picked from commit 1c44b263d789b4c20e9178c6432300e301df94d6) Signed-off-by: Ivan Timofeev <timofeev....@gmail.com> diff --git a/oox/source/drawingml/customshapeproperties.cxx b/oox/source/drawingml/customshapeproperties.cxx index 1b0cac2..020d87a 100644 --- a/oox/source/drawingml/customshapeproperties.cxx +++ b/oox/source/drawingml/customshapeproperties.cxx @@ -158,6 +158,7 @@ void CustomShapeProperties::pushToPropSet( const ::oox::core::FilterBase& /* rFi aPropertyMap[ PROP_MirroredX ] <<= Any( mbMirroredX ); aPropertyMap[ PROP_MirroredY ] <<= Any( mbMirroredY ); aPropertyMap[ PROP_TextPreRotateAngle ] <<= Any( mnTextRotateAngle ); + aPropertyMap[ PROP_IsPostRotateAngle ] <<= true; // For OpenXML Imports Sequence< PropertyValue > aSeq = aPropertyMap.makePropertyValueSequence(); aPropSet.setProperty( PROP_CustomShapeGeometry, aSeq ); diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt index b754f1d..0cc7bf4 100644 --- a/oox/source/token/properties.txt +++ b/oox/source/token/properties.txt @@ -242,6 +242,7 @@ IsLoaded IsNumbering IsOutlineSymbolsSet IsPlaceholderDependent +IsPostRotateAngle IsSharedFormula IsStartOfNewPage IsTextWrapped diff --git a/svx/inc/svx/EnhancedCustomShape2d.hxx b/svx/inc/svx/EnhancedCustomShape2d.hxx index 415385c..0d9da95 100644 --- a/svx/inc/svx/EnhancedCustomShape2d.hxx +++ b/svx/inc/svx/EnhancedCustomShape2d.hxx @@ -182,6 +182,7 @@ class EnhancedCustomShape2d : public SfxItemSet sal_Bool IsFlipVert() { return bFlipV; }; sal_Bool IsFlipHorz() { return bFlipH; }; sal_Int32 GetRotateAngle() { return nRotateAngle; }; + SVX_DLLPUBLIC bool IsPostRotate() const; SVX_DLLPUBLIC SdrObject* CreateLineGeometry(); SVX_DLLPUBLIC SdrObject* CreateObject( sal_Bool bLineGeometryNeededOnly ); diff --git a/svx/inc/svx/svdoashp.hxx b/svx/inc/svx/svdoashp.hxx index 013e150..0f54019 100644 --- a/svx/inc/svx/svdoashp.hxx +++ b/svx/inc/svx/svdoashp.hxx @@ -145,6 +145,7 @@ public: sal_Bool IsMirroredX() const; sal_Bool IsMirroredY() const; + bool IsPostRotate() const; void SetMirroredX( const sal_Bool bMirroredX ); void SetMirroredY( const sal_Bool bMirroredY ); diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx b/svx/source/customshapes/EnhancedCustomShape2d.cxx index 3e5f340..d0fa902 100644 --- a/svx/source/customshapes/EnhancedCustomShape2d.cxx +++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx @@ -2330,6 +2330,11 @@ void EnhancedCustomShape2d::ApplyGluePoints( SdrObject* pObj ) } } +bool EnhancedCustomShape2d::IsPostRotate() const +{ + return pCustomShapeObj->ISA( SdrObjCustomShape ) ? ((SdrObjCustomShape*)pCustomShapeObj)->IsPostRotate() : false; +} + SdrObject* EnhancedCustomShape2d::CreateLineGeometry() { return CreateObject( sal_True ); diff --git a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx index a92a962..b8a2be0 100644 --- a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx +++ b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx @@ -276,6 +276,7 @@ REF( com::sun::star::drawing::XShape ) SAL_CALL EnhancedCustomShapeEngine::rende EnhancedCustomShape2d aCustomShape2d( pSdrObjCustomShape ); sal_Int32 nRotateAngle = aCustomShape2d.GetRotateAngle(); + bool bPostRotateAngle = aCustomShape2d.IsPostRotate(); sal_Bool bFlipV = aCustomShape2d.IsFlipVert(); sal_Bool bFlipH = aCustomShape2d.IsFlipHorz(); @@ -315,6 +316,11 @@ REF( com::sun::star::drawing::XShape ) SAL_CALL EnhancedCustomShapeEngine::rende } pRenderedShape->Shear( pSdrObjCustomShape->GetSnapRect().Center(), nShearWink, nTan, sal_False); } + if( !bPostRotateAngle && nRotateAngle ) + { + double a = nRotateAngle * F_PI18000; + pRenderedShape->NbcRotate( pSdrObjCustomShape->GetSnapRect().Center(), nRotateAngle, sin( a ), cos( a ) ); + } if ( bFlipV ) { Point aLeft( aRect.Left(), ( aRect.Top() + aRect.Bottom() ) >> 1 ); @@ -327,8 +333,8 @@ REF( com::sun::star::drawing::XShape ) SAL_CALL EnhancedCustomShapeEngine::rende Point aBottom( aTop.X(), aTop.Y() + 1000 ); pRenderedShape->NbcMirror( aTop, aBottom ); } - // Note that the rotation needs be done after flipping - if( nRotateAngle ) + // Specifically for pptx imports + if( bPostRotateAngle && nRotateAngle ) { double a = nRotateAngle * F_PI18000; pRenderedShape->NbcRotate( pSdrObjCustomShape->GetSnapRect().Center(), nRotateAngle, sin( a ), cos( a ) ); diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx index 4872008..4c4ff86 100644 --- a/svx/source/svdraw/svdoashp.cxx +++ b/svx/source/svdraw/svdoashp.cxx @@ -538,6 +538,18 @@ double SdrObjCustomShape::GetObjectRotation() const return fObjectRotation; } +bool SdrObjCustomShape::IsPostRotate() const +{ + const com::sun::star::uno::Any* pAny; + bool bPostRotate = false; + SdrCustomShapeGeometryItem& rGeometryItem = (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ); + const rtl::OUString sIsPostRotateAngle( RTL_CONSTASCII_USTRINGPARAM ( "IsPostRotateAngle" ) ); + pAny = rGeometryItem.GetPropertyValueByName( sIsPostRotateAngle ); + if ( pAny ) + *pAny >>= bPostRotate; + return bPostRotate; +} + double SdrObjCustomShape::GetExtraTextRotation( const bool bPreRotation ) const { const com::sun::star::uno::Any* pAny; _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits