diff options
author | Balazs Varga <balazs.varga991@gmail.com> | 2019-01-04 15:12:38 +0100 |
---|---|---|
committer | Bartosz Kosiorek <gang65@poczta.onet.pl> | 2019-01-07 13:54:55 +0100 |
commit | 015569fc919b702f7a1b0f09038bafa9f104ca70 (patch) | |
tree | 2eb901dd27f288aa6c3c2a961ce6be8f2b0baf09 /oox | |
parent | 7fc28192864c30ae95b24aceb9cdf7e869dc9dcf (diff) |
tdf#122091 OOXML Import: Automatically break of X Axis labels
Set the TextBreak value automatically true, only if the X axis labels
rotation is 0 degree. The MS Office using a similar method because
there is no any XML tag in the OOXML standard which refer to this setting.
Change-Id: Ie84a95935f0d5c4c1f9a30803e22572141385960
Reviewed-on: https://gerrit.libreoffice.org/65853
Tested-by: Jenkins
Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
Diffstat (limited to 'oox')
-rw-r--r-- | oox/inc/drawingml/chart/objectformatter.hxx | 5 | ||||
-rw-r--r-- | oox/source/drawingml/chart/axisconverter.cxx | 4 | ||||
-rw-r--r-- | oox/source/drawingml/chart/objectformatter.cxx | 20 |
3 files changed, 27 insertions, 2 deletions
diff --git a/oox/inc/drawingml/chart/objectformatter.hxx b/oox/inc/drawingml/chart/objectformatter.hxx index 446c3d899293..8282844b1ab3 100644 --- a/oox/inc/drawingml/chart/objectformatter.hxx +++ b/oox/inc/drawingml/chart/objectformatter.hxx @@ -144,6 +144,11 @@ public: /** Returns true, if the passed shape properties have automatic fill mode. */ static bool isAutomaticFill( const ModelRef< Shape >& rxShapeProp ); + /** Returns true, if the X Axis label rotation is 0 degree. */ + static bool getTextRotation( + const ModelRef< TextBody >& rxTextProp, + sal_Int32 nDefaultRotation = 0 ); + private: std::shared_ptr< ObjectFormatterData > mxData; }; diff --git a/oox/source/drawingml/chart/axisconverter.cxx b/oox/source/drawingml/chart/axisconverter.cxx index 7bcba408ffbb..f35cd5333e70 100644 --- a/oox/source/drawingml/chart/axisconverter.cxx +++ b/oox/source/drawingml/chart/axisconverter.cxx @@ -260,8 +260,8 @@ void AxisConverter::convertFromModel( { // do not overlap text unless all labels are visible aAxisProp.setProperty( PROP_TextOverlap, mrModel.mnTickLabelSkip == 1 ); - // do not break text into several lines - aAxisProp.setProperty( PROP_TextBreak, false ); + // do not break text into several lines unless the rotation is 0 degree + aAxisProp.setProperty( PROP_TextBreak, ObjectFormatter::getTextRotation( mrModel.mxTextProp ) ); // do not stagger labels in two lines aAxisProp.setProperty( PROP_ArrangeOrder, cssc::ChartAxisArrangeOrderType_SIDE_BY_SIDE ); //! TODO #i58731# show n-th category diff --git a/oox/source/drawingml/chart/objectformatter.cxx b/oox/source/drawingml/chart/objectformatter.cxx index 184cb111f02f..5b576d824ba3 100644 --- a/oox/source/drawingml/chart/objectformatter.cxx +++ b/oox/source/drawingml/chart/objectformatter.cxx @@ -1121,6 +1121,26 @@ bool ObjectFormatter::isAutomaticFill( const ModelRef< Shape >& rxShapeProp ) return !rxShapeProp || !rxShapeProp->getFillProperties().moFillType.has(); } +bool ObjectFormatter::getTextRotation( const ModelRef< TextBody >& rxTextProp, sal_Int32 nDefaultRotation ) +{ + if( rxTextProp.is() ) + { + double fAnglevalue = static_cast< double >( rxTextProp->getTextProperties().moRotation.get( nDefaultRotation ) ); + if( fAnglevalue < -5400000.0 || fAnglevalue > 5400000.0 || fAnglevalue == 0.0 ) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } +} + } // namespace chart } // namespace drawingml } // namespace oox |