mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
Merge pull request #22047 from jlopezr:trackbar-ordered-in-mac
* In Mac highgui now shows trackbars in creation order * In Mac highgui trackbars show current value * Remove trailing spaces in objectivec code
This commit is contained in:
parent
583bd1a6e2
commit
adf89bbb33
@ -92,6 +92,7 @@ static bool wasInitialized = false;
|
||||
@interface CVSlider : NSView {
|
||||
NSSlider *slider;
|
||||
NSTextField *name;
|
||||
NSString *initialName;
|
||||
int *value;
|
||||
void *userData;
|
||||
CvTrackbarCallback callback;
|
||||
@ -99,6 +100,7 @@ static bool wasInitialized = false;
|
||||
}
|
||||
@property(retain) NSSlider *slider;
|
||||
@property(retain) NSTextField *name;
|
||||
@property(retain) NSString *initialName;
|
||||
@property(assign) int *value;
|
||||
@property(assign) void *userData;
|
||||
@property(assign) CvTrackbarCallback callback;
|
||||
@ -107,6 +109,7 @@ static bool wasInitialized = false;
|
||||
|
||||
@interface CVWindow : NSWindow {
|
||||
NSMutableDictionary *sliders;
|
||||
NSMutableArray *slidersKeys;
|
||||
CvMouseCallback mouseCallback;
|
||||
void *mouseParam;
|
||||
BOOL autosize;
|
||||
@ -121,6 +124,7 @@ static bool wasInitialized = false;
|
||||
@property(assign) int x0;
|
||||
@property(assign) int y0;
|
||||
@property(retain) NSMutableDictionary *sliders;
|
||||
@property(retain) NSMutableArray *slidersKeys;
|
||||
@property(readwrite) int status;
|
||||
- (CVView *)contentView;
|
||||
- (void)cvSendMouseEvent:(NSEvent *)event type:(int)type flags:(int)flags;
|
||||
@ -842,6 +846,7 @@ static NSSize constrainAspectRatio(NSSize base, NSSize constraint) {
|
||||
@synthesize x0;
|
||||
@synthesize y0;
|
||||
@synthesize sliders;
|
||||
@synthesize slidersKeys;
|
||||
@synthesize status;
|
||||
|
||||
- (void)cvSendMouseEvent:(NSEvent *)event type:(int)type flags:(int)flags {
|
||||
@ -933,6 +938,9 @@ static NSSize constrainAspectRatio(NSSize base, NSSize constraint) {
|
||||
if(sliders == nil)
|
||||
sliders = [[NSMutableDictionary alloc] init];
|
||||
|
||||
if(slidersKeys == nil)
|
||||
slidersKeys = [[NSMutableArray alloc] init];
|
||||
|
||||
NSString *cvname = [NSString stringWithFormat:@"%s", name];
|
||||
|
||||
// Avoid overwriting slider
|
||||
@ -942,18 +950,23 @@ static NSSize constrainAspectRatio(NSSize base, NSSize constraint) {
|
||||
// Create slider
|
||||
CVSlider *slider = [[CVSlider alloc] init];
|
||||
[[slider name] setStringValue:cvname];
|
||||
slider.initialName = [NSString stringWithFormat:@"%s", name];
|
||||
[[slider slider] setMaxValue:max];
|
||||
[[slider slider] setMinValue:0];
|
||||
if(value)
|
||||
{
|
||||
[[slider slider] setIntValue:*value];
|
||||
[slider setValue:value];
|
||||
NSString *temp = [slider initialName];
|
||||
NSString *text = [NSString stringWithFormat:@"%@ %d", temp, *value];
|
||||
[[slider name] setStringValue: text];
|
||||
}
|
||||
if(callback)
|
||||
[slider setCallback:callback];
|
||||
|
||||
// Save slider
|
||||
[sliders setValue:slider forKey:cvname];
|
||||
[slidersKeys addObject:cvname];
|
||||
[[self contentView] addSubview:slider];
|
||||
|
||||
|
||||
@ -1092,7 +1105,7 @@ static NSSize constrainAspectRatio(NSSize base, NSSize constraint) {
|
||||
|
||||
CVWindow *cvwindow = (CVWindow *)[self window];
|
||||
if ([cvwindow respondsToSelector:@selector(sliders)]) {
|
||||
for(NSString *key in [cvwindow sliders]) {
|
||||
for(NSString *key in [cvwindow slidersKeys]) {
|
||||
CVSlider *slider = [[cvwindow sliders] valueForKey:key];
|
||||
NSRect r = [slider frame];
|
||||
r.origin.y = height - r.size.height;
|
||||
@ -1144,6 +1157,7 @@ static NSSize constrainAspectRatio(NSSize base, NSSize constraint) {
|
||||
|
||||
@synthesize slider;
|
||||
@synthesize name;
|
||||
@synthesize initialName;
|
||||
@synthesize value;
|
||||
@synthesize userData;
|
||||
@synthesize callback;
|
||||
@ -1186,6 +1200,9 @@ static NSSize constrainAspectRatio(NSSize base, NSSize constraint) {
|
||||
- (void)sliderChanged:(NSNotification *)notification {
|
||||
(void)notification;
|
||||
int pos = [slider intValue];
|
||||
NSString *temp = [self initialName];
|
||||
NSString *text = [NSString stringWithFormat:@"%@ %d", temp, *value];
|
||||
[name setStringValue: text];
|
||||
if(value)
|
||||
*value = pos;
|
||||
if(callback)
|
||||
|
Loading…
Reference in New Issue
Block a user