annotate SDL3/SDL_blendmode.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 * # CategoryBlendmode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * Blend modes decide how two colors will mix together. There are both
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 * standard modes for basic needs and a means to create custom modes,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 * dictating what sort of math to do on what color components.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 #ifndef SDL_blendmode_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 #define SDL_blendmode_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 * A set of blend modes used in drawing operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 * These predefined blend modes are supported everywhere.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 * Additional values may be obtained from SDL_ComposeCustomBlendMode.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 * \since This datatype is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 * \sa SDL_ComposeCustomBlendMode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 typedef Uint32 SDL_BlendMode;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 #define SDL_BLENDMODE_NONE 0x00000000u /**< no blending: dstRGBA = srcRGBA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 #define SDL_BLENDMODE_BLEND 0x00000001u /**< alpha blending: dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)), dstA = srcA + (dstA * (1-srcA)) */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 #define SDL_BLENDMODE_BLEND_PREMULTIPLIED 0x00000010u /**< pre-multiplied alpha blending: dstRGBA = srcRGBA + (dstRGBA * (1-srcA)) */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 #define SDL_BLENDMODE_ADD 0x00000002u /**< additive blending: dstRGB = (srcRGB * srcA) + dstRGB, dstA = dstA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 #define SDL_BLENDMODE_ADD_PREMULTIPLIED 0x00000020u /**< pre-multiplied additive blending: dstRGB = srcRGB + dstRGB, dstA = dstA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 #define SDL_BLENDMODE_MOD 0x00000004u /**< color modulate: dstRGB = srcRGB * dstRGB, dstA = dstA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 #define SDL_BLENDMODE_MUL 0x00000008u /**< color multiply: dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)), dstA = dstA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 #define SDL_BLENDMODE_INVALID 0x7FFFFFFFu
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 * The blend operation used when combining source and destination pixel
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 * components.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 typedef enum SDL_BlendOperation
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< src - dst : supported by D3D, OpenGL, OpenGLES, and Vulkan */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< dst - src : supported by D3D, OpenGL, OpenGLES, and Vulkan */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D, OpenGL, OpenGLES, and Vulkan */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D, OpenGL, OpenGLES, and Vulkan */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 } SDL_BlendOperation;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 * The normalized factor used to multiply pixel components.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 * The blend factors are multiplied with the pixels from a drawing operation
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 * (src) and the pixels from the render target (dst) before the blend
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 * operation. The comma-separated factors listed above are always applied in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 * the component order red, green, blue, and alpha.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 typedef enum SDL_BlendFactor
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 } SDL_BlendFactor;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 * Compose a custom blend mode for renderers.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 * the SDL_BlendMode returned by this function if the renderer supports it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 * A blend mode controls how the pixels from a drawing operation (source) get
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 * combined with the pixels from the render target (destination). First, the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 * components of the source and destination pixels get multiplied with their
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 * blend factors. Then, the blend operation takes the two products and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 * calculates the result that will get stored in the render target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 * Expressed in pseudocode, it would look like this:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 * ```c
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 * Where the functions `colorOperation(src, dst)` and `alphaOperation(src,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 * dst)` can return one of the following:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 * - `src + dst`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 * - `src - dst`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 * - `dst - src`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 * - `min(src, dst)`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 * - `max(src, dst)`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 * The red, green, and blue components are always multiplied with the first,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 * second, and third components of the SDL_BlendFactor, respectively. The
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 * fourth component is not used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 * The alpha component is always multiplied with the fourth component of the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 * SDL_BlendFactor. The other components are not used in the alpha
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 * calculation.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 * Support for these blend modes varies for each renderer. To check if a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 * specific SDL_BlendMode is supported, create a renderer and pass it to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 * return with an error if the blend mode is not supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 * This list describes the support of custom blend modes for each renderer.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 * All renderers support the four blend modes listed in the SDL_BlendMode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 * enumeration.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 * - **direct3d**: Supports all operations with all factors. However, some
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 * `SDL_BLENDOPERATION_MAXIMUM`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 * - **direct3d11**: Same as Direct3D 9.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly here.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 * operations with all factors.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 * - **psp**: No custom blend mode support.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 * - **software**: No custom blend mode support.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 * Some renderers do not provide an alpha component for the default render
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 * target. The `SDL_BLENDFACTOR_DST_ALPHA` and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 * case.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 * blue components of the source pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 * blue components of the destination pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 * \param colorOperation the SDL_BlendOperation used to combine the red,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 * green, and blue components of the source and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 * destination pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 * the source pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 * the destination pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 * \param alphaOperation the SDL_BlendOperation used to combine the alpha
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 * component of the source and destination pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 * \returns an SDL_BlendMode that represents the chosen factors and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 * operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 * \sa SDL_SetRenderDrawBlendMode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 * \sa SDL_GetRenderDrawBlendMode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 * \sa SDL_SetTextureBlendMode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 * \sa SDL_GetTextureBlendMode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 extern SDL_DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 SDL_BlendFactor dstColorFactor,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 SDL_BlendOperation colorOperation,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 SDL_BlendFactor srcAlphaFactor,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 SDL_BlendFactor dstAlphaFactor,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 SDL_BlendOperation alphaOperation);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 #endif /* SDL_blendmode_h_ */