diff options
-rw-r--r-- | oox/source/drawingml/customshapeproperties.cxx | 2 | ||||
-rw-r--r-- | oox/source/drawingml/shapecontext.cxx | 6 | ||||
-rw-r--r-- | oox/source/ppt/pptshapecontext.cxx | 6 | ||||
-rw-r--r-- | oox/source/token/properties.txt | 1 | ||||
-rw-r--r-- | oox/source/token/tokens.txt | 1 | ||||
-rw-r--r-- | svx/inc/svx/svdoashp.hxx | 2 | ||||
-rw-r--r-- | svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx | 8 | ||||
-rw-r--r-- | svx/source/svdraw/svdoashp.cxx | 5 |
8 files changed, 27 insertions, 4 deletions
diff --git a/oox/source/drawingml/customshapeproperties.cxx b/oox/source/drawingml/customshapeproperties.cxx index 5da446ab948c..a03e42c45186 100644 --- a/oox/source/drawingml/customshapeproperties.cxx +++ b/oox/source/drawingml/customshapeproperties.cxx @@ -154,7 +154,7 @@ void CustomShapeProperties::pushToPropSet( const ::oox::core::FilterBase& /* rFi aPropertyMap[ PROP_MirroredX ] <<= Any( mbMirroredX ); aPropertyMap[ PROP_MirroredY ] <<= Any( mbMirroredY ); - aPropertyMap[ PROP_TextRotateAngle ] <<= Any( mnTextRotateAngle ); + aPropertyMap[ PROP_TextPreRotateAngle ] <<= Any( mnTextRotateAngle ); Sequence< PropertyValue > aSeq = aPropertyMap.makePropertyValueSequence(); aPropSet.setProperty( PROP_CustomShapeGeometry, aSeq ); diff --git a/oox/source/drawingml/shapecontext.cxx b/oox/source/drawingml/shapecontext.cxx index f613e89ce6a9..389bfac643a8 100644 --- a/oox/source/drawingml/shapecontext.cxx +++ b/oox/source/drawingml/shapecontext.cxx @@ -119,6 +119,12 @@ Reference< XFastContextHandler > ShapeContext::createFastChildContext( sal_Int32 xRet = new TextBodyContext( *this, *xTextBody ); break; } + case XML_txXfrm: + { + AttributeList aAttribs( xAttribs ); + mpShapePtr->getTextBody()->getTextProperties().moRotation = aAttribs.getInteger( XML_rot ); + break; + } } if( !xRet.is() ) diff --git a/oox/source/ppt/pptshapecontext.cxx b/oox/source/ppt/pptshapecontext.cxx index dce07b8cc744..cc62b822f6c0 100644 --- a/oox/source/ppt/pptshapecontext.cxx +++ b/oox/source/ppt/pptshapecontext.cxx @@ -218,6 +218,12 @@ Reference< XFastContextHandler > PPTShapeContext::createFastChildContext( sal_In xRet = new oox::drawingml::TextBodyContext( *this, *xTextBody ); break; } + case PPT_TOKEN( txXfrm ): + { + AttributeList aAttribs( xAttribs ); + mpShapePtr->getTextBody()->getTextProperties().moRotation = aAttribs.getInteger( XML_rot ); + break; + } } if( !xRet.is() ) diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt index 65d2cb035564..50c46bdb73fe 100644 --- a/oox/source/token/properties.txt +++ b/oox/source/token/properties.txt @@ -457,6 +457,7 @@ TextHorizontalAdjust TextLeftDistance TextLowerDistance TextOverlap +TextPreRotateAngle TextRightDistance TextRotateAngle TextRotation diff --git a/oox/source/token/tokens.txt b/oox/source/token/tokens.txt index 594468e56606..cec24b507a26 100644 --- a/oox/source/token/tokens.txt +++ b/oox/source/token/tokens.txt @@ -5334,6 +5334,7 @@ txOverObj txPr txSp txStyles +txXfrm txbxContent txtBox ty diff --git a/svx/inc/svx/svdoashp.hxx b/svx/inc/svx/svdoashp.hxx index 3d91549fa44d..013e1508239b 100644 --- a/svx/inc/svx/svdoashp.hxx +++ b/svx/inc/svx/svdoashp.hxx @@ -149,7 +149,7 @@ public: void SetMirroredY( const sal_Bool bMirroredY ); double GetObjectRotation() const; - double GetExtraTextRotation() const; + double GetExtraTextRotation( const bool bPreRotation = false ) const; TYPEINFO(); SdrObjCustomShape(); diff --git a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx index 2e63da2fb9f7..85628caf7ce3 100644 --- a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx @@ -160,6 +160,14 @@ namespace sdr // #i101684# get the text range unrotated and absolute to the object range const basegfx::B2DRange aTextRange(getCorrectedTextBoundRect()); + // Rotation before scaling + if(!basegfx::fTools::equalZero(GetCustomShapeObj().GetExtraTextRotation(true))) + { + basegfx::B2DVector aTranslation(0.5, 0.5); + aTextBoxMatrix.translate( -aTranslation.getX(), -aTranslation.getY() ); + aTextBoxMatrix.rotate((360.0 - GetCustomShapeObj().GetExtraTextRotation(true)) * F_PI180); + aTextBoxMatrix.translate( aTranslation.getX(), aTranslation.getY() ); + } // give text object a size aTextBoxMatrix.scale(aTextRange.getWidth(), aTextRange.getHeight()); diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx index 5599ab3564e5..b810dbdf49a8 100644 --- a/svx/source/svdraw/svdoashp.cxx +++ b/svx/source/svdraw/svdoashp.cxx @@ -537,12 +537,13 @@ double SdrObjCustomShape::GetObjectRotation() const return fObjectRotation; } -double SdrObjCustomShape::GetExtraTextRotation() const +double SdrObjCustomShape::GetExtraTextRotation( const bool bPreRotation ) const { const com::sun::star::uno::Any* pAny; SdrCustomShapeGeometryItem& rGeometryItem = (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ); const rtl::OUString sTextRotateAngle( RTL_CONSTASCII_USTRINGPARAM ( "TextRotateAngle" ) ); - pAny = rGeometryItem.GetPropertyValueByName( sTextRotateAngle ); + const rtl::OUString sTextPreRotateAngle( RTL_CONSTASCII_USTRINGPARAM ( "TextPreRotateAngle" ) ); + pAny = rGeometryItem.GetPropertyValueByName( bPreRotation ? sTextPreRotateAngle : sTextRotateAngle ); double fExtraTextRotateAngle = 0.0; if ( pAny ) *pAny >>= fExtraTextRotateAngle; |