Added SDL_BLENDMODE_BLEND_PREMULTIPLIED and SDL_BLENDMODE_ADD_PREMULTIPLIED

Fixes https://github.com/libsdl-org/SDL/issues/2485
This commit is contained in:
Sam Lantinga committed 2024-07-15 14:12:33 -07:00
1 parent f099898a66
commit df573391b1
22 files changed
+6831 -1371

No files matched your search

+43
View File
@@ -702,6 +702,17 @@ static int render_testBlitBlend(void *arg)
SDL_DestroySurface(referenceSurface);
referenceSurface = NULL;
/* Test Blend Premultiplied. */
testBlitBlendMode(tface, SDL_BLENDMODE_BLEND_PREMULTIPLIED);
referenceSurface = SDLTest_ImageBlitBlendPremultiplied();
/* Compare, then Present */
compare(referenceSurface, ALLOWABLE_ERROR_BLENDED);
SDL_RenderPresent(renderer);
SDL_DestroySurface(referenceSurface);
referenceSurface = NULL;
/* Test Add. */
testBlitBlendMode(tface, SDL_BLENDMODE_ADD);
referenceSurface = SDLTest_ImageBlitBlendAdd();
@@ -713,6 +724,17 @@ static int render_testBlitBlend(void *arg)
SDL_DestroySurface(referenceSurface);
referenceSurface = NULL;
/* Test Add Premultiplied. */
testBlitBlendMode(tface, SDL_BLENDMODE_ADD_PREMULTIPLIED);
referenceSurface = SDLTest_ImageBlitBlendAddPremultiplied();
/* Compare, then Present */
compare(referenceSurface, ALLOWABLE_ERROR_BLENDED);
SDL_RenderPresent(renderer);
SDL_DestroySurface(referenceSurface);
referenceSurface = NULL;
/* Test Mod. */
testBlitBlendMode(tface, SDL_BLENDMODE_MOD);
referenceSurface = SDLTest_ImageBlitBlendMod();
@@ -1154,6 +1176,15 @@ hasBlendModes(void)
if (!isSupported(ret)) {
fail = 1;
}
ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND_PREMULTIPLIED );
if (!isSupported(ret))
fail = 1;
ret = SDL_GetRenderDrawBlendMode(renderer, &mode );
if (!isSupported(ret))
fail = 1;
ret = (mode != SDL_BLENDMODE_BLEND_PREMULTIPLIED);
if (!isSupported(ret))
fail = 1;
ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_ADD);
if (!isSupported(ret)) {
fail = 1;
@@ -1166,6 +1197,18 @@ hasBlendModes(void)
if (!isSupported(ret)) {
fail = 1;
}
ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_ADD_PREMULTIPLIED);
if (!isSupported(ret)) {
fail = 1;
}
ret = SDL_GetRenderDrawBlendMode(renderer, &mode);
if (!isSupported(ret)) {
fail = 1;
}
ret = (mode != SDL_BLENDMODE_ADD_PREMULTIPLIED);
if (!isSupported(ret)) {
fail = 1;
}
ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_MOD);
if (!isSupported(ret)) {
fail = 1;