chart2/source/view/axes/VCartesianAxis.cxx | 16 +++++++++++++++- oox/inc/oox/drawingml/fillproperties.hxx | 4 +++- oox/source/drawingml/fillproperties.cxx | 9 ++++++++- oox/source/drawingml/shape.cxx | 2 +- oox/source/export/drawingml.cxx | 5 +++++ 5 files changed, 32 insertions(+), 4 deletions(-)
New commits: commit 40fe0c77091f97a30fb550dbd14ed5f3d57b34fe Author: Muthu Subramanian <sumu...@suse.com> Date: Tue Jan 8 12:40:45 2013 +0530 n#791985: Automatically rotate chart labels (if overlapping). This bug fixes two issues: * Overlap detection seems to be approximate and doesn't work for rotated text. Added a workaround for labels rotated at angles 45-135 and 225-315. * Auto rotate labels, which overlap. This is done only for labels having zero degrees rotate. For forcing angles, use 'enable overlap' or non-zero angles (1 degree). Of course, zero degrees plus skipping of labels would no longer occur. Better solutions? Signed-off-by: Noel Power <noel.po...@suse.com> diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx index f394ef8..40b4886 100644 --- a/chart2/source/view/axes/VCartesianAxis.cxx +++ b/chart2/source/view/axes/VCartesianAxis.cxx @@ -137,6 +137,11 @@ bool doesOverlap( const Reference< drawing::XShape >& xShape1 if( !xShape1.is() || !xShape2.is() ) return false; + sal_Int32 nAngle = abs(fRotationAngleDegree); + + if( ( nAngle >= 45 && nAngle <= 135 ) || ( nAngle >= 225 && nAngle <= 315 ) ) + return false; + ::basegfx::B2IRectangle aRect1( BaseGFXHelper::makeRectangle(xShape1->getPosition(),ShapeFactory::getSizeAfterRotation( xShape1, fRotationAngleDegree ))); ::basegfx::B2IRectangle aRect2( BaseGFXHelper::makeRectangle(xShape2->getPosition(),ShapeFactory::getSizeAfterRotation( xShape2, fRotationAngleDegree ))); return aRect1.overlaps(aRect2); @@ -662,7 +667,7 @@ bool VCartesianAxis::createTextShapes( pPREPreviousVisibleTickInfo : pPreviousVisibleTickInfo; //don't create labels which does not fit into the rhythm - if( nTick%rAxisLabelProperties.nRhythm != 0) + if( nTick%rAxisLabelProperties.nRhythm != 0 ) continue; //don't create labels for invisible ticks @@ -776,6 +781,15 @@ bool VCartesianAxis::createTextShapes( } if( bOverlapAlsoAfterSwitchingOnAutoStaggering ) { + /* Try auto-rotating to 45 degrees */ + if( !rAxisLabelProperties.bOverlapAllowed && ::rtl::math::approxEqual( rAxisLabelProperties.fRotationAngleDegree, 0.0 ) ) + { + rAxisLabelProperties.fRotationAngleDegree = 45; + rAxisLabelProperties.bLineBreakAllowed = false; + m_aAxisLabelProperties.fRotationAngleDegree = rAxisLabelProperties.fRotationAngleDegree; + removeTextShapesFromTicks(); + return false; + } if( rAxisLabelProperties.bRhythmIsFix ) { xTarget->remove(pTickInfo->xTextShape); commit fb3becfdb10cde48b6ee5d6fdc9337bf71796fd6 Author: Muthu Subramanian <sumu...@suse.com> Date: Wed Dec 19 20:03:51 2012 +0530 n#794350: [PPTX] Flip gradient fill as well. Signed-off-by: Noel Power <noel.po...@suse.com> diff --git a/oox/inc/oox/drawingml/fillproperties.hxx b/oox/inc/oox/drawingml/fillproperties.hxx index 5467663..fb9aa84 100644 --- a/oox/inc/oox/drawingml/fillproperties.hxx +++ b/oox/inc/oox/drawingml/fillproperties.hxx @@ -120,7 +120,9 @@ struct OOX_DLLPUBLIC FillProperties ShapePropertyMap& rPropMap, const GraphicHelper& rGraphicHelper, sal_Int32 nShapeRotation = 0, - sal_Int32 nPhClr = API_RGB_TRANSPARENT ) const; + sal_Int32 nPhClr = API_RGB_TRANSPARENT, + bool bFlipH = false, + bool bFlipV = false ) const; }; // ============================================================================ diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx index a7072d9..a400cce 100644 --- a/oox/source/drawingml/fillproperties.cxx +++ b/oox/source/drawingml/fillproperties.cxx @@ -182,7 +182,8 @@ Color FillProperties::getBestSolidColor() const } void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap, - const GraphicHelper& rGraphicHelper, sal_Int32 nShapeRotation, sal_Int32 nPhClr ) const + const GraphicHelper& rGraphicHelper, sal_Int32 nShapeRotation, sal_Int32 nPhClr, + bool bFlipH, bool bFlipV ) const { if( moFillType.has() ) { @@ -226,6 +227,12 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap, nStartTrans = maGradientProps.maGradientStops.begin()->second.getTransparency()*255/100; } + // Adjust for flips + if ( bFlipH ) + nShapeRotation = 180*60000 - nShapeRotation; + if ( bFlipV ) + nShapeRotation = -nShapeRotation; + // "rotate with shape" not set, or set to false -> do not rotate if ( !maGradientProps.moRotateWithShape.get( false ) ) nShapeRotation = 0; diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index 6debbcb..fa5f8e0 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -534,7 +534,7 @@ Reference< XShape > Shape::createAndInsert( mpGraphicPropertiesPtr->pushToPropMap( aShapeProps, rGraphicHelper ); if ( mpTablePropertiesPtr.get() && aServiceName == "com.sun.star.drawing.TableShape" ) mpTablePropertiesPtr->pushToPropSet( rFilterBase, xSet, mpMasterTextListStyle ); - aFillProperties.pushToPropMap( aShapeProps, rGraphicHelper, mnRotation, nFillPhClr ); + aFillProperties.pushToPropMap( aShapeProps, rGraphicHelper, mnRotation, nFillPhClr, mbFlipH, mbFlipV ); aLineProperties.pushToPropMap( aShapeProps, rGraphicHelper, nLinePhClr ); aEffectProperties.pushToPropMap( aShapeProps, rGraphicHelper ); commit 4a6f6d761263a7dc5eb1091efa252b8dc4ccf538 Author: Muthu Subramanian <sumu...@suse.com> Date: Wed Dec 26 16:18:51 2012 +0530 n#793999: PPTX Export - background image fit to slide. Change-Id: I0365c1a2723e5da06c269802c0503d4e45fe7ac1 Signed-off-by: Noel Power <noel.po...@suse.com> diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index bc48e60..4eefc90 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -565,6 +565,11 @@ void DrawingML::WriteBlipMode( Reference< XPropertySet > rXPropSet ) case BitmapMode_REPEAT: mpFS->singleElementNS( XML_a, XML_tile, FSEND ); break; + case BitmapMode_STRETCH: + mpFS->startElementNS( XML_a, XML_stretch, FSEND ); + mpFS->singleElementNS( XML_a, XML_fillRect, FSEND ); + mpFS->endElementNS( XML_a, XML_stretch ); + break; default: ; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits