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 : #include "svx/sidebar/ValueSetWithTextControl.hxx"
20 : #include <svx/dialogs.hrc>
21 : #include <svx/dialmgr.hxx>
22 : #include <sfx2/sidebar/Theme.hxx>
23 :
24 : #include <limits.h>
25 : #include <com/sun/star/uno/Reference.h>
26 : #include <com/sun/star/uno/Sequence.h>
27 : #include <com/sun/star/lang/Locale.hpp>
28 : #include <com/sun/star/style/NumberingType.hpp>
29 : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
30 : #include <com/sun/star/container/XIndexAccess.hpp>
31 : #include <com/sun/star/text/XDefaultNumberingProvider.hpp>
32 : #include <com/sun/star/text/XNumberingFormatter.hpp>
33 : #include <com/sun/star/beans/PropertyValue.hpp>
34 : #include <comphelper/processfactory.hxx>
35 : #include <com/sun/star/text/XNumberingTypeInfo.hpp>
36 : #include <i18nlangtag/mslangid.hxx>
37 : #include <svtools/valueset.hxx>
38 : #include <editeng/brushitem.hxx>
39 : #include <vcl/graph.hxx>
40 : #include <vcl/settings.hxx>
41 : #include <svx/nbdtmg.hxx>
42 : #include <svx/nbdtmgfact.hxx>
43 :
44 : using namespace com::sun::star::uno;
45 : using namespace com::sun::star::beans;
46 : using namespace com::sun::star::lang;
47 : using namespace com::sun::star::i18n;
48 : using namespace com::sun::star::text;
49 : using namespace com::sun::star::container;
50 : using namespace com::sun::star::style;
51 :
52 : namespace svx { namespace sidebar {
53 :
54 0 : static vcl::Font& lcl_GetDefaultBulletFont()
55 : {
56 : static bool bInit = false;
57 : static vcl::Font aDefBulletFont( OUString( "StarSymbol" ),
58 0 : OUString(), Size( 0, 14 ) );
59 0 : if(!bInit)
60 : {
61 0 : aDefBulletFont.SetCharSet( RTL_TEXTENCODING_SYMBOL );
62 0 : aDefBulletFont.SetFamily( FAMILY_DONTKNOW );
63 0 : aDefBulletFont.SetPitch( PITCH_DONTKNOW );
64 0 : aDefBulletFont.SetWeight( WEIGHT_DONTKNOW );
65 0 : aDefBulletFont.SetTransparent( true );
66 0 : bInit = true;
67 : }
68 0 : return aDefBulletFont;
69 : }
70 :
71 0 : ValueSetWithTextControl::ValueSetWithTextControl(
72 : const tControlType eControlType,
73 : vcl::Window* pParent,
74 : const ResId& rResId)
75 : : ValueSet( pParent, rResId )
76 : , meControlType( eControlType )
77 0 : , maItems()
78 : {
79 0 : SetColCount( 1 );
80 0 : }
81 :
82 :
83 0 : ValueSetWithTextControl::~ValueSetWithTextControl(void)
84 : {
85 0 : }
86 :
87 :
88 0 : void ValueSetWithTextControl::AddItem(
89 : const Image& rItemImage,
90 : const Image* pSelectedItemImage,
91 : const OUString& rItemText,
92 : const OUString* pItemHelpText )
93 : {
94 0 : if ( meControlType != IMAGE_TEXT )
95 : {
96 0 : return;
97 : }
98 :
99 0 : ValueSetWithTextItem aItem;
100 0 : aItem.maItemImage = rItemImage;
101 0 : aItem.maSelectedItemImage = (pSelectedItemImage != 0)
102 : ? *pSelectedItemImage
103 0 : : rItemImage;
104 :
105 0 : if ( GetDPIScaleFactor() > 1 )
106 : {
107 0 : BitmapEx b = aItem.maItemImage.GetBitmapEx();
108 0 : b.Scale(GetDPIScaleFactor(), GetDPIScaleFactor());
109 0 : aItem.maItemImage = Image(b);
110 :
111 0 : if ( pSelectedItemImage != 0 )
112 : {
113 0 : b = aItem.maSelectedItemImage.GetBitmapEx();
114 0 : b.Scale(GetDPIScaleFactor(), GetDPIScaleFactor());
115 0 : aItem.maSelectedItemImage = Image(b);
116 0 : }
117 : }
118 :
119 0 : aItem.maItemText = rItemText;
120 :
121 0 : maItems.push_back( aItem );
122 :
123 0 : InsertItem( maItems.size() );
124 0 : SetItemText( maItems.size(),
125 0 : (pItemHelpText != 0) ? *pItemHelpText : rItemText );
126 : }
127 :
128 :
129 0 : void ValueSetWithTextControl::AddItem(
130 : const OUString& rItemText,
131 : const OUString& rItemText2,
132 : const OUString* pItemHelpText )
133 : {
134 0 : if ( meControlType != TEXT_TEXT )
135 : {
136 0 : return;
137 : }
138 :
139 0 : ValueSetWithTextItem aItem;
140 0 : aItem.maItemText = rItemText;
141 0 : aItem.maItemText2 = rItemText2;
142 :
143 0 : maItems.push_back( aItem );
144 :
145 0 : InsertItem( maItems.size() );
146 0 : SetItemText( maItems.size(),
147 0 : (pItemHelpText != 0) ? *pItemHelpText : rItemText );
148 : }
149 :
150 :
151 0 : void ValueSetWithTextControl::ReplaceItemImages(
152 : const sal_uInt16 nItemId,
153 : const Image& rItemImage,
154 : const Image* pSelectedItemImage )
155 : {
156 0 : if ( meControlType != IMAGE_TEXT )
157 : {
158 0 : return;
159 : }
160 :
161 0 : if ( nItemId == 0 ||
162 0 : nItemId > maItems.size() )
163 : {
164 0 : return;
165 : }
166 :
167 0 : maItems[nItemId-1].maItemImage = rItemImage;
168 0 : maItems[nItemId-1].maSelectedItemImage = (pSelectedItemImage != 0)
169 : ? *pSelectedItemImage
170 0 : : rItemImage;
171 :
172 : //#ifndef MACOSX
173 0 : if ( GetDPIScaleFactor() > 1 )
174 : {
175 0 : BitmapEx b = maItems[nItemId-1].maItemImage.GetBitmapEx();
176 0 : b.Scale(GetDPIScaleFactor(), GetDPIScaleFactor());
177 0 : maItems[nItemId-1].maItemImage = Image(b);
178 :
179 0 : if ( pSelectedItemImage != 0 )
180 : {
181 0 : b = maItems[nItemId-1].maSelectedItemImage.GetBitmapEx();
182 0 : b.Scale(GetDPIScaleFactor(), GetDPIScaleFactor());
183 0 : maItems[nItemId-1].maSelectedItemImage = Image(b);
184 0 : }
185 : }
186 : //#endif
187 : }
188 :
189 :
190 0 : void ValueSetWithTextControl::UserDraw( const UserDrawEvent& rUDEvt )
191 : {
192 0 : const Rectangle aRect = rUDEvt.GetRect();
193 0 : OutputDevice* pDev = rUDEvt.GetDevice();
194 0 : pDev->Push( PushFlags::ALL );
195 0 : const sal_uInt16 nItemId = rUDEvt.GetItemId();
196 :
197 0 : const long nRectHeight = aRect.GetHeight();
198 0 : const Point aBLPos = aRect.TopLeft();
199 :
200 0 : vcl::Font aFont(OutputDevice::GetDefaultFont(DEFAULTFONT_UI_SANS, MsLangId::getSystemLanguage(), DEFAULTFONT_FLAGS_ONLYONE));
201 : {
202 0 : Size aSize = aFont.GetSize();
203 0 : aSize.Height() = (nRectHeight*4)/9;
204 0 : aFont.SetSize( aSize );
205 : }
206 :
207 : {
208 : //draw backgroud
209 0 : if ( GetSelectItemId() == nItemId )
210 : {
211 0 : Rectangle aBackRect = aRect;
212 0 : aBackRect.Top() += 3;
213 0 : aBackRect.Bottom() -= 2;
214 0 : pDev->SetFillColor( sfx2::sidebar::Theme::GetColor( sfx2::sidebar::Theme::Color_Highlight ) );
215 0 : pDev->DrawRect(aBackRect);
216 : }
217 : else
218 : {
219 0 : pDev->SetFillColor( COL_TRANSPARENT );
220 0 : pDev->DrawRect(aRect);
221 : }
222 :
223 : //draw image + text resp. text + text
224 0 : Image* pImage = 0;
225 0 : if ( GetSelectItemId() == nItemId )
226 : {
227 0 : aFont.SetColor( sfx2::sidebar::Theme::GetColor( sfx2::sidebar::Theme::Color_HighlightText ) );
228 0 : pImage = &maItems[nItemId-1].maSelectedItemImage;
229 : }
230 : else
231 : {
232 0 : aFont.SetColor( GetSettings().GetStyleSettings().GetFieldTextColor() );
233 0 : pImage = &maItems[nItemId-1].maItemImage;
234 : }
235 :
236 0 : Rectangle aStrRect = aRect;
237 0 : aStrRect.Top() += nRectHeight/4;
238 0 : aStrRect.Bottom() -= nRectHeight/4;
239 :
240 0 : switch ( meControlType )
241 : {
242 : case IMAGE_TEXT:
243 : {
244 : Point aImgStart(
245 0 : aBLPos.X() + 4,
246 0 : aBLPos.Y() + ( ( nRectHeight - pImage->GetSizePixel().Height() ) / 2 ) );
247 0 : pDev->DrawImage( aImgStart, *pImage );
248 :
249 0 : aStrRect.Left() += pImage->GetSizePixel().Width() + 12;
250 0 : pDev->SetFont(aFont);
251 0 : pDev->DrawText(aStrRect, maItems[nItemId-1].maItemText, TEXT_DRAW_ENDELLIPSIS);
252 : }
253 0 : break;
254 : case TEXT_TEXT:
255 : {
256 0 : const long nRectWidth = aRect.GetWidth();
257 0 : aStrRect.Left() += 8;
258 0 : aStrRect.Right() -= (nRectWidth*2)/3;
259 0 : pDev->SetFont(aFont);
260 0 : pDev->DrawText(aStrRect, maItems[nItemId-1].maItemText, TEXT_DRAW_ENDELLIPSIS);
261 0 : aStrRect.Left() += nRectWidth/3;
262 0 : aStrRect.Right() += (nRectWidth*2)/3;
263 0 : pDev->DrawText(aStrRect, maItems[nItemId-1].maItemText2, TEXT_DRAW_ENDELLIPSIS);
264 : }
265 0 : break;
266 : }
267 : }
268 :
269 0 : Invalidate( aRect );
270 0 : pDev->Pop();
271 0 : }
272 :
273 0 : SvxNumValueSet2::SvxNumValueSet2( vcl::Window* pParent, const ResId& rResId) :
274 : ValueSet( pParent, rResId ),
275 : aLineColor ( COL_LIGHTGRAY ),
276 0 : pVDev ( NULL )
277 : {
278 0 : SetColCount( 3 );
279 0 : SetLineCount( 3 );
280 0 : SetStyle( GetStyle() | WB_ITEMBORDER );
281 0 : }
282 :
283 0 : SvxNumValueSet2::~SvxNumValueSet2()
284 : {
285 0 : delete pVDev;
286 0 : }
287 :
288 0 : void SvxNumValueSet2::SetNumberingSettings(
289 : const Sequence<Sequence<PropertyValue> >& aNum,
290 : Reference<XNumberingFormatter>& xFormat,
291 : const Locale& rLocale )
292 : {
293 0 : aNumSettings = aNum;
294 0 : xFormatter = xFormat;
295 0 : aLocale = rLocale;
296 0 : if(aNum.getLength() > 9)
297 0 : SetStyle( GetStyle()|WB_VSCROLL);
298 0 : InsertItem( DEFAULT_NONE, DEFAULT_NONE - 1 );
299 0 : SetItemText( DEFAULT_NONE, SVX_RESSTR( RID_SVXSTR_NUMBULLET_NONE ));
300 :
301 0 : for ( sal_Int32 i = 0; i < aNum.getLength(); i++ )
302 : {
303 0 : InsertItem( i + 1);
304 0 : if( i < 8 )
305 : {
306 0 : NBOTypeMgrBase* pNumbering = NBOutlineTypeMgrFact::CreateInstance(eNBOType::NUMBERING);
307 0 : if ( pNumbering )
308 : {
309 0 : SetItemText( i + 1, pNumbering->GetDescription(i));
310 : }
311 : }
312 : }
313 0 : }
314 :
315 0 : void SvxNumValueSet2::UserDraw( const UserDrawEvent& rUDEvt )
316 : {
317 0 : const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
318 0 : const Color aBackColor = rStyleSettings.GetFieldColor();
319 0 : const Color aTextColor = rStyleSettings.GetFieldTextColor();
320 :
321 0 : OutputDevice* pDev = rUDEvt.GetDevice();
322 0 : Rectangle aRect = rUDEvt.GetRect();
323 0 : sal_uInt32 nItemId = rUDEvt.GetItemId();
324 0 : long nRectWidth = aRect.GetWidth();
325 0 : long nRectHeight = aRect.GetHeight();
326 0 : Size aRectSize(nRectWidth, aRect.GetHeight());
327 0 : Point aBLPos = aRect.TopLeft();
328 0 : vcl::Font aOldFont = pDev->GetFont();
329 0 : Color aOldColor = pDev->GetLineColor();
330 0 : pDev->SetLineColor(aBackColor);
331 : vcl::Font aFont(OutputDevice::GetDefaultFont(
332 0 : DEFAULTFONT_UI_SANS, MsLangId::getSystemLanguage(), DEFAULTFONT_FLAGS_ONLYONE));
333 :
334 0 : Size aSize = aFont.GetSize();
335 0 : aSize.Height() = nRectHeight/5;
336 0 : aFont.SetColor(aTextColor);
337 0 : aFont.SetFillColor(aBackColor);
338 0 : aFont.SetSize( aSize );
339 0 : pDev->SetFont(aFont);
340 0 : pDev->SetLineColor(aTextColor);
341 0 : if(!pVDev)
342 : {
343 : // Die Linien werden nur einmalig in das VirtualDevice gepainted
344 : // nur die Gliederungspage bekommt es aktuell
345 0 : pVDev = new VirtualDevice(*pDev);
346 0 : pVDev->SetMapMode(pDev->GetMapMode());
347 0 : pVDev->EnableRTL( IsRTLEnabled() );
348 0 : pVDev->SetOutputSize( aRectSize );
349 0 : aOrgRect = aRect;
350 :
351 0 : pVDev->SetLineColor( aBackColor );
352 0 : pVDev->SetFillColor( aBackColor );
353 0 : pVDev->DrawRect(aOrgRect);
354 :
355 0 : if(aBackColor == aLineColor)
356 0 : aLineColor.Invert();
357 0 : if(GetSettings().GetStyleSettings().GetHighContrastMode())
358 0 : pVDev->SetLineColor(aTextColor);
359 : else
360 0 : pVDev->SetLineColor(aLineColor);
361 : // Linien nur einmalig Zeichnen
362 0 : Point aStart(aBLPos.X() + nRectWidth *30 / 100,0);
363 0 : Point aEnd(aBLPos.X() + nRectWidth * 9 / 10,0);
364 0 : for( sal_uInt32 i = 11; i < 100; i += 33)
365 : {
366 0 : aStart.Y() = aEnd.Y() = aBLPos.Y() + nRectHeight * i / 100;
367 0 : pVDev->DrawLine(aStart, aEnd);
368 0 : aStart.Y() = aEnd.Y() = aBLPos.Y() + nRectHeight * (i + 11) / 100;
369 0 : pVDev->DrawLine(aStart, aEnd);
370 : }
371 : }
372 0 : if ( nItemId != DEFAULT_NONE)
373 : pDev->DrawOutDev( aRect.TopLeft(), aRectSize,
374 0 : aOrgRect.TopLeft(), aRectSize,
375 0 : *pVDev );
376 :
377 0 : Point aStart(aBLPos.X() + nRectWidth / 9,0);
378 0 : if ( nItemId == DEFAULT_NONE)
379 : {
380 0 : OUString sText(SVX_RESSTR( RID_SVXSTR_NUMBULLET_NONE));
381 0 : vcl::Font aLclFont = pDev->GetFont();
382 0 : Size aLclSize = aLclFont.GetSize();
383 0 : aLclSize.Height() = nRectHeight/4;
384 0 : aLclFont.SetSize( aLclSize );
385 0 : pDev->SetFont(aLclFont);
386 0 : long nTextWidth = pDev->GetTextWidth(sText);
387 0 : long nTextHeight = pDev->GetTextHeight();
388 : //GVT refine
389 0 : while (nTextWidth>nRectWidth && aLclSize.Height()>4) {
390 0 : aLclSize.Height() = aLclSize.Height()*0.9;
391 0 : aLclFont.SetSize( aLclSize );
392 0 : pDev->SetFont(aLclFont);
393 0 : nTextWidth = pDev->GetTextWidth(sText);
394 : }
395 0 : Point aSStart(aBLPos.X()+(nRectWidth-nTextWidth)/2, aBLPos.Y() +(nRectHeight-nTextHeight)/2);
396 0 : pDev->DrawText(aSStart, sText);
397 0 : pDev->SetFont(aOldFont);
398 : }
399 : else
400 : {
401 0 : NBOTypeMgrBase* pNumbering = NBOutlineTypeMgrFact::CreateInstance(eNBOType::NUMBERING);
402 0 : if ( pNumbering && nItemId <= DEFAULT_BULLET_TYPES )
403 : {
404 0 : for( sal_uInt32 i = 0; i < 3; i++ )
405 : {
406 0 : sal_uInt32 nY = 11 + i * 33;
407 0 : aStart.Y() = aBLPos.Y() + nRectHeight * nY / 100;
408 0 : OUString sText;
409 0 : sal_uInt16 nLvl = 0;
410 0 : SvxNumRule aTempRule( 0, 10, false );
411 0 : pNumbering->ApplyNumRule(aTempRule,nItemId -1,1<<nLvl);
412 0 : SvxNumberFormat aNumFmt(aTempRule.GetLevel(nLvl));
413 0 : sText = aNumFmt.GetPrefix() + aNumFmt.GetNumStr(i+1) + aNumFmt.GetSuffix();
414 0 : aStart.X() = aBLPos.X() + 2;
415 0 : aStart.Y() -= pDev->GetTextHeight()/2;
416 0 : pDev->DrawText(aStart, sText);
417 0 : }
418 : }
419 0 : pDev->SetFont(aOldFont);
420 0 : pDev->SetLineColor(aOldColor);
421 0 : }
422 : //End
423 0 : }
424 :
425 :
426 :
427 0 : SvxNumValueSet3::SvxNumValueSet3( vcl::Window* pParent, const ResId& rResId) :
428 0 : ValueSet( pParent, rResId )
429 : {
430 0 : SetColCount( 3 );
431 0 : SetLineCount( 4 );
432 0 : SetStyle( GetStyle() | WB_ITEMBORDER );
433 0 : }
434 :
435 0 : SvxNumValueSet3::~SvxNumValueSet3()
436 : {
437 0 : }
438 :
439 0 : void SvxNumValueSet3::UserDraw( const UserDrawEvent& rUDEvt )
440 : {
441 0 : Rectangle aRect = rUDEvt.GetRect();
442 0 : OutputDevice* pDev = rUDEvt.GetDevice();
443 0 : sal_uInt32 nItemId = rUDEvt.GetItemId();
444 :
445 0 : long nRectHeight = aRect.GetHeight();
446 0 : long nRectWidth = aRect.GetWidth();
447 0 : Point aBLPos = aRect.TopLeft();
448 0 : NBOTypeMgrBase* pBullets = NBOutlineTypeMgrFact::CreateInstance(eNBOType::MIXBULLETS);
449 0 : if ( pBullets )
450 : {
451 0 : if ( nItemId <= DEFAULT_BULLET_TYPES ) {
452 0 : sal_uInt16 nLvl = 0;
453 0 : SvxNumRule aTempRule( 0, 10, false );
454 0 : pBullets->ApplyNumRule(aTempRule,nItemId -1,1<<nLvl);
455 0 : SvxNumberFormat aFmt(aTempRule.GetLevel(nLvl));
456 0 : sal_Int16 eNumType = aFmt.GetNumberingType();
457 0 : if( eNumType == SVX_NUM_CHAR_SPECIAL)
458 : {
459 0 : sal_Unicode cChar = aFmt.GetBulletChar();
460 : //End
461 0 : const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
462 0 : const Color aBackColor = rStyleSettings.GetFieldColor();
463 0 : const Color aTextColor = rStyleSettings.GetFieldTextColor();
464 :
465 0 : vcl::Font aOldFont = pDev->GetFont();
466 0 : vcl::Font aFont( lcl_GetDefaultBulletFont() );
467 :
468 0 : Size aSize = aFont.GetSize();
469 0 : aSize.Height() = nRectHeight*3/6;
470 0 : aFont.SetColor(aTextColor);
471 0 : aFont.SetFillColor(aBackColor);
472 0 : aFont.SetSize( aSize );
473 0 : pDev->SetFont(aFont);
474 0 : pDev->SetFillColor( aBackColor ); //wj
475 :
476 0 : OUString sText(cChar);
477 0 : vcl::Font aOldBulletFont = pDev->GetFont();
478 0 : vcl::Font aBulletFnt(aFmt.GetBulletFont() ? *aFmt.GetBulletFont() : aOldBulletFont);
479 0 : Size aBulSize = aOldBulletFont.GetSize();
480 0 : aBulletFnt.SetSize(aBulSize);
481 0 : pDev->SetFont(aBulletFnt);
482 0 : long nTextWidth = pDev->GetTextWidth(sText);
483 0 : long nTextHeight = pDev->GetTextHeight();
484 0 : Point aStart(aBLPos.X()+(nRectWidth-nTextWidth)/2, aBLPos.Y() +(nRectHeight-nTextHeight)/2);
485 0 : pDev->DrawText(aStart, sText);
486 0 : pDev->SetFont(aOldFont);
487 0 : }else if ( eNumType == SVX_NUM_BITMAP )
488 : {
489 0 : const SvxBrushItem* pBrushItem = aFmt.GetBrush();
490 0 : if(pBrushItem)
491 : {
492 0 : const Graphic* pGrf = pBrushItem->GetGraphic();
493 0 : if(pGrf)
494 : {
495 0 : Size aSize(nRectHeight*6/20, nRectHeight*6/20);
496 0 : Point aStart(aBLPos.X() + nRectWidth*7/20, aBLPos.Y() + nRectHeight*7/20);
497 :
498 0 : pGrf->Draw( pDev, aStart, aSize );
499 : }
500 : }
501 0 : }
502 0 : }else if ( nItemId == DEFAULT_NONE)
503 : {
504 0 : const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
505 0 : const Color aBackColor = rStyleSettings.GetFieldColor();
506 0 : const Color aTextColor = rStyleSettings.GetFieldTextColor();
507 :
508 0 : vcl::Font aOldFont = pDev->GetFont();
509 0 : vcl::Font aFont(OutputDevice::GetDefaultFont(DEFAULTFONT_UI_SANS, MsLangId::getSystemLanguage(), DEFAULTFONT_FLAGS_ONLYONE));
510 0 : Size aSize = aFont.GetSize();
511 : //aSize.Height() = nRectHeight/5;
512 0 : aSize.Height() = nRectHeight/4;
513 0 : aFont.SetColor(aTextColor);
514 0 : aFont.SetFillColor(aBackColor);
515 0 : aFont.SetSize( aSize );
516 0 : pDev->SetFont(aFont);
517 0 : pDev->SetFillColor( aBackColor );
518 :
519 0 : OUString sText(SVX_RESSTR( RID_SVXSTR_NUMBULLET_NONE));
520 :
521 0 : long nTextWidth = pDev->GetTextWidth(sText);
522 0 : long nTextHeight = pDev->GetTextHeight();
523 : //GVT refine
524 0 : while (nTextWidth>nRectWidth && aSize.Height()>4) {
525 0 : aSize.Height() = aSize.Height()*0.9;
526 0 : aFont.SetSize( aSize );
527 0 : pDev->SetFont(aFont);
528 0 : nTextWidth = pDev->GetTextWidth(sText);
529 : }
530 0 : Point aStart(aBLPos.X()+(nRectWidth-nTextWidth)/2, aBLPos.Y() +(nRectHeight-nTextHeight)/2);
531 0 : pDev->DrawText(aStart, sText);
532 :
533 0 : pDev->SetFont(aOldFont);
534 : }
535 : }
536 :
537 0 : }
538 :
539 594 : } } // end of namespace svx::sidebar
540 :
541 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|