From 256fbebfd025121d130e7109a9be91c28d1f896b Mon Sep 17 00:00:00 2001 From: Chris Thrasher Date: Sun, 2 Jul 2023 21:53:52 -0600 Subject: [PATCH] Implement min and max blend modes https://github.com/SFML/SFML/pull/1756 --- include/SFML/Graphics/BlendMode.h | 10 +++++++--- src/SFML/Graphics/BlendMode.cpp | 10 +++++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/include/SFML/Graphics/BlendMode.h b/include/SFML/Graphics/BlendMode.h index 97592e33..7b2e7eaa 100644 --- a/include/SFML/Graphics/BlendMode.h +++ b/include/SFML/Graphics/BlendMode.h @@ -56,9 +56,11 @@ typedef enum //////////////////////////////////////////////////////////// typedef enum { - sfBlendEquationAdd, ///< Pixel = Src * SrcFactor + Dst * DstFactor - sfBlendEquationSubtract, ///< Pixel = Src * SrcFactor - Dst * DstFactor - sfBlendEquationReverseSubtract ///< Pixel = Dst * DstFactor - Src * SrcFactor + sfBlendEquationAdd, ///< Pixel = Src * SrcFactor + Dst * DstFactor + sfBlendEquationSubtract, ///< Pixel = Src * SrcFactor - Dst * DstFactor + sfBlendEquationReverseSubtract, ///< Pixel = Dst * DstFactor - Src * SrcFactor + sfBlendEquationMin, ///< Pixel = min(Dst, Src) + sfBlendEquationMax ///< Pixel = max(Dst, Src) } sfBlendEquation; @@ -80,6 +82,8 @@ typedef struct CSFML_GRAPHICS_API const sfBlendMode sfBlendAlpha; ///< Blend source and dest according to dest alpha CSFML_GRAPHICS_API const sfBlendMode sfBlendAdd; ///< Add source to dest CSFML_GRAPHICS_API const sfBlendMode sfBlendMultiply; ///< Multiply source and dest +CSFML_GRAPHICS_API const sfBlendMode sfBlendMin; ///< Take minimum between source and dest +CSFML_GRAPHICS_API const sfBlendMode sfBlendMax; ///< Take maximum between source and dest CSFML_GRAPHICS_API const sfBlendMode sfBlendNone; ///< Overwrite dest with source diff --git a/src/SFML/Graphics/BlendMode.cpp b/src/SFML/Graphics/BlendMode.cpp index bc9f6719..cad92b82 100644 --- a/src/SFML/Graphics/BlendMode.cpp +++ b/src/SFML/Graphics/BlendMode.cpp @@ -40,6 +40,14 @@ const sfBlendMode sfBlendAdd = { sfBlendFactorSrcAlpha, sfBlendFactorOne, sfBlen const sfBlendMode sfBlendMultiply = { sfBlendFactorDstColor, sfBlendFactorZero, sfBlendEquationAdd, sfBlendFactorDstColor, sfBlendFactorZero, sfBlendEquationAdd }; +//////////////////////////////////////////////////////////// +const sfBlendMode sfBlendMin = { sfBlendFactorOne, sfBlendFactorOne, sfBlendEquationMin, + sfBlendFactorOne, sfBlendFactorOne, sfBlendEquationMin }; + +//////////////////////////////////////////////////////////// +const sfBlendMode sfBlendMmax = { sfBlendFactorOne, sfBlendFactorOne, sfBlendEquationMax, + sfBlendFactorOne, sfBlendFactorOne, sfBlendEquationMax }; + //////////////////////////////////////////////////////////// const sfBlendMode sfBlendNone = { sfBlendFactorOne, sfBlendFactorZero, sfBlendEquationAdd, - sfBlendFactorOne, sfBlendFactorZero, sfBlendEquationAdd }; + sfBlendFactorOne, sfBlendFactorZero, sfBlendEquationAdd };