fix for #4990: highgui w32 ogl: correct calculation of image coordinates from window coordinates

pull/13453/head
Christoph Rackwitz 6 years ago committed by Maksim Shabunin
parent 7d69289092
commit deb8ba2237
  1. 30
      modules/highgui/src/window_w32.cpp

@ -66,6 +66,7 @@
#include <functional>
#include "opencv2/highgui.hpp"
#include <GL/gl.h>
#include "opencv2/core/opengl.hpp"
#endif
static const char* trackbar_text =
@ -1489,7 +1490,20 @@ MainWindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
GetClientRect( window->hwnd, &rect );
SIZE size = {0,0};
icvGetBitmapData( window, &size, 0, 0 );
#ifdef HAVE_OPENGL
if (window->useGl)
{
cv::ogl::Texture2D* texObj = static_cast<cv::ogl::Texture2D*>(window->glDrawData);
size.cx = texObj->cols();
size.cy = texObj->rows();
}
else
{
icvGetBitmapData(window, &size, 0, 0);
}
#else
icvGetBitmapData(window, &size, 0, 0);
#endif
window->on_mouse( event, pt.x*size.cx/MAX(rect.right - rect.left,1),
pt.y*size.cy/MAX(rect.bottom - rect.top,1), flags,
@ -1683,7 +1697,21 @@ static LRESULT CALLBACK HighGUIProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
SIZE size = {0, 0};
GetClientRect( window->hwnd, &rect );
#ifdef HAVE_OPENGL
if (window->useGl)
{
cv::ogl::Texture2D* texObj = static_cast<cv::ogl::Texture2D*>(window->glDrawData);
size.cx = texObj->cols();
size.cy = texObj->rows();
}
else
{
icvGetBitmapData(window, &size, 0, 0);
}
#else
icvGetBitmapData( window, &size, 0, 0 );
#endif
window->on_mouse( event, pt.x*size.cx/MAX(rect.right - rect.left,1),
pt.y*size.cy/MAX(rect.bottom - rect.top,1), flags,

Loading…
Cancel
Save