fix coordinate problem with large images - bug 1523
This commit is contained in:
parent
5e47aa6300
commit
12207ac763
@ -1436,8 +1436,6 @@ static LRESULT CALLBACK HighGUIProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
|
|||||||
if( window->on_mouse )
|
if( window->on_mouse )
|
||||||
{
|
{
|
||||||
POINT pt;
|
POINT pt;
|
||||||
RECT rect;
|
|
||||||
SIZE size = {0,0};
|
|
||||||
|
|
||||||
int flags = (wParam & MK_LBUTTON ? CV_EVENT_FLAG_LBUTTON : 0)|
|
int flags = (wParam & MK_LBUTTON ? CV_EVENT_FLAG_LBUTTON : 0)|
|
||||||
(wParam & MK_RBUTTON ? CV_EVENT_FLAG_RBUTTON : 0)|
|
(wParam & MK_RBUTTON ? CV_EVENT_FLAG_RBUTTON : 0)|
|
||||||
@ -1463,12 +1461,23 @@ static LRESULT CALLBACK HighGUIProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
|
|||||||
pt.x = GET_X_LPARAM( lParam );
|
pt.x = GET_X_LPARAM( lParam );
|
||||||
pt.y = GET_Y_LPARAM( lParam );
|
pt.y = GET_Y_LPARAM( lParam );
|
||||||
|
|
||||||
GetClientRect( window->hwnd, &rect );
|
if (window->flags & CV_WINDOW_AUTOSIZE)
|
||||||
icvGetBitmapData( window, &size, 0, 0 );
|
{
|
||||||
|
// As user can't change window size, do not scale window coordinates. Underlying windowing system
|
||||||
|
// may prevent full window from being displayed and in this case coordinates should not be scaled.
|
||||||
|
window->on_mouse( event, pt.x, pt.y, flags, window->on_mouse_param );
|
||||||
|
} else {
|
||||||
|
// Full window is displayed using different size. Scale coordinates to match underlying positions.
|
||||||
|
RECT rect;
|
||||||
|
SIZE size = {0, 0};
|
||||||
|
|
||||||
window->on_mouse( event, pt.x*size.cx/MAX(rect.right - rect.left,1),
|
GetClientRect( window->hwnd, &rect );
|
||||||
pt.y*size.cy/MAX(rect.bottom - rect.top,1), flags,
|
icvGetBitmapData( window, &size, 0, 0 );
|
||||||
window->on_mouse_param );
|
|
||||||
|
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,
|
||||||
|
window->on_mouse_param );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user