From beba82b22be0ce1205c686602d5f71c4b846f51d Mon Sep 17 00:00:00 2001 From: Christoph Rackwitz Date: Sun, 16 Dec 2018 03:53:42 +0100 Subject: [PATCH] Off-by-ones in windows/GDI window calculations Check for "gutter" around displayed image. there was one row/column missing on the bottom/right. Might as well set gutter = 0? --- modules/highgui/src/window_w32.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/highgui/src/window_w32.cpp b/modules/highgui/src/window_w32.cpp index e7141cb..0277c85 100644 --- a/modules/highgui/src/window_w32.cpp +++ b/modules/highgui/src/window_w32.cpp @@ -1131,20 +1131,20 @@ static void icvUpdateWindowPos( CvWindow* window ) { RECT rmw, rw = icvCalcWindowRect(window ); MoveWindow(window->hwnd, rw.left, rw.top, - rw.right - rw.left + 1, rw.bottom - rw.top + 1, FALSE); + rw.right - rw.left, rw.bottom - rw.top, FALSE); GetClientRect(window->hwnd, &rw); GetWindowRect(window->frame, &rmw); // Resize the mainhWnd window in order to make the bitmap fit into the child window MoveWindow(window->frame, rmw.left, rmw.top, - rmw.right - rmw.left + size.cx - rw.right + rw.left, - rmw.bottom - rmw.top + size.cy - rw.bottom + rw.top, TRUE ); + size.cx + (rmw.right - rmw.left) - (rw.right - rw.left), + size.cy + (rmw.bottom - rmw.top) - (rw.bottom - rw.top), TRUE ); } } rect = icvCalcWindowRect(window); MoveWindow(window->hwnd, rect.left, rect.top, - rect.right - rect.left + 1, - rect.bottom - rect.top + 1, TRUE ); + rect.right - rect.left, + rect.bottom - rect.top, TRUE ); } CV_IMPL void @@ -1331,18 +1331,18 @@ CV_IMPL void cvResizeWindow(const char* name, int width, int height ) { rw = icvCalcWindowRect(window); MoveWindow(window->hwnd, rw.left, rw.top, - rw.right - rw.left + 1, rw.bottom - rw.top + 1, FALSE); + rw.right - rw.left, rw.bottom - rw.top, FALSE); GetClientRect(window->hwnd, &rw); GetWindowRect(window->frame, &rmw); // Resize the mainhWnd window in order to make the bitmap fit into the child window MoveWindow(window->frame, rmw.left, rmw.top, - rmw.right - rmw.left + width - rw.right + rw.left, - rmw.bottom - rmw.top + height - rw.bottom + rw.top, TRUE); + width + (rmw.right - rmw.left) - (rw.right - rw.left), + height + (rmw.bottom - rmw.top) - (rw.bottom - rw.top), TRUE); } rect = icvCalcWindowRect(window); MoveWindow(window->hwnd, rect.left, rect.top, - rect.right - rect.left + 1, rect.bottom - rect.top + 1, TRUE); + rect.right - rect.left, rect.bottom - rect.top, TRUE); __END__; } @@ -1629,8 +1629,8 @@ static LRESULT CALLBACK HighGUIProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM RECT rect = icvCalcWindowRect(window); pos->x = rect.left; pos->y = rect.top; - pos->cx = rect.right - rect.left + 1; - pos->cy = rect.bottom - rect.top + 1; + pos->cx = rect.right - rect.left; + pos->cy = rect.bottom - rect.top; } break; -- 2.7.4