diff options
Diffstat (limited to 'src/resources/sdlimagehelper_unittest.cc')
-rw-r--r-- | src/resources/sdlimagehelper_unittest.cc | 541 |
1 files changed, 0 insertions, 541 deletions
diff --git a/src/resources/sdlimagehelper_unittest.cc b/src/resources/sdlimagehelper_unittest.cc deleted file mode 100644 index 517054b1b..000000000 --- a/src/resources/sdlimagehelper_unittest.cc +++ /dev/null @@ -1,541 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2014-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef USE_SDL2 -#include "localconsts.h" -PRAGMA48(GCC diagnostic push) -PRAGMA48(GCC diagnostic ignored "-Wshadow") -#include <SDL_endian.h> -PRAGMA48(GCC diagnostic pop) -#if SDL_BYTEORDER == SDL_LIL_ENDIAN - -#include "test/unittests.h" - -#include "client.h" -#include "graphicsmanager.h" - -#include "being/actorsprite.h" - -#include "fs/virtfs/fs.h" - -#include "utils/delete2.h" -#include "utils/env.h" - -#include "render/sdlgraphics.h" - -#include "resources/sdlimagehelper.h" - -#include "debug.h" - -static SDL_Surface *createSoftware32BitSurface(int width, - int height) -{ -#if SDL_BYTEORDER == SDL_BIG_ENDIAN - const int rmask = 0xff000000; - const int gmask = 0x00ff0000; - const int bmask = 0x0000ff00; - const int amask = 0x000000ff; -#else // SDL_BYTEORDER == SDL_BIG_ENDIAN - - const int rmask = 0x000000ff; - const int gmask = 0x0000ff00; - const int bmask = 0x00ff0000; - const int amask = 0xff000000; -#endif // SDL_BYTEORDER == SDL_BIG_ENDIAN - - return MSDL_CreateRGBSurface(SDL_SWSURFACE, - width, height, 32, rmask, gmask, bmask, amask); -} - -TEST_CASE("sdlimagehelper combineSurface", "") -{ - setEnv("SDL_VIDEODRIVER", "dummy"); - - client = new Client; - logger = new Logger(); - VirtFs::mountDirSilent("data", Append_false); - VirtFs::mountDirSilent("../data", Append_false); - - mainGraphics = new SDLGraphics; - imageHelper = new SDLImageHelper; -#ifdef USE_SDL2 - SDLImageHelper::setRenderer(graphicsManager.createRenderer( - graphicsManager.createWindow(640, 480, 0, - SDL_WINDOW_SHOWN | SDL_SWSURFACE), SDL_RENDERER_SOFTWARE)); -#else // USE_SDL2 - - graphicsManager.createWindow(640, 480, 0, SDL_ANYFORMAT | SDL_SWSURFACE); -#endif // USE_SDL2 - - ActorSprite::load(); - - SECTION("empty copy1") - { - SDL_Surface *surface1 = createSoftware32BitSurface(2, 2); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - for (int f = 0; f < 2 * 2; f ++) - ptr1[f] = 0xff000000; - SDL_Surface *surface2 = createSoftware32BitSurface(2, 2); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - ptr2[0] = 0xff000000; - ptr2[1] = 0x00ff0000; - ptr2[2] = 0x0000ff00; - ptr2[3] = 0x000000ff; - - SDLImageHelper::combineSurface(surface2, - nullptr, - surface1, - nullptr); - - // src image test - REQUIRE(ptr2[0] == 0xff000000); - REQUIRE(ptr2[1] == 0x00ff0000); - REQUIRE(ptr2[2] == 0x0000ff00); - REQUIRE(ptr2[3] == 0x000000ff); - - REQUIRE(ptr1[0] == 0xff000000); - REQUIRE(ptr1[1] == 0xff000000); - REQUIRE(ptr1[2] == 0xff000000); - REQUIRE(ptr1[3] == 0xff000000); - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - SECTION("empty copy2") - { - SDL_Surface *surface1 = createSoftware32BitSurface(2, 2); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - for (int f = 0; f < 2 * 2; f ++) - ptr1[f] = 0xff000000; - SDL_Surface *surface2 = createSoftware32BitSurface(2, 2); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - ptr2[0] = 0xff112233; - ptr2[1] = 0xff003344; - ptr2[2] = 0xff330055; - ptr2[3] = 0xff445500; - - SDLImageHelper::combineSurface(surface2, - nullptr, - surface1, - nullptr); - - REQUIRE(ptr1[0] == 0xff112233); - REQUIRE(ptr1[1] == 0xff003344); - REQUIRE(ptr1[2] == 0xff330055); - REQUIRE(ptr1[3] == 0xff445500); - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - SECTION("empty copy3") - { - SDL_Surface *surface1 = createSoftware32BitSurface(2, 2); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - for (int f = 0; f < 2 * 2; f ++) - ptr1[f] = 0x00000000; - SDL_Surface *surface2 = createSoftware32BitSurface(2, 2); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - ptr2[0] = 0xff112233; - ptr2[1] = 0xff003344; - ptr2[2] = 0xff330055; - ptr2[3] = 0xff445500; - - SDLImageHelper::combineSurface(surface2, - nullptr, - surface1, - nullptr); - - REQUIRE(ptr1[0] == 0xff112233); - REQUIRE(ptr1[1] == 0xff003344); - REQUIRE(ptr1[2] == 0xff330055); - REQUIRE(ptr1[3] == 0xff445500); - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - SECTION("empty copy4") - { - SDL_Surface *surface1 = createSoftware32BitSurface(2, 2); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - for (int f = 0; f < 2 * 2; f ++) - ptr1[f] = 0xff000000; - SDL_Surface *surface2 = createSoftware32BitSurface(2, 2); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - ptr2[0] = 0x50112233; - ptr2[1] = 0x50003344; - ptr2[2] = 0x50330055; - ptr2[3] = 0x50445500; - - SDLImageHelper::combineSurface(surface2, - nullptr, - surface1, - nullptr); - - REQUIRE(ptr1[0] == 0xff09121c); - REQUIRE(ptr1[1] == 0xff001c25); - REQUIRE(ptr1[2] == 0xff1c002f); - REQUIRE(ptr1[3] == 0xff252f00); - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - SECTION("empty copy5") - { - SDL_Surface *surface1 = createSoftware32BitSurface(2, 2); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - for (int f = 0; f < 2 * 2; f ++) - ptr1[f] = 0x00000000; - SDL_Surface *surface2 = createSoftware32BitSurface(2, 2); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - ptr2[0] = 0x50112233; - ptr2[1] = 0x50003344; - ptr2[2] = 0x50330055; - ptr2[3] = 0x50445500; - - SDLImageHelper::combineSurface(surface2, - nullptr, - surface1, - nullptr); - - REQUIRE(ptr1[0] == 0x8e09121c); - REQUIRE(ptr1[1] == 0x8e001c25); - REQUIRE(ptr1[2] == 0x8e1c002f); - REQUIRE(ptr1[3] == 0x8e252f00); - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - SECTION("empty copy6") - { - SDL_Surface *surface1 = createSoftware32BitSurface(2, 2); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - ptr1[0] = 0x50112233; - ptr1[1] = 0x50003344; - ptr1[2] = 0x50330055; - ptr1[3] = 0x50445500; - SDL_Surface *surface2 = createSoftware32BitSurface(2, 2); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - for (int f = 0; f < 2 * 2; f ++) - ptr2[f] = 0x00000000; - - SDLImageHelper::combineSurface(surface2, - nullptr, - surface1, - nullptr); - - REQUIRE(ptr1[0] == 0x50112233); - REQUIRE(ptr1[1] == 0x50003344); - REQUIRE(ptr1[2] == 0x50330055); - REQUIRE(ptr1[3] == 0x50445500); - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - SECTION("mix 1") - { - SDL_Surface *surface1 = createSoftware32BitSurface(2, 2); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - ptr1[0] = 0x50112233; - ptr1[1] = 0x50003344; - ptr1[2] = 0x50330055; - ptr1[3] = 0x50445500; - SDL_Surface *surface2 = createSoftware32BitSurface(2, 2); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - ptr2[0] = 0x50003344; - ptr2[1] = 0x50330055; - ptr2[2] = 0x50445500; - ptr2[3] = 0x50112233; - - SDLImageHelper::combineSurface(surface2, - nullptr, - surface1, - nullptr); - - REQUIRE(ptr1[0] == 0xdf082b3c); - REQUIRE(ptr1[1] == 0xdf1d174d); - REQUIRE(ptr1[2] == 0xdf3d2f26); - REQUIRE(ptr1[3] == 0xdf29391c); - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - SECTION("mix 2") - { - SDL_Surface *surface1 = createSoftware32BitSurface(2, 2); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - ptr1[0] = 0x10112233; - ptr1[1] = 0x20003344; - ptr1[2] = 0x30330055; - ptr1[3] = 0x40445500; - SDL_Surface *surface2 = createSoftware32BitSurface(2, 2); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - ptr2[0] = 0x50003344; - ptr2[1] = 0x60330055; - ptr2[2] = 0x70445500; - ptr2[3] = 0x80112233; - - SDLImageHelper::combineSurface(surface2, - nullptr, - surface1, - nullptr); - - REQUIRE(ptr1[0] == 0x9f082b3c); - REQUIRE(ptr1[1] == 0xbd1f144e); - REQUIRE(ptr1[2] == 0xb93f391e); - REQUIRE(ptr1[3] == 0xf5213224); - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - SECTION("part mix 1") - { -// 11 11 00 00 -// 11 11 00 00 -// 00 00 00 00 -// 00 00 00 00 - - SDL_Surface *surface1 = createSoftware32BitSurface(4, 4); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - ptr1[0] = 0x10112233; - ptr1[1] = 0x20003344; - ptr1[2] = 0x10203040; - ptr1[3] = 0x20304050; - ptr1[4] = 0x30330055; - ptr1[5] = 0x40445500; - ptr1[6] = 0x30405060; - ptr1[7] = 0x708090a0; - - ptr1[8] = 0x8090a0b0; - ptr1[9] = 0x90a0b0c0; - ptr1[10] = 0xa0b0c0d0; - ptr1[11] = 0xb0c0d0e0; - ptr1[12] = 0xc0d0e0f0; - ptr1[13] = 0xd0e0f000; - ptr1[14] = 0xe0f00010; - ptr1[15] = 0xf0001020; - - SDL_Surface *surface2 = createSoftware32BitSurface(2, 2); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - ptr2[0] = 0x50003344; - ptr2[1] = 0x60330055; - ptr2[2] = 0x70445500; - ptr2[3] = 0x80112233; - - SDLImageHelper::combineSurface(surface2, - nullptr, - surface1, - nullptr); - - REQUIRE(ptr1[0] == 0x9f082b3c); - REQUIRE(ptr1[1] == 0xbd1f144e); - REQUIRE(ptr1[2] == 0x10203040); - REQUIRE(ptr1[3] == 0x20304050); - REQUIRE(ptr1[4] == 0xb93f391e); - REQUIRE(ptr1[5] == 0xf5213224); - REQUIRE(ptr1[6] == 0x30405060); - REQUIRE(ptr1[7] == 0x708090a0); - - REQUIRE(ptr1[8] == 0x8090a0b0); - REQUIRE(ptr1[9] == 0x90a0b0c0); - REQUIRE(ptr1[10] == 0xa0b0c0d0); - REQUIRE(ptr1[11] == 0xb0c0d0e0); - REQUIRE(ptr1[12] == 0xc0d0e0f0); - REQUIRE(ptr1[13] == 0xd0e0f000); - REQUIRE(ptr1[14] == 0xe0f00010); - REQUIRE(ptr1[15] == 0xf0001020); - - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - SECTION("part mix 2") - { -// 00 00 00 00 -// 00 11 11 00 -// 00 11 11 00 -// 00 00 00 00 - - SDL_Surface *surface1 = createSoftware32BitSurface(4, 4); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - - ptr1[0] = 0x10203040; - ptr1[1] = 0x20304050; - ptr1[2] = 0x30405060; - ptr1[3] = 0x708090a0; - ptr1[4] = 0x8090a0b0; - - ptr1[5] = 0x10112233; // + - ptr1[6] = 0x20003344; // + - - ptr1[7] = 0x90a0b0c0; - ptr1[8] = 0xa0b0c0d0; - - ptr1[9] = 0x30330055; // + - ptr1[10] = 0x40445500; // + - - ptr1[11] = 0xb0c0d0e0; - ptr1[12] = 0xc0d0e0f0; - ptr1[13] = 0xd0e0f000; - ptr1[14] = 0xe0f00010; - ptr1[15] = 0xf0001020; - - SDL_Surface *surface2 = createSoftware32BitSurface(2, 2); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - ptr2[0] = 0x50003344; - ptr2[1] = 0x60330055; - ptr2[2] = 0x70445500; - ptr2[3] = 0x80112233; - - SDL_Rect rect1; - SDL_Rect rect2; - rect1.x = 1; - rect1.y = 1; - rect1.w = 2; - rect1.h = 2; - rect2.x = 0; - rect2.y = 0; - rect2.w = 2; - rect2.h = 2; - SDLImageHelper::combineSurface(surface2, - &rect2, - surface1, - &rect1); - - REQUIRE(ptr1[0] == 0x10203040); - REQUIRE(ptr1[1] == 0x20304050); - REQUIRE(ptr1[2] == 0x30405060); - REQUIRE(ptr1[3] == 0x708090a0); - REQUIRE(ptr1[4] == 0x8090a0b0); - - REQUIRE(ptr1[5] == 0x9f082b3c); // + - REQUIRE(ptr1[6] == 0xbd1f144e); // + - - REQUIRE(ptr1[7] == 0x90a0b0c0); - REQUIRE(ptr1[8] == 0xa0b0c0d0); - - REQUIRE(ptr1[9] == 0xb93f391e); // + - REQUIRE(ptr1[10] == 0xf5213224); // + - - REQUIRE(ptr1[11] == 0xb0c0d0e0); - REQUIRE(ptr1[12] == 0xc0d0e0f0); - REQUIRE(ptr1[13] == 0xd0e0f000); - REQUIRE(ptr1[14] == 0xe0f00010); - REQUIRE(ptr1[15] == 0xf0001020); - - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - SECTION("part mix 3") - { - SDL_Surface *surface1 = createSoftware32BitSurface(4, 4); - uint32_t *ptr1 = static_cast<uint32_t*>(surface1->pixels); - - ptr1[0] = 0x10203040; - ptr1[1] = 0x20304050; - ptr1[2] = 0x30405060; - ptr1[3] = 0x708090a0; - ptr1[4] = 0x8090a0b0; - ptr1[5] = 0x10112233; - ptr1[6] = 0x20003344; - ptr1[7] = 0x90a0b0c0; - ptr1[8] = 0xa0b0c0d0; - ptr1[9] = 0x30330055; - ptr1[10] = 0x40445500; - ptr1[11] = 0xb0c0d0e0; - ptr1[12] = 0xc0d0e0f0; - ptr1[13] = 0xd0e0f000; - ptr1[14] = 0xe0f00010; - ptr1[15] = 0xf0001020; - - SDL_Surface *surface2 = createSoftware32BitSurface(4, 4); - uint32_t *ptr2 = static_cast<uint32_t*>(surface2->pixels); - - ptr2[0] = 0x50003344; - ptr2[1] = 0x60330055; - ptr2[2] = 0x70445500; - ptr2[3] = 0x80112233; - ptr2[4] = 0x90111111; - ptr2[5] = 0x90111111; - ptr2[6] = 0xff000000; - ptr2[7] = 0xff000000; - ptr2[8] = 0xff000000; - ptr2[9] = 0xff000000; - ptr2[10] = 0xff000000; - ptr2[11] = 0xff000000; - ptr2[12] = 0xff000000; - ptr2[13] = 0xff000000; - ptr2[14] = 0xff000000; - ptr2[15] = 0xff000000; - - SDL_Rect rect1; - SDL_Rect rect2; - rect1.x = 1; - rect1.y = 1; - rect1.w = 2; - rect1.h = 2; - rect2.x = 0; - rect2.y = 0; - rect2.w = 2; - rect2.h = 2; - SDLImageHelper::combineSurface(surface2, - &rect2, - surface1, - &rect1); - - REQUIRE(ptr1[0] == 0x10203040); - REQUIRE(ptr1[1] == 0x20304050); - REQUIRE(ptr1[2] == 0x30405060); - REQUIRE(ptr1[3] == 0x708090a0); - REQUIRE(ptr1[4] == 0x8090a0b0); - REQUIRE(ptr1[5] == 0x9f082b3c); - REQUIRE(ptr1[6] == 0xbd1f144e); - REQUIRE(ptr1[7] == 0x90a0b0c0); - REQUIRE(ptr1[8] == 0xa0b0c0d0); - REQUIRE(ptr1[9] == 0xbf1b0d23); - REQUIRE(ptr1[10] == 0xff1f230c); - REQUIRE(ptr1[11] == 0xb0c0d0e0); - REQUIRE(ptr1[12] == 0xc0d0e0f0); - REQUIRE(ptr1[13] == 0xd0e0f000); - REQUIRE(ptr1[14] == 0xe0f00010); - REQUIRE(ptr1[15] == 0xf0001020); - - MSDL_FreeSurface(surface1); - MSDL_FreeSurface(surface2); - } - - delete2(client); - VirtFs::unmountDirSilent("data"); - VirtFs::unmountDirSilent("../data"); - delete2(logger); -} - -#endif // SDL_BYTEORDER == SDL_LIL_ENDIAN -#endif // USE_SDL2 |