oox/source/drawingml/customshapeproperties.cxx | 2 +- oox/source/drawingml/shapecontext.cxx | 6 ++++++ oox/source/ppt/pptshapecontext.cxx | 6 ++++++ oox/source/token/properties.txt | 1 + oox/source/token/tokens.txt | 1 + svx/inc/svx/svdoashp.hxx | 2 +- svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx | 8 ++++++++ svx/source/svdraw/svdoashp.cxx | 5 +++-- 8 files changed, 27 insertions(+), 4 deletions(-)
New commits: commit 5c4d1b05faa8a3d704fc74a186a173f8cc019cc1 Author: Muthu Subramanian <sumu...@suse.com> Date: Wed Jan 11 15:24:27 2012 +0530 n#734734: Text rotation fixes. PPTX would need rotation of text _inside_ text/object boundaries, rather than the rotation of the text/object itself. diff --git a/oox/source/drawingml/customshapeproperties.cxx b/oox/source/drawingml/customshapeproperties.cxx index 5da446a..a03e42c 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 f613e89..389bfac 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 dce07b8..cc62b82 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 65d2cb0..50c46bd 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 594468e..cec24b5 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 3d91549..013e150 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 2e63da2..85628ca 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 5599ab3..b810dbd 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; _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits