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 <functional>
|
||||||
#include "opencv2/highgui.hpp"
|
#include "opencv2/highgui.hpp"
|
||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
|
#include "opencv2/core/opengl.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char* trackbar_text =
|
static const char* trackbar_text =
|
||||||
@ -1489,7 +1490,20 @@ MainWindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
|
|||||||
GetClientRect( window->hwnd, &rect );
|
GetClientRect( window->hwnd, &rect );
|
||||||
|
|
||||||
SIZE size = {0,0};
|
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),
|
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,
|
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};
|
SIZE size = {0, 0};
|
||||||
|
|
||||||
GetClientRect( window->hwnd, &rect );
|
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 );
|
icvGetBitmapData( window, &size, 0, 0 );
|
||||||
|
#endif
|
||||||
|
|
||||||
window->on_mouse( event, pt.x*size.cx/MAX(rect.right - rect.left,1),
|
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,
|
pt.y*size.cy/MAX(rect.bottom - rect.top,1), flags,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user