summaryrefslogtreecommitdiff
path: root/src/gui/fonts/textchunk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/fonts/textchunk.cpp')
-rw-r--r--src/gui/fonts/textchunk.cpp203
1 files changed, 0 insertions, 203 deletions
diff --git a/src/gui/fonts/textchunk.cpp b/src/gui/fonts/textchunk.cpp
deleted file mode 100644
index 22dcd18dc..000000000
--- a/src/gui/fonts/textchunk.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2009 Aethyra Development Team
- * Copyright (C) 2011-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/>.
- */
-
-#include "gui/fonts/textchunk.h"
-
-#include "sdlshared.h"
-
-#include "gui/fonts/font.h"
-
-#include "resources/surfaceimagehelper.h"
-
-#include "resources/image/image.h"
-
-#include "utils/delete2.h"
-#include "utils/sdlcheckutils.h"
-#include "utils/stringutils.h"
-
-#include "debug.h"
-
-namespace
-{
- const int OUTLINE_SIZE = 1;
-} // namespace
-
-char *restrict strBuf = nullptr;
-
-#ifdef UNITTESTS
-int textChunkCnt = 0;
-#endif // UNITTESTS
-
-TextChunk::TextChunk() :
- img(nullptr),
- textFont(nullptr),
- text(),
- color(),
- color2(),
- prev(nullptr),
- next(nullptr)
-{
-#ifdef UNITTESTS
- textChunkCnt ++;
-#endif // UNITTESTS
-}
-
-TextChunk::TextChunk(const std::string &restrict text0,
- const Color &restrict color0,
- const Color &restrict color1,
- Font *restrict const font) :
- img(nullptr),
- textFont(font),
- text(text0),
- color(color0),
- color2(color1),
- prev(nullptr),
- next(nullptr)
-{
-#ifdef UNITTESTS
- textChunkCnt ++;
-#endif // UNITTESTS
-}
-
-TextChunk::~TextChunk()
-{
- delete2(img);
-#ifdef UNITTESTS
- textChunkCnt --;
-#endif // UNITTESTS
-}
-
-bool TextChunk::operator==(const TextChunk &restrict chunk) const
-{
- return chunk.text == text && chunk.color == color
- && chunk.color2 == color2;
-}
-
-void TextChunk::generate(TTF_Font *restrict const font,
- const float alpha)
-{
- BLOCK_START("TextChunk::generate")
- SDL_Color sdlCol;
- sdlCol.b = CAST_U8(color.b);
- sdlCol.r = CAST_U8(color.r);
- sdlCol.g = CAST_U8(color.g);
-#ifdef USE_SDL2
- sdlCol.a = 255;
-#else // USE_SDL2
-
- sdlCol.unused = 0;
-#endif // USE_SDL2
-
- getSafeUtf8String(text, strBuf);
-
- SDL_Surface *surface = MTTF_RenderUTF8_Blended(
- font, strBuf, sdlCol);
-
- if (surface == nullptr)
- {
- img = nullptr;
- BLOCK_END("TextChunk::generate")
- return;
- }
-
- const int width = surface->w;
- const int height = surface->h;
-
- if (color.r != color2.r || color.g != color2.g
- || color.b != color2.b)
- { // outlining
- SDL_Color sdlCol2;
- SDL_Surface *const background = imageHelper->create32BitSurface(
- width, height);
- if (background == nullptr)
- {
- img = nullptr;
- MSDL_FreeSurface(surface);
- BLOCK_END("TextChunk::generate")
- return;
- }
- sdlCol2.b = CAST_U8(color2.b);
- sdlCol2.r = CAST_U8(color2.r);
- sdlCol2.g = CAST_U8(color2.g);
-#ifdef USE_SDL2
- sdlCol2.a = 255;
-#else // USE_SDL2
-
- sdlCol2.unused = 0;
-#endif // USE_SDL2
-
- SDL_Surface *const surface2 = MTTF_RenderUTF8_Blended(
- font, strBuf, sdlCol2);
- if (surface2 == nullptr)
- {
- img = nullptr;
- MSDL_FreeSurface(surface);
- BLOCK_END("TextChunk::generate")
- return;
- }
- SDL_Rect rect =
- {
- OUTLINE_SIZE,
- 0,
- static_cast<Uint16>(surface->w),
- static_cast<Uint16>(surface->h)
- };
- SurfaceImageHelper::combineSurface(surface2, nullptr,
- background, &rect);
- rect.x = -OUTLINE_SIZE;
- SurfaceImageHelper::combineSurface(surface2, nullptr,
- background, &rect);
- rect.x = 0;
- rect.y = -OUTLINE_SIZE;
- SurfaceImageHelper::combineSurface(surface2, nullptr,
- background, &rect);
- rect.y = OUTLINE_SIZE;
- SurfaceImageHelper::combineSurface(surface2, nullptr,
- background, &rect);
- rect.x = 0;
- rect.y = 0;
- SurfaceImageHelper::combineSurface(surface, nullptr,
- background, &rect);
- MSDL_FreeSurface(surface);
- MSDL_FreeSurface(surface2);
- surface = background;
- }
- img = imageHelper->createTextSurface(
- surface, width, height, alpha);
- MSDL_FreeSurface(surface);
-
- BLOCK_END("TextChunk::generate")
-}
-
-void TextChunk::deleteImage()
-{
- if (textFont != nullptr)
- {
- textFont->insertChunk(this);
- img = nullptr;
- }
- else
- {
- delete2(img);
- }
-}