From 8a6ee4b5c0954fea6b95213ee45de13336fa0caf Mon Sep 17 00:00:00 2001 From: Andrzej Hunt Date: Mon, 11 Aug 2014 09:15:08 +0200 Subject: Use output device scaling to determine cells in draw-area. Change-Id: Idf4e6ccb72090a55b6a9234cafae21821e3df0b0 --- sc/source/ui/view/gridwin4.cxx | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index bc3114c458f1..85b2c6166386 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -321,7 +321,7 @@ void ScGridWindow::Paint( const Rectangle& rRect, OutputDevice* pOutDev ) else { bNeedsRepaint = true; - aRepaintPixel = LogicToPixel(rRect); // nur betroffenen Bereich + aRepaintPixel = rRect; // nur betroffenen Bereich } return; } @@ -335,16 +335,13 @@ void ScGridWindow::Paint( const Rectangle& rRect, OutputDevice* pOutDev ) bIsInPaint = true; - Rectangle aPixRect = pOutDev->LogicToPixel( rRect ); + Rectangle aPixRect = LogicToPixel( rRect, maPaintMapMode ); SCCOL nX1 = pViewData->GetPosX(eHWhich); SCROW nY1 = pViewData->GetPosY(eVWhich); SCTAB nTab = pViewData->GetTabNo(); - double nPPTX = pViewData->GetPPTX(); - double nPPTY = pViewData->GetPPTY(); - Rectangle aMirroredPixel = aPixRect; if ( pDoc->IsLayoutRTL( nTab ) ) { @@ -354,26 +351,30 @@ void ScGridWindow::Paint( const Rectangle& rRect, OutputDevice* pOutDev ) aMirroredPixel.Right() = nWidth - 1 - aPixRect.Left(); } - long nScrX = ScViewData::ToPixel( pDoc->GetColWidth( nX1, nTab ), nPPTX ); + long nScrX = LogicToPixel( Point( pDoc->GetColWidth( nX1, nTab ), 0 ), maPaintMapMode ).getX();/*ScViewData::ToPixel( pDoc->GetColWidth( nX1, nTab ), nPPTX );*/ while ( nScrX <= aMirroredPixel.Left() && nX1 < MAXCOL ) { ++nX1; - nScrX += ScViewData::ToPixel( pDoc->GetColWidth( nX1, nTab ), nPPTX ); + nScrX += LogicToPixel( Point( pDoc->GetColWidth( nX1, nTab ), 0 ), maPaintMapMode ).getX(); } SCCOL nX2 = nX1; while ( nScrX <= aMirroredPixel.Right() && nX2 < MAXCOL ) { ++nX2; - nScrX += ScViewData::ToPixel( pDoc->GetColWidth( nX2, nTab ), nPPTX ); + nScrX += LogicToPixel( Point( pDoc->GetColWidth( nX2, nTab ), 0 ), maPaintMapMode ).getX(); } long nScrY = 0; - ScViewData::AddPixelsWhile( nScrY, aPixRect.Top(), nY1, MAXROW, nPPTY, pDoc, nTab); + while ( nScrY < aPixRect.Top() && nY1 < MAXROW ) + { + ++nY1; + nScrY += LogicToPixel( Point( 0, pDoc->GetRowHeight( nY1, nTab ) ), maPaintMapMode ).getY(); + } SCROW nY2 = nY1; - if (nScrY <= aPixRect.Bottom() && nY2 < MAXROW) + while ( nScrY <= aPixRect.Bottom() && nY2 < MAXROW ) { ++nY2; - ScViewData::AddPixelsWhile( nScrY, aPixRect.Bottom(), nY2, MAXROW, nPPTY, pDoc, nTab); + nScrY += LogicToPixel( Point( 0, pDoc->GetRowHeight( nY2, nTab ) ), maPaintMapMode ).getY(); } Draw( nX1,nY1,nX2,nY2, SC_UPDATE_MARKS, pOutDev ); // nicht weiterzeichnen -- cgit v1.2.3