From 4cb93e79204f363b8ca0cf67d8ee794ef5e72574 Mon Sep 17 00:00:00 2001 From: Holmes Futrell Date: Tue, 2 Sep 2008 19:53:56 +0000 Subject: [PATCH] Added retained backing attribute, reference to UIKit renderer --- src/video/SDL_sysvideo.h | 495 ++++++++++++++++++++------------------- 1 file changed, 251 insertions(+), 244 deletions(-) diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index e97ee375d..9fc92a654 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -37,274 +37,276 @@ typedef struct SDL_VideoDisplay SDL_VideoDisplay; typedef struct SDL_VideoDevice SDL_VideoDevice; /* Define the SDL texture structure */ -struct SDL_Texture -{ - Uint32 id; +struct SDL_Texture { + Uint32 id; - Uint32 format; /**< The pixel format of the texture */ - int access; /**< SDL_TextureAccess */ - int w; /**< The width of the texture */ - int h; /**< The height of the texture */ - int modMode; /**< The texture modulation mode */ - int blendMode; /**< The texture blend mode */ - int scaleMode; /**< The texture scale mode */ - Uint8 r, g, b, a; /**< Texture modulation values */ + Uint32 format; /**< The pixel format of the texture */ + int access; /**< SDL_TextureAccess */ + int w; /**< The width of the texture */ + int h; /**< The height of the texture */ + int modMode;/**< The texture modulation mode */ + int blendMode; /**< The texture blend mode */ + int scaleMode; /**< The texture scale mode */ + Uint8 r, g, b, a; /**< Texture modulation values */ - SDL_Renderer *renderer; + SDL_Renderer *renderer; - void *driverdata; /**< Driver specific texture representation */ + void *driverdata; /**< Driver specific texture representation */ - SDL_Texture *next; + SDL_Texture *next; }; /* Define the SDL renderer structure */ -struct SDL_Renderer -{ - int (*ActivateRenderer) (SDL_Renderer * renderer); - int (*DisplayModeChanged) (SDL_Renderer * renderer); - int (*CreateTexture) (SDL_Renderer * renderer, SDL_Texture * texture); - int (*QueryTexturePixels) (SDL_Renderer * renderer, SDL_Texture * texture, - void **pixels, int *pitch); - int (*SetTexturePalette) (SDL_Renderer * renderer, SDL_Texture * texture, - const SDL_Color * colors, int firstcolor, - int ncolors); - int (*GetTexturePalette) (SDL_Renderer * renderer, SDL_Texture * texture, - SDL_Color * colors, int firstcolor, - int ncolors); - int (*SetTextureColorMod) (SDL_Renderer * renderer, - SDL_Texture * texture); - int (*SetTextureAlphaMod) (SDL_Renderer * renderer, - SDL_Texture * texture); - int (*SetTextureBlendMode) (SDL_Renderer * renderer, - SDL_Texture * texture); - int (*SetTextureScaleMode) (SDL_Renderer * renderer, - SDL_Texture * texture); - int (*UpdateTexture) (SDL_Renderer * renderer, SDL_Texture * texture, - const SDL_Rect * rect, const void *pixels, - int pitch); - int (*LockTexture) (SDL_Renderer * renderer, SDL_Texture * texture, - const SDL_Rect * rect, int markDirty, void **pixels, - int *pitch); - void (*UnlockTexture) (SDL_Renderer * renderer, SDL_Texture * texture); - void (*DirtyTexture) (SDL_Renderer * renderer, SDL_Texture * texture, - int numrects, const SDL_Rect * rects); - int (*RenderFill) (SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, - Uint8 a, const SDL_Rect * rect); - int (*RenderCopy) (SDL_Renderer * renderer, SDL_Texture * texture, - const SDL_Rect * srcrect, const SDL_Rect * dstrect); - void (*RenderPresent) (SDL_Renderer * renderer); - void (*DestroyTexture) (SDL_Renderer * renderer, SDL_Texture * texture); - - void (*DestroyRenderer) (SDL_Renderer * renderer); - - /* The current renderer info */ - SDL_RendererInfo info; - - /* The window associated with the renderer */ - SDL_WindowID window; - - void *driverdata; +struct SDL_Renderer { + int (*ActivateRenderer) (SDL_Renderer * renderer); + int (*DisplayModeChanged) (SDL_Renderer * renderer); + int (*CreateTexture) (SDL_Renderer * renderer, SDL_Texture * texture); + int (*QueryTexturePixels) (SDL_Renderer * renderer, SDL_Texture * texture, + void **pixels, int *pitch); + int (*SetTexturePalette) (SDL_Renderer * renderer, SDL_Texture * texture, + const SDL_Color * colors, int firstcolor, + int ncolors); + int (*GetTexturePalette) (SDL_Renderer * renderer, SDL_Texture * texture, + SDL_Color * colors, int firstcolor, + int ncolors); + int (*SetTextureColorMod) (SDL_Renderer * renderer, + SDL_Texture * texture); + int (*SetTextureAlphaMod) (SDL_Renderer * renderer, + SDL_Texture * texture); + int (*SetTextureBlendMode) (SDL_Renderer * renderer, + SDL_Texture * texture); + int (*SetTextureScaleMode) (SDL_Renderer * renderer, + SDL_Texture * texture); + int (*UpdateTexture) (SDL_Renderer * renderer, SDL_Texture * texture, + const SDL_Rect * rect, const void *pixels, + int pitch); + int (*LockTexture) (SDL_Renderer * renderer, SDL_Texture * texture, + const SDL_Rect * rect, int markDirty, void **pixels, + int *pitch); + void (*UnlockTexture) (SDL_Renderer * renderer, SDL_Texture * texture); + void (*DirtyTexture) (SDL_Renderer * renderer, SDL_Texture * texture, + int numrects, const SDL_Rect * rects); + int (*RenderFill) (SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, + Uint8 a, const SDL_Rect * rect); + int (*RenderCopy) (SDL_Renderer * renderer, SDL_Texture * texture, + const SDL_Rect * srcrect, const SDL_Rect * dstrect); + void (*RenderPresent) (SDL_Renderer * renderer); + void (*DestroyTexture) (SDL_Renderer * renderer, SDL_Texture * texture); + + void (*DestroyRenderer) (SDL_Renderer * renderer); + + /* The current renderer info */ + SDL_RendererInfo info; + + /* The window associated with the renderer */ + SDL_WindowID window; + + void *driverdata; }; /* Define the SDL render driver structure */ -struct SDL_RenderDriver -{ - SDL_Renderer *(*CreateRenderer) (SDL_Window * window, Uint32 flags); +struct SDL_RenderDriver { + SDL_Renderer *(*CreateRenderer) (SDL_Window * window, Uint32 flags); - /* Info about the renderer capabilities */ - SDL_RendererInfo info; + /* Info about the renderer capabilities */ + SDL_RendererInfo info; }; /* Define the SDL window structure, corresponding to toplevel windows */ -struct SDL_Window -{ - Uint32 id; +struct SDL_Window { + Uint32 id; - char *title; - int x, y; - int w, h; - Uint32 flags; + char *title; + int x, y; + int w, h; + Uint32 flags; - int display; - SDL_Renderer *renderer; + int display; + SDL_Renderer *renderer; - void *userdata; - void *driverdata; + void *userdata; + void *driverdata; }; #define FULLSCREEN_VISIBLE(W) \ (((W)->flags & SDL_WINDOW_FULLSCREEN) && \ ((W)->flags & SDL_WINDOW_SHOWN) && \ !((W)->flags & SDL_WINDOW_MINIMIZED)) -/* Define the SDL display structure - This corresponds to physical monitors attached to the system. +/* + * Define the SDL display structure This corresponds to physical monitors + * attached to the system. */ -struct SDL_VideoDisplay -{ - int max_display_modes; - int num_display_modes; - SDL_DisplayMode *display_modes; - SDL_DisplayMode desktop_mode; - SDL_DisplayMode current_mode; - SDL_DisplayMode fullscreen_mode; - SDL_Palette *palette; +struct SDL_VideoDisplay { + int max_display_modes; + int num_display_modes; + SDL_DisplayMode *display_modes; + SDL_DisplayMode desktop_mode; + SDL_DisplayMode current_mode; + SDL_DisplayMode fullscreen_mode; + SDL_Palette *palette; - Uint16 *gamma; - Uint16 *saved_gamma; /* (just offset into gamma) */ + Uint16 *gamma; + Uint16 *saved_gamma; /* (just offset into gamma) */ - int num_render_drivers; - SDL_RenderDriver *render_drivers; + int num_render_drivers; + SDL_RenderDriver *render_drivers; - int num_windows; - SDL_Window *windows; + int num_windows; + SDL_Window *windows; - SDL_Renderer *current_renderer; + SDL_Renderer *current_renderer; - /* The hash list of textures */ - SDL_Texture *textures[64]; + /* The hash list of textures */ + SDL_Texture *textures[64]; - SDL_VideoDevice *device; + SDL_VideoDevice *device; - void *driverdata; + void *driverdata; }; /* Define the SDL video driver structure */ #define _THIS SDL_VideoDevice *_this -struct SDL_VideoDevice -{ - /* * * */ - /* The name of this video driver */ - const char *name; - - /* * * */ - /* Initialization/Query functions */ - - /* Initialize the native video subsystem, filling in the list - of displays for this driver, returning 0 or -1 if there's an error. - */ - int (*VideoInit) (_THIS); - - /* Reverse the effects VideoInit() -- called if VideoInit() fails - or if the application is shutting down the video subsystem. - */ - void (*VideoQuit) (_THIS); - - /* * * */ - /* Display functions - */ - - /* Get a list of the available display modes. - * e.g. SDL_AddDisplayMode(_this->current_display, mode) - */ - void (*GetDisplayModes) (_THIS); - - /* Setting the display mode is independent of creating windows, - * so when the display mode is changed, all existing windows - * should have their data updated accordingly, including the - * display surfaces associated with them. - */ - int (*SetDisplayMode) (_THIS, SDL_DisplayMode * mode); - - /* Set the color entries of the display palette */ - int (*SetDisplayPalette) (_THIS, SDL_Palette * palette); - - /* Get the color entries of the display palette */ - int (*GetDisplayPalette) (_THIS, SDL_Palette * palette); - - /* Set the gamma ramp */ - int (*SetDisplayGammaRamp) (_THIS, Uint16 * ramp); - - /* Get the gamma ramp */ - int (*GetDisplayGammaRamp) (_THIS, Uint16 * ramp); - - /* * * */ - /* Window functions - */ - int (*CreateWindow) (_THIS, SDL_Window * window); - int (*CreateWindowFrom) (_THIS, SDL_Window * window, const void *data); - void (*SetWindowTitle) (_THIS, SDL_Window * window); - void (*SetWindowPosition) (_THIS, SDL_Window * window); - void (*SetWindowSize) (_THIS, SDL_Window * window); - void (*ShowWindow) (_THIS, SDL_Window * window); - void (*HideWindow) (_THIS, SDL_Window * window); - void (*RaiseWindow) (_THIS, SDL_Window * window); - void (*MaximizeWindow) (_THIS, SDL_Window * window); - void (*MinimizeWindow) (_THIS, SDL_Window * window); - void (*RestoreWindow) (_THIS, SDL_Window * window); - void (*SetWindowGrab) (_THIS, SDL_Window * window); - void (*DestroyWindow) (_THIS, SDL_Window * window); - - /* Get some platform dependent window information */ - SDL_bool(*GetWindowWMInfo) (_THIS, SDL_Window * window, - struct SDL_SysWMinfo * info); - - /* * * */ - /* OpenGL support - */ - int (*GL_LoadLibrary) (_THIS, const char *path); - void *(*GL_GetProcAddress) (_THIS, const char *proc); - SDL_GLContext(*GL_CreateContext) (_THIS, SDL_Window * window); - int (*GL_MakeCurrent) (_THIS, SDL_Window * window, SDL_GLContext context); - int (*GL_SetSwapInterval) (_THIS, int interval); - int (*GL_GetSwapInterval) (_THIS); - void (*GL_SwapWindow) (_THIS, SDL_Window * window); - void (*GL_DeleteContext) (_THIS, SDL_GLContext context); - - /* * * */ - /* Event manager functions - */ - void (*PumpEvents) (_THIS); - - /* * * */ - /* Data common to all drivers */ - int num_displays; - SDL_VideoDisplay *displays; - int current_display; - Uint32 next_object_id; - - /* * * */ - /* Data used by the GL drivers */ - struct - { - int red_size; - int green_size; - int blue_size; - int alpha_size; - int depth_size; - int buffer_size; - int stencil_size; - int double_buffer; - int accum_red_size; - int accum_green_size; - int accum_blue_size; - int accum_alpha_size; - int stereo; - int multisamplebuffers; - int multisamplesamples; - int accelerated; - int driver_loaded; - char driver_path[256]; - void *dll_handle; - } gl_config; - - /* * * */ - /* Data private to this driver */ - void *driverdata; - struct SDL_GLDriverData *gl_data; - - /* * * */ - /* The function used to dispose of this structure */ - void (*free) (_THIS); +struct SDL_VideoDevice { + /* * * */ + /* The name of this video driver */ + const char *name; + + /* * * */ + /* Initialization/Query functions */ + + /* + * Initialize the native video subsystem, filling in the list of + * displays for this driver, returning 0 or -1 if there's an error. + */ + int (*VideoInit) (_THIS); + + /* + * Reverse the effects VideoInit() -- called if VideoInit() fails or + * if the application is shutting down the video subsystem. + */ + void (*VideoQuit) (_THIS); + + /* * * */ + /* + * Display functions + */ + + /* + * Get a list of the available display modes. e.g. + * SDL_AddDisplayMode(_this->current_display, mode) + */ + void (*GetDisplayModes) (_THIS); + + /* + * Setting the display mode is independent of creating windows, so + * when the display mode is changed, all existing windows should have + * their data updated accordingly, including the display surfaces + * associated with them. + */ + int (*SetDisplayMode) (_THIS, SDL_DisplayMode * mode); + + /* Set the color entries of the display palette */ + int (*SetDisplayPalette) (_THIS, SDL_Palette * palette); + + /* Get the color entries of the display palette */ + int (*GetDisplayPalette) (_THIS, SDL_Palette * palette); + + /* Set the gamma ramp */ + int (*SetDisplayGammaRamp) (_THIS, Uint16 * ramp); + + /* Get the gamma ramp */ + int (*GetDisplayGammaRamp) (_THIS, Uint16 * ramp); + + /* * * */ + /* + * Window functions + */ + int (*CreateWindow) (_THIS, SDL_Window * window); + int (*CreateWindowFrom) (_THIS, SDL_Window * window, const void *data); + void (*SetWindowTitle) (_THIS, SDL_Window * window); + void (*SetWindowPosition) (_THIS, SDL_Window * window); + void (*SetWindowSize) (_THIS, SDL_Window * window); + void (*ShowWindow) (_THIS, SDL_Window * window); + void (*HideWindow) (_THIS, SDL_Window * window); + void (*RaiseWindow) (_THIS, SDL_Window * window); + void (*MaximizeWindow) (_THIS, SDL_Window * window); + void (*MinimizeWindow) (_THIS, SDL_Window * window); + void (*RestoreWindow) (_THIS, SDL_Window * window); + void (*SetWindowGrab) (_THIS, SDL_Window * window); + void (*DestroyWindow) (_THIS, SDL_Window * window); + + /* Get some platform dependent window information */ + SDL_bool(*GetWindowWMInfo) (_THIS, SDL_Window * window, + struct SDL_SysWMinfo * info); + + /* * * */ + /* + * OpenGL support + */ + int (*GL_LoadLibrary) (_THIS, const char *path); + void *(*GL_GetProcAddress) (_THIS, const char *proc); + SDL_GLContext(*GL_CreateContext) (_THIS, SDL_Window * window); + int (*GL_MakeCurrent) (_THIS, SDL_Window * window, SDL_GLContext context); + int (*GL_SetSwapInterval) (_THIS, int interval); + int (*GL_GetSwapInterval) (_THIS); + void (*GL_SwapWindow) (_THIS, SDL_Window * window); + void (*GL_DeleteContext) (_THIS, SDL_GLContext context); + + /* * * */ + /* + * Event manager functions + */ + void (*PumpEvents) (_THIS); + + /* * * */ + /* Data common to all drivers */ + int num_displays; + SDL_VideoDisplay *displays; + int current_display; + Uint32 next_object_id; + + /* * * */ + /* Data used by the GL drivers */ + struct { + int red_size; + int green_size; + int blue_size; + int alpha_size; + int depth_size; + int buffer_size; + int stencil_size; + int double_buffer; + int accum_red_size; + int accum_green_size; + int accum_blue_size; + int accum_alpha_size; + int stereo; + int multisamplebuffers; + int multisamplesamples; + int accelerated; + int retained_backing; + int driver_loaded; + char driver_path[256]; + void *dll_handle; + } gl_config; + + /* * * */ + /* Data private to this driver */ + void *driverdata; + struct SDL_GLDriverData *gl_data; + + /* * * */ + /* The function used to dispose of this structure */ + void (*free) (_THIS); }; -typedef struct VideoBootStrap -{ - const char *name; - const char *desc; - int (*available) (void); - SDL_VideoDevice *(*create) (int devindex); -} VideoBootStrap; +typedef struct VideoBootStrap { + const char *name; + const char *desc; + int (*available) (void); + SDL_VideoDevice *(*create) (int devindex); +} VideoBootStrap; #if SDL_VIDEO_DRIVER_COCOA extern VideoBootStrap COCOA_bootstrap; @@ -366,6 +368,9 @@ extern VideoBootStrap RISCOS_bootstrap; #if SDL_VIDEO_DRIVER_OS2FS extern VideoBootStrap OS2FSLib_bootstrap; #endif +#if SDL_VIDEO_DRIVER_UIKIT +extern VideoBootStrap UIKIT_bootstrap; +#endif #if SDL_VIDEO_DRIVER_DUMMY extern VideoBootStrap DUMMY_bootstrap; #endif @@ -376,24 +381,26 @@ extern VideoBootStrap NDS_bootstrap; #define SDL_CurrentDisplay (_this->displays[_this->current_display]) extern SDL_VideoDevice *SDL_GetVideoDevice(); -extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode); -extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display); -extern SDL_bool SDL_AddDisplayMode(int displayIndex, - const SDL_DisplayMode * mode); -extern void SDL_AddRenderDriver(int displayIndex, - const SDL_RenderDriver * driver); - -extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags); +extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode); +extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display); +extern SDL_bool +SDL_AddDisplayMode(int displayIndex, + const SDL_DisplayMode * mode); +extern void +SDL_AddRenderDriver(int displayIndex, + const SDL_RenderDriver * driver); + +extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags); extern SDL_Window *SDL_GetWindowFromID(SDL_WindowID windowID); extern SDL_VideoDisplay *SDL_GetDisplayFromWindow(SDL_Window * window); -extern void SDL_OnWindowShown(SDL_Window * window); -extern void SDL_OnWindowHidden(SDL_Window * window); -extern void SDL_OnWindowResized(SDL_Window * window); -extern void SDL_OnWindowFocusGained(SDL_Window * window); -extern void SDL_OnWindowFocusLost(SDL_Window * window); +extern void SDL_OnWindowShown(SDL_Window * window); +extern void SDL_OnWindowHidden(SDL_Window * window); +extern void SDL_OnWindowResized(SDL_Window * window); +extern void SDL_OnWindowFocusGained(SDL_Window * window); +extern void SDL_OnWindowFocusLost(SDL_Window * window); extern SDL_WindowID SDL_GetFocusWindow(void); -#endif /* _SDL_sysvideo_h */ +#endif /* _SDL_sysvideo_h */ /* vi: set ts=4 sw=4 expandtab: */