Kaydet (Commit) 0b00791b authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl

refactor ScZoomSliderControl to use RenderContext

Change-Id: Ie57c22e12b8b6f68a52e857b815765d2d37fc099
üst 848e020f
...@@ -388,102 +388,102 @@ void ScZoomSliderWnd::UpdateFromItem( const SvxZoomSliderItem* pZoomSliderItem ) ...@@ -388,102 +388,102 @@ void ScZoomSliderWnd::UpdateFromItem( const SvxZoomSliderItem* pZoomSliderItem )
Invalidate(aRect); Invalidate(aRect);
} }
void ScZoomSliderWnd::Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangle& rRect ) void ScZoomSliderWnd::Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect)
{ {
DoPaint( rRect ); DoPaint(rRenderContext, rRect);
} }
void ScZoomSliderWnd::DoPaint( const Rectangle& /*rRect*/ ) void ScZoomSliderWnd::DoPaint(vcl::RenderContext& rRenderContext, const Rectangle& /*rRect*/)
{ {
if( mpImpl->mbOmitPaint ) if (mpImpl->mbOmitPaint)
return; return;
Size aSliderWindowSize = GetOutputSizePixel(); Size aSliderWindowSize = rRenderContext.GetOutputSizePixel();
Rectangle aRect( Point( 0, 0 ), aSliderWindowSize ); Rectangle aRect(Point(0, 0), aSliderWindowSize);
ScopedVclPtrInstance< VirtualDevice > pVDev( *this ); ScopedVclPtrInstance< VirtualDevice > pVDev(rRenderContext);
pVDev->SetOutputSizePixel( aSliderWindowSize ); pVDev->SetOutputSizePixel(aSliderWindowSize);
Rectangle aSlider = aRect; Rectangle aSlider = aRect;
aSlider.Top() += ( aSliderWindowSize.Height() - nSliderHeight )/2 - 1; aSlider.Top() += (aSliderWindowSize.Height() - nSliderHeight) / 2 - 1;
aSlider.Bottom() = aSlider.Top() + nSliderHeight; aSlider.Bottom() = aSlider.Top() + nSliderHeight;
aSlider.Left() += nSliderXOffset; aSlider.Left() += nSliderXOffset;
aSlider.Right() -= nSliderXOffset; aSlider.Right() -= nSliderXOffset;
Rectangle aFirstLine( aSlider ); Rectangle aFirstLine(aSlider);
aFirstLine.Bottom() = aFirstLine.Top(); aFirstLine.Bottom() = aFirstLine.Top();
Rectangle aSecondLine( aSlider ); Rectangle aSecondLine(aSlider);
aSecondLine.Top() = aSecondLine.Bottom(); aSecondLine.Top() = aSecondLine.Bottom();
Rectangle aLeft( aSlider ); Rectangle aLeft(aSlider);
aLeft.Right() = aLeft.Left(); aLeft.Right() = aLeft.Left();
Rectangle aRight( aSlider ); Rectangle aRight(aSlider);
aRight.Left() = aRight.Right(); aRight.Left() = aRight.Right();
// draw VirtualDevice's background color // draw VirtualDevice's background color
Color aStartColor,aEndColor; Color aStartColor = rRenderContext.GetSettings().GetStyleSettings().GetFaceColor();
aStartColor = GetSettings().GetStyleSettings().GetFaceColor(); Color aEndColor = rRenderContext.GetSettings().GetStyleSettings().GetFaceColor();
aEndColor = GetSettings().GetStyleSettings().GetFaceColor();
if( aEndColor.IsDark() ) if (aEndColor.IsDark())
aStartColor = aEndColor; aStartColor = aEndColor;
Gradient g; Gradient aGradient;
g.SetAngle( 0 ); aGradient.SetAngle(0);
g.SetStyle( GradientStyle_LINEAR ); aGradient.SetStyle(GradientStyle_LINEAR);
g.SetStartColor( aStartColor ); aGradient.SetStartColor(aStartColor);
g.SetEndColor( aEndColor ); aGradient.SetEndColor(aEndColor);
pVDev->DrawGradient( aRect, g ); pVDev->DrawGradient(aRect, aGradient);
// draw slider // draw slider
pVDev->SetLineColor( Color ( COL_WHITE ) ); pVDev->SetLineColor(Color(COL_WHITE));
pVDev->DrawRect( aSecondLine ); pVDev->DrawRect(aSecondLine);
pVDev->DrawRect( aRight ); pVDev->DrawRect(aRight);
pVDev->SetLineColor( Color( COL_GRAY ) ); pVDev->SetLineColor(Color(COL_GRAY));
pVDev->DrawRect( aFirstLine ); pVDev->DrawRect(aFirstLine);
pVDev->DrawRect( aLeft ); pVDev->DrawRect(aLeft);
// draw snapping points: // draw snapping points:
std::vector< long >::iterator aSnappingPointIter; std::vector<long>::iterator aSnappingPointIter;
for ( aSnappingPointIter = mpImpl->maSnappingPointOffsets.begin(); for (aSnappingPointIter = mpImpl->maSnappingPointOffsets.begin();
aSnappingPointIter != mpImpl->maSnappingPointOffsets.end(); aSnappingPointIter != mpImpl->maSnappingPointOffsets.end();
++aSnappingPointIter ) ++aSnappingPointIter)
{ {
pVDev->SetLineColor( Color( COL_GRAY ) ); pVDev->SetLineColor(Color(COL_GRAY));
Rectangle aSnapping( aRect ); Rectangle aSnapping(aRect);
aSnapping.Bottom() = aSlider.Top(); aSnapping.Bottom() = aSlider.Top();
aSnapping.Top() = aSnapping.Bottom() - nSnappingHeight; aSnapping.Top() = aSnapping.Bottom() - nSnappingHeight;
aSnapping.Left() += *aSnappingPointIter; aSnapping.Left() += *aSnappingPointIter;
aSnapping.Right() = aSnapping.Left(); aSnapping.Right() = aSnapping.Left();
pVDev->DrawRect( aSnapping ); pVDev->DrawRect(aSnapping);
aSnapping.Top() += nSnappingHeight + nSliderHeight; aSnapping.Top() += nSnappingHeight + nSliderHeight;
aSnapping.Bottom() += nSnappingHeight + nSliderHeight; aSnapping.Bottom() += nSnappingHeight + nSliderHeight;
pVDev->DrawRect( aSnapping ); pVDev->DrawRect(aSnapping);
} }
// draw slider button // draw slider button
Point aImagePoint = aRect.TopLeft(); Point aImagePoint = aRect.TopLeft();
aImagePoint.X() += Zoom2Offset( mpImpl->mnCurrentZoom ); aImagePoint.X() += Zoom2Offset(mpImpl->mnCurrentZoom);
aImagePoint.X() -= nButtonWidth/2; aImagePoint.X() -= nButtonWidth / 2;
aImagePoint.Y() += ( aSliderWindowSize.Height() - nButtonHeight)/2; aImagePoint.Y() += (aSliderWindowSize.Height() - nButtonHeight) / 2;
pVDev->DrawImage( aImagePoint, mpImpl->maSliderButton ); pVDev->DrawImage(aImagePoint, mpImpl->maSliderButton);
// draw decrease button // draw decrease button
aImagePoint = aRect.TopLeft(); aImagePoint = aRect.TopLeft();
aImagePoint.X() += (nSliderXOffset - nIncDecWidth)/2; aImagePoint.X() += (nSliderXOffset - nIncDecWidth) / 2;
aImagePoint.Y() += ( aSliderWindowSize.Height() - nIncDecHeight)/2; aImagePoint.Y() += (aSliderWindowSize.Height() - nIncDecHeight) / 2;
pVDev->DrawImage( aImagePoint, mpImpl->maDecreaseButton ); pVDev->DrawImage(aImagePoint, mpImpl->maDecreaseButton);
// draw increase button // draw increase button
aImagePoint.X() = aRect.TopLeft().X() + aSliderWindowSize.Width() - nIncDecWidth - (nSliderXOffset - nIncDecWidth)/2; aImagePoint.X() = aRect.TopLeft().X() + aSliderWindowSize.Width() - nIncDecWidth - (nSliderXOffset - nIncDecWidth) / 2;
pVDev->DrawImage( aImagePoint, mpImpl->maIncreaseButton ); pVDev->DrawImage(aImagePoint, mpImpl->maIncreaseButton);
DrawOutDev( Point(0, 0), aSliderWindowSize, Point(0, 0), aSliderWindowSize, *pVDev ); rRenderContext.DrawOutDev(Point(0, 0), aSliderWindowSize, Point(0, 0), aSliderWindowSize, *pVDev);
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -26,41 +26,41 @@ ...@@ -26,41 +26,41 @@
#include <com/sun/star/frame/XFrame.hpp> #include <com/sun/star/frame/XFrame.hpp>
#include <svx/zoomslideritem.hxx> #include <svx/zoomslideritem.hxx>
class ScZoomSliderControl: public SfxToolBoxControl class ScZoomSliderControl : public SfxToolBoxControl
{ {
public: public:
SFX_DECL_TOOLBOX_CONTROL(); SFX_DECL_TOOLBOX_CONTROL();
ScZoomSliderControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ); ScZoomSliderControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx );
virtual ~ScZoomSliderControl(); virtual ~ScZoomSliderControl();
virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) SAL_OVERRIDE; virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) SAL_OVERRIDE;
virtual VclPtr<vcl::Window> CreateItemWindow( vcl::Window *pParent ) SAL_OVERRIDE; virtual VclPtr<vcl::Window> CreateItemWindow( vcl::Window *pParent ) SAL_OVERRIDE;
}; };
class ScZoomSliderWnd: public vcl::Window class ScZoomSliderWnd: public vcl::Window
{ {
private: private:
struct ScZoomSliderWnd_Impl; struct ScZoomSliderWnd_Impl;
ScZoomSliderWnd_Impl* mpImpl; ScZoomSliderWnd_Impl* mpImpl;
Size aLogicalSize; Size aLogicalSize;
::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > m_xDispatchProvider; css::uno::Reference<css::frame::XDispatchProvider> m_xDispatchProvider;
::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > m_xFrame; css::uno::Reference<css::frame::XFrame> m_xFrame;
sal_uInt16 Offset2Zoom( long nOffset ) const; sal_uInt16 Offset2Zoom(long nOffset) const;
long Zoom2Offset( sal_uInt16 nZoom ) const; long Zoom2Offset(sal_uInt16 nZoom) const;
void DoPaint( const Rectangle& rRect ); void DoPaint(vcl::RenderContext& rRenderContext, const Rectangle& rRect);
public: public:
ScZoomSliderWnd( vcl::Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >& rDispatchProvider, ScZoomSliderWnd(vcl::Window* pParent, const css::uno::Reference<css::frame::XDispatchProvider >& rDispatchProvider,
const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _xFrame , sal_uInt16 nCurrentZoom ); const css::uno::Reference<css::frame::XFrame>& _xFrame, sal_uInt16 nCurrentZoom);
virtual ~ScZoomSliderWnd(); virtual ~ScZoomSliderWnd();
virtual void dispose() SAL_OVERRIDE; virtual void dispose() SAL_OVERRIDE;
void UpdateFromItem( const SvxZoomSliderItem* pZoomSliderItem ); void UpdateFromItem( const SvxZoomSliderItem* pZoomSliderItem );
protected: protected:
virtual void MouseButtonDown( const MouseEvent& rMEvt ) SAL_OVERRIDE; virtual void MouseButtonDown( const MouseEvent& rMEvt ) SAL_OVERRIDE;
virtual void MouseMove( const MouseEvent& rMEvt ) SAL_OVERRIDE; virtual void MouseMove( const MouseEvent& rMEvt ) SAL_OVERRIDE;
virtual void Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangle& rRect ) SAL_OVERRIDE; virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect) SAL_OVERRIDE;
}; };
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment