Patched to compile on C89 compilers.
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2015 Sam Lantinga <slouken@libsdl.org>
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
21 #include "../SDL_internal.h"
23 #ifndef _SDL_sysrender_h
24 #define _SDL_sysrender_h
26 #include "SDL_render.h"
27 #include "SDL_events.h"
28 #include "SDL_yuv_sw_c.h"
30 /* The SDL 2D rendering system */
32 typedef struct SDL_RenderDriver SDL_RenderDriver;
48 /* Define the SDL texture structure */
52 Uint32 format; /**< The pixel format of the texture */
53 int access; /**< SDL_TextureAccess */
54 int w; /**< The width of the texture */
55 int h; /**< The height of the texture */
56 int modMode; /**< The texture modulation mode */
57 SDL_BlendMode blendMode; /**< The texture blend mode */
58 Uint8 r, g, b, a; /**< Texture modulation values */
60 SDL_Renderer *renderer;
62 /* Support for formats not supported directly by the renderer */
64 SDL_SW_YUVTexture *yuv;
69 void *driverdata; /**< Driver specific texture representation */
75 /* Define the SDL renderer structure */
80 void (*WindowEvent) (SDL_Renderer * renderer, const SDL_WindowEvent *event);
81 int (*GetOutputSize) (SDL_Renderer * renderer, int *w, int *h);
82 int (*CreateTexture) (SDL_Renderer * renderer, SDL_Texture * texture);
83 int (*SetTextureColorMod) (SDL_Renderer * renderer,
84 SDL_Texture * texture);
85 int (*SetTextureAlphaMod) (SDL_Renderer * renderer,
86 SDL_Texture * texture);
87 int (*SetTextureBlendMode) (SDL_Renderer * renderer,
88 SDL_Texture * texture);
89 int (*UpdateTexture) (SDL_Renderer * renderer, SDL_Texture * texture,
90 const SDL_Rect * rect, const void *pixels,
92 int (*UpdateTextureYUV) (SDL_Renderer * renderer, SDL_Texture * texture,
93 const SDL_Rect * rect,
94 const Uint8 *Yplane, int Ypitch,
95 const Uint8 *Uplane, int Upitch,
96 const Uint8 *Vplane, int Vpitch);
97 int (*LockTexture) (SDL_Renderer * renderer, SDL_Texture * texture,
98 const SDL_Rect * rect, void **pixels, int *pitch);
99 void (*UnlockTexture) (SDL_Renderer * renderer, SDL_Texture * texture);
100 int (*SetRenderTarget) (SDL_Renderer * renderer, SDL_Texture * texture);
101 int (*UpdateViewport) (SDL_Renderer * renderer);
102 int (*UpdateClipRect) (SDL_Renderer * renderer);
103 int (*RenderClear) (SDL_Renderer * renderer);
104 int (*RenderDrawPoints) (SDL_Renderer * renderer, const SDL_FPoint * points,
106 int (*RenderDrawLines) (SDL_Renderer * renderer, const SDL_FPoint * points,
108 int (*RenderFillRects) (SDL_Renderer * renderer, const SDL_FRect * rects,
110 int (*RenderCopy) (SDL_Renderer * renderer, SDL_Texture * texture,
111 const SDL_Rect * srcrect, const SDL_FRect * dstrect);
112 int (*RenderCopyEx) (SDL_Renderer * renderer, SDL_Texture * texture,
113 const SDL_Rect * srcquad, const SDL_FRect * dstrect,
114 const double angle, const SDL_FPoint *center, const SDL_RendererFlip flip);
115 int (*RenderReadPixels) (SDL_Renderer * renderer, const SDL_Rect * rect,
116 Uint32 format, void * pixels, int pitch);
117 void (*RenderPresent) (SDL_Renderer * renderer);
118 void (*DestroyTexture) (SDL_Renderer * renderer, SDL_Texture * texture);
120 void (*DestroyRenderer) (SDL_Renderer * renderer);
122 int (*GL_BindTexture) (SDL_Renderer * renderer, SDL_Texture *texture, float *texw, float *texh);
123 int (*GL_UnbindTexture) (SDL_Renderer * renderer, SDL_Texture *texture);
125 /* The current renderer info */
126 SDL_RendererInfo info;
128 /* The window associated with the renderer */
132 /* The logical resolution for rendering */
135 int logical_w_backup;
136 int logical_h_backup;
138 /* The drawable area within the window */
140 SDL_Rect viewport_backup;
142 /* The clip rectangle within the window */
144 SDL_Rect clip_rect_backup;
146 /* Wether or not the clipping rectangle is used. */
147 SDL_bool clipping_enabled;
148 SDL_bool clipping_enabled_backup;
150 /* The render output coordinate scale */
152 SDL_FPoint scale_backup;
154 /* The list of textures */
155 SDL_Texture *textures;
158 Uint8 r, g, b, a; /**< Color for drawing operations values */
159 SDL_BlendMode blendMode; /**< The drawing blend mode */
164 /* Define the SDL render driver structure */
165 struct SDL_RenderDriver
167 SDL_Renderer *(*CreateRenderer) (SDL_Window * window, Uint32 flags);
169 /* Info about the renderer capabilities */
170 SDL_RendererInfo info;
173 #if !SDL_RENDER_DISABLED
175 #if SDL_VIDEO_RENDER_D3D
176 extern SDL_RenderDriver D3D_RenderDriver;
178 #if SDL_VIDEO_RENDER_D3D11
179 extern SDL_RenderDriver D3D11_RenderDriver;
181 #if SDL_VIDEO_RENDER_OGL
182 extern SDL_RenderDriver GL_RenderDriver;
184 #if SDL_VIDEO_RENDER_OGL_ES2
185 extern SDL_RenderDriver GLES2_RenderDriver;
187 #if SDL_VIDEO_RENDER_OGL_ES
188 extern SDL_RenderDriver GLES_RenderDriver;
190 #if SDL_VIDEO_RENDER_DIRECTFB
191 extern SDL_RenderDriver DirectFB_RenderDriver;
193 #if SDL_VIDEO_RENDER_PSP
194 extern SDL_RenderDriver PSP_RenderDriver;
196 extern SDL_RenderDriver SW_RenderDriver;
198 #endif /* !SDL_RENDER_DISABLED */
200 #endif /* _SDL_sysrender_h */
202 /* vi: set ts=4 sw=4 expandtab: */