[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