From f31d3faf7a4f578f6c115fbbb0e70f7a6e7a7d63 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 27 May 2012 13:00:09 +0000 Subject: [PATCH] No changes, just refactor wxGrid::DrawAllGridLines(). Extract the actual drawing of the lines into a new DoDrawGridLines() method. This will be used by the upcoming commits for drawing grid lines for a part of the grid only, see #14294. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71575 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/grid.h | 10 ++++++++++ src/generic/grid.cpp | 19 +++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index 4f59d26784..bee18f2a5c 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -2133,6 +2133,16 @@ private: // redraw the grid lines, should be called after changing their attributes void RedrawGridLines(); + // draw all lines from top to bottom row and left to right column in the + // rectangle determined by (top, left)-(bottom, right) -- but notice that + // the caller must have set up the clipping correctly, this rectangle is + // only used here for optimization + void DoDrawGridLines(wxDC& dc, + int top, int left, + int bottom, int right, + int topRow, int leftCol, + int bottomRight, int rightCol); + // common part of Clip{Horz,Vert}GridLines void DoClipGridLines(bool& var, bool clip); diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 494b74f2cc..695499108a 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -5417,9 +5417,22 @@ void wxGrid::DrawAllGridLines( wxDC& dc, const wxRegion & WXUNUSED(reg) ) dc.SetDeviceClippingRegion( clippedcells ); + DoDrawGridLines(dc, + top, left, bottom, right, + topRow, leftCol, m_numRows, m_numCols); + dc.DestroyClippingRegion(); +} + +void +wxGrid::DoDrawGridLines(wxDC& dc, + int top, int left, + int bottom, int right, + int topRow, int leftCol, + int bottomRow, int rightCol) +{ // horizontal grid lines - for ( int i = internalYToRow(top); i < m_numRows; i++ ) + for ( int i = topRow; i < bottomRow; i++ ) { int bot = GetRowBottom(i) - 1; @@ -5434,7 +5447,7 @@ void wxGrid::DrawAllGridLines( wxDC& dc, const wxRegion & WXUNUSED(reg) ) } // vertical grid lines - for ( int colPos = leftCol; colPos < m_numCols; colPos++ ) + for ( int colPos = leftCol; colPos < rightCol; colPos++ ) { int i = GetColAt( colPos ); @@ -5453,8 +5466,6 @@ void wxGrid::DrawAllGridLines( wxDC& dc, const wxRegion & WXUNUSED(reg) ) dc.DrawLine( colRight, top, colRight, bottom ); } } - - dc.DestroyClippingRegion(); } void wxGrid::DrawRowLabels( wxDC& dc, const wxArrayInt& rows) -- 2.45.2