[Libreoffice-commits] .: oox/source svx/inc svx/source
Muthu Subramanian
sumuthu at kemper.freedesktop.org
Wed Jan 11 01:57:14 PST 2012
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 <sumuthu at 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;
More information about the Libreoffice-commits
mailing list