Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 :
21 : #include "LabelPositionHelper.hxx"
22 : #include "PlottingPositionHelper.hxx"
23 : #include "CommonConverters.hxx"
24 : #include "PropertyMapper.hxx"
25 : #include "ShapeFactory.hxx"
26 : #include "macros.hxx"
27 : #include "RelativeSizeHelper.hxx"
28 : #include <com/sun/star/drawing/TextVerticalAdjust.hpp>
29 : #include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
30 :
31 : //.............................................................................
32 : namespace chart
33 : {
34 : //.............................................................................
35 : using namespace ::com::sun::star;
36 : using namespace ::com::sun::star::chart2;
37 :
38 0 : LabelPositionHelper::LabelPositionHelper(
39 : PlottingPositionHelper* pPosHelper
40 : , sal_Int32 nDimensionCount
41 : , const uno::Reference< drawing::XShapes >& xLogicTarget
42 : , ShapeFactory* pShapeFactory )
43 : : m_pPosHelper(pPosHelper)
44 : , m_nDimensionCount(nDimensionCount)
45 : , m_xLogicTarget(xLogicTarget)
46 0 : , m_pShapeFactory(pShapeFactory)
47 : {
48 0 : }
49 :
50 0 : LabelPositionHelper::~LabelPositionHelper()
51 : {
52 0 : }
53 :
54 0 : awt::Point LabelPositionHelper::transformSceneToScreenPosition( const drawing::Position3D& rScenePosition3D ) const
55 : {
56 : return PlottingPositionHelper::transformSceneToScreenPosition(
57 0 : rScenePosition3D, m_xLogicTarget, m_pShapeFactory, m_nDimensionCount );
58 : }
59 :
60 164 : void LabelPositionHelper::changeTextAdjustment( tAnySequence& rPropValues, const tNameSequence& rPropNames, LabelAlignment eAlignment)
61 : {
62 : //HorizontalAdjustment
63 : {
64 164 : drawing::TextHorizontalAdjust eHorizontalAdjust = drawing::TextHorizontalAdjust_CENTER;
65 164 : if( LABEL_ALIGN_RIGHT==eAlignment || LABEL_ALIGN_RIGHT_TOP==eAlignment || LABEL_ALIGN_RIGHT_BOTTOM==eAlignment )
66 0 : eHorizontalAdjust = drawing::TextHorizontalAdjust_LEFT;
67 164 : else if( LABEL_ALIGN_LEFT==eAlignment || LABEL_ALIGN_LEFT_TOP==eAlignment || LABEL_ALIGN_LEFT_BOTTOM==eAlignment )
68 82 : eHorizontalAdjust = drawing::TextHorizontalAdjust_RIGHT;
69 164 : uno::Any* pHorizontalAdjustAny = PropertyMapper::getValuePointer(rPropValues,rPropNames,C2U("TextHorizontalAdjust"));
70 164 : if(pHorizontalAdjustAny)
71 164 : *pHorizontalAdjustAny = uno::makeAny(eHorizontalAdjust);
72 : }
73 :
74 : //VerticalAdjustment
75 : {
76 164 : drawing::TextVerticalAdjust eVerticalAdjust = drawing::TextVerticalAdjust_CENTER;
77 164 : if( LABEL_ALIGN_TOP==eAlignment || LABEL_ALIGN_RIGHT_TOP==eAlignment || LABEL_ALIGN_LEFT_TOP==eAlignment )
78 0 : eVerticalAdjust = drawing::TextVerticalAdjust_BOTTOM;
79 164 : else if( LABEL_ALIGN_BOTTOM==eAlignment || LABEL_ALIGN_RIGHT_BOTTOM==eAlignment || LABEL_ALIGN_LEFT_BOTTOM==eAlignment )
80 82 : eVerticalAdjust = drawing::TextVerticalAdjust_TOP;
81 164 : uno::Any* pVerticalAdjustAny = PropertyMapper::getValuePointer(rPropValues,rPropNames,C2U("TextVerticalAdjust"));
82 164 : if(pVerticalAdjustAny)
83 164 : *pVerticalAdjustAny = uno::makeAny(eVerticalAdjust);
84 : }
85 164 : }
86 :
87 0 : void lcl_doDynamicFontResize( uno::Any* pAOldAndNewFontHeightAny
88 : , const awt::Size& rOldReferenceSize
89 : , const awt::Size& rNewReferenceSize )
90 : {
91 0 : double fOldFontHeight = 0;
92 0 : if( pAOldAndNewFontHeightAny && ( *pAOldAndNewFontHeightAny >>= fOldFontHeight ) )
93 : {
94 0 : double fNewFontHeight = RelativeSizeHelper::calculate( fOldFontHeight, rOldReferenceSize, rNewReferenceSize );
95 0 : *pAOldAndNewFontHeightAny = uno::makeAny(fNewFontHeight);
96 : }
97 0 : }
98 :
99 164 : void LabelPositionHelper::doDynamicFontResize( tAnySequence& rPropValues
100 : , const tNameSequence& rPropNames
101 : , const uno::Reference< beans::XPropertySet >& xAxisModelProps
102 : , const awt::Size& rNewReferenceSize
103 : )
104 : {
105 : //-------------------------
106 : //handle dynamic font resize:
107 164 : awt::Size aOldReferenceSize;
108 164 : if( xAxisModelProps->getPropertyValue( C2U("ReferencePageSize")) >>= aOldReferenceSize )
109 : {
110 0 : uno::Any* pAOldAndNewFontHeightAny = PropertyMapper::getValuePointer( rPropValues, rPropNames, C2U("CharHeight") );
111 0 : lcl_doDynamicFontResize( pAOldAndNewFontHeightAny, aOldReferenceSize, rNewReferenceSize );
112 0 : pAOldAndNewFontHeightAny = PropertyMapper::getValuePointer( rPropValues, rPropNames, C2U("CharHeightAsian") );
113 0 : lcl_doDynamicFontResize( pAOldAndNewFontHeightAny, aOldReferenceSize, rNewReferenceSize );
114 0 : pAOldAndNewFontHeightAny = PropertyMapper::getValuePointer( rPropValues, rPropNames, C2U("CharHeightComplex") );
115 0 : lcl_doDynamicFontResize( pAOldAndNewFontHeightAny, aOldReferenceSize, rNewReferenceSize );
116 : }
117 164 : }
118 :
119 : namespace
120 : {
121 :
122 738 : void lcl_correctRotation_Left( double& rfXCorrection, double& rfYCorrection
123 : , double fAnglePositiveDegree, const awt::Size& aSize, bool bRotateAroundCenter )
124 : {
125 : //correct label positions for labels on a left side of something with a right centered alignment
126 738 : double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
127 738 : if( fAnglePositiveDegree==0.0 )
128 : {
129 : }
130 0 : else if( fAnglePositiveDegree<= 90.0 )
131 : {
132 0 : rfXCorrection = -aSize.Height*rtl::math::sin( fAnglePi )/2.0;
133 0 : if( bRotateAroundCenter )
134 0 : rfYCorrection = -aSize.Width*rtl::math::sin( fAnglePi )/2.0;
135 : }
136 0 : else if( fAnglePositiveDegree<= 180.0 )
137 : {
138 0 : double beta = fAnglePi-F_PI/2.0;
139 0 : rfXCorrection = -aSize.Width *rtl::math::sin( beta )
140 0 : -aSize.Height *rtl::math::cos( beta )/2.0;
141 0 : if( bRotateAroundCenter )
142 0 : rfYCorrection = -aSize.Width *rtl::math::cos( beta )/2.0;
143 : else
144 0 : rfYCorrection = -aSize.Width *rtl::math::cos( beta );
145 : }
146 0 : else if( fAnglePositiveDegree<= 270.0 )
147 : {
148 0 : double beta = fAnglePi - F_PI;
149 0 : rfXCorrection = -aSize.Width *rtl::math::cos( beta )
150 0 : -aSize.Height*rtl::math::sin( beta )/2.0;
151 0 : if( bRotateAroundCenter )
152 0 : rfYCorrection = aSize.Width *rtl::math::sin( beta )/2.0;
153 : else
154 0 : rfYCorrection = aSize.Width *rtl::math::sin( beta );
155 : }
156 : else
157 : {
158 0 : double beta = 2*F_PI - fAnglePi;
159 0 : rfXCorrection = -aSize.Height*rtl::math::sin( beta )/2.0;
160 0 : if( bRotateAroundCenter )
161 0 : rfYCorrection = aSize.Width*rtl::math::sin( beta )/2.0;
162 : }
163 738 : }
164 :
165 0 : void lcl_correctRotation_Right( double& rfXCorrection, double& rfYCorrection
166 : , double fAnglePositiveDegree, const awt::Size& aSize, bool bRotateAroundCenter )
167 : {
168 : //correct label positions for labels on a right side of something with a left centered alignment
169 0 : double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
170 0 : if( fAnglePositiveDegree== 0.0 )
171 : {
172 : }
173 0 : else if( fAnglePositiveDegree<= 90.0 )
174 : {
175 0 : rfXCorrection = aSize.Height*rtl::math::sin( fAnglePi )/2.0;
176 0 : if( bRotateAroundCenter )
177 0 : rfYCorrection = aSize.Width*rtl::math::sin( fAnglePi )/2.0;
178 : }
179 0 : else if( fAnglePositiveDegree<= 180.0 )
180 : {
181 0 : double beta = F_PI - fAnglePi;
182 0 : rfXCorrection = aSize.Width *rtl::math::cos( beta )
183 0 : + aSize.Height*rtl::math::sin( beta )/2.0;
184 0 : if( bRotateAroundCenter )
185 0 : rfYCorrection = aSize.Width *rtl::math::sin( beta )/2.0;
186 : else
187 0 : rfYCorrection = aSize.Width *rtl::math::sin( beta );
188 : }
189 0 : else if( fAnglePositiveDegree<= 270.0 )
190 : {
191 0 : double beta = 3*F_PI/2.0 - fAnglePi;
192 0 : rfXCorrection = aSize.Width *rtl::math::sin( beta )
193 0 : +aSize.Height*rtl::math::cos( beta )/2.0;
194 0 : if( bRotateAroundCenter )
195 0 : rfYCorrection = -aSize.Width *rtl::math::cos( beta )/2.0;
196 : else
197 0 : rfYCorrection = -aSize.Width *rtl::math::cos( beta );
198 : }
199 : else
200 : {
201 0 : rfXCorrection = aSize.Height*rtl::math::sin( 2*F_PI - fAnglePi )/2.0;
202 0 : if( bRotateAroundCenter )
203 0 : rfYCorrection = -aSize.Width*rtl::math::sin( 2*F_PI - fAnglePi )/2.0;
204 : }
205 0 : }
206 :
207 0 : void lcl_correctRotation_Top( double& rfXCorrection, double& rfYCorrection
208 : , double fAnglePositiveDegree, const awt::Size& aSize, bool bRotateAroundCenter )
209 : {
210 : //correct label positions for labels on top of something with a bottom centered alignment
211 0 : double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
212 0 : if( fAnglePositiveDegree== 0.0 )
213 : {
214 : }
215 0 : else if( fAnglePositiveDegree<= 90.0 )
216 : {
217 0 : rfXCorrection = aSize.Height*rtl::math::sin( fAnglePi )/2.0;
218 0 : if( !bRotateAroundCenter )
219 0 : rfXCorrection += aSize.Width*rtl::math::cos( fAnglePi )/2.0;
220 0 : rfYCorrection = -aSize.Width*rtl::math::sin( fAnglePi )/2.0;
221 : }
222 0 : else if( fAnglePositiveDegree<= 180.0 )
223 : {
224 0 : double beta = fAnglePi - F_PI/2.0;
225 0 : rfXCorrection = aSize.Height*rtl::math::cos( beta )/2.0;
226 0 : if( !bRotateAroundCenter )
227 0 : rfXCorrection -= aSize.Width*rtl::math::sin( beta )/2.0;
228 0 : rfYCorrection = -aSize.Width*rtl::math::cos( beta )/2.0
229 0 : - aSize.Height*rtl::math::sin( beta );
230 : }
231 0 : else if( fAnglePositiveDegree<= 270.0 )
232 : {
233 0 : double beta = fAnglePi - F_PI;
234 0 : rfXCorrection = -aSize.Height *rtl::math::sin( beta )/2.0;
235 0 : if( !bRotateAroundCenter )
236 0 : rfXCorrection += aSize.Width *rtl::math::cos( beta )/2.0;
237 0 : rfYCorrection = -aSize.Width *rtl::math::sin( beta )/2.0
238 0 : -aSize.Height *rtl::math::cos( beta );
239 : }
240 : else
241 : {
242 0 : rfXCorrection = aSize.Height*rtl::math::sin( fAnglePi )/2.0;
243 0 : if( !bRotateAroundCenter )
244 0 : rfXCorrection -= aSize.Width*rtl::math::cos( fAnglePi )/2.0;
245 0 : rfYCorrection = aSize.Width*rtl::math::sin( fAnglePi )/2.0;
246 : }
247 0 : }
248 :
249 492 : void lcl_correctRotation_Bottom( double& rfXCorrection, double& rfYCorrection
250 : , double fAnglePositiveDegree, const awt::Size& aSize, bool bRotateAroundCenter )
251 : {
252 : //correct label positions for labels below something with a top centered alignment
253 492 : double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
254 492 : if( fAnglePositiveDegree==0.0 )
255 : {
256 : }
257 0 : else if( fAnglePositiveDegree<= 90.0 )
258 : {
259 0 : rfXCorrection = -aSize.Height*rtl::math::sin( fAnglePi )/2.0;
260 0 : if( !bRotateAroundCenter )
261 0 : rfXCorrection -= aSize.Width *rtl::math::cos( fAnglePi )/2.0;
262 0 : rfYCorrection = aSize.Width*rtl::math::sin( fAnglePi )/2.0;
263 : }
264 0 : else if( fAnglePositiveDegree<= 180.0 )
265 : {
266 0 : double beta = fAnglePi-F_PI/2.0;
267 0 : rfXCorrection = -aSize.Height*rtl::math::cos( beta )/2.0;
268 0 : if( !bRotateAroundCenter )
269 0 : rfXCorrection += aSize.Width *rtl::math::sin( beta )/2.0;
270 0 : rfYCorrection = aSize.Width *rtl::math::cos( beta )/2.0
271 0 : +aSize.Height*rtl::math::sin( beta );
272 : }
273 0 : else if( fAnglePositiveDegree<= 270.0 )
274 : {
275 0 : double beta = 3*F_PI/2.0 - fAnglePi;
276 0 : rfXCorrection = aSize.Height*rtl::math::cos( beta )/2.0;
277 0 : if( !bRotateAroundCenter )
278 0 : rfXCorrection -= aSize.Width *rtl::math::sin( beta )/2.0;
279 0 : rfYCorrection = aSize.Height*rtl::math::sin( beta )
280 0 : +aSize.Width*rtl::math::cos( beta )/2.0;
281 : }
282 : else
283 : {
284 0 : double beta = 2*F_PI - fAnglePi;
285 0 : rfXCorrection = aSize.Height*rtl::math::sin( beta )/2.0;
286 0 : if( !bRotateAroundCenter )
287 0 : rfXCorrection += aSize.Width*rtl::math::cos( beta )/2.0;
288 0 : rfYCorrection = aSize.Width*rtl::math::sin( beta )/2.0;
289 : }
290 492 : }
291 :
292 0 : void lcl_correctRotation_Left_Top( double& rfXCorrection, double& rfYCorrection
293 : , double fAnglePositiveDegree, const awt::Size& aSize )
294 : {
295 : //correct position for labels at the left top corner of something with a bottom right alignment
296 0 : double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
297 0 : if( fAnglePositiveDegree==0.0 )
298 : {
299 : }
300 0 : else if( fAnglePositiveDegree<= 90.0 )
301 : {
302 0 : rfYCorrection = -aSize.Width*rtl::math::sin( fAnglePi );
303 : }
304 0 : else if( fAnglePositiveDegree<= 180.0 )
305 : {
306 0 : double beta = fAnglePi-F_PI/2.0;
307 0 : rfXCorrection = -aSize.Width*rtl::math::sin( beta );
308 0 : rfYCorrection = -aSize.Height*rtl::math::sin( beta )
309 0 : -aSize.Width*rtl::math::cos( beta );
310 : }
311 0 : else if( fAnglePositiveDegree<= 270.0 )
312 : {
313 0 : double beta = 3*F_PI/2.0 - fAnglePi;
314 0 : rfXCorrection = -aSize.Height*rtl::math::cos( beta )
315 0 : -aSize.Width*rtl::math::sin( beta );
316 0 : rfYCorrection = -aSize.Height*rtl::math::sin( beta );
317 : }
318 : else
319 : {
320 0 : rfXCorrection = aSize.Height*rtl::math::sin( fAnglePi );
321 : }
322 0 : }
323 :
324 0 : void lcl_correctRotation_Left_Bottom( double& rfXCorrection, double& rfYCorrection
325 : , double fAnglePositiveDegree, const awt::Size& aSize )
326 : {
327 : //correct position for labels at the left bottom corner of something with a top right alignment
328 0 : double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
329 0 : if( fAnglePositiveDegree==0.0 )
330 : {
331 : }
332 0 : else if( fAnglePositiveDegree<= 90.0 )
333 : {
334 0 : rfXCorrection = -aSize.Height*rtl::math::sin( fAnglePi );
335 : }
336 0 : else if( fAnglePositiveDegree<= 180.0 )
337 : {
338 0 : double beta = fAnglePi-F_PI/2.0;
339 0 : rfXCorrection = -aSize.Width*rtl::math::sin( beta )
340 0 : -aSize.Height*rtl::math::cos( beta );;
341 0 : rfYCorrection = aSize.Height*rtl::math::sin( beta );
342 : }
343 0 : else if( fAnglePositiveDegree<= 270.0 )
344 : {
345 0 : double beta = 3*F_PI/2.0 - fAnglePi;
346 0 : rfXCorrection = -aSize.Width*rtl::math::sin( beta );
347 0 : rfYCorrection = aSize.Width*rtl::math::cos( beta )
348 0 : +aSize.Height*rtl::math::sin( beta );
349 : }
350 : else
351 : {
352 0 : rfYCorrection = -aSize.Width*rtl::math::sin( fAnglePi );
353 : }
354 0 : }
355 :
356 0 : void lcl_correctRotation_Right_Top( double& rfXCorrection, double& rfYCorrection
357 : , double fAnglePositiveDegree, const awt::Size& aSize )
358 : {
359 : //correct position for labels at the right top corner of something with a bottom left alignment
360 0 : double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
361 0 : if( fAnglePositiveDegree==0.0 )
362 : {
363 : }
364 0 : else if( fAnglePositiveDegree<= 90.0 )
365 : {
366 0 : rfXCorrection = aSize.Height*rtl::math::sin( fAnglePi );
367 : }
368 0 : else if( fAnglePositiveDegree<= 180.0 )
369 : {
370 0 : double beta = fAnglePi-F_PI/2.0;
371 0 : rfXCorrection = aSize.Width*rtl::math::sin( beta )
372 0 : +aSize.Height*rtl::math::cos( beta );
373 0 : rfYCorrection = -aSize.Height*rtl::math::sin( beta );
374 : }
375 0 : else if( fAnglePositiveDegree<= 270.0 )
376 : {
377 0 : double beta = 3*F_PI/2.0 - fAnglePi;
378 0 : rfXCorrection = aSize.Width*rtl::math::sin( beta );
379 0 : rfYCorrection = -aSize.Width*rtl::math::cos( beta )
380 0 : -aSize.Height*rtl::math::sin( beta );
381 : }
382 : else
383 : {
384 0 : rfYCorrection = aSize.Width*rtl::math::sin( fAnglePi );
385 : }
386 0 : }
387 :
388 0 : void lcl_correctRotation_Right_Bottom( double& rfXCorrection, double& rfYCorrection
389 : , double fAnglePositiveDegree, const awt::Size& aSize )
390 : {
391 : //correct position for labels at the right bottom corner of something with a top left alignment
392 0 : double fAnglePi = fAnglePositiveDegree*F_PI/180.0;
393 0 : if( fAnglePositiveDegree==0.0 )
394 : {
395 : }
396 0 : else if( fAnglePositiveDegree<= 90.0 )
397 : {
398 0 : rfYCorrection = aSize.Width*rtl::math::sin( fAnglePi );
399 : }
400 0 : else if( fAnglePositiveDegree<= 180.0 )
401 : {
402 0 : double beta = fAnglePi-F_PI/2.0;
403 0 : rfXCorrection = aSize.Width*rtl::math::sin( beta );
404 0 : rfYCorrection = aSize.Height*rtl::math::sin( beta )
405 0 : +aSize.Width*rtl::math::cos( beta );
406 : }
407 0 : else if( fAnglePositiveDegree<= 270.0 )
408 : {
409 0 : double beta = 3*F_PI/2.0 - fAnglePi;
410 0 : rfXCorrection = aSize.Height*rtl::math::cos( beta )
411 0 : +aSize.Width*rtl::math::sin( beta );
412 0 : rfYCorrection = aSize.Height*rtl::math::sin( beta );
413 : }
414 : else
415 : {
416 0 : rfXCorrection = -aSize.Height*rtl::math::sin( fAnglePi );
417 : }
418 0 : }
419 :
420 : }//end anonymous namespace
421 :
422 1230 : void LabelPositionHelper::correctPositionForRotation( const uno::Reference< drawing::XShape >& xShape2DText
423 : , LabelAlignment eLabelAlignment, const double fRotationAngle, bool bRotateAroundCenter )
424 : {
425 1230 : if( !xShape2DText.is() )
426 1230 : return;
427 :
428 1230 : awt::Point aOldPos = xShape2DText->getPosition();
429 1230 : awt::Size aSize = xShape2DText->getSize();
430 :
431 1230 : double fYCorrection = 0.0;
432 1230 : double fXCorrection = 0.0;
433 :
434 1230 : double fAnglePositiveDegree = fRotationAngle;
435 2460 : while(fAnglePositiveDegree<0.0)
436 0 : fAnglePositiveDegree+=360.0;
437 :
438 1230 : switch(eLabelAlignment)
439 : {
440 : case LABEL_ALIGN_LEFT:
441 738 : lcl_correctRotation_Left( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize, bRotateAroundCenter );
442 738 : break;
443 : case LABEL_ALIGN_RIGHT:
444 0 : lcl_correctRotation_Right( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize, bRotateAroundCenter );
445 0 : break;
446 : case LABEL_ALIGN_TOP:
447 0 : lcl_correctRotation_Top( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize, bRotateAroundCenter );
448 0 : break;
449 : case LABEL_ALIGN_BOTTOM:
450 492 : lcl_correctRotation_Bottom( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize, bRotateAroundCenter );
451 492 : break;
452 : case LABEL_ALIGN_LEFT_TOP:
453 0 : lcl_correctRotation_Left_Top( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize );
454 0 : break;
455 : case LABEL_ALIGN_LEFT_BOTTOM:
456 0 : lcl_correctRotation_Left_Bottom( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize );
457 0 : break;
458 : case LABEL_ALIGN_RIGHT_TOP:
459 0 : lcl_correctRotation_Right_Top( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize );
460 0 : break;
461 : case LABEL_ALIGN_RIGHT_BOTTOM:
462 0 : lcl_correctRotation_Right_Bottom( fXCorrection, fYCorrection, fAnglePositiveDegree, aSize );
463 0 : break;
464 : default: //LABEL_ALIGN_CENTER
465 0 : break;
466 : }
467 :
468 1230 : xShape2DText->setPosition( awt::Point(
469 : static_cast<sal_Int32>(aOldPos.X + fXCorrection )
470 1230 : , static_cast<sal_Int32>(aOldPos.Y + fYCorrection ) ) );
471 : }
472 :
473 : //.............................................................................
474 : } //namespace chart
475 : //.............................................................................
476 :
477 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|