diff options
Diffstat (limited to 'sc/source/ui/dbgui/csvruler.cxx')
-rw-r--r-- | sc/source/ui/dbgui/csvruler.cxx | 60 |
1 files changed, 33 insertions, 27 deletions
diff --git a/sc/source/ui/dbgui/csvruler.cxx b/sc/source/ui/dbgui/csvruler.cxx index 71a1ce4f4c84..4057831ea94b 100644 --- a/sc/source/ui/dbgui/csvruler.cxx +++ b/sc/source/ui/dbgui/csvruler.cxx @@ -93,15 +93,21 @@ ScCsvRuler::ScCsvRuler( ScCsvControl& rParent ) : EnableRTL( false ); // RTL InitColors(); InitSizeData(); - maBackgrDev.SetFont( GetFont() ); - maRulerDev.SetFont( GetFont() ); + maBackgrDev->SetFont( GetFont() ); + maRulerDev->SetFont( GetFont() ); load_FixedWidthList( maSplits ); } ScCsvRuler::~ScCsvRuler() { + disposeOnce(); +} + +void ScCsvRuler::dispose() +{ save_FixedWidthList( maSplits ); + ScCsvControl::dispose(); } // common ruler handling ------------------------------------------------------ @@ -159,8 +165,8 @@ void ScCsvRuler::InitSizeData() maActiveRect.SetPos( Point( GetFirstX(), (GetHeight() - nActiveHeight - 1) / 2 ) ); maActiveRect.SetSize( Size( nActiveWidth, nActiveHeight ) ); - maBackgrDev.SetOutputSizePixel( maWinSize ); - maRulerDev.SetOutputSizePixel( maWinSize ); + maBackgrDev->SetOutputSizePixel( maWinSize ); + maRulerDev->SetOutputSizePixel( maWinSize ); InvalidateGfx(); } @@ -527,30 +533,30 @@ void ScCsvRuler::ImplRedraw() ImplDrawBackgrDev(); ImplDrawRulerDev(); } - DrawOutDev( Point(), maWinSize, Point(), maWinSize, maRulerDev ); + DrawOutDev( Point(), maWinSize, Point(), maWinSize, *maRulerDev.get() ); ImplDrawTrackingRect(); } } void ScCsvRuler::ImplDrawArea( sal_Int32 nPosX, sal_Int32 nWidth ) { - maBackgrDev.SetLineColor(); + maBackgrDev->SetLineColor(); Rectangle aRect( Point( nPosX, 0 ), Size( nWidth, GetHeight() ) ); - maBackgrDev.SetFillColor( maBackColor ); - maBackgrDev.DrawRect( aRect ); + maBackgrDev->SetFillColor( maBackColor ); + maBackgrDev->DrawRect( aRect ); aRect = maActiveRect; aRect.Left() = std::max( GetFirstX(), nPosX ); aRect.Right() = std::min( std::min( GetX( GetPosCount() ), GetLastX() ), nPosX + nWidth - sal_Int32( 1 ) ); if( aRect.Left() <= aRect.Right() ) { - maBackgrDev.SetFillColor( maActiveColor ); - maBackgrDev.DrawRect( aRect ); + maBackgrDev->SetFillColor( maActiveColor ); + maBackgrDev->DrawRect( aRect ); } - maBackgrDev.SetLineColor( maTextColor ); + maBackgrDev->SetLineColor( maTextColor ); sal_Int32 nY = GetHeight() - 1; - maBackgrDev.DrawLine( Point( nPosX, nY ), Point( nPosX + nWidth - 1, nY ) ); + maBackgrDev->DrawLine( Point( nPosX, nY ), Point( nPosX + nWidth - 1, nY ) ); } void ScCsvRuler::ImplDrawBackgrDev() @@ -558,8 +564,8 @@ void ScCsvRuler::ImplDrawBackgrDev() ImplDrawArea( 0, GetWidth() ); // scale - maBackgrDev.SetLineColor( maTextColor ); - maBackgrDev.SetFillColor(); + maBackgrDev->SetLineColor( maTextColor ); + maBackgrDev->SetFillColor(); sal_Int32 nPos; sal_Int32 nFirstPos = std::max( GetPosFromX( 0 ) - (sal_Int32)(1L), (sal_Int32)(0L) ); @@ -569,21 +575,21 @@ void ScCsvRuler::ImplDrawBackgrDev() { sal_Int32 nX = GetX( nPos ); if( nPos % 5 ) - maBackgrDev.DrawPixel( Point( nX, nY ) ); + maBackgrDev->DrawPixel( Point( nX, nY ) ); else - maBackgrDev.DrawLine( Point( nX, nY - 1 ), Point( nX, nY + 1 ) ); + maBackgrDev->DrawLine( Point( nX, nY - 1 ), Point( nX, nY + 1 ) ); } // texts - maBackgrDev.SetTextColor( maTextColor ); - maBackgrDev.SetTextFillColor(); + maBackgrDev->SetTextColor( maTextColor ); + maBackgrDev->SetTextFillColor(); for( nPos = ((nFirstPos + 9) / 10) * 10; nPos <= nLastPos; nPos += 10 ) { OUString aText( OUString::number( nPos ) ); - sal_Int32 nTextWidth = maBackgrDev.GetTextWidth( aText ); + sal_Int32 nTextWidth = maBackgrDev->GetTextWidth( aText ); sal_Int32 nTextX = GetX( nPos ) - nTextWidth / 2; ImplDrawArea( nTextX - 1, nTextWidth + 2 ); - maBackgrDev.DrawText( Point( nTextX, maActiveRect.Top() ), aText ); + maBackgrDev->DrawText( Point( nTextX, maActiveRect.Top() ), aText ); } } @@ -593,10 +599,10 @@ void ScCsvRuler::ImplDrawSplit( sal_Int32 nPos ) { Point aPos( GetX( nPos ) - mnSplitSize / 2, GetHeight() - mnSplitSize - 2 ); Size aSize( mnSplitSize, mnSplitSize ); - maRulerDev.SetLineColor( maTextColor ); - maRulerDev.SetFillColor( maSplitColor ); - maRulerDev.DrawEllipse( Rectangle( aPos, aSize ) ); - maRulerDev.DrawPixel( Point( GetX( nPos ), GetHeight() - 2 ) ); + maRulerDev->SetLineColor( maTextColor ); + maRulerDev->SetFillColor( maSplitColor ); + maRulerDev->DrawEllipse( Rectangle( aPos, aSize ) ); + maRulerDev->DrawPixel( Point( GetX( nPos ), GetHeight() - 2 ) ); } } @@ -607,14 +613,14 @@ void ScCsvRuler::ImplEraseSplit( sal_Int32 nPos ) ImplInvertCursor( GetRulerCursorPos() ); Point aPos( GetX( nPos ) - mnSplitSize / 2, 0 ); Size aSize( mnSplitSize, GetHeight() ); - maRulerDev.DrawOutDev( aPos, aSize, aPos, aSize, maBackgrDev ); + maRulerDev->DrawOutDev( aPos, aSize, aPos, aSize, *maBackgrDev.get() ); ImplInvertCursor( GetRulerCursorPos() ); } } void ScCsvRuler::ImplDrawRulerDev() { - maRulerDev.DrawOutDev( Point(), maWinSize, Point(), maWinSize, maBackgrDev ); + maRulerDev->DrawOutDev( Point(), maWinSize, Point(), maWinSize, *maBackgrDev.get() ); ImplInvertCursor( GetRulerCursorPos() ); sal_uInt32 nFirst = maSplits.LowerBound( GetFirstVisPos() ); @@ -628,7 +634,7 @@ void ScCsvRuler::ImplInvertCursor( sal_Int32 nPos ) { if( IsVisibleSplitPos( nPos ) ) { - ImplInvertRect( maRulerDev, Rectangle( Point( GetX( nPos ) - 1, 0 ), Size( 3, GetHeight() - 1 ) ) ); + ImplInvertRect( *maRulerDev.get(), Rectangle( Point( GetX( nPos ) - 1, 0 ), Size( 3, GetHeight() - 1 ) ) ); if( HasSplit( nPos ) ) ImplDrawSplit( nPos ); } |