summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-03-10 15:07:37 +0300
committerAndrei Karas <akaras@inbox.ru>2014-03-10 15:07:37 +0300
commit9105408ba52b7639d8553855e47ec452d2e22e17 (patch)
tree83581187cb76a946d8726f887e911f9495158974
parent57bdc5445f308a92b416916300f853cb729296e3 (diff)
downloadmanaplus-9105408ba52b7639d8553855e47ec452d2e22e17.tar.gz
manaplus-9105408ba52b7639d8553855e47ec452d2e22e17.tar.bz2
manaplus-9105408ba52b7639d8553855e47ec452d2e22e17.tar.xz
manaplus-9105408ba52b7639d8553855e47ec452d2e22e17.zip
remove duplicate code from imagehelper.
-rw-r--r--src/resources/imagehelper.cpp82
-rw-r--r--src/resources/imagehelper.h9
-rw-r--r--src/resources/sdl2imagehelper.cpp80
-rw-r--r--src/resources/sdl2imagehelper.h3
-rw-r--r--src/resources/sdl2softwareimagehelper.cpp81
-rw-r--r--src/resources/sdl2softwareimagehelper.h3
-rw-r--r--src/resources/sdlimagehelper.cpp18
-rw-r--r--src/resources/sdlimagehelper.h3
-rw-r--r--src/resources/surfaceimagehelper.cpp81
-rw-r--r--src/resources/surfaceimagehelper.h3
10 files changed, 85 insertions, 278 deletions
diff --git a/src/resources/imagehelper.cpp b/src/resources/imagehelper.cpp
index ff7c196c4..0fbc04776 100644
--- a/src/resources/imagehelper.cpp
+++ b/src/resources/imagehelper.cpp
@@ -25,6 +25,8 @@
#include "logger.h"
#include "main.h"
+#include "resources/dye.h"
+
#include "utils/sdlcheckutils.h"
#include <SDL_image.h>
@@ -52,6 +54,68 @@ Image *ImageHelper::load(SDL_RWops *const rw) const
return image;
}
+Image *ImageHelper::load(SDL_RWops *const rw, Dye const &dye) const
+{
+ SDL_Surface *const tmpImage = loadPng(rw);
+ if (!tmpImage)
+ {
+ logger->log("Error, image load failed: %s", IMG_GetError());
+ return nullptr;
+ }
+
+ SDL_PixelFormat rgba;
+ rgba.palette = nullptr;
+ rgba.BitsPerPixel = 32;
+ rgba.BytesPerPixel = 4;
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+ rgba.Rmask = 0x000000FF;
+ rgba.Gmask = 0x0000FF00;
+ rgba.Bmask = 0x00FF0000;
+ rgba.Amask = 0xFF000000;
+#else
+ rgba.Rmask = 0xFF000000;
+ rgba.Gmask = 0x00FF0000;
+ rgba.Bmask = 0x0000FF00;
+ rgba.Amask = 0x000000FF;
+#endif
+
+ SDL_Surface *const surf = MSDL_ConvertSurface(
+ tmpImage, &rgba, SDL_SWSURFACE);
+ MSDL_FreeSurface(tmpImage);
+
+ uint32_t *pixels = static_cast<uint32_t *>(surf->pixels);
+ const int type = dye.getType();
+
+ switch (type)
+ {
+ case 1:
+ {
+ const DyePalette *const pal = dye.getSPalete();
+ if (pal)
+ pal->replaceSColor(pixels, surf->w * surf->h);
+ break;
+ }
+ case 2:
+ {
+ const DyePalette *const pal = dye.getAPalete();
+ if (pal)
+ pal->replaceAColor(pixels, surf->w * surf->h);
+ break;
+ }
+ case 0:
+ default:
+ {
+ dye.normalDye(pixels, surf->w * surf->h);
+ break;
+ }
+ }
+
+ Image *const image = load(surf);
+ MSDL_FreeSurface(surf);
+ return image;
+}
+
SDL_Surface* ImageHelper::convertTo32Bit(SDL_Surface *const tmpImage)
{
if (!tmpImage)
@@ -138,3 +202,21 @@ SDL_Surface *ImageHelper::loadPng(SDL_RWops *const rw)
SDL_RWclose(rw);
return nullptr;
}
+
+SDL_Surface *ImageHelper::create32BitSurface(int width, int height) const
+{
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+ const int rmask = 0xff000000;
+ const int gmask = 0x00ff0000;
+ const int bmask = 0x0000ff00;
+ const int amask = 0x000000ff;
+#else
+ const int rmask = 0x000000ff;
+ const int gmask = 0x0000ff00;
+ const int bmask = 0x00ff0000;
+ const int amask = 0xff000000;
+#endif
+
+ return MSDL_CreateRGBSurface(SDL_SWSURFACE,
+ width, height, 32, rmask, gmask, bmask, amask);
+}
diff --git a/src/resources/imagehelper.h b/src/resources/imagehelper.h
index 2e3b96771..e7ec4cfad 100644
--- a/src/resources/imagehelper.h
+++ b/src/resources/imagehelper.h
@@ -58,19 +58,16 @@ class ImageHelper
*/
Image *load(SDL_RWops *const rw) const A_WARN_UNUSED;
-#ifdef __GNUC__
virtual Image *load(SDL_RWops *const rw, Dye
- const &dye) const A_WARN_UNUSED = 0;
+ const &dye) const A_WARN_UNUSED;
+#ifdef __GNUC__
virtual Image *load(SDL_Surface *const) const A_WARN_UNUSED = 0;
virtual Image *createTextSurface(SDL_Surface *const tmpImage,
const int width, const int height,
float alpha) const A_WARN_UNUSED = 0;
#else
- virtual Image *load(SDL_RWops *rw, Dye const &dye) const A_WARN_UNUSED
- { return nullptr; }
-
virtual Image *load(SDL_Surface *) const A_WARN_UNUSED
{ return nullptr; }
@@ -85,7 +82,7 @@ class ImageHelper
static void dumpSurfaceFormat(const SDL_Surface *const image);
virtual SDL_Surface *create32BitSurface(int width, int height)
- const A_WARN_UNUSED = 0;
+ const A_WARN_UNUSED;
static void setEnableAlpha(const bool n)
{ mEnableAlpha = n; }
diff --git a/src/resources/sdl2imagehelper.cpp b/src/resources/sdl2imagehelper.cpp
index 80110735f..b31622e51 100644
--- a/src/resources/sdl2imagehelper.cpp
+++ b/src/resources/sdl2imagehelper.cpp
@@ -43,68 +43,6 @@ bool SDLImageHelper::mEnableAlphaCache = false;
SDL_Renderer *SDLImageHelper::mRenderer = nullptr;
#endif
-Image *SDLImageHelper::load(SDL_RWops *const rw, Dye const &dye) const
-{
- SDL_Surface *const tmpImage = loadPng(rw);
- if (!tmpImage)
- {
- logger->log("Error, image load failed: %s", IMG_GetError());
- return nullptr;
- }
-
- SDL_PixelFormat rgba;
- rgba.palette = nullptr;
- rgba.BitsPerPixel = 32;
- rgba.BytesPerPixel = 4;
-
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
- rgba.Rmask = 0x000000FF;
- rgba.Gmask = 0x0000FF00;
- rgba.Bmask = 0x00FF0000;
- rgba.Amask = 0xFF000000;
-#else
- rgba.Rmask = 0xFF000000;
- rgba.Gmask = 0x00FF0000;
- rgba.Bmask = 0x0000FF00;
- rgba.Amask = 0x000000FF;
-#endif
-
- SDL_Surface *const surf = MSDL_ConvertSurface(
- tmpImage, &rgba, SDL_SWSURFACE);
- MSDL_FreeSurface(tmpImage);
-
- uint32_t *pixels = static_cast<uint32_t *>(surf->pixels);
- const int type = dye.getType();
-
- switch (type)
- {
- case 1:
- {
- const DyePalette *const pal = dye.getSPalete();
- if (pal)
- pal->replaceSColor(pixels, surf->w * surf->h);
- break;
- }
- case 2:
- {
- const DyePalette *const pal = dye.getAPalete();
- if (pal)
- pal->replaceAColor(pixels, surf->w * surf->h);
- break;
- }
- case 0:
- default:
- {
- dye.normalDye(pixels, surf->w * surf->h);
- break;
- }
- }
-
- Image *const image = load(surf);
- MSDL_FreeSurface(surf);
- return image;
-}
-
Image *SDLImageHelper::load(SDL_Surface *const tmpImage) const
{
return _SDLload(tmpImage);
@@ -145,24 +83,6 @@ Image *SDLImageHelper::_SDLload(SDL_Surface *tmpImage) const
return new Image(texture, tmpImage->w, tmpImage->h);
}
-SDL_Surface *SDLImageHelper::create32BitSurface(int width, int height) const
-{
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
- const int rmask = 0xff000000;
- const int gmask = 0x00ff0000;
- const int bmask = 0x0000ff00;
- const int amask = 0x000000ff;
-#else
- const int rmask = 0x000000ff;
- const int gmask = 0x0000ff00;
- const int bmask = 0x00ff0000;
- const int amask = 0xff000000;
-#endif
-
- return MSDL_CreateRGBSurface(SDL_SWSURFACE,
- width, height, 32, rmask, gmask, bmask, amask);
-}
-
int SDLImageHelper::combineSurface(SDL_Surface *restrict const src,
SDL_Rect *restrict const srcrect,
SDL_Surface *restrict const dst,
diff --git a/src/resources/sdl2imagehelper.h b/src/resources/sdl2imagehelper.h
index 70ea9c12f..44f81c433 100644
--- a/src/resources/sdl2imagehelper.h
+++ b/src/resources/sdl2imagehelper.h
@@ -83,9 +83,6 @@ class SDLImageHelper final : public ImageHelper
static SDL_Surface* SDLDuplicateSurface(SDL_Surface *const tmpImage)
A_WARN_UNUSED;
- SDL_Surface *create32BitSurface(int width, int height) const
- override final;
-
static int combineSurface(SDL_Surface *restrict const src,
SDL_Rect *restrict const srcrect,
SDL_Surface *restrict const dst,
diff --git a/src/resources/sdl2softwareimagehelper.cpp b/src/resources/sdl2softwareimagehelper.cpp
index 3e8802f41..fa0a51606 100644
--- a/src/resources/sdl2softwareimagehelper.cpp
+++ b/src/resources/sdl2softwareimagehelper.cpp
@@ -41,68 +41,6 @@
bool SDL2SoftwareImageHelper::mEnableAlphaCache = false;
SDL_PixelFormat *SDL2SoftwareImageHelper::mFormat = nullptr;
-Image *SDL2SoftwareImageHelper::load(SDL_RWops *const rw, Dye const &dye) const
-{
- SDL_Surface *const tmpImage = loadPng(rw);
- if (!tmpImage)
- {
- logger->log("Error, image load failed: %s", IMG_GetError());
- return nullptr;
- }
-
- SDL_PixelFormat rgba;
- rgba.palette = nullptr;
- rgba.BitsPerPixel = 32;
- rgba.BytesPerPixel = 4;
-
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
- rgba.Rmask = 0x000000FF;
- rgba.Gmask = 0x0000FF00;
- rgba.Bmask = 0x00FF0000;
- rgba.Amask = 0xFF000000;
-#else
- rgba.Rmask = 0xFF000000;
- rgba.Gmask = 0x00FF0000;
- rgba.Bmask = 0x0000FF00;
- rgba.Amask = 0x000000FF;
-#endif
-
- SDL_Surface *const surf = MSDL_ConvertSurface(
- tmpImage, &rgba, SDL_SWSURFACE);
- MSDL_FreeSurface(tmpImage);
-
- uint32_t *pixels = static_cast<uint32_t *>(surf->pixels);
- const int type = dye.getType();
-
- switch (type)
- {
- case 1:
- {
- const DyePalette *const pal = dye.getSPalete();
- if (pal)
- pal->replaceSColor(pixels, surf->w * surf->h);
- break;
- }
- case 2:
- {
- const DyePalette *const pal = dye.getAPalete();
- if (pal)
- pal->replaceAColor(pixels, surf->w * surf->h);
- break;
- }
- case 0:
- default:
- {
- dye.normalDye(pixels, surf->w * surf->h);
- break;
- }
- }
-
- Image *const image = load(surf);
- MSDL_FreeSurface(surf);
- return image;
-}
-
Image *SDL2SoftwareImageHelper::load(SDL_Surface *const tmpImage) const
{
return _SDLload(tmpImage);
@@ -140,25 +78,6 @@ Image *SDL2SoftwareImageHelper::_SDLload(SDL_Surface *tmpImage) const
return new Image(image, false, nullptr);
}
-SDL_Surface *SDL2SoftwareImageHelper::create32BitSurface(int width,
- int height) const
-{
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
- const int rmask = 0xff000000;
- const int gmask = 0x00ff0000;
- const int bmask = 0x0000ff00;
- const int amask = 0x000000ff;
-#else
- const int rmask = 0x000000ff;
- const int gmask = 0x0000ff00;
- const int bmask = 0x00ff0000;
- const int amask = 0xff000000;
-#endif
-
- return MSDL_CreateRGBSurface(SDL_SWSURFACE,
- width, height, 32, rmask, gmask, bmask, amask);
-}
-
int SDL2SoftwareImageHelper::combineSurface(SDL_Surface *restrict const src,
SDL_Rect *restrict const srcrect,
SDL_Surface *restrict const dst,
diff --git a/src/resources/sdl2softwareimagehelper.h b/src/resources/sdl2softwareimagehelper.h
index 210b0f8b1..01d6428b5 100644
--- a/src/resources/sdl2softwareimagehelper.h
+++ b/src/resources/sdl2softwareimagehelper.h
@@ -83,9 +83,6 @@ class SDL2SoftwareImageHelper final : public ImageHelper
static SDL_Surface* SDLDuplicateSurface(SDL_Surface *const tmpImage)
A_WARN_UNUSED;
- SDL_Surface *create32BitSurface(int width,
- int height) const override final;
-
static int combineSurface(SDL_Surface *restrict const src,
SDL_Rect *restrict const srcrect,
SDL_Surface *restrict const dst,
diff --git a/src/resources/sdlimagehelper.cpp b/src/resources/sdlimagehelper.cpp
index cced7ad8a..7b9aeda5e 100644
--- a/src/resources/sdlimagehelper.cpp
+++ b/src/resources/sdlimagehelper.cpp
@@ -276,24 +276,6 @@ Image *SDLImageHelper::_SDLload(SDL_Surface *tmpImage) const
return new Image(image, hasAlpha, alphaChannel);
}
-SDL_Surface *SDLImageHelper::create32BitSurface(int width, int height) const
-{
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
- const int rmask = 0xff000000;
- const int gmask = 0x00ff0000;
- const int bmask = 0x0000ff00;
- const int amask = 0x000000ff;
-#else
- const int rmask = 0x000000ff;
- const int gmask = 0x0000ff00;
- const int bmask = 0x00ff0000;
- const int amask = 0xff000000;
-#endif
-
- return MSDL_CreateRGBSurface(SDL_SWSURFACE,
- width, height, 32, rmask, gmask, bmask, amask);
-}
-
int SDLImageHelper::combineSurface(SDL_Surface *restrict const src,
SDL_Rect *restrict const srcrect,
SDL_Surface *restrict const dst,
diff --git a/src/resources/sdlimagehelper.h b/src/resources/sdlimagehelper.h
index 725b34ebc..42433ec55 100644
--- a/src/resources/sdlimagehelper.h
+++ b/src/resources/sdlimagehelper.h
@@ -84,9 +84,6 @@ class SDLImageHelper final : public ImageHelper
static SDL_Surface* SDLDuplicateSurface(SDL_Surface *const tmpImage)
A_WARN_UNUSED;
- SDL_Surface *create32BitSurface(int width,
- int height) const override final;
-
static int combineSurface(SDL_Surface *restrict const src,
SDL_Rect *restrict const srcrect,
SDL_Surface *restrict const dst,
diff --git a/src/resources/surfaceimagehelper.cpp b/src/resources/surfaceimagehelper.cpp
index 740c1c41d..ec7d9af9b 100644
--- a/src/resources/surfaceimagehelper.cpp
+++ b/src/resources/surfaceimagehelper.cpp
@@ -40,68 +40,6 @@
bool SurfaceImageHelper::mEnableAlphaCache = false;
-Image *SurfaceImageHelper::load(SDL_RWops *const rw, Dye const &dye) const
-{
- SDL_Surface *const tmpImage = loadPng(rw);
- if (!tmpImage)
- {
- logger->log("Error, image load failed: %s", IMG_GetError());
- return nullptr;
- }
-
- SDL_PixelFormat rgba;
- rgba.palette = nullptr;
- rgba.BitsPerPixel = 32;
- rgba.BytesPerPixel = 4;
-
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
- rgba.Rmask = 0x000000FF;
- rgba.Gmask = 0x0000FF00;
- rgba.Bmask = 0x00FF0000;
- rgba.Amask = 0xFF000000;
-#else
- rgba.Rmask = 0xFF000000;
- rgba.Gmask = 0x00FF0000;
- rgba.Bmask = 0x0000FF00;
- rgba.Amask = 0x000000FF;
-#endif
-
- SDL_Surface *const surf = MSDL_ConvertSurface(
- tmpImage, &rgba, SDL_SWSURFACE);
- MSDL_FreeSurface(tmpImage);
-
- uint32_t *pixels = static_cast<uint32_t *>(surf->pixels);
- const int type = dye.getType();
-
- switch (type)
- {
- case 1:
- {
- const DyePalette *const pal = dye.getSPalete();
- if (pal)
- pal->replaceSColor(pixels, surf->w * surf->h);
- break;
- }
- case 2:
- {
- const DyePalette *const pal = dye.getAPalete();
- if (pal)
- pal->replaceAColor(pixels, surf->w * surf->h);
- break;
- }
- case 0:
- default:
- {
- dye.normalDye(pixels, surf->w * surf->h);
- break;
- }
- }
-
- Image *const image = load(surf);
- MSDL_FreeSurface(surf);
- return image;
-}
-
Image *SurfaceImageHelper::load(SDL_Surface *const tmpImage) const
{
return _SDLload(tmpImage);
@@ -148,25 +86,6 @@ RenderType SurfaceImageHelper::useOpenGL() const
return RENDER_SOFTWARE;
}
-SDL_Surface *SurfaceImageHelper::create32BitSurface(int width,
- int height) const
-{
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
- const int rmask = 0xff000000;
- const int gmask = 0x00ff0000;
- const int bmask = 0x0000ff00;
- const int amask = 0x000000ff;
-#else
- const int rmask = 0x000000ff;
- const int gmask = 0x0000ff00;
- const int bmask = 0x00ff0000;
- const int amask = 0xff000000;
-#endif
-
- return MSDL_CreateRGBSurface(SDL_SWSURFACE,
- width, height, 32, rmask, gmask, bmask, amask);
-}
-
int SurfaceImageHelper::combineSurface(SDL_Surface *restrict const src,
SDL_Rect *restrict const srcrect,
SDL_Surface *restrict const dst,
diff --git a/src/resources/surfaceimagehelper.h b/src/resources/surfaceimagehelper.h
index fb3649f06..b526c9b64 100644
--- a/src/resources/surfaceimagehelper.h
+++ b/src/resources/surfaceimagehelper.h
@@ -91,9 +91,6 @@ class SurfaceImageHelper final : public ImageHelper
static SDL_Surface* SDLDuplicateSurface(SDL_Surface *const tmpImage)
A_WARN_UNUSED;
- SDL_Surface *create32BitSurface(int width,
- int height) const override final;
-
static int combineSurface(SDL_Surface *restrict const src,
SDL_Rect *restrict const srcrect,
SDL_Surface *restrict const dst,