highgui: Support to change trackbar count in setTrackbarPos and replaced deprecated CreateToolbarEx in Windows.
This commit is contained in:
parent
893deb4040
commit
006384edaf
@ -463,6 +463,21 @@ panel.
|
|||||||
*/
|
*/
|
||||||
CV_EXPORTS_W void setTrackbarPos(const String& trackbarname, const String& winname, int pos);
|
CV_EXPORTS_W void setTrackbarPos(const String& trackbarname, const String& winname, int pos);
|
||||||
|
|
||||||
|
/** @brief Sets the trackbar maximum position.
|
||||||
|
|
||||||
|
@param trackbarname Name of the trackbar.
|
||||||
|
@param winname Name of the window that is the parent of trackbar.
|
||||||
|
@param maxval New maximum position.
|
||||||
|
|
||||||
|
The function sets the maximum position of the specified trackbar in the specified window.
|
||||||
|
|
||||||
|
@note
|
||||||
|
|
||||||
|
**[Qt Backend Only]** winname can be empty (or NULL) if the trackbar is attached to the control
|
||||||
|
panel.
|
||||||
|
*/
|
||||||
|
CV_EXPORTS_W void setTrackbarMax(const String& trackbarname, const String& winname, int maxval);
|
||||||
|
|
||||||
//! @addtogroup highgui_opengl OpenGL support
|
//! @addtogroup highgui_opengl OpenGL support
|
||||||
//! @{
|
//! @{
|
||||||
|
|
||||||
|
@ -165,6 +165,7 @@ CVAPI(int) cvCreateTrackbar2( const char* trackbar_name, const char* window_name
|
|||||||
/* retrieve or set trackbar position */
|
/* retrieve or set trackbar position */
|
||||||
CVAPI(int) cvGetTrackbarPos( const char* trackbar_name, const char* window_name );
|
CVAPI(int) cvGetTrackbarPos( const char* trackbar_name, const char* window_name );
|
||||||
CVAPI(void) cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos );
|
CVAPI(void) cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos );
|
||||||
|
CVAPI(void) cvSetTrackbarMax(const char* trackbar_name, const char* window_name, int maxval);
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
@ -206,6 +206,11 @@ void cv::setTrackbarPos( const String& trackbarName, const String& winName, int
|
|||||||
cvSetTrackbarPos(trackbarName.c_str(), winName.c_str(), value );
|
cvSetTrackbarPos(trackbarName.c_str(), winName.c_str(), value );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cv::setTrackbarMax(const String& trackbarName, const String& winName, int maxval)
|
||||||
|
{
|
||||||
|
cvSetTrackbarMax(trackbarName.c_str(), winName.c_str(), maxval);
|
||||||
|
}
|
||||||
|
|
||||||
int cv::getTrackbarPos( const String& trackbarName, const String& winName )
|
int cv::getTrackbarPos( const String& trackbarName, const String& winName )
|
||||||
{
|
{
|
||||||
return cvGetTrackbarPos(trackbarName.c_str(), winName.c_str());
|
return cvGetTrackbarPos(trackbarName.c_str(), winName.c_str());
|
||||||
@ -573,6 +578,11 @@ CV_IMPL void cvSetTrackbarPos( const char*, const char*, int )
|
|||||||
CV_NO_GUI_ERROR( "cvSetTrackbarPos" );
|
CV_NO_GUI_ERROR( "cvSetTrackbarPos" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CV_IMPL void cvSetTrackbarMax(const char*, const char*, int)
|
||||||
|
{
|
||||||
|
CV_NO_GUI_ERROR( "cvSetTrackbarMax" );
|
||||||
|
}
|
||||||
|
|
||||||
CV_IMPL void* cvGetWindowHandle( const char* )
|
CV_IMPL void* cvGetWindowHandle( const char* )
|
||||||
{
|
{
|
||||||
CV_NO_GUI_ERROR( "cvGetWindowHandle" );
|
CV_NO_GUI_ERROR( "cvGetWindowHandle" );
|
||||||
|
@ -654,6 +654,19 @@ CV_IMPL void cvSetTrackbarPos(const char* name_bar, const char* window_name, int
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CV_IMPL void cvSetTrackbarMax(const char* name_bar, const char* window_name, int maxval)
|
||||||
|
{
|
||||||
|
if (maxval >= 0)
|
||||||
|
{
|
||||||
|
QPointer<CvTrackbar> t = icvFindTrackBarByName(name_bar, window_name);
|
||||||
|
if (t)
|
||||||
|
{
|
||||||
|
t->slider->setMaximum(maxval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* assign callback for mouse events */
|
/* assign callback for mouse events */
|
||||||
CV_IMPL void cvSetMouseCallback(const char* window_name, CvMouseCallback on_mouse, void* param)
|
CV_IMPL void cvSetMouseCallback(const char* window_name, CvMouseCallback on_mouse, void* param)
|
||||||
{
|
{
|
||||||
|
@ -61,6 +61,7 @@ CV_IMPL int cvCreateTrackbar2(const char* trackbar_name,const char* window_name,
|
|||||||
CV_IMPL void cvSetMouseCallback( const char* name, CvMouseCallback function, void* info) {}
|
CV_IMPL void cvSetMouseCallback( const char* name, CvMouseCallback function, void* info) {}
|
||||||
CV_IMPL int cvGetTrackbarPos( const char* trackbar_name, const char* window_name ) {return 0;}
|
CV_IMPL int cvGetTrackbarPos( const char* trackbar_name, const char* window_name ) {return 0;}
|
||||||
CV_IMPL void cvSetTrackbarPos(const char* trackbar_name, const char* window_name, int pos) {}
|
CV_IMPL void cvSetTrackbarPos(const char* trackbar_name, const char* window_name, int pos) {}
|
||||||
|
CV_IMPL void cvSetTrackbarMax(const char* trackbar_name, const char* window_name, int maxval) {}
|
||||||
CV_IMPL void* cvGetWindowHandle( const char* name ) {return NULL;}
|
CV_IMPL void* cvGetWindowHandle( const char* name ) {return NULL;}
|
||||||
CV_IMPL const char* cvGetWindowName( void* window_handle ) {return NULL;}
|
CV_IMPL const char* cvGetWindowName( void* window_handle ) {return NULL;}
|
||||||
CV_IMPL int cvNamedWindow( const char* name, int flags ) {return 0; }
|
CV_IMPL int cvNamedWindow( const char* name, int flags ) {return 0; }
|
||||||
@ -421,6 +422,36 @@ CV_IMPL void cvSetTrackbarPos(const char* trackbar_name, const char* window_name
|
|||||||
__END__;
|
__END__;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CV_IMPL void cvSetTrackbarMax(const char* trackbar_name, const char* window_name, int maxval)
|
||||||
|
{
|
||||||
|
CV_FUNCNAME("cvSetTrackbarPos");
|
||||||
|
|
||||||
|
CVWindow *window = nil;
|
||||||
|
CVSlider *slider = nil;
|
||||||
|
NSAutoreleasePool* localpool5 = nil;
|
||||||
|
|
||||||
|
__BEGIN__;
|
||||||
|
//cout << "cvSetTrackbarPos" << endl;
|
||||||
|
if(trackbar_name == NULL || window_name == NULL)
|
||||||
|
CV_ERROR( CV_StsNullPtr, "NULL trackbar or window name" );
|
||||||
|
|
||||||
|
if (localpool5 != nil) [localpool5 drain];
|
||||||
|
localpool5 = [[NSAutoreleasePool alloc] init];
|
||||||
|
|
||||||
|
window = cvGetWindow(window_name);
|
||||||
|
if(window) {
|
||||||
|
slider = [[window sliders] valueForKey:[NSString stringWithFormat:@"%s", trackbar_name]];
|
||||||
|
if(slider) {
|
||||||
|
if(maxval >= 0) {
|
||||||
|
[[slider slider] setMaxValue:maxval];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[localpool5 drain];
|
||||||
|
|
||||||
|
__END__;
|
||||||
|
}
|
||||||
|
|
||||||
CV_IMPL void* cvGetWindowHandle( const char* name )
|
CV_IMPL void* cvGetWindowHandle( const char* name )
|
||||||
{
|
{
|
||||||
//cout << "cvGetWindowHandle" << endl;
|
//cout << "cvGetWindowHandle" << endl;
|
||||||
|
@ -1584,6 +1584,43 @@ CV_IMPL void cvSetTrackbarPos( const char* trackbar_name, const char* window_nam
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CV_IMPL void cvSetTrackbarMax(const char* trackbar_name, const char* window_name, int maxval)
|
||||||
|
{
|
||||||
|
CV_FUNCNAME("cvSetTrackbarMax");
|
||||||
|
|
||||||
|
__BEGIN__;
|
||||||
|
|
||||||
|
if (maxval >= 0)
|
||||||
|
{
|
||||||
|
CvWindow* window = 0;
|
||||||
|
CvTrackbar* trackbar = 0;
|
||||||
|
|
||||||
|
if (trackbar_name == 0 || window_name == 0)
|
||||||
|
{
|
||||||
|
CV_ERROR( CV_StsNullPtr, "NULL trackbar or window name");
|
||||||
|
}
|
||||||
|
|
||||||
|
window = icvFindWindowByName( window_name );
|
||||||
|
if (window)
|
||||||
|
{
|
||||||
|
trackbar = icvFindTrackbarByName(window, trackbar_name);
|
||||||
|
if (trackbar)
|
||||||
|
{
|
||||||
|
trackbar->maxval = maxval;
|
||||||
|
|
||||||
|
CV_LOCK_MUTEX();
|
||||||
|
|
||||||
|
gtk_range_set_range(GTK_RANGE(trackbar->widget), 0, trackbar->maxval);
|
||||||
|
|
||||||
|
CV_UNLOCK_MUTEX();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
__END__;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
CV_IMPL void* cvGetWindowHandle( const char* window_name )
|
CV_IMPL void* cvGetWindowHandle( const char* window_name )
|
||||||
{
|
{
|
||||||
void* widget = 0;
|
void* widget = 0;
|
||||||
|
@ -1982,22 +1982,6 @@ icvFindTrackbarByName( const CvWindow* window, const char* name )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
UINT cbSize;
|
|
||||||
DWORD dwMask;
|
|
||||||
int idCommand;
|
|
||||||
int iImage;
|
|
||||||
BYTE fsState;
|
|
||||||
BYTE fsStyle;
|
|
||||||
WORD cx;
|
|
||||||
DWORD lParam;
|
|
||||||
LPSTR pszText;
|
|
||||||
int cchText;
|
|
||||||
}
|
|
||||||
ButtonInfo;
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
icvCreateTrackbar( const char* trackbar_name, const char* window_name,
|
icvCreateTrackbar( const char* trackbar_name, const char* window_name,
|
||||||
int* val, int count, CvTrackbarCallback on_notify,
|
int* val, int count, CvTrackbarCallback on_notify,
|
||||||
@ -2017,7 +2001,7 @@ icvCreateTrackbar( const char* trackbar_name, const char* window_name,
|
|||||||
if( !window_name || !trackbar_name )
|
if( !window_name || !trackbar_name )
|
||||||
CV_ERROR( CV_StsNullPtr, "NULL window or trackbar name" );
|
CV_ERROR( CV_StsNullPtr, "NULL window or trackbar name" );
|
||||||
|
|
||||||
if( count <= 0 )
|
if( count < 0 )
|
||||||
CV_ERROR( CV_StsOutOfRange, "Bad trackbar maximal value" );
|
CV_ERROR( CV_StsOutOfRange, "Bad trackbar maximal value" );
|
||||||
|
|
||||||
window = icvFindWindowByName(window_name);
|
window = icvFindWindowByName(window_name);
|
||||||
@ -2027,8 +2011,8 @@ icvCreateTrackbar( const char* trackbar_name, const char* window_name,
|
|||||||
trackbar = icvFindTrackbarByName(window,trackbar_name);
|
trackbar = icvFindTrackbarByName(window,trackbar_name);
|
||||||
if( !trackbar )
|
if( !trackbar )
|
||||||
{
|
{
|
||||||
TBBUTTON tbs;
|
TBBUTTON tbs = {0};
|
||||||
ButtonInfo tbis;
|
TBBUTTONINFO tbis = {0};
|
||||||
RECT rect;
|
RECT rect;
|
||||||
int bcount;
|
int bcount;
|
||||||
int len = (int)strlen( trackbar_name );
|
int len = (int)strlen( trackbar_name );
|
||||||
@ -2038,9 +2022,14 @@ icvCreateTrackbar( const char* trackbar_name, const char* window_name,
|
|||||||
{
|
{
|
||||||
const int default_height = 30;
|
const int default_height = 30;
|
||||||
|
|
||||||
window->toolbar.toolbar = CreateToolbarEx(
|
// CreateToolbarEx is deprecated and forces linking against Comctl32.lib.
|
||||||
window->frame, WS_CHILD | CCS_TOP | TBSTYLE_WRAPABLE,
|
window->toolbar.toolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
|
||||||
1, 0, 0, 0, 0, 0, 16, 20, 16, 16, sizeof(TBBUTTON));
|
WS_CHILD | CCS_TOP | TBSTYLE_WRAPABLE | BTNS_AUTOSIZE | BTNS_BUTTON,
|
||||||
|
0, 0, 0, 0,
|
||||||
|
window->frame, NULL, GetModuleHandle(NULL), NULL);
|
||||||
|
// CreateToolbarEx automatically sends this but CreateWindowEx doesn't.
|
||||||
|
SendMessage(window->toolbar.toolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
|
||||||
|
|
||||||
GetClientRect(window->frame, &rect);
|
GetClientRect(window->frame, &rect);
|
||||||
MoveWindow( window->toolbar.toolbar, 0, 0,
|
MoveWindow( window->toolbar.toolbar, 0, 0,
|
||||||
rect.right - rect.left, default_height, TRUE);
|
rect.right - rect.left, default_height, TRUE);
|
||||||
@ -2288,6 +2277,38 @@ CV_IMPL void cvSetTrackbarPos( const char* trackbar_name, const char* window_nam
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CV_IMPL void cvSetTrackbarMax(const char* trackbar_name, const char* window_name, int maxval)
|
||||||
|
{
|
||||||
|
CV_FUNCNAME( "cvSetTrackbarMax" );
|
||||||
|
|
||||||
|
__BEGIN__;
|
||||||
|
|
||||||
|
if (maxval >= 0)
|
||||||
|
{
|
||||||
|
CvWindow* window = 0;
|
||||||
|
CvTrackbar* trackbar = 0;
|
||||||
|
if (trackbar_name == 0 || window_name == 0)
|
||||||
|
{
|
||||||
|
CV_ERROR(CV_StsNullPtr, "NULL trackbar or window name");
|
||||||
|
}
|
||||||
|
|
||||||
|
window = icvFindWindowByName(window_name);
|
||||||
|
if (window)
|
||||||
|
{
|
||||||
|
trackbar = icvFindTrackbarByName(window, trackbar_name);
|
||||||
|
if (trackbar)
|
||||||
|
{
|
||||||
|
// The position will be min(pos, maxval).
|
||||||
|
trackbar->maxval = maxval;
|
||||||
|
SendMessage(trackbar->hwnd, TBM_SETRANGEMAX, (WPARAM)TRUE, (LPARAM)maxval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
__END__;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
CV_IMPL void* cvGetWindowHandle( const char* window_name )
|
CV_IMPL void* cvGetWindowHandle( const char* window_name )
|
||||||
{
|
{
|
||||||
void* hwnd = 0;
|
void* hwnd = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user