SDL  2.0
SDL_sysrender.h
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
4 
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.
8 
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:
12 
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.
20 */
21 #include "../SDL_internal.h"
22 
23 #ifndef _SDL_sysrender_h
24 #define _SDL_sysrender_h
25 
26 #include "SDL_render.h"
27 #include "SDL_events.h"
28 #include "SDL_yuv_sw_c.h"
29 
30 /* The SDL 2D rendering system */
31 
32 typedef struct SDL_RenderDriver SDL_RenderDriver;
33 
34 typedef struct
35 {
36  float x;
37  float y;
38 } SDL_FPoint;
39 
40 typedef struct
41 {
42  float x;
43  float y;
44  float w;
45  float h;
46 } SDL_FRect;
47 
48 /* Define the SDL texture structure */
50 {
51  const void *magic;
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 */
59 
61 
62  /* Support for formats not supported directly by the renderer */
65  void *pixels;
66  int pitch;
68 
69  void *driverdata; /**< Driver specific texture representation */
70 
73 };
74 
75 /* Define the SDL renderer structure */
77 {
78  const void *magic;
79 
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,
85  int (*SetTextureAlphaMod) (SDL_Renderer * renderer,
87  int (*SetTextureBlendMode) (SDL_Renderer * renderer,
90  const SDL_Rect * rect, const void *pixels,
91  int pitch);
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,
105  int count);
106  int (*RenderDrawLines) (SDL_Renderer * renderer, const SDL_FPoint * points,
107  int count);
108  int (*RenderFillRects) (SDL_Renderer * renderer, const SDL_FRect * rects,
109  int count);
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);
119 
120  void (*DestroyRenderer) (SDL_Renderer * renderer);
121 
122  int (*GL_BindTexture) (SDL_Renderer * renderer, SDL_Texture *texture, float *texw, float *texh);
123  int (*GL_UnbindTexture) (SDL_Renderer * renderer, SDL_Texture *texture);
124 
125  /* The current renderer info */
127 
128  /* The window associated with the renderer */
131 
132  /* The logical resolution for rendering */
137 
138  /* The drawable area within the window */
141 
142  /* The clip rectangle within the window */
145 
146  /* Wether or not the clipping rectangle is used. */
149 
150  /* The render output coordinate scale */
153 
154  /* The list of textures */
157 
158  Uint8 r, g, b, a; /**< Color for drawing operations values */
159  SDL_BlendMode blendMode; /**< The drawing blend mode */
160 
161  void *driverdata;
162 };
163 
164 /* Define the SDL render driver structure */
166 {
167  SDL_Renderer *(*CreateRenderer) (SDL_Window * window, Uint32 flags);
168 
169  /* Info about the renderer capabilities */
171 };
172 
173 #if !SDL_RENDER_DISABLED
174 
175 #if SDL_VIDEO_RENDER_D3D
176 extern SDL_RenderDriver D3D_RenderDriver;
177 #endif
178 #if SDL_VIDEO_RENDER_D3D11
179 extern SDL_RenderDriver D3D11_RenderDriver;
180 #endif
181 #if SDL_VIDEO_RENDER_OGL
182 extern SDL_RenderDriver GL_RenderDriver;
183 #endif
184 #if SDL_VIDEO_RENDER_OGL_ES2
185 extern SDL_RenderDriver GLES2_RenderDriver;
186 #endif
187 #if SDL_VIDEO_RENDER_OGL_ES
188 extern SDL_RenderDriver GLES_RenderDriver;
189 #endif
190 #if SDL_VIDEO_RENDER_DIRECTFB
191 extern SDL_RenderDriver DirectFB_RenderDriver;
192 #endif
193 #if SDL_VIDEO_RENDER_PSP
194 extern SDL_RenderDriver PSP_RenderDriver;
195 #endif
197 
198 #endif /* !SDL_RENDER_DISABLED */
199 
200 #endif /* _SDL_sysrender_h */
201 
202 /* vi: set ts=4 sw=4 expandtab: */
void * pixels
Definition: SDL_sysrender.h:65
SDL_BlendMode blendMode
Definition: SDL_sysrender.h:57
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:155
SDL_RendererInfo info
SDL_Rect clip_rect_backup
SDL_BlendMode
The blend mode used in SDL_RenderCopy() and drawing operations.
Definition: SDL_blendmode.h:40
GLuint GLuint GLsizei count
Definition: SDL_opengl.h:1564
SDL_Rect rect
Definition: testrelative.c:27
SDL_Window * window
SDL_bool hidden
GLenum GLenum GLuint texture
void * driverdata
SDL_FPoint scale
SDL_Rect locked_rect
Definition: SDL_sysrender.h:67
SDL_Rect clip_rect
SDL_Texture * textures
SDL_Window * window
SDL_RendererInfo info
GLfixed GLfixed GLint GLint GLfixed points
SDL_FPoint scale_backup
SDL_bool
Definition: SDL_stdinc.h:126
SDL_Texture * next
Definition: SDL_sysrender.h:72
SDL_Texture * prev
Definition: SDL_sysrender.h:71
SDL_RenderDriver SW_RenderDriver
Definition: SDL_render_sw.c:78
SDL_Texture * target
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
struct _cl_event * event
SDL_SW_YUVTexture * yuv
Definition: SDL_sysrender.h:64
SDL_BlendMode blendMode
SDL_RendererFlip
Flip constants for SDL_RenderCopyEx.
Definition: SDL_render.h:111
Window state change event data (event.window.*)
Definition: SDL_events.h:171
Information on the capabilities of a render driver or context.
Definition: SDL_render.h:78
SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char const char SDL_SCANF_FORMAT_STRING const char return SDL_ThreadFunction const char void return Uint32 return Uint32 void
SDL_Renderer * renderer
Definition: SDL_sysrender.h:60
SDL_Rect viewport
The type used to identify a window.
Definition: SDL_sysvideo.h:71
SDL_Rect rects[MAX_RECTS]
GLfloat angle
const void * magic
Definition: SDL_sysrender.h:78
Uint32 format
Definition: SDL_sysrender.h:52
void * driverdata
Definition: SDL_sysrender.h:69
GLbitfield flags
SDL_Texture * native
Definition: SDL_sysrender.h:63
SDL_Rect viewport_backup
const void * magic
Definition: SDL_sysrender.h:51
SDL_bool clipping_enabled_backup
void UpdateTexture(SDL_Texture *texture, int frame)
Definition: teststreaming.c:70
SDL_bool clipping_enabled
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:64