summaryrefslogtreecommitdiff
path: root/chart2/source/view/axes/VCartesianAxis.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/source/view/axes/VCartesianAxis.cxx')
-rw-r--r--chart2/source/view/axes/VCartesianAxis.cxx197
1 files changed, 4 insertions, 193 deletions
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index c64102f6c984..0f18029254ef 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -64,193 +64,6 @@ using namespace ::com::sun::star::chart2;
using namespace ::rtl::math;
using ::com::sun::star::uno::Reference;
-void lcl_correctRotation_Left( double& rfXCorrection, double& rfYCorrection
- , double fAnglePositiveDegree, const awt::Size& aSize )
-{
- //correct label positions left of an axis with right centered alignment
- double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
- if( fAnglePositiveDegree==0.0 )
- {
- }
- else if( fAnglePositiveDegree<= 90.0 )
- {
- rfXCorrection = -aSize.Height*rtl::math::sin( fAnglePi )/2.0;
- }
- else if( fAnglePositiveDegree<= 180.0 )
- {
- double beta = fAnglePi-F_PI/2.0;
- rfXCorrection = -aSize.Width *rtl::math::sin( beta )
- -aSize.Height *rtl::math::cos( beta )/2.0;
- rfYCorrection = -aSize.Width *rtl::math::cos( beta );
- }
- else if( fAnglePositiveDegree<= 270.0 )
- {
- double beta = fAnglePi - F_PI;
- rfXCorrection = -aSize.Width *rtl::math::cos( beta )
- -aSize.Height*rtl::math::sin( beta )/2.0;
- rfYCorrection = aSize.Width *rtl::math::sin( beta );
- }
- else
- {
- double beta = 2*F_PI - fAnglePi;
- rfXCorrection = -aSize.Height*rtl::math::sin( beta )/2.0;
-
- }
-}
-
-void lcl_correctRotation_Right( double& rfXCorrection, double& rfYCorrection
- , double fAnglePositiveDegree, const awt::Size& aSize )
-{
- //correct label positions right of an axis with left centered alignment
- double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
- if( fAnglePositiveDegree== 0.0 )
- {
- }
- else if( fAnglePositiveDegree<= 90.0 )
- {
- rfXCorrection = aSize.Height*rtl::math::sin( fAnglePi )/2.0;
- }
- else if( fAnglePositiveDegree<= 180.0 )
- {
- double beta = F_PI - fAnglePi;
- rfXCorrection = aSize.Width *rtl::math::cos( beta )
- + aSize.Height*rtl::math::sin( beta )/2.0;
- rfYCorrection = aSize.Width *rtl::math::sin( beta );
- }
- else if( fAnglePositiveDegree<= 270.0 )
- {
- double beta = 3*F_PI/2.0 - fAnglePi;
- rfXCorrection = aSize.Width *rtl::math::sin( beta )
- +aSize.Height*rtl::math::cos( beta )/2.0;
- rfYCorrection = -aSize.Width *rtl::math::cos( beta );
- }
- else
- {
- rfXCorrection = aSize.Height*rtl::math::sin( 2*F_PI - fAnglePi )/2.0;
- }
-}
-
-void lcl_correctRotation_Top( double& rfXCorrection, double& rfYCorrection
- , double fAnglePositiveDegree, const awt::Size& aSize )
-{
- //correct label positions on top of an axis with bottom centered alignment
- double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
- if( fAnglePositiveDegree== 0.0 )
- {
- }
- else if( fAnglePositiveDegree<= 90.0 )
- {
- rfXCorrection = aSize.Width*rtl::math::cos( fAnglePi )/2.0
- +aSize.Height*rtl::math::sin( fAnglePi )/2.0;
- rfYCorrection = -aSize.Width*rtl::math::sin( fAnglePi )/2.0;
- }
- else if( fAnglePositiveDegree<= 180.0 )
- {
- double beta = fAnglePi - F_PI/2.0;
- rfYCorrection = -aSize.Width*rtl::math::cos( beta )/2.0
- - aSize.Height*rtl::math::sin( beta );
- rfXCorrection = - aSize.Width*rtl::math::sin( beta )/2.0
- + aSize.Height*rtl::math::cos( beta )/2.0;
- }
- else if( fAnglePositiveDegree<= 270.0 )
- {
- double beta = fAnglePi - F_PI;
- rfXCorrection = +aSize.Width *rtl::math::cos( beta )/2.0
- -aSize.Height *rtl::math::sin( beta )/2.0; ;
- rfYCorrection = -aSize.Width *rtl::math::sin( beta )/2.0
- -aSize.Height *rtl::math::cos( beta );
- }
- else
- {
- rfXCorrection = -aSize.Width*rtl::math::cos( fAnglePi )/2.0
- +aSize.Height*rtl::math::sin( fAnglePi )/2.0;
- rfYCorrection = aSize.Width*rtl::math::sin( fAnglePi )/2.0;
- }
-}
-
-void lcl_correctRotation_Bottom( double& rfXCorrection, double& rfYCorrection
- , double fAnglePositiveDegree, const awt::Size& aSize )
-{
- //correct label positions below of an axis with top centered alignment
- double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
- if( fAnglePositiveDegree==0.0 )
- {
- }
- else if( fAnglePositiveDegree<= 90.0 )
- {
- rfXCorrection = -aSize.Width *rtl::math::cos( fAnglePi )/2.0
- -aSize.Height*rtl::math::sin( fAnglePi )/2.0;
- rfYCorrection = aSize.Width*rtl::math::sin( fAnglePi )/2.0;
- }
- else if( fAnglePositiveDegree<= 180.0 )
- {
- double beta = fAnglePi-F_PI/2.0;
- rfYCorrection = aSize.Width *rtl::math::cos( beta )/2.0
- +aSize.Height*rtl::math::sin( beta );
- rfXCorrection = aSize.Width *rtl::math::sin( beta )/2.0
- -aSize.Height*rtl::math::cos( beta )/2.0;
- }
- else if( fAnglePositiveDegree<= 270.0 )
- {
- double beta = 3*F_PI/2.0 - fAnglePi;
- rfXCorrection = -aSize.Width *rtl::math::sin( beta )/2.0
- +aSize.Height*rtl::math::cos( beta )/2.0;
- rfYCorrection = aSize.Height*rtl::math::sin( beta )
- +aSize.Width*rtl::math::cos( beta )/2.0;
- }
- else
- {
- double beta = 2*F_PI - fAnglePi;
- rfXCorrection = aSize.Height*rtl::math::sin( beta )/2.0
- +aSize.Width*rtl::math::cos( beta )/2.0;
- rfYCorrection = aSize.Width*rtl::math::sin( beta )/2.0;
- }
-}
-
-void lcl_correctPositionForRotation(
- const Reference< drawing::XShape >& xShape2DText
- , LabelAlignment eLabelAlignment
- , const double fRotationAngle )
-{
- if( !xShape2DText.is() )
- return;
-
- awt::Point aOldPos = xShape2DText->getPosition();
- awt::Size aSize = xShape2DText->getSize();
-
- double fYCorrection = 0.0;
- double fXCorrection = 0.0;
-
- double fAnglePositiveDegree = fRotationAngle;
- while(fAnglePositiveDegree<0.0)
- fAnglePositiveDegree+=360.0;
-
- switch(eLabelAlignment)
- {
- case LABEL_ALIGN_LEFT:
- case LABEL_ALIGN_LEFT_TOP:
- case LABEL_ALIGN_LEFT_BOTTOM:
- lcl_correctRotation_Left( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize );
- break;
- case LABEL_ALIGN_RIGHT:
- case LABEL_ALIGN_RIGHT_TOP:
- case LABEL_ALIGN_RIGHT_BOTTOM:
- lcl_correctRotation_Right( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize );
- break;
- case LABEL_ALIGN_TOP:
- lcl_correctRotation_Top( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize );
- break;
- case LABEL_ALIGN_BOTTOM:
- lcl_correctRotation_Bottom( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize );
- default: //LABEL_ALIGN_CENTER
- break;
- }
-
- xShape2DText->setPosition( awt::Point(
- static_cast<sal_Int32>(aOldPos.X + fXCorrection )
- , static_cast<sal_Int32>(aOldPos.Y + fYCorrection ) ) );
-}
-
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
@@ -299,9 +112,8 @@ Reference< drawing::XShape > createSingleLabel(
.createText( xTarget, aLabel, rPropNames, rPropValues, aATransformation );
//correctPositionForRotation
- lcl_correctPositionForRotation( xShape2DText
- , rAxisProperties.m_aLabelAlignment
- , rAxisLabelProperties.fRotationAngleDegree );
+ LabelPositionHelper::correctPositionForRotation( xShape2DText
+ , rAxisProperties.m_aLabelAlignment, rAxisLabelProperties.fRotationAngleDegree, false );
return xShape2DText;
}
@@ -1424,9 +1236,8 @@ void SAL_CALL VCartesianAxis::updatePositions()
}
//correctPositionForRotation
- lcl_correctPositionForRotation( xShape2DText
- , m_aAxisProperties.m_aLabelAlignment
- , m_aAxisLabelProperties.fRotationAngleDegree );
+ LabelPositionHelper::correctPositionForRotation( xShape2DText
+ , m_aAxisProperties.m_aLabelAlignment, m_aAxisLabelProperties.fRotationAngleDegree, false );
}
}