(svn r21576) -Codechange: [OSX] Deduplicate code by moving the handling of the view for windowed screen drivers to a common class

This commit is contained in:
planetmaker 2010-12-21 16:00:42 +00:00
parent 26575ab8f8
commit e38f96d609
3 changed files with 42 additions and 15 deletions

View File

@ -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;

View File

@ -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

View File

@ -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;