Warning: Public history has been rewritten!If you have cloned from my fork of SFML in order to try the new blending feature, you must run the following commands.
git reset --hard HEAD~4
git pull
Additionally, the commits are now located on the branch
new_blending_api rather than on
master. Sorry, about the history rewrite, but things will end up much cleaner this way.

So I have once again updated the code to reflect the discussion here. One important thing to note is that all of the blending changes have been moved to their own branch named
new_blending_api. This means that any links to the code on Github should most likely be updated.
Inside the namespace sf, you can omit the sf:: prefixes.
If still applicable, where are these prefixes? If you were referring to the constant conversion functions (which have been moved to
RenderTarget.cpp), should the anonymous namespace be put in the sf namespace?
2. We must have a fallback for systems without glBlendFuncSeparate.
Would it suffice if it were supported for the existing blend modes? Then we could adapt the SFML rendering such that if the GLEW extension is not supported, it will recognize those cases and use the old glBlendFunc().
But in general, it's not possible to map the new API with 6 parameters to the simplified one.
Is something more than
this required for an adequate fallback?
By the way, are all the new constants really necessary? I didn't look deeply at them, so make sure they are all really relevant, and not just added "because now we can".
I'll investigate that. The question is whether you only want to provide the minimum number of enumerators that is necessary to implement the current blend modes, or at least a few more common ones? Where should we draw the border? It will be more or less arbitrary...
I can imagine a few scenarios where the reverse subtract could be useful, such as, for example, decreasing the amount of alpha in an render texture. If anything, min and max could be dropped as they serve little purpose from a graphical perspective and they also operate differently than the other equations (that is, they ignore the blending factors).
Maybe a
BlendMode(BlendFactor::Type source, BlendFactor::Type destination);
that could be extended by a BlendEquation::Type default parameter in the future?
Yep.
Shall I go ahead and implement this?
BlendMode(BlendFactor::Type source, BlendFactor::Type destination, BlendEquation::Type equation = BlendEquation::Add);
Finally, what is the preferred way of treating long lines in SFML? I didn't find any really long lines in other source files, so I just assumed a reasonable style with the long lines
here,
here, and
here.