Merge pull request #3449 from Ashod:2.4_highgui_trackbar_improvements
This commit is contained in:
		| @@ -158,6 +158,7 @@ CVAPI(int) cvCreateTrackbar2( const char* trackbar_name, const char* window_name | ||||
| /* retrieve or set trackbar position */ | ||||
| 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) cvSetTrackbarMax(const char* trackbar_name, const char* window_name, int maxval); | ||||
|  | ||||
| enum | ||||
| { | ||||
|   | ||||
| @@ -545,6 +545,11 @@ CV_IMPL void cvSetTrackbarPos( const char*, const char*, int ) | ||||
|     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_NO_GUI_ERROR( "cvGetWindowHandle" ); | ||||
|   | ||||
| @@ -643,6 +643,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 */ | ||||
| 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 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 cvSetTrackbarMax(const char* trackbar_name, const char* window_name, int maxval) {} | ||||
| CV_IMPL void* cvGetWindowHandle( const char* name ) {return NULL;} | ||||
| CV_IMPL const char* cvGetWindowName( void* window_handle ) {return NULL;} | ||||
| CV_IMPL int cvNamedWindow( const char* name, int flags ) {return 0; } | ||||
| @@ -424,6 +425,36 @@ CV_IMPL void cvSetTrackbarPos(const char* trackbar_name, const char* window_name | ||||
|     __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 ) | ||||
| { | ||||
|     //cout << "cvGetWindowHandle" << endl; | ||||
|   | ||||
| @@ -1381,6 +1381,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 ) | ||||
| { | ||||
|     void* widget = 0; | ||||
|   | ||||
| @@ -1827,7 +1827,7 @@ icvCreateTrackbar( const char* trackbar_name, const char* window_name, | ||||
|     if( !window_name || !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" ); | ||||
|  | ||||
|     window = icvFindWindowByName(window_name); | ||||
| @@ -1848,9 +1848,14 @@ icvCreateTrackbar( const char* trackbar_name, const char* window_name, | ||||
|         { | ||||
|             const int default_height = 30; | ||||
|  | ||||
|             window->toolbar.toolbar = CreateToolbarEx( | ||||
|                     window->frame, WS_CHILD | CCS_TOP | TBSTYLE_WRAPABLE, | ||||
|                     1, 0, 0, 0, 0, 0, 16, 20, 16, 16, sizeof(TBBUTTON)); | ||||
|             // CreateToolbarEx is deprecated and forces linking against Comctl32.lib. | ||||
|             window->toolbar.toolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, | ||||
|                                         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); | ||||
|             MoveWindow( window->toolbar.toolbar, 0, 0, | ||||
|                         rect.right - rect.left, default_height, TRUE); | ||||
| @@ -2098,6 +2103,39 @@ 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 ) | ||||
| { | ||||
|     void* hwnd = 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Vadim Pisarevsky
					Vadim Pisarevsky