SDL
2.0
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
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
{
37
SDL_ScaleModeNearest
,
38
SDL_ScaleModeLinear
,
39
SDL_ScaleModeBest
40
}
SDL_ScaleMode
;
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 */
57
struct
SDL_Texture
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
69
SDL_Renderer
*
renderer
;
70
71
/* Support for formats not supported directly by the renderer */
72
SDL_Texture
*
native
;
73
SDL_SW_YUVTexture
*
yuv
;
74
void
*
pixels
;
75
int
pitch
;
76
SDL_Rect
locked_rect
;
77
78
void
*
driverdata
;
/**< Driver specific texture representation */
79
80
SDL_Texture
*
prev
;
81
SDL_Texture
*
next
;
82
};
83
84
/* Define the SDL renderer structure */
85
struct
SDL_Renderer
86
{
87
const
void
*
magic
;
88
89
void
(*
WindowEvent
) (
SDL_Renderer
*
renderer
,
const
SDL_WindowEvent
*
event
);
90
int (*
GetOutputSize
) (
SDL_Renderer
*
renderer
,
int
*
w
,
int
*
h
);
91
SDL_bool
(*
SupportsBlendMode
)(
SDL_Renderer
*
renderer
,
SDL_BlendMode
blendMode
);
92
int (*
CreateTexture
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
);
93
int (*
SetTextureColorMod
) (
SDL_Renderer
*
renderer
,
94
SDL_Texture
*
texture
);
95
int (*
SetTextureAlphaMod
) (
SDL_Renderer
*
renderer
,
96
SDL_Texture
*
texture
);
97
int (*
SetTextureBlendMode
) (
SDL_Renderer
*
renderer
,
98
SDL_Texture
*
texture
);
99
int (*
UpdateTexture
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
,
100
const
SDL_Rect
*
rect
,
const
void
*
pixels
,
101
int
pitch);
102
int (*
UpdateTextureYUV
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
,
103
const
SDL_Rect
*
rect
,
104
const
Uint8
*Yplane,
int
Ypitch,
105
const
Uint8
*Uplane,
int
Upitch,
106
const
Uint8
*Vplane,
int
Vpitch);
107
int (*
LockTexture
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
,
108
const
SDL_Rect
*
rect
,
void
**
pixels
,
int
*pitch);
109
void
(*
UnlockTexture
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
);
110
int (*
SetRenderTarget
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
);
111
int (*
UpdateViewport
) (
SDL_Renderer
*
renderer
);
112
int (*
UpdateClipRect
) (
SDL_Renderer
*
renderer
);
113
int (*
RenderClear
) (
SDL_Renderer
*
renderer
);
114
int (*
RenderDrawPoints
) (
SDL_Renderer
*
renderer
,
const
SDL_FPoint
*
points
,
115
int
count
);
116
int (*
RenderDrawLines
) (
SDL_Renderer
*
renderer
,
const
SDL_FPoint
*
points
,
117
int
count
);
118
int (*
RenderFillRects
) (
SDL_Renderer
*
renderer
,
const
SDL_FRect
*
rects
,
119
int
count
);
120
int (*
RenderCopy
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
,
121
const
SDL_Rect
* srcrect,
const
SDL_FRect
* dstrect);
122
int (*
RenderCopyEx
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
,
123
const
SDL_Rect
* srcquad,
const
SDL_FRect
* dstrect,
124
const
double
angle
,
const
SDL_FPoint
*center,
const
SDL_RendererFlip
flip);
125
int (*
RenderReadPixels
) (
SDL_Renderer
*
renderer
,
const
SDL_Rect
*
rect
,
126
Uint32
format
,
void
*
pixels
,
int
pitch);
127
void
(*
RenderPresent
) (
SDL_Renderer
*
renderer
);
128
void
(*
DestroyTexture
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
);
129
130
void
(*
DestroyRenderer
) (
SDL_Renderer
*
renderer
);
131
132
int (*
GL_BindTexture
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
,
float
*texw,
float
*texh);
133
int (*
GL_UnbindTexture
) (
SDL_Renderer
*
renderer
,
SDL_Texture
*
texture
);
134
135
void
*(*GetMetalLayer) (
SDL_Renderer
*
renderer
);
136
void
*(*GetMetalCommandEncoder) (
SDL_Renderer
*
renderer
);
137
138
/* The current renderer info */
139
SDL_RendererInfo
info
;
140
141
/* The window associated with the renderer */
142
SDL_Window
*
window
;
143
SDL_bool
hidden
;
144
145
/* The logical resolution for rendering */
146
int
logical_w
;
147
int
logical_h
;
148
int
logical_w_backup
;
149
int
logical_h_backup
;
150
151
/* Whether or not to force the viewport to even integer intervals */
152
SDL_bool
integer_scale
;
153
154
/* The drawable area within the window */
155
SDL_Rect
viewport
;
156
SDL_Rect
viewport_backup
;
157
158
/* The clip rectangle within the window */
159
SDL_Rect
clip_rect
;
160
SDL_Rect
clip_rect_backup
;
161
162
/* Wether or not the clipping rectangle is used. */
163
SDL_bool
clipping_enabled
;
164
SDL_bool
clipping_enabled_backup
;
165
166
/* The render output coordinate scale */
167
SDL_FPoint
scale
;
168
SDL_FPoint
scale_backup
;
169
170
/* The pixel to point coordinate scale */
171
SDL_FPoint
dpi_scale
;
172
173
/* The list of textures */
174
SDL_Texture
*
textures
;
175
SDL_Texture
*
target
;
176
SDL_mutex
*
target_mutex
;
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 */
185
struct
SDL_RenderDriver
186
{
187
SDL_Renderer
*(*CreateRenderer) (
SDL_Window
*
window
,
Uint32
flags
);
188
189
/* Info about the renderer capabilities */
190
SDL_RendererInfo
info
;
191
};
192
193
/* Not all of these are available in a given build. Use #ifdefs, etc. */
194
extern
SDL_RenderDriver
D3D_RenderDriver
;
195
extern
SDL_RenderDriver
D3D11_RenderDriver
;
196
extern
SDL_RenderDriver
GL_RenderDriver
;
197
extern
SDL_RenderDriver
GLES2_RenderDriver
;
198
extern
SDL_RenderDriver
GLES_RenderDriver
;
199
extern
SDL_RenderDriver
DirectFB_RenderDriver
;
200
extern
SDL_RenderDriver
METAL_RenderDriver
;
201
extern
SDL_RenderDriver
PSP_RenderDriver
;
202
extern
SDL_RenderDriver
SW_RenderDriver
;
203
204
/* Blend mode functions */
205
extern
SDL_BlendFactor
SDL_GetBlendModeSrcColorFactor
(
SDL_BlendMode
blendMode
);
206
extern
SDL_BlendFactor
SDL_GetBlendModeDstColorFactor
(
SDL_BlendMode
blendMode
);
207
extern
SDL_BlendOperation
SDL_GetBlendModeColorOperation
(
SDL_BlendMode
blendMode
);
208
extern
SDL_BlendFactor
SDL_GetBlendModeSrcAlphaFactor
(
SDL_BlendMode
blendMode
);
209
extern
SDL_BlendFactor
SDL_GetBlendModeDstAlphaFactor
(
SDL_BlendMode
blendMode
);
210
extern
SDL_BlendOperation
SDL_GetBlendModeAlphaOperation
(
SDL_BlendMode
blendMode
);
211
212
#endif
/* SDL_sysrender_h_ */
213
214
/* vi: set ts=4 sw=4 expandtab: */
src
render
SDL_sysrender.h
Generated on Sun Jun 26 2022 23:07:13 for SDL by
1.8.1.2