svx/source/tbxctrls/tbcontrl.cxx | 66 +++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 29 deletions(-)
New commits: commit e29e3f47e687689c824d71718ae2ccaa4846ac51 Author: Caolán McNamara <caol...@redhat.com> Date: Tue Apr 21 15:00:34 2015 +0100 break out text drawing bit as UserDrawEntry Change-Id: Icb1bcfb5f9f7475f67c9c001efdad2aa7e0d0834 diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index 19ea1e7..031aabc2 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -158,6 +158,7 @@ private: void ReleaseFocus(); Color TestColorsVisible(const Color &FontCol, const Color &BackCol); + void UserDrawEntry(const UserDrawEvent& rUDEvt, const OUString &rStyleName); DECL_LINK( MenuSelectHdl, Menu * ); }; @@ -546,6 +547,38 @@ void SvxStyleBox_Impl::StateChanged( StateChangedType nStateChange ) } } +void SvxStyleBox_Impl::UserDrawEntry(const UserDrawEvent& rUDEvt, const OUString &rStyleName) +{ + OutputDevice *pDevice = rUDEvt.GetDevice(); + + // IMG_TXT_DISTANCE in ilstbox.hxx is 6, then 1 is added as + // nBorder, and we are adding 1 in order to look better when + // italics is present + const int nLeftDistance = 8; + + Rectangle aTextRect; + pDevice->GetTextBoundRect(aTextRect, rStyleName); + + Point aPos( rUDEvt.GetRect().TopLeft() ); + aPos.X() += nLeftDistance; + if ( aTextRect.Bottom() > rUDEvt.GetRect().GetHeight() ) + { + // the text does not fit, adjust the font size + double ratio = static_cast< double >( rUDEvt.GetRect().GetHeight() ) / aTextRect.Bottom(); + vcl::Font aFont(pDevice->GetFont()); + Size aPixelSize(aFont.GetSize()); + aPixelSize.Width() *= ratio; + aPixelSize.Height() *= ratio; + aFont.SetSize(aPixelSize); + pDevice->SetFont(aFont); + } + else + aPos.Y() += ( rUDEvt.GetRect().GetHeight() - aTextRect.Bottom() ) / 2; + + pDevice->DrawText(aPos, rStyleName); +} + + void SvxStyleBox_Impl::UserDraw( const UserDrawEvent& rUDEvt ) { sal_uInt16 nItem = rUDEvt.GetItemId(); @@ -716,29 +749,7 @@ void SvxStyleBox_Impl::UserDraw( const UserDrawEvent& rUDEvt ) } } - // IMG_TXT_DISTANCE in ilstbox.hxx is 6, then 1 is added as - // nBorder, and we are adding 1 in order to look better when - // italics is present - const int nLeftDistance = 8; - - Rectangle aTextRect; - pDevice->GetTextBoundRect( aTextRect, aStyleName ); - - Point aPos( rUDEvt.GetRect().TopLeft() ); - aPos.X() += nLeftDistance; - if ( aTextRect.Bottom() > rUDEvt.GetRect().GetHeight() ) - { - // the text does not fit, adjust the font size - double ratio = static_cast< double >( rUDEvt.GetRect().GetHeight() ) / aTextRect.Bottom(); - aPixelSize.Width() *= ratio; - aPixelSize.Height() *= ratio; - aFont.SetSize( aPixelSize ); - pDevice->SetFont( aFont ); - } - else - aPos.Y() += ( rUDEvt.GetRect().GetHeight() - aTextRect.Bottom() ) / 2; - - pDevice->DrawText( aPos, aStyleName ); + UserDrawEntry(rUDEvt, aStyleName); pDevice->Pop(); commit 7cf22a0a3202da296c1d1a3dafe6e1e5e1d7405d Author: Caolán McNamara <caol...@redhat.com> Date: Tue Apr 21 14:39:57 2015 +0100 fix indent Change-Id: I2628ac3fbabe9f33c41c7f3612eae608fb854ae3 diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index ea648c8..19ea1e7 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -643,8 +643,7 @@ void SvxStyleBox_Impl::UserDraw( const UserDrawEvent& rUDEvt ) // setup the device & draw vcl::Font aOldFont( pDevice->GetFont() ); - Color aOldColor( pDevice->GetTextColor() ); - Color aOldFillColor( pDevice->GetFillColor() ); + pDevice->Push(PushFlags::FILLCOLOR | PushFlags::FONT | PushFlags::TEXTCOLOR); Color aFontCol = COL_AUTO, aBackCol = COL_AUTO; @@ -682,7 +681,7 @@ void SvxStyleBox_Impl::UserDraw( const UserDrawEvent& rUDEvt ) break; //TODO Draw the other background styles: gradient, hatching and bitmap - } + } // when the font and background color are too similar, adjust the Font-Color if( (aFontCol != COL_AUTO) || (aBackCol != COL_AUTO) ) @@ -741,9 +740,7 @@ void SvxStyleBox_Impl::UserDraw( const UserDrawEvent& rUDEvt ) pDevice->DrawText( aPos, aStyleName ); - pDevice->SetFillColor( aOldFillColor ); - pDevice->SetTextColor( aOldColor ); - pDevice->SetFont( aOldFont ); + pDevice->Pop(); // draw separator, if present DrawEntry( rUDEvt, false, false );
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits