Mercurial > hg > openttd
changeset 16840:ff18b4be8c8d draft
(svn r21574) -Codechange: [OSX] Move the variable declaration of the screen drivers to the generic class, deduplicating code
author | planetmaker <planetmaker@openttd.org> |
---|---|
date | Tue, 21 Dec 2010 15:56:02 +0000 |
parents | 65dac61443f3 |
children | 6d8851188a34 |
files | src/video/cocoa/cocoa_v.h src/video/cocoa/fullscreen.mm src/video/cocoa/wnd_quartz.mm src/video/cocoa/wnd_quickdraw.mm |
diffstat | 4 files changed, 38 insertions(+), 73 deletions(-) [+] |
line wrap: on
line diff
--- a/src/video/cocoa/cocoa_v.h +++ b/src/video/cocoa/cocoa_v.h @@ -42,9 +42,41 @@ }; - +/** + * Generic display driver for cocoa + * On grounds to not duplicate some code, it contains a few variables + * which are not used by all device drivers. + */ class CocoaSubdriver { public: + int device_width; + int device_height; + int device_depth; + + int window_width; + int window_height; + int window_pitch; + + int buffer_depth; + void *pixel_buffer; // used for direct pixel access + void *window_buffer; // has colour translation from palette to screen + id window; // pointer to window object + +# define MAX_DIRTY_RECTS 100 + Rect dirty_rects[MAX_DIRTY_RECTS]; + int num_dirty_rects; + uint32 palette[256]; + + bool active; + bool setup; + + id cocoaview; // pointer to view object + + /* Separate driver vars for Quarz + * Needed here in order to avoid much code duplication */ + CGContextRef cgcontext; + + /* Driver methods */ virtual ~CocoaSubdriver() {} virtual void Draw(bool force_update = false) = 0;
--- a/src/video/cocoa/fullscreen.mm +++ b/src/video/cocoa/fullscreen.mm @@ -149,22 +149,11 @@ } class FullscreenSubdriver: public CocoaSubdriver { - int device_width; - int device_height; - int device_depth; - int window_pitch; - void *window_buffer; - void *pixel_buffer; - CGDirectDisplayID display_id; ///< 0 == main display (only support single display) CFDictionaryRef cur_mode; ///< current mode of the display CFDictionaryRef save_mode; ///< original mode of the display CGDirectPaletteRef palette; ///< palette of an 8-bit display - #define MAX_DIRTY_RECTS 100 - Rect dirty_rects[MAX_DIRTY_RECTS]; - int num_dirty_rects; - /* Gamma functions to try to hide the flash from a res switch * Fade the display from normal to black
--- a/src/video/cocoa/wnd_quartz.mm +++ b/src/video/cocoa/wnd_quartz.mm @@ -84,37 +84,7 @@ @end class WindowQuartzSubdriver: public CocoaSubdriver { - int device_width; - int device_height; - - int window_width; - int window_height; - - int buffer_depth; - - void *pixel_buffer; - void *window_buffer; - - id window; - - #define MAX_DIRTY_RECTS 100 - Rect dirty_rects[MAX_DIRTY_RECTS]; - int num_dirty_rects; - - uint32 palette[256]; - -public: - bool active; - bool setup; - - id cocoaview; - CGContextRef cgcontext; - private: - void GetDeviceInfo(); - - bool SetVideoMode(int width, int height); - /** * This function copies 8bpp pixels from the screen buffer in 32bpp windowed mode. * @@ -125,6 +95,9 @@ */ void BlitIndexedToView32(int left, int top, int right, int bottom); + virtual void GetDeviceInfo(); + virtual bool SetVideoMode(int width, int height); + public: WindowQuartzSubdriver(int bpp); virtual ~WindowQuartzSubdriver();
--- a/src/video/cocoa/wnd_quickdraw.mm +++ b/src/video/cocoa/wnd_quickdraw.mm @@ -73,38 +73,7 @@ @end class WindowQuickdrawSubdriver: public CocoaSubdriver { - int device_width; - int device_height; - int device_depth; - - int window_width; - int window_height; - int window_pitch; - - int buffer_depth; - - void *pixel_buffer; - void *window_buffer; - - id window; - - #define MAX_DIRTY_RECTS 100 - Rect dirty_rects[MAX_DIRTY_RECTS]; - int num_dirty_rects; - - uint32 palette[256]; - -public: - bool active; - bool setup; - - id cocoaview; - private: - void GetDeviceInfo(); - - bool SetVideoMode(int width, int height); - /** * This function copies 32bpp pixels from the screen buffer in 16bpp windowed mode. * @@ -138,6 +107,8 @@ inline void BlitToView(int left, int top, int right, int bottom); void DrawResizeIcon(); + virtual void GetDeviceInfo(); + virtual bool SetVideoMode(int width, int height); public: WindowQuickdrawSubdriver(int bpp);