summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--svx/inc/svx/dialcontrol.hxx3
-rw-r--r--svx/source/dialog/dialcontrol.cxx53
2 files changed, 42 insertions, 14 deletions
diff --git a/svx/inc/svx/dialcontrol.hxx b/svx/inc/svx/dialcontrol.hxx
index 578695dce8df..26aa0738fad9 100644
--- a/svx/inc/svx/dialcontrol.hxx
+++ b/svx/inc/svx/dialcontrol.hxx
@@ -66,6 +66,9 @@ public:
virtual void KeyInput( const KeyEvent& rKEvt );
virtual void LoseFocus();
+ virtual Size GetOptimalSize() const;
+ virtual void Resize();
+
/** Returns true, if the control is not in "don't care" state. */
bool HasRotation() const;
/** Sets the control to "don't care" state. */
diff --git a/svx/source/dialog/dialcontrol.cxx b/svx/source/dialog/dialcontrol.cxx
index a5a1eac5011f..f96271fd8745 100644
--- a/svx/source/dialog/dialcontrol.cxx
+++ b/svx/source/dialog/dialcontrol.cxx
@@ -40,7 +40,8 @@ class DialControlBmp : public VirtualDevice
public:
explicit DialControlBmp( Window& rParent );
- void InitBitmap( const Size& rSize, const Font& rFont );
+ void InitBitmap(const Font& rFont);
+ void SetSize(const Size& rSize);
void CopyBackground( const DialControlBmp& rSrc );
void DrawBackground( const Size& rSize, bool bEnabled );
void DrawElements( const String& rText, sal_Int32 nAngle );
@@ -52,7 +53,7 @@ private:
const Color& GetButtonLineColor() const;
const Color& GetButtonFillColor( bool bMain ) const;
- void Init( const Size& rSize );
+ void Init();
void DrawBackground();
Window& mrParent;
@@ -74,15 +75,16 @@ DialControlBmp::DialControlBmp( Window& rParent ) :
EnableRTL( sal_False );
}
-void DialControlBmp::InitBitmap( const Size& rSize, const Font& rFont )
+void DialControlBmp::InitBitmap(const Font& rFont)
{
- Init( rSize );
- SetFont( rFont );
+ Init();
+ SetFont(rFont);
}
void DialControlBmp::CopyBackground( const DialControlBmp& rSrc )
{
- Init( rSrc.maRect.GetSize() );
+ Init();
+ SetSize(rSrc.maRect.GetSize());
mbEnabled = rSrc.mbEnabled;
Point aPos;
DrawBitmapEx( aPos, rSrc.GetBitmapEx( aPos, maRect.GetSize() ) );
@@ -90,7 +92,8 @@ void DialControlBmp::CopyBackground( const DialControlBmp& rSrc )
void DialControlBmp::DrawBackground( const Size& rSize, bool bEnabled )
{
- Init( rSize );
+ Init();
+ SetSize(rSize);
mbEnabled = bEnabled;
DrawBackground();
}
@@ -157,15 +160,19 @@ const Color& DialControlBmp::GetButtonFillColor( bool bMain ) const
return mbEnabled ? (bMain ? rSett.GetMenuColor() : rSett.GetHighlightColor()) : rSett.GetDisableColor();
}
-void DialControlBmp::Init( const Size& rSize )
+void DialControlBmp::Init()
+{
+ SetSettings(mrParent.GetSettings());
+ SetBackground();
+}
+
+void DialControlBmp::SetSize( const Size& rSize )
{
- SetSettings( mrParent.GetSettings() );
maRect.SetPos( Point( 0, 0 ) );
maRect.SetSize( rSize );
mnCenterX = rSize.Width() / 2;
mnCenterY = rSize.Height() / 2;
SetOutputSize( rSize );
- SetBackground();
}
void DialControlBmp::DrawBackground()
@@ -249,6 +256,7 @@ struct DialControl_Impl
explicit DialControl_Impl( Window& rParent );
void Init( const Size& rWinSize, const Font& rWinFont );
+ void SetSize( const Size& rWinSize );
};
// ----------------------------------------------------------------------------
@@ -268,17 +276,23 @@ DialControl_Impl::DialControl_Impl( Window& rParent ) :
void DialControl_Impl::Init( const Size& rWinSize, const Font& rWinFont )
{
+ maWinFont = rWinFont;
+ maWinFont.SetTransparent(true);
+ maBmpBuffered.InitBitmap(maWinFont);
+ SetSize(rWinSize);
+}
+
+void DialControl_Impl::SetSize( const Size& rWinSize )
+{
// "(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 );
- maWinFont = rWinFont;
mnCenterX = maWinSize.Width() / 2;
mnCenterY = maWinSize.Height() / 2;
- maWinFont.SetTransparent( sal_True );
maBmpEnabled.DrawBackground( maWinSize, true );
maBmpDisabled.DrawBackground( maWinSize, false );
- maBmpBuffered.InitBitmap( maWinSize, maWinFont );
+ maBmpBuffered.SetSize( maWinSize );
}
// ============================================================================
@@ -303,7 +317,13 @@ DialControl::~DialControl()
extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeDialControl(Window *pParent, VclBuilder::stringmap &)
{
- return new DialControl(pParent, WB_BORDER | WB_TABSTOP);
+ return new DialControl(pParent, WB_TABSTOP);
+}
+
+void DialControl::Resize()
+{
+ mpImpl->SetSize(GetOutputSizePixel());
+ InvalidateControl();
}
void DialControl::Paint( const Rectangle& )
@@ -408,6 +428,11 @@ sal_Int32 DialControl::GetRotation() const
return mpImpl->mnAngle;
}
+Size DialControl::GetOptimalSize() const
+{
+ return LogicToPixel(Size(42 , 43), MAP_APPFONT);
+}
+
void DialControl::SetRotation( sal_Int32 nAngle )
{
ImplSetRotation( nAngle, false );