From 05acf40aff7d4c6f500d283982de0c6c798ed162 Mon Sep 17 00:00:00 2001 From: Matt Bennett Date: Wed, 21 Jun 2017 12:00:26 +0100 Subject: [PATCH] remove ARC and auto synthesize assumptions in cocoa_window.mm --- modules/highgui/src/window_cocoa.mm | 160 ++++++++++++---------------- 1 file changed, 69 insertions(+), 91 deletions(-) diff --git a/modules/highgui/src/window_cocoa.mm b/modules/highgui/src/window_cocoa.mm index e0e9b112fb..a653cd355c 100644 --- a/modules/highgui/src/window_cocoa.mm +++ b/modules/highgui/src/window_cocoa.mm @@ -82,46 +82,42 @@ static NSAutoreleasePool *pool = nil; static NSMutableDictionary *windows = nil; static bool wasInitialized = false; -@interface CVView : NSView -{ - NSImage *_image; +@interface CVView : NSView { + NSImage *image; } -@property(strong) NSImage *image; +@property(retain) NSImage *image; - (void)setImageData:(CvArr *)arr; @end -@interface CVSlider : NSView -{ - NSSlider *_slider; - NSTextField *_name; - int *_value; - void *_userData; - CvTrackbarCallback _callback; - CvTrackbarCallback2 _callback2; +@interface CVSlider : NSView { + NSSlider *slider; + NSTextField *name; + int *value; + void *userData; + CvTrackbarCallback callback; + CvTrackbarCallback2 callback2; } - -@property(strong) NSSlider *slider; -@property(strong) NSTextField *name; +@property(retain) NSSlider *slider; +@property(retain) NSTextField *name; @property(assign) int *value; @property(assign) void *userData; @property(assign) CvTrackbarCallback callback; @property(assign) CvTrackbarCallback2 callback2; @end -@interface CVWindow : NSWindow -{ - CvMouseCallback _mouseCallback; - void *_mouseParam; - BOOL _autosize; - BOOL _firstContent; - NSMutableDictionary *_sliders; - int _status; +@interface CVWindow : NSWindow { + NSMutableDictionary *sliders; + CvMouseCallback mouseCallback; + void *mouseParam; + BOOL autosize; + BOOL firstContent; + int status; } @property(assign) CvMouseCallback mouseCallback; @property(assign) void *mouseParam; @property(assign) BOOL autosize; @property(assign) BOOL firstContent; -@property(strong) NSMutableDictionary *sliders; +@property(retain) NSMutableDictionary *sliders; @property(readwrite) int status; - (CVView *)contentView; - (void)cvSendMouseEvent:(NSEvent *)event type:(int)type flags:(int)flags; @@ -701,21 +697,14 @@ void cv::setWindowTitle(const String& winname, const String& title) } @implementation CVWindow -#if defined(__LP64__) + @synthesize mouseCallback; @synthesize mouseParam; @synthesize autosize; @synthesize firstContent; @synthesize sliders; @synthesize status; -#else // 32-bit Obj-C does not have automatic synthesize -@synthesize mouseCallback = _mouseCallback; -@synthesize mouseParam = _mouseParam; -@synthesize autosize = _autosize; -@synthesize firstContent = _firstContent; -@synthesize sliders = _sliders; -@synthesize status = _status; -#endif + - (void)cvSendMouseEvent:(NSEvent *)event type:(int)type flags:(int)flags { (void)event; //cout << "cvSendMouseEvent" << endl; @@ -740,13 +729,12 @@ void cv::setWindowTitle(const String& winname, const String& title) mp.y = mp.y * imageSize.height / std::max(viewHeight, 1.); if( mp.x >= 0 && mp.y >= 0 && mp.x < imageSize.width && mp.y < imageSize.height ) - _mouseCallback(type, mp.x, mp.y, flags, _mouseParam); + mouseCallback(type, mp.x, mp.y, flags, mouseParam); } - (void)cvMouseEvent:(NSEvent *)event { //cout << "cvMouseEvent" << endl; - - if([self mouseCallback] == nil) + if(!mouseCallback) return; int flags = 0; @@ -806,13 +794,13 @@ void cv::setWindowTitle(const String& winname, const String& title) - (void)createSliderWithName:(const char *)name maxValue:(int)max value:(int *)value callback:(CvTrackbarCallback)callback { //cout << "createSliderWithName" << endl; - if(_sliders == nil) - _sliders = [[NSMutableDictionary alloc] init]; + if(sliders == nil) + sliders = [[NSMutableDictionary alloc] init]; NSString *cvname = [NSString stringWithFormat:@"%s", name]; // Avoid overwriting slider - if([_sliders valueForKey:cvname]!=nil) + if([sliders valueForKey:cvname]!=nil) return; // Create slider @@ -831,11 +819,11 @@ void cv::setWindowTitle(const String& winname, const String& title) [slider setCallback:callback]; // Save slider - [_sliders setValue:slider forKey:cvname]; + [sliders setValue:slider forKey:cvname]; [[self contentView] addSubview:slider]; - //update contentView size to contain _sliders + //update contentView size to contain sliders NSSize viewSize=[[self contentView] frame].size, sliderSize=[slider frame].size; viewSize.height += sliderSize.height; @@ -845,7 +833,7 @@ void cv::setWindowTitle(const String& winname, const String& title) [[self contentView] setFrameSize:viewSize]; [[self contentView] setNeedsDisplay:YES]; - //update window size to contain _sliders + //update window size to contain sliders NSRect rect = [self frame]; rect.size.height += [slider frame].size.height; rect.size.width = std::max(rect.size.width, MIN_SLIDER_WIDTH); @@ -862,16 +850,13 @@ void cv::setWindowTitle(const String& winname, const String& title) @end @implementation CVView -#if defined(__LP64__) + @synthesize image; -#else // 32-bit Obj-C does not have automatic synthesize -@synthesize image = _image; -#endif - (id)init { //cout << "CVView init" << endl; [super init]; - _image = [[NSImage alloc] init]; + image = [[NSImage alloc] init]; return self; } @@ -926,11 +911,11 @@ void cv::setWindowTitle(const String& winname, const String& title) dst[i * 4 + 2] = src[i * 3 + 2]; } - if( _image ) - [_image release]; + if( image ) + [image release]; - _image = [[NSImage alloc] init]; - [_image addRepresentation:bitmap]; + image = [[NSImage alloc] init]; + [image addRepresentation:bitmap]; [bitmap release]; /*CGColorSpaceRelease(colorspace); @@ -951,7 +936,7 @@ void cv::setWindowTitle(const String& winname, const String& title) int height = size.height; CVWindow *cvwindow = (CVWindow *)[self window]; - if ([cvwindow respondsToSelector:@selector(_sliders)]) { + if ([cvwindow respondsToSelector:@selector(sliders)]) { for(NSString *key in [cvwindow sliders]) { NSSlider *slider = [[cvwindow sliders] valueForKey:key]; NSRect r = [slider frame]; @@ -971,17 +956,17 @@ void cv::setWindowTitle(const String& winname, const String& title) NSAutoreleasePool* localpool = [[NSAutoreleasePool alloc] init]; CVWindow *cvwindow = (CVWindow *)[self window]; int height = 0; - if ([cvwindow respondsToSelector:@selector(_sliders)]) { + if ([cvwindow respondsToSelector:@selector(sliders)]) { for(NSString *key in [cvwindow sliders]) { height += [[[cvwindow sliders] valueForKey:key] frame].size.height; } } - NSRect imageRect = {{0,0}, {[_image size].width, [_image size].height}}; + NSRect imageRect = {{0,0}, {[image size].width, [image size].height}}; - if(_image != nil) { - [_image drawInRect: imageRect + if(image != nil) { + [image drawInRect: imageRect fromRect: NSZeroRect operation: NSCompositeSourceOver fraction: 1.0]; @@ -993,47 +978,40 @@ void cv::setWindowTitle(const String& winname, const String& title) @end @implementation CVSlider -#if defined(__LP64__) + @synthesize slider; @synthesize name; @synthesize value; @synthesize userData; @synthesize callback; @synthesize callback2; -#else // 32-bit Obj-C does not have automatic synthesize -@synthesize slider = _slider; -@synthesize name = _name; -@synthesize value = _value; -@synthesize userData = _userData; -@synthesize callback = _callback; -@synthesize callback2 = _callback2; -#endif + - (id)init { [super init]; - _callback = NULL; - _value = NULL; - _userData = NULL; + callback = NULL; + value = NULL; + userData = NULL; [self setFrame:NSMakeRect(0,0,200,30)]; - _name = [[NSTextField alloc] initWithFrame:NSMakeRect(10, 0,110, 25)]; - [_name setEditable:NO]; - [_name setSelectable:NO]; - [_name setBezeled:NO]; - [_name setBordered:NO]; - [_name setDrawsBackground:NO]; - [[_name cell] setLineBreakMode:NSLineBreakByTruncatingTail]; - [self addSubview:_name]; + name = [[NSTextField alloc] initWithFrame:NSMakeRect(10, 0,110, 25)]; + [name setEditable:NO]; + [name setSelectable:NO]; + [name setBezeled:NO]; + [name setBordered:NO]; + [name setDrawsBackground:NO]; + [[name cell] setLineBreakMode:NSLineBreakByTruncatingTail]; + [self addSubview:name]; - _slider = [[NSSlider alloc] initWithFrame:NSMakeRect(120, 0, 70, 25)]; - [_slider setAutoresizingMask:NSViewWidthSizable]; - [_slider setMinValue:0]; - [_slider setMaxValue:100]; - [_slider setContinuous:YES]; - [_slider setTarget:self]; - [_slider setAction:@selector(sliderChanged:)]; - [self addSubview:_slider]; + slider = [[NSSlider alloc] initWithFrame:NSMakeRect(120, 0, 70, 25)]; + [slider setAutoresizingMask:NSViewWidthSizable]; + [slider setMinValue:0]; + [slider setMaxValue:100]; + [slider setContinuous:YES]; + [slider setTarget:self]; + [slider setAction:@selector(sliderChanged:)]; + [self addSubview:slider]; [self setAutoresizingMask:NSViewWidthSizable]; @@ -1044,13 +1022,13 @@ void cv::setWindowTitle(const String& winname, const String& title) - (void)sliderChanged:(NSNotification *)notification { (void)notification; - int pos = [_slider intValue]; - if(_value) - *_value = pos; - if(_callback) - _callback(pos); - if(_callback2) - _callback2(pos, _userData); + int pos = [slider intValue]; + if(value) + *value = pos; + if(callback) + callback(pos); + if(callback2) + callback2(pos, userData); } @end