diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/resources/image.h | 1 | ||||
-rw-r--r-- | src/test/testlauncher.cpp | 63 | ||||
-rw-r--r-- | src/test/testlauncher.h | 2 |
3 files changed, 66 insertions, 0 deletions
diff --git a/src/resources/image.h b/src/resources/image.h index 556109564..a0df54926 100644 --- a/src/resources/image.h +++ b/src/resources/image.h @@ -57,6 +57,7 @@ class Image : public Resource friend class OpenGLImageHelper; friend class SDLGraphics; friend class SDLImageHelper; + friend class TestLauncher; #ifdef USE_OPENGL friend class AtlasManager; friend class MobileOpenGLGraphics; diff --git a/src/test/testlauncher.cpp b/src/test/testlauncher.cpp index 626ac7490..34a126a4e 100644 --- a/src/test/testlauncher.cpp +++ b/src/test/testlauncher.cpp @@ -32,12 +32,18 @@ #include "utils/gettext.h" #include "utils/mkdir.h" +#include "utils/physfsrwops.h" +#include "resources/dye.h" #include "resources/image.h" +#include "resources/imagehelper.h" +#include "resources/imagewriter.h" #include "resources/wallpaper.h" #include <unistd.h> +#include <SDL_gfxBlitFunc.h> + #ifdef WIN32 #include <windows.h> #define sleep(seconds) Sleep((seconds) * 1000) @@ -74,6 +80,8 @@ int TestLauncher::exec() return testVideoDetection(); else if (mTest == "100") return testInternal(); + else if (mTest == "101") + return testDye(); return -1; } @@ -226,6 +234,61 @@ int TestLauncher::testInternal() return 0; } +int TestLauncher::testDye() +{ + SDL_RWops *rw = PHYSFSRWOPS_openRead( + "graphics/sprites/arrow_up.png"); + Dye *d = nullptr; + + logger->log("test1"); + if (rw) + { + logger->log("test2"); + Image *image = d ? sdlImageHelper->load(rw, *d) + : sdlImageHelper->load(rw); + if (image) + { + logger->log("test3"); + const SDL_Rect &rect = image->mBounds; + SDL_Surface *surface = sdlImageHelper->create32BitSurface( + rect.w, rect.h); + if (surface) + { + logger->log("test4"); + SDL_gfxBlitRGBA(image->mSDLSurface, nullptr, surface, nullptr); + ImageWriter::writePNG(image->mSDLSurface, + Client::getTempDirectory() + "/testimage1.png"); + ImageWriter::writePNG(surface, + Client::getTempDirectory() + "/testimage2.png"); + } + + logger->log("test5"); + rw = PHYSFSRWOPS_openRead( + "graphics/sprites/arrow_up.png"); + d = new Dye("S:#0000ff,00ff00,5c5cff,ff0000"); + image = d ? sdlImageHelper->load(rw, *d) + : sdlImageHelper->load(rw); + if (image) + { + logger->log("test6"); + surface = sdlImageHelper->create32BitSurface( + rect.w, rect.h); + if (surface) + { + logger->log("test7"); + SDL_gfxBlitRGBA(image->mSDLSurface, nullptr, + surface, nullptr); + ImageWriter::writePNG(image->mSDLSurface, + Client::getTempDirectory() + "/testimage3.png"); + ImageWriter::writePNG(surface, + Client::getTempDirectory() + "/testimage4.png"); + } + } + } + } + return 0; +} + int TestLauncher::testVideoDetection() { file << mTest << std::endl; diff --git a/src/test/testlauncher.h b/src/test/testlauncher.h index 389c898dd..145f11c35 100644 --- a/src/test/testlauncher.h +++ b/src/test/testlauncher.h @@ -55,6 +55,8 @@ class TestLauncher int testInternal(); + int testDye(); + int testVideoDetection(); int testBatches(); |