SDL  2.0
SDL_sysrender.h
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2018 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_mutex.h"
29 #include "SDL_yuv_sw_c.h"
30 
31 /* The SDL 2D rendering system */
32 
33 typedef struct SDL_RenderDriver SDL_RenderDriver;
34 
35 typedef enum
36 {
41 
42 typedef struct
43 {
44  float x;
45  float y;
46 } SDL_FPoint;
47 
48 typedef struct
49 {
50  float x;
51  float y;
52  float w;
53  float h;
54 } SDL_FRect;
55 
56 /* Define the SDL texture structure */
58 {
59  const void *magic;
60  Uint32 format; /**< The pixel format of the texture */
61  int access; /**< SDL_TextureAccess */
62  int w; /**< The width of the texture */
63  int h; /**< The height of the texture */
64  int modMode; /**< The texture modulation mode */
65  SDL_BlendMode blendMode; /**< The texture blend mode */
66  SDL_ScaleMode scaleMode; /**< The texture scale mode */
67  Uint8 r, g, b, a; /**< Texture modulation values */
68 
70 
71  /* Support for formats not supported directly by the renderer */
74  void *pixels;
75  int pitch;
77 
78  void *driverdata; /**< Driver specific texture representation */
79 
82 };
83 
84 /* Define the SDL renderer structure */
86 {
87  const void *magic;
88 
90  int (*GetOutputSize) (SDL_Renderer * renderer, int *w, int *h);
100  const SDL_Rect * rect, const void *pixels,
101  int pitch);
103  const SDL_Rect * rect,
104  const Uint8 *Yplane, int Ypitch,
105  const Uint8 *Uplane, int Upitch,
106  const Uint8 *Vplane, int Vpitch);
108  const SDL_Rect * rect, void **pixels, int *pitch);
115  int count);
117  int count);
119  int count);
121  const SDL_Rect * srcrect, const SDL_FRect * dstrect);
123  const SDL_Rect * srcquad, const SDL_FRect * dstrect,
124  const double angle, const SDL_FPoint *center, const SDL_RendererFlip flip);
126  Uint32 format, void * pixels, int pitch);
129 
131 
132  int (*GL_BindTexture) (SDL_Renderer * renderer, SDL_Texture *texture, float *texw, float *texh);
134 
135  void *(*GetMetalLayer) (SDL_Renderer * renderer);
136  void *(*GetMetalCommandEncoder) (SDL_Renderer * renderer);
137 
138  /* The current renderer info */
140 
141  /* The window associated with the renderer */
144 
145  /* The logical resolution for rendering */
150 
151  /* Whether or not to force the viewport to even integer intervals */
153 
154  /* The drawable area within the window */
157 
158  /* The clip rectangle within the window */
161 
162  /* Wether or not the clipping rectangle is used. */
165 
166  /* The render output coordinate scale */
169 
170  /* The pixel to point coordinate scale */
172 
173  /* The list of textures */
177 
178  Uint8 r, g, b, a; /**< Color for drawing operations values */
179  SDL_BlendMode blendMode; /**< The drawing blend mode */
180 
181  void *driverdata;
182 };
183 
184 /* Define the SDL render driver structure */
186 {
187  SDL_Renderer *(*CreateRenderer) (SDL_Window * window, Uint32 flags);
188 
189  /* Info about the renderer capabilities */
191 };
192 
193 /* Not all of these are available in a given build. Use #ifdefs, etc. */
203 
204 /* Blend mode functions */
211 
212 #endif /* SDL_sysrender_h_ */
213 
214 /* vi: set ts=4 sw=4 expandtab: */
DirectFB_RenderDriver
SDL_RenderDriver DirectFB_RenderDriver
SDL_Texture::native
SDL_Texture * native
Definition: SDL_sysrender.h:72
SDL_Renderer::blendMode
SDL_BlendMode blendMode
Definition: SDL_sysrender.h:179
format
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: SDL_opengl.h:1572
points
GLfixed GLfixed GLint GLint GLfixed points
Definition: SDL_opengl_glext.h:4558
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:179
SDL_events.h
SDL_Renderer::GL_UnbindTexture
int(* GL_UnbindTexture)(SDL_Renderer *renderer, SDL_Texture *texture)
Definition: SDL_sysrender.h:133
SDL_Renderer::clip_rect_backup
SDL_Rect clip_rect_backup
Definition: SDL_sysrender.h:160
SDL_render.h
blendMode
static SDL_BlendMode blendMode
Definition: testdraw2.c:34
SDL_Renderer::UpdateClipRect
int(* UpdateClipRect)(SDL_Renderer *renderer)
Definition: SDL_sysrender.h:112
GLES2_RenderDriver
SDL_RenderDriver GLES2_RenderDriver
SDL_FPoint::x
float x
Definition: SDL_sysrender.h:44
SDL_FRect::h
float h
Definition: SDL_sysrender.h:53
SDL_ScaleModeNearest
@ SDL_ScaleModeNearest
Definition: SDL_sysrender.h:37
SDL_Renderer::SetRenderTarget
int(* SetRenderTarget)(SDL_Renderer *renderer, SDL_Texture *texture)
Definition: SDL_sysrender.h:110
SDL_Texture::w
int w
Definition: SDL_sysrender.h:62
SDL_ScaleModeBest
@ SDL_ScaleModeBest
Definition: SDL_sysrender.h:39
SDL_Texture::pixels
void * pixels
Definition: SDL_sysrender.h:74
SDL_Renderer::g
Uint8 g
Definition: SDL_sysrender.h:178
SDL_mutex
Definition: SDL_sysmutex.c:30
count
GLuint GLuint GLsizei count
Definition: SDL_opengl.h:1571
SDL_Renderer::SetTextureBlendMode
int(* SetTextureBlendMode)(SDL_Renderer *renderer, SDL_Texture *texture)
Definition: SDL_sysrender.h:97
SDL_Renderer::hidden
SDL_bool hidden
Definition: SDL_sysrender.h:143
SDL_Renderer::scale
SDL_FPoint scale
Definition: SDL_sysrender.h:167
SDL_BlendOperation
SDL_BlendOperation
The blend operation used when combining source and destination pixel components.
Definition: SDL_blendmode.h:63
SDL_Renderer::RenderFillRects
int(* RenderFillRects)(SDL_Renderer *renderer, const SDL_FRect *rects, int count)
Definition: SDL_sysrender.h:118
SDL_RenderDriver
Definition: SDL_sysrender.h:186
SDL_FRect::x
float x
Definition: SDL_sysrender.h:50
SDL_Texture::access
int access
Definition: SDL_sysrender.h:61
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:203
SDL_Renderer::UpdateViewport
int(* UpdateViewport)(SDL_Renderer *renderer)
Definition: SDL_sysrender.h:111
SDL_Renderer::dpi_scale
SDL_FPoint dpi_scale
Definition: SDL_sysrender.h:171
SDL_Renderer::textures
SDL_Texture * textures
Definition: SDL_sysrender.h:174
SDL_Renderer::WindowEvent
void(* WindowEvent)(SDL_Renderer *renderer, const SDL_WindowEvent *event)
Definition: SDL_sysrender.h:89
SDL_BlendFactor
SDL_BlendFactor
The normalized factor used to multiply pixel components.
Definition: SDL_blendmode.h:76
GLES_RenderDriver
SDL_RenderDriver GLES_RenderDriver
SDL_FPoint::y
float y
Definition: SDL_sysrender.h:45
SDL_ScaleModeLinear
@ SDL_ScaleModeLinear
Definition: SDL_sysrender.h:38
h
GLfloat GLfloat GLfloat GLfloat h
Definition: SDL_opengl_glext.h:1946
SDL_Renderer::target_mutex
SDL_mutex * target_mutex
Definition: SDL_sysrender.h:176
SDL_Renderer::logical_w
int logical_w
Definition: SDL_sysrender.h:146
SDL_Texture::r
Uint8 r
Definition: SDL_sysrender.h:67
SDL_Renderer::viewport_backup
SDL_Rect viewport_backup
Definition: SDL_sysrender.h:156
SDL_yuv_sw_c.h
SDL_RendererInfo
Information on the capabilities of a render driver or context.
Definition: SDL_render.h:79
SDL_Texture::prev
SDL_Texture * prev
Definition: SDL_sysrender.h:80
SDL_Texture::b
Uint8 b
Definition: SDL_sysrender.h:67
SDL_Window
The type used to identify a window.
Definition: SDL_sysvideo.h:74
SDL_GetBlendModeDstAlphaFactor
SDL_BlendFactor SDL_GetBlendModeDstAlphaFactor(SDL_BlendMode blendMode)
Definition: SDL_render.c:2280
SDL_Renderer::viewport
SDL_Rect viewport
Definition: SDL_sysrender.h:155
event
struct _cl_event * event
Definition: SDL_opengl_glext.h:2649
D3D11_RenderDriver
SDL_RenderDriver D3D11_RenderDriver
SDL_Renderer
Definition: SDL_sysrender.h:86
SDL_FPoint
Definition: SDL_sysrender.h:43
SDL_Renderer::driverdata
void * driverdata
Definition: SDL_sysrender.h:181
SDL_FRect::y
float y
Definition: SDL_sysrender.h:51
SDL_Renderer::integer_scale
SDL_bool integer_scale
Definition: SDL_sysrender.h:152
SDL_Renderer::b
Uint8 b
Definition: SDL_sysrender.h:178
SDL_FRect::w
float w
Definition: SDL_sysrender.h:52
SDL_Renderer::scale_backup
SDL_FPoint scale_backup
Definition: SDL_sysrender.h:168
window
EGLSurface EGLNativeWindowType * window
Definition: eglext.h:1025
SDL_Renderer::SetTextureColorMod
int(* SetTextureColorMod)(SDL_Renderer *renderer, SDL_Texture *texture)
Definition: SDL_sysrender.h:93
D3D_RenderDriver
SDL_RenderDriver D3D_RenderDriver
SDL_GetBlendModeAlphaOperation
SDL_BlendOperation SDL_GetBlendModeAlphaOperation(SDL_BlendMode blendMode)
Definition: SDL_render.c:2287
SDL_GetBlendModeDstColorFactor
SDL_BlendFactor SDL_GetBlendModeDstColorFactor(SDL_BlendMode blendMode)
Definition: SDL_render.c:2259
SDL_Renderer::logical_h_backup
int logical_h_backup
Definition: SDL_sysrender.h:149
SDL_mutex.h
SDL_Renderer::SupportsBlendMode
SDL_bool(* SupportsBlendMode)(SDL_Renderer *renderer, SDL_BlendMode blendMode)
Definition: SDL_sysrender.h:91
rect
SDL_Rect rect
Definition: testrelative.c:27
SDL_Renderer::RenderDrawLines
int(* RenderDrawLines)(SDL_Renderer *renderer, const SDL_FPoint *points, int count)
Definition: SDL_sysrender.h:116
SDL_ScaleMode
SDL_ScaleMode
Definition: SDL_sysrender.h:36
SDL_Texture::h
int h
Definition: SDL_sysrender.h:63
SDL_Renderer::RenderClear
int(* RenderClear)(SDL_Renderer *renderer)
Definition: SDL_sysrender.h:113
SDL_Texture::next
SDL_Texture * next
Definition: SDL_sysrender.h:81
SDL_Renderer::GL_BindTexture
int(* GL_BindTexture)(SDL_Renderer *renderer, SDL_Texture *texture, float *texw, float *texh)
Definition: SDL_sysrender.h:132
SDL_Texture::modMode
int modMode
Definition: SDL_sysrender.h:64
SDL_Renderer::RenderDrawPoints
int(* RenderDrawPoints)(SDL_Renderer *renderer, const SDL_FPoint *points, int count)
Definition: SDL_sysrender.h:114
pixels
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
Definition: SDL_opengl.h:1572
SDL_Renderer::GetOutputSize
int(* GetOutputSize)(SDL_Renderer *renderer, int *w, int *h)
Definition: SDL_sysrender.h:90
SDL_Renderer::RenderCopy
int(* RenderCopy)(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcrect, const SDL_FRect *dstrect)
Definition: SDL_sysrender.h:120
SDL_Texture::scaleMode
SDL_ScaleMode scaleMode
Definition: SDL_sysrender.h:66
SDL_Renderer::SetTextureAlphaMod
int(* SetTextureAlphaMod)(SDL_Renderer *renderer, SDL_Texture *texture)
Definition: SDL_sysrender.h:95
SDL_Renderer::CreateTexture
int(* CreateTexture)(SDL_Renderer *renderer, SDL_Texture *texture)
Definition: SDL_sysrender.h:92
SDL_Texture::format
Uint32 format
Definition: SDL_sysrender.h:60
SDL_Texture::a
Uint8 a
Definition: SDL_sysrender.h:67
SDL_Renderer::DestroyRenderer
void(* DestroyRenderer)(SDL_Renderer *renderer)
Definition: SDL_sysrender.h:130
SDL_Renderer::LockTexture
int(* LockTexture)(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *rect, void **pixels, int *pitch)
Definition: SDL_sysrender.h:107
SDL_Renderer::logical_h
int logical_h
Definition: SDL_sysrender.h:147
SDL_Renderer::RenderReadPixels
int(* RenderReadPixels)(SDL_Renderer *renderer, const SDL_Rect *rect, Uint32 format, void *pixels, int pitch)
Definition: SDL_sysrender.h:125
SDL_Texture::pitch
int pitch
Definition: SDL_sysrender.h:75
SDL_Renderer::RenderCopyEx
int(* RenderCopyEx)(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcquad, const SDL_FRect *dstrect, const double angle, const SDL_FPoint *center, const SDL_RendererFlip flip)
Definition: SDL_sysrender.h:122
SW_RenderDriver
SDL_RenderDriver SW_RenderDriver
Definition: SDL_render_sw.c:78
SDL_RendererFlip
SDL_RendererFlip
Flip constants for SDL_RenderCopyEx.
Definition: SDL_render.h:112
renderer
static SDL_Renderer * renderer
Definition: testaudiocapture.c:21
SDL_GetBlendModeColorOperation
SDL_BlendOperation SDL_GetBlendModeColorOperation(SDL_BlendMode blendMode)
Definition: SDL_render.c:2266
SDL_GetBlendModeSrcAlphaFactor
SDL_BlendFactor SDL_GetBlendModeSrcAlphaFactor(SDL_BlendMode blendMode)
Definition: SDL_render.c:2273
SDL_Renderer::info
SDL_RendererInfo info
Definition: SDL_sysrender.h:139
SDL_Renderer::RenderPresent
void(* RenderPresent)(SDL_Renderer *renderer)
Definition: SDL_sysrender.h:127
SDL_Rect
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:65
METAL_RenderDriver
SDL_RenderDriver METAL_RenderDriver
SDL_Texture::yuv
SDL_SW_YUVTexture * yuv
Definition: SDL_sysrender.h:73
SDL_Texture::magic
const void * magic
Definition: SDL_sysrender.h:59
SDL_Texture
Definition: SDL_sysrender.h:58
SDL_Renderer::UpdateTexture
int(* UpdateTexture)(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *rect, const void *pixels, int pitch)
Definition: SDL_sysrender.h:99
SDL_Texture::blendMode
SDL_BlendMode blendMode
Definition: SDL_sysrender.h:65
SDL_SW_YUVTexture
Definition: SDL_yuv_sw_c.h:32
SDL_WindowEvent
Window state change event data (event.window.*)
Definition: SDL_events.h:196
SDL_FRect
Definition: SDL_sysrender.h:49
SDL_RenderDriver::info
SDL_RendererInfo info
Definition: SDL_sysrender.h:190
SDL_Texture::g
Uint8 g
Definition: SDL_sysrender.h:67
angle
GLfloat angle
Definition: SDL_opengl_glext.h:6097
SDL_Texture::locked_rect
SDL_Rect locked_rect
Definition: SDL_sysrender.h:76
SDL_Renderer::logical_w_backup
int logical_w_backup
Definition: SDL_sysrender.h:148
SDL_Renderer::clipping_enabled
SDL_bool clipping_enabled
Definition: SDL_sysrender.h:163
SDL_Renderer::magic
const void * magic
Definition: SDL_sysrender.h:87
SDL_bool
SDL_bool
Definition: SDL_stdinc.h:162
SDL_Renderer::r
Uint8 r
Definition: SDL_sysrender.h:178
SDL_Renderer::a
Uint8 a
Definition: SDL_sysrender.h:178
void
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
Definition: SDL_dynapi_procs.h:89
flags
GLbitfield flags
Definition: SDL_opengl_glext.h:1480
SDL_Renderer::window
SDL_Window * window
Definition: SDL_sysrender.h:142
SDL_Renderer::target
SDL_Texture * target
Definition: SDL_sysrender.h:175
texture
GLenum GLenum GLuint texture
Definition: SDL_opengl_glext.h:1178
SDL_GetBlendModeSrcColorFactor
SDL_BlendFactor SDL_GetBlendModeSrcColorFactor(SDL_BlendMode blendMode)
Definition: SDL_render.c:2252
rects
EGLSurface EGLint * rects
Definition: eglext.h:282
GL_RenderDriver
SDL_RenderDriver GL_RenderDriver
SDL_Renderer::clipping_enabled_backup
SDL_bool clipping_enabled_backup
Definition: SDL_sysrender.h:164
PSP_RenderDriver
SDL_RenderDriver PSP_RenderDriver
SDL_Renderer::clip_rect
SDL_Rect clip_rect
Definition: SDL_sysrender.h:159
SDL_Texture::renderer
SDL_Renderer * renderer
Definition: SDL_sysrender.h:69
SDL_BlendMode
SDL_BlendMode
The blend mode used in SDL_RenderCopy() and drawing operations.
Definition: SDL_blendmode.h:41
SDL_Texture::driverdata
void * driverdata
Definition: SDL_sysrender.h:78
SDL_Renderer::UnlockTexture
void(* UnlockTexture)(SDL_Renderer *renderer, SDL_Texture *texture)
Definition: SDL_sysrender.h:109
SDL_Renderer::DestroyTexture
void(* DestroyTexture)(SDL_Renderer *renderer, SDL_Texture *texture)
Definition: SDL_sysrender.h:128
SDL_Renderer::UpdateTextureYUV
int(* UpdateTextureYUV)(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *rect, const Uint8 *Yplane, int Ypitch, const Uint8 *Uplane, int Upitch, const Uint8 *Vplane, int Vpitch)
Definition: SDL_sysrender.h:102
w
GLubyte GLubyte GLubyte GLubyte w
Definition: SDL_opengl_glext.h:731