diff options
author | planetmaker <planetmaker@openttd.org> | 2010-12-21 16:00:42 +0000 |
---|---|---|
committer | planetmaker <planetmaker@openttd.org> | 2010-12-21 16:00:42 +0000 |
commit | e38f96d60910846cdfed516f80282789bdb685f5 (patch) | |
tree | e240981434399ff66aa67c4983e3502281ae7ded | |
parent | 26575ab8f880a39dc9c07203d4f8b31eb667fdac (diff) | |
download | openttd-e38f96d60910846cdfed516f80282789bdb685f5.tar.xz |
(svn r21576) -Codechange: [OSX] Deduplicate code by moving the handling of the view for windowed screen drivers to a common class
-rw-r--r-- | src/video/cocoa/cocoa_v.h | 9 | ||||
-rw-r--r-- | src/video/cocoa/cocoa_v.mm | 30 | ||||
-rw-r--r-- | src/video/cocoa/wnd_quartz.mm | 18 |
3 files changed, 42 insertions, 15 deletions
diff --git a/src/video/cocoa/cocoa_v.h b/src/video/cocoa/cocoa_v.h index e81125b5b..97fc23f26 100644 --- a/src/video/cocoa/cocoa_v.h +++ b/src/video/cocoa/cocoa_v.h @@ -124,6 +124,15 @@ void QZ_HideMouse(); uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_id, int display_depth); +/* Subclass of NSView to fix Quartz rendering */ +@interface OTTD_CocoaView : NSView { + CocoaSubdriver *driver; +} +- (void)setDriver:(CocoaSubdriver*)drv; +- (void)drawRect:(NSRect)rect; +- (BOOL)isOpaque; +@end + /** Delegate for our NSWindow to send ask for quit on close */ @interface OTTD_CocoaWindowDelegate : NSObject { CocoaSubdriver *driver; diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index 756c86bfb..3abeaad9f 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -407,6 +407,36 @@ void cocoaReleaseAutoreleasePool() [ _ottd_autorelease_pool release ]; } + + +@implementation OTTD_CocoaView +/** + * Initialize the driver + */ +- (void)setDriver:(CocoaSubdriver*)drv +{ + driver = drv; +} +/** + * Define the opaqueness of the window / screen + * @return opaqueness of window / screen + */ +- (BOOL)isOpaque +{ + return YES; +} +/** + * Draws a rectangle on the screen. + * It's overwritten by the individual drivers but must be defined + */ +- (void)drawRect:(NSRect)invalidRect +{ + return; +} +@end + + + @implementation OTTD_CocoaWindowDelegate /** Initialize the video driver */ - (void)setDriver:(CocoaSubdriver*)drv diff --git a/src/video/cocoa/wnd_quartz.mm b/src/video/cocoa/wnd_quartz.mm index 50712cf9d..9e52e526f 100644 --- a/src/video/cocoa/wnd_quartz.mm +++ b/src/video/cocoa/wnd_quartz.mm @@ -62,15 +62,10 @@ class WindowQuartzSubdriver; - (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag; @end -/* Subclass of NSView to fix Quartz rendering */ -@interface OTTD_QuartzView : NSView { - WindowQuartzSubdriver *driver; -} - +/* Subclass of OTTD_CocoaView to fix Quartz rendering */ +@interface OTTD_QuartzView : OTTD_CocoaView - (void)setDriver:(WindowQuartzSubdriver*)drv; - -- (void)drawRect:(NSRect)rect; -- (BOOL)isOpaque; +- (void)drawRect:(NSRect)invalidRect; @end class WindowQuartzSubdriver: public CocoaSubdriver { @@ -239,13 +234,6 @@ static CGColorSpaceRef QZ_GetCorrectColorSpace() { driver = drv; } - - -- (BOOL)isOpaque -{ - return YES; -} - - (void)drawRect:(NSRect)invalidRect { if (driver->cgcontext == NULL) return; |