You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
5.2 KiB
123 lines
5.2 KiB
/* |
|
Simple DirectMedia Layer |
|
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org> |
|
|
|
This software is provided 'as-is', without any express or implied |
|
warranty. In no event will the authors be held liable for any damages |
|
arising from the use of this software. |
|
|
|
Permission is granted to anyone to use this software for any purpose, |
|
including commercial applications, and to alter it and redistribute it |
|
freely, subject to the following restrictions: |
|
|
|
1. The origin of this software must not be misrepresented; you must not |
|
claim that you wrote the original software. If you use this software |
|
in a product, an acknowledgment in the product documentation would be |
|
appreciated but is not required. |
|
2. Altered source versions must be plainly marked as such, and must not be |
|
misrepresented as being the original software. |
|
3. This notice may not be removed or altered from any source distribution. |
|
*/ |
|
|
|
/** |
|
* \file SDL_blendmode.h |
|
* |
|
* Header file declaring the SDL_BlendMode enumeration |
|
*/ |
|
|
|
#ifndef SDL_blendmode_h_ |
|
#define SDL_blendmode_h_ |
|
|
|
#include "begin_code.h" |
|
/* Set up for C function definitions, even when using C++ */ |
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
/** |
|
* \brief The blend mode used in SDL_RenderCopy() and drawing operations. |
|
*/ |
|
typedef enum |
|
{ |
|
SDL_BLENDMODE_NONE = 0x00000000, /**< no blending |
|
dstRGBA = srcRGBA */ |
|
SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending |
|
dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)) |
|
dstA = srcA + (dstA * (1-srcA)) */ |
|
SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending |
|
dstRGB = (srcRGB * srcA) + dstRGB |
|
dstA = dstA */ |
|
SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate |
|
dstRGB = srcRGB * dstRGB |
|
dstA = dstA */ |
|
SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply |
|
dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)) |
|
dstA = (srcA * dstA) + (dstA * (1-srcA)) */ |
|
SDL_BLENDMODE_INVALID = 0x7FFFFFFF |
|
|
|
/* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */ |
|
|
|
} SDL_BlendMode; |
|
|
|
/** |
|
* \brief The blend operation used when combining source and destination pixel components |
|
*/ |
|
typedef enum |
|
{ |
|
SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */ |
|
SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */ |
|
SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */ |
|
SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D11 */ |
|
SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D11 */ |
|
|
|
} SDL_BlendOperation; |
|
|
|
/** |
|
* \brief The normalized factor used to multiply pixel components |
|
*/ |
|
typedef enum |
|
{ |
|
SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */ |
|
SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */ |
|
SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */ |
|
SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */ |
|
SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */ |
|
SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */ |
|
SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */ |
|
SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */ |
|
SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */ |
|
SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */ |
|
|
|
} SDL_BlendFactor; |
|
|
|
/** |
|
* \brief Create a custom blend mode, which may or may not be supported by a given renderer |
|
* |
|
* \param srcColorFactor source color factor |
|
* \param dstColorFactor destination color factor |
|
* \param colorOperation color operation |
|
* \param srcAlphaFactor source alpha factor |
|
* \param dstAlphaFactor destination alpha factor |
|
* \param alphaOperation alpha operation |
|
* |
|
* The result of the blend mode operation will be: |
|
* dstRGB = dstRGB * dstColorFactor colorOperation srcRGB * srcColorFactor |
|
* and |
|
* dstA = dstA * dstAlphaFactor alphaOperation srcA * srcAlphaFactor |
|
*/ |
|
extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, |
|
SDL_BlendFactor dstColorFactor, |
|
SDL_BlendOperation colorOperation, |
|
SDL_BlendFactor srcAlphaFactor, |
|
SDL_BlendFactor dstAlphaFactor, |
|
SDL_BlendOperation alphaOperation); |
|
|
|
/* Ends C function definitions when using C++ */ |
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
#include "close_code.h" |
|
|
|
#endif /* SDL_blendmode_h_ */ |
|
|
|
/* vi: set ts=4 sw=4 expandtab: */
|
|
|