summaryrefslogtreecommitdiff
path: root/svx/source/dialog/dialcontrol.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/dialog/dialcontrol.cxx')
-rw-r--r--svx/source/dialog/dialcontrol.cxx87
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;
}