mirror of
https://github.com/opencv/opencv.git
synced 2025-08-05 22:19:14 +08:00
fix for #4990: highgui w32 ogl: correct calculation of image coordinates from window coordinates
This commit is contained in:
parent
7d69289092
commit
deb8ba2237
@ -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…
Reference in New Issue
Block a user