summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/resources/image.h1
-rw-r--r--src/test/testlauncher.cpp63
-rw-r--r--src/test/testlauncher.h2
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();