diff options
-rw-r--r-- | chart2/source/view/axes/VCartesianAxis.cxx | 34 | ||||
-rw-r--r-- | chart2/source/view/axes/VCartesianAxis.hxx | 7 |
2 files changed, 24 insertions, 17 deletions
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx index 59a497208f52..97912a5cb349 100644 --- a/chart2/source/view/axes/VCartesianAxis.cxx +++ b/chart2/source/view/axes/VCartesianAxis.cxx @@ -497,20 +497,21 @@ bool VCartesianAxis::isBreakOfLabelsAllowed( //break only for horizontal axis return bIsHorizontalAxis; } +namespace{ -bool VCartesianAxis::isAutoStaggeringOfLabelsAllowed( - const AxisLabelProperties& rAxisLabelProperties, bool bIsHorizontalAxis, bool bIsVerticalAxis ) +bool canAutoAdjustLabelPlacement( + const AxisLabelProperties& rAxisLabelProperties, bool bIsHorizontalAxis, bool bIsVerticalAxis) { - if( rAxisLabelProperties.eStaggering != STAGGER_AUTO ) - return false; + // joined prerequisite checks for auto rotate and auto stagger if( rAxisLabelProperties.bOverlapAllowed ) return false; - if( rAxisLabelProperties.bLineBreakAllowed ) //auto line break or auto staggering, doing both automatisms they may conflict... + if( rAxisLabelProperties.bLineBreakAllowed ) // auto line break may conflict with... return false; if( !::rtl::math::approxEqual( rAxisLabelProperties.fRotationAngleDegree, 0.0 ) ) return false; - //automatic staggering only for horizontal axis with horizontal text - //or vertical axis with vertical text + // automatic adjusting labels only works for + // horizontal axis with horizontal text + // or vertical axis with vertical text if( bIsHorizontalAxis ) return !rAxisLabelProperties.bStackCharacters; if( bIsVerticalAxis ) @@ -518,6 +519,18 @@ bool VCartesianAxis::isAutoStaggeringOfLabelsAllowed( return false; } +bool isAutoStaggeringOfLabelsAllowed( + const AxisLabelProperties& rAxisLabelProperties, bool bIsHorizontalAxis, bool bIsVerticalAxis ) +{ + if( rAxisLabelProperties.eStaggering != STAGGER_AUTO ) + return false; + return canAutoAdjustLabelPlacement(rAxisLabelProperties, bIsHorizontalAxis, bIsVerticalAxis); +} + +// make clear that we check for auto rotation prerequisites +const auto& isAutoRotatingOfLabelsAllowed = canAutoAdjustLabelPlacement; + +} // namespace void VCartesianAxis::createAllTickInfosFromComplexCategories( TickInfoArraysType& rAllTickInfos, bool bShiftedPosition ) { //no minor tickmarks will be generated! @@ -827,7 +840,8 @@ bool VCartesianAxis::createTextShapes( { // Compatibility option: starting from LibreOffice 5.1 the rotated // layout is preferred to staggering for axis labels. - if( m_aAxisProperties.m_bTryStaggeringFirst || !(::rtl::math::approxEqual( rAxisLabelProperties.fRotationAngleDegree, 0.0 ) ) ) + if( !isAutoRotatingOfLabelsAllowed(rAxisLabelProperties, bIsHorizontalAxis, bIsVerticalAxis) + || m_aAxisProperties.m_bTryStaggeringFirst ) { bIsStaggered = true; rAxisLabelProperties.eStaggering = STAGGER_EVEN; @@ -844,7 +858,7 @@ bool VCartesianAxis::createTextShapes( if (bOverlapsAfterAutoStagger) { // Staggering didn't solve the overlap. - if( !rAxisLabelProperties.bOverlapAllowed && ::rtl::math::approxEqual( rAxisLabelProperties.fRotationAngleDegree, 0.0 ) ) + if( isAutoRotatingOfLabelsAllowed(rAxisLabelProperties, bIsHorizontalAxis, bIsVerticalAxis) ) { // Try auto-rotating the labels at 45 degrees and // start over. This rotation angle will be stored for @@ -986,7 +1000,7 @@ bool VCartesianAxis::createTextShapesSimple( if( doesOverlap( pLastVisibleNeighbourTickInfo->xTextShape, pTickInfo->xTextShape, rAxisLabelProperties.fRotationAngleDegree ) ) { // It overlaps. - if( !rAxisLabelProperties.bOverlapAllowed && ::rtl::math::approxEqual( rAxisLabelProperties.fRotationAngleDegree, 0.0 ) ) + if( isAutoRotatingOfLabelsAllowed(rAxisLabelProperties, bIsHorizontalAxis, bIsVerticalAxis) ) { // Try auto-rotating the labels at 45 degrees and // start over. This rotation angle will be stored for diff --git a/chart2/source/view/axes/VCartesianAxis.hxx b/chart2/source/view/axes/VCartesianAxis.hxx index 8ba89a455380..61c14d4f5473 100644 --- a/chart2/source/view/axes/VCartesianAxis.hxx +++ b/chart2/source/view/axes/VCartesianAxis.hxx @@ -147,13 +147,6 @@ private: //methods , TickFactory2D* pTickFactory2D ); /** - * @return true if we can try to stagger labels in order to avoid - * overlaps, otherwise false. - */ - static bool isAutoStaggeringOfLabelsAllowed( - const AxisLabelProperties& rAxisLabelProperties, bool bIsHorizontalAxis, bool bIsVerticalAxis ); - - /** * @return true if we can break a single line label text into multiple * lines for better fitting, otherwise false. */ |