diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-12-27 22:43:59 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-12-27 23:15:06 +0300 |
commit | dba24b2e59eb739e73228dbcf707e943905a9e5a (patch) | |
tree | bdbcca13bb984a47fd4f1f41d0429244777e10e9 | |
parent | ef5ba77247a2860a201c4d9177c4f3479d53538a (diff) | |
download | mv-dba24b2e59eb739e73228dbcf707e943905a9e5a.tar.gz mv-dba24b2e59eb739e73228dbcf707e943905a9e5a.tar.bz2 mv-dba24b2e59eb739e73228dbcf707e943905a9e5a.tar.xz mv-dba24b2e59eb739e73228dbcf707e943905a9e5a.zip |
Fix text size if it was not power of two.
-rw-r--r-- | src/gui/sdlfont.cpp | 7 | ||||
-rw-r--r-- | src/resources/imagehelper.h | 1 | ||||
-rw-r--r-- | src/resources/openglimagehelper.cpp | 11 | ||||
-rw-r--r-- | src/resources/openglimagehelper.h | 4 | ||||
-rw-r--r-- | src/resources/sdlimagehelper.cpp | 1 | ||||
-rw-r--r-- | src/resources/sdlimagehelper.h | 1 |
6 files changed, 18 insertions, 7 deletions
diff --git a/src/gui/sdlfont.cpp b/src/gui/sdlfont.cpp index d195278fa..3ece4b849 100644 --- a/src/gui/sdlfont.cpp +++ b/src/gui/sdlfont.cpp @@ -82,6 +82,8 @@ class SDLTextChunk final SDL_Surface *surface = TTF_RenderUTF8_Blended( font, strBuf, sdlCol); + const int width = surface->w; + const int height = surface->h; if (!surface) { @@ -96,7 +98,7 @@ class SDLTextChunk final SDL_Color sdlCol2; const SDL_PixelFormat * const format = surface->format; SDL_Surface *background = imageHelper->create32BitSurface( - surface->w, surface->h); + width, height); if (!background) { img = nullptr; @@ -138,7 +140,8 @@ class SDLTextChunk final SDL_FreeSurface(surface2); surface = background; } - img = imageHelper->createTextSurface(surface, alpha); + img = imageHelper->createTextSurface( + surface, width, height, alpha); SDL_FreeSurface(surface); BLOCK_END("SDLTextChunk::generate") diff --git a/src/resources/imagehelper.h b/src/resources/imagehelper.h index 83fc3e03c..39e088aa5 100644 --- a/src/resources/imagehelper.h +++ b/src/resources/imagehelper.h @@ -67,6 +67,7 @@ class ImageHelper virtual Image *load(SDL_Surface *) A_WARN_UNUSED = 0; virtual Image *createTextSurface(SDL_Surface *tmpImage, + int width, int height, float alpha) A_WARN_UNUSED = 0; virtual int useOpenGL() A_WARN_UNUSED = 0; diff --git a/src/resources/openglimagehelper.cpp b/src/resources/openglimagehelper.cpp index badaf0223..5eae5c667 100644 --- a/src/resources/openglimagehelper.cpp +++ b/src/resources/openglimagehelper.cpp @@ -132,12 +132,13 @@ Image *OpenGLImageHelper::load(SDL_Surface *const tmpImage) } Image *OpenGLImageHelper::createTextSurface(SDL_Surface *const tmpImage, + int width, int height, const float alpha) { if (!tmpImage) return nullptr; - Image *const img = glLoad(tmpImage); + Image *const img = glLoad(tmpImage, width, height); if (img) img->setAlpha(alpha); return img; @@ -159,7 +160,7 @@ int OpenGLImageHelper::powerOfTwo(int input) const return value >= mTextureSize ? mTextureSize : value; } -Image *OpenGLImageHelper::glLoad(SDL_Surface *tmpImage) +Image *OpenGLImageHelper::glLoad(SDL_Surface *tmpImage, int width, int height) { if (!tmpImage) return nullptr; @@ -167,8 +168,10 @@ Image *OpenGLImageHelper::glLoad(SDL_Surface *tmpImage) // Flush current error flag. glGetError(); - int width = tmpImage->w; - int height = tmpImage->h; + if (!width) + width = tmpImage->w; + if (!height) + height = tmpImage->h; int realWidth = powerOfTwo(width); int realHeight = powerOfTwo(height); diff --git a/src/resources/openglimagehelper.h b/src/resources/openglimagehelper.h index 0036bf007..30737dc36 100644 --- a/src/resources/openglimagehelper.h +++ b/src/resources/openglimagehelper.h @@ -86,6 +86,7 @@ class OpenGLImageHelper final : public ImageHelper Image *load(SDL_Surface *const tmpImage) A_WARN_UNUSED; Image *createTextSurface(SDL_Surface *const tmpImage, + int width, int height, const float alpha) A_WARN_UNUSED; // OpenGL only public functions @@ -134,7 +135,8 @@ class OpenGLImageHelper final : public ImageHelper */ int powerOfTwo(int input) const A_WARN_UNUSED; - Image *glLoad(SDL_Surface *tmpImage) A_WARN_UNUSED; + Image *glLoad(SDL_Surface *tmpImage, + int width = 0, int height = 0) A_WARN_UNUSED; static int mUseOpenGL; static int mTextureSize; diff --git a/src/resources/sdlimagehelper.cpp b/src/resources/sdlimagehelper.cpp index 82e476b8c..abc9ca068 100644 --- a/src/resources/sdlimagehelper.cpp +++ b/src/resources/sdlimagehelper.cpp @@ -129,6 +129,7 @@ Image *SDLImageHelper::load(SDL_Surface *const tmpImage) } Image *SDLImageHelper::createTextSurface(SDL_Surface *const tmpImage, + int width, int height, const float alpha) { if (!tmpImage) diff --git a/src/resources/sdlimagehelper.h b/src/resources/sdlimagehelper.h index a0e19ca39..b37afaf2d 100644 --- a/src/resources/sdlimagehelper.h +++ b/src/resources/sdlimagehelper.h @@ -65,6 +65,7 @@ class SDLImageHelper final : public ImageHelper Image *load(SDL_Surface *const tmpImage) A_WARN_UNUSED; Image *createTextSurface(SDL_Surface *const tmpImage, + int width, int height, const float alpha) A_WARN_UNUSED; static void SDLSetEnableAlphaCache(const bool n) |