diff options
Diffstat (limited to 'svx/source/dialog/dialcontrol.cxx')
-rw-r--r-- | svx/source/dialog/dialcontrol.cxx | 87 |
1 files changed, 23 insertions, 64 deletions
diff --git a/svx/source/dialog/dialcontrol.cxx b/svx/source/dialog/dialcontrol.cxx index 0f88b1c1c201..782ddef27dc2 100644 --- a/svx/source/dialog/dialcontrol.cxx +++ b/svx/source/dialog/dialcontrol.cxx @@ -24,7 +24,9 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_svx.hxx" #include "svx/dialcontrol.hxx" - +#include "bmpmask.hrc" +#include <svx/dialmgr.hxx> +#include <tools/rcid.h> #include <math.h> #include <vcl/virdev.hxx> #include <vcl/svapp.hxx> @@ -40,39 +42,13 @@ const long DIAL_OUTER_WIDTH = 8; // ============================================================================ -class DialControlBmp : public VirtualDevice -{ -public: - explicit DialControlBmp( Window& rParent ); - - void InitBitmap( const Size& rSize, const Font& rFont ); - void CopyBackground( const DialControlBmp& rSrc ); - void DrawBackground( const Size& rSize, bool bEnabled ); - void DrawElements( const String& rText, sal_Int32 nAngle ); - -private: - const Color& GetBackgroundColor() const; - const Color& GetTextColor() const; - const Color& GetScaleLineColor() const; - const Color& GetButtonLineColor() const; - const Color& GetButtonFillColor( bool bMain ) const; - - void Init( const Size& rSize ); - void DrawBackground(); - - Window& mrParent; - Rectangle maRect; - long mnCenterX; - long mnCenterY; - bool mbEnabled; -}; // ---------------------------------------------------------------------------- DialControlBmp::DialControlBmp( Window& rParent ) : VirtualDevice( rParent, 0, 0 ), - mrParent( rParent ), - mbEnabled( true ) + mbEnabled( true ), + mrParent( rParent ) { EnableRTL( sal_False ); } @@ -232,40 +208,23 @@ void DialControlBmp::DrawBackground() maRect.Right() - DIAL_OUTER_WIDTH, maRect.Bottom() - DIAL_OUTER_WIDTH ) ); } -// ============================================================================ -struct DialControl_Impl -{ - DialControlBmp maBmpEnabled; - DialControlBmp maBmpDisabled; - DialControlBmp maBmpBuffered; - Link maModifyHdl; - NumericField* mpLinkField; - Size maWinSize; - Font maWinFont; - sal_Int32 mnAngle; - sal_Int32 mnOldAngle; - long mnCenterX; - long mnCenterY; - bool mbNoRot; - - explicit DialControl_Impl( Window& rParent ); - void Init( const Size& rWinSize, const Font& rWinFont ); -}; + // ---------------------------------------------------------------------------- -DialControl_Impl::DialControl_Impl( Window& rParent ) : - maBmpEnabled( rParent ), - maBmpDisabled( rParent ), - maBmpBuffered( rParent ), +DialControl::DialControl_Impl::DialControl_Impl ( + Window& rParent ) : + mpBmpEnabled(new DialControlBmp(rParent)), + mpBmpDisabled(new DialControlBmp(rParent)), + mpBmpBuffered(new DialControlBmp(rParent)), mpLinkField( 0 ), mnAngle( 0 ), mbNoRot( false ) { } -void DialControl_Impl::Init( const Size& rWinSize, const Font& rWinFont ) +void DialControl::DialControl_Impl::Init( const Size& rWinSize, const Font& rWinFont ) { // "(x - 1) | 1" creates odd value <= x, to have a well-defined center pixel position maWinSize = Size( (rWinSize.Width() - 1) | 1, (rWinSize.Height() - 1) | 1 ); @@ -275,9 +234,9 @@ void DialControl_Impl::Init( const Size& rWinSize, const Font& rWinFont ) mnCenterY = maWinSize.Height() / 2; maWinFont.SetTransparent( sal_True ); - maBmpEnabled.DrawBackground( maWinSize, true ); - maBmpDisabled.DrawBackground( maWinSize, false ); - maBmpBuffered.InitBitmap( maWinSize, maWinFont ); + mpBmpEnabled->DrawBackground( maWinSize, true ); + mpBmpDisabled->DrawBackground( maWinSize, false ); + mpBmpBuffered->InitBitmap( maWinSize, maWinFont ); } // ============================================================================ @@ -313,7 +272,7 @@ DialControl::~DialControl() void DialControl::Paint( const Rectangle& ) { Point aPos; - DrawBitmapEx( aPos, mpImpl->maBmpBuffered.GetBitmapEx( aPos, mpImpl->maWinSize ) ); + DrawBitmapEx( aPos, mpImpl->mpBmpBuffered->GetBitmapEx( aPos, mpImpl->maWinSize ) ); } void DialControl::StateChanged( StateChangedType nStateChange ) @@ -414,7 +373,7 @@ sal_Int32 DialControl::GetRotation() const void DialControl::SetRotation( sal_Int32 nAngle ) { - ImplSetRotation( nAngle, false ); + SetRotation( nAngle, false ); } void DialControl::SetLinkedField( NumericField* pField ) @@ -461,13 +420,13 @@ void DialControl::Init( const Size& rWinSize ) void DialControl::InvalidateControl() { - mpImpl->maBmpBuffered.CopyBackground( IsEnabled() ? mpImpl->maBmpEnabled : mpImpl->maBmpDisabled ); + mpImpl->mpBmpBuffered->CopyBackground( IsEnabled() ? *mpImpl->mpBmpEnabled : *mpImpl->mpBmpDisabled ); if( !mpImpl->mbNoRot ) - mpImpl->maBmpBuffered.DrawElements( GetText(), mpImpl->mnAngle ); + mpImpl->mpBmpBuffered->DrawElements( GetText(), mpImpl->mnAngle ); Invalidate(); } -void DialControl::ImplSetRotation( sal_Int32 nAngle, bool bBroadcast ) +void DialControl::SetRotation( sal_Int32 nAngle, bool bBroadcast ) { bool bOldSel = mpImpl->mbNoRot; mpImpl->mbNoRot = false; @@ -512,7 +471,7 @@ void DialControl::HandleMouseEvent( const Point& rPos, bool bInitial ) nAngle = 36000 - nAngle; if( bInitial ) // round to entire 15 degrees nAngle = ((nAngle + 750) / 1500) * 1500; - ImplSetRotation( nAngle, true ); + SetRotation( nAngle, true ); } } @@ -521,7 +480,7 @@ void DialControl::HandleEscapeEvent() if( IsMouseCaptured() ) { ReleaseMouse(); - ImplSetRotation( mpImpl->mnOldAngle, true ); + SetRotation( mpImpl->mnOldAngle, true ); if( mpImpl->mpLinkField ) mpImpl->mpLinkField->GrabFocus(); } @@ -530,7 +489,7 @@ void DialControl::HandleEscapeEvent() IMPL_LINK( DialControl, LinkedFieldModifyHdl, NumericField*, pField ) { if( pField ) - ImplSetRotation( static_cast< sal_Int32 >( pField->GetValue() * 100 ), false ); + SetRotation( static_cast< sal_Int32 >( pField->GetValue() * 100 ), false ); return 0; } |