From b9a66e4f65099d2f18776b7494c4f9b1f655e9ca Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Fri, 14 Aug 2015 20:47:53 +1000 Subject: [PATCH] Reverted templated TextBox, too much unnecessary complexity --- src/common/text_box.cpp | 56 +++++++++++++++++++++++++++++++++++++++++ src/common/text_box.hpp | 50 +++--------------------------------- 2 files changed, 60 insertions(+), 46 deletions(-) create mode 100644 src/common/text_box.cpp diff --git a/src/common/text_box.cpp b/src/common/text_box.cpp new file mode 100644 index 0000000..4fdefa4 --- /dev/null +++ b/src/common/text_box.cpp @@ -0,0 +1,56 @@ +/* Copyright: (c) Kayne Ruse 2013-2015 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. +*/ +#include "text_box.hpp" + +#include + +TextBox::TextBox() { + // +} + +TextBox::~TextBox() { + // +} + +void TextBox::DrawTo(SDL_Renderer* renderer, int posX, int posY, int pointSize) { + for (std::list::iterator it = lineList.begin(); it != lineList.end(); it++) { + it->DrawTo(renderer, posX, posY); + posY -= pointSize; + } +} + +void TextBox::PushLine(SDL_Renderer* renderer, TTF_Font* font, std::string str, SDL_Color color) { + lineList.emplace_front(renderer, font, str, color); +} + +void TextBox::PopLine(int num) { + //prevent underflow + num < lineList.size() ? num : lineList.size(); + + for (int i = 0; i < num; ++i) { + lineList.pop_back(); + } +} + +void TextBox::ClearLines() { + lineList.clear(); +} diff --git a/src/common/text_box.hpp b/src/common/text_box.hpp index c4992b2..89d90a6 100644 --- a/src/common/text_box.hpp +++ b/src/common/text_box.hpp @@ -29,22 +29,10 @@ #include #include -/* DOCS: TextBox is a templated class to allow additional data, read more - * As long as the class given as an argument meets these requirements, this - * should work: - * - * Constructor(SDL_Renderer*, TTF_Font*, std::string, SDL_Color) - * DrawTo(SDL_Renderer*, int posX, int posY) - * - * The class should also clean up after itself. -*/ - -//template class definition -template class TextBox { public: - TextBox() = default; - ~TextBox() = default; + TextBox(); + ~TextBox(); void DrawTo(SDL_Renderer*, int posX, int posY, int pointSize); @@ -53,35 +41,5 @@ public: void ClearLines(); private: - std::list lineList; -}; - -//method definitions -template -void TextBox::DrawTo(SDL_Renderer* renderer, int posX, int posY, int pointSize) { - //NOTE: pointSize should match the font's size, but may be negative to give a dialog effect - for (typename std::list::iterator it = lineList.begin(); it != lineList.end(); it++) { - it->DrawTo(renderer, posX, posY); - posY += pointSize; - } -} - -template -void TextBox::PushLine(SDL_Renderer* renderer, TTF_Font* font, std::string str, SDL_Color color) { - lineList.emplace_front(renderer, font, str, color); -} - -template -void TextBox::PopLine(int num) { - //prevent underflow - num < lineList.size() ? num : lineList.size(); - - for (int i = 0; i < num; ++i) { - lineList.pop_back(); - } -} - -template -void TextBox::ClearLines() { - lineList.clear(); -} + std::list lineList; +}; \ No newline at end of file