summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorplanetmaker <planetmaker@openttd.org>2010-12-21 16:00:42 +0000
committerplanetmaker <planetmaker@openttd.org>2010-12-21 16:00:42 +0000
commite38f96d60910846cdfed516f80282789bdb685f5 (patch)
treee240981434399ff66aa67c4983e3502281ae7ded
parent26575ab8f880a39dc9c07203d4f8b31eb667fdac (diff)
downloadopenttd-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.h9
-rw-r--r--src/video/cocoa/cocoa_v.mm30
-rw-r--r--src/video/cocoa/wnd_quartz.mm18
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;