summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chart2/source/view/axes/VCartesianAxis.cxx34
-rw-r--r--chart2/source/view/axes/VCartesianAxis.hxx7
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.
*/