Mercurial > fife-parpg
view engine/core/gui/base/gui_font.cpp @ 46:90005975cdbb
* Final LGPL switch step by adjusting the file headers
* Remaining issues (just slightly related to the unittest switch):
* No working unittest solution for msvc2005 yet
* Unittests not working with mingw + scons either though this seems hard to impossible to fix without an expert in this field
* sample_unit_test.cpp would need to get modified for unittest++; it still contains the old boost unittest code
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 13 Jul 2008 11:05:12 +0000 |
parents | 4a0efb7baf70 |
children | 756b895e1dab |
line wrap: on
line source
/*************************************************************************** * Copyright (C) 2005-2008 by the FIFE team * * http://www.fifengine.de * * This file is part of FIFE. * * * * FIFE is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library 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 * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ // Standard C++ library includes // 3rd party library includes #include <guichan.hpp> // FIFE includes // These includes are split up in two parts, separated by one empty line // First block: files included from the FIFE root src directory // Second block: files included from the same folder #include "util/structures/rect.h" #include "video/image.h" #include "video/renderbackend.h" #include "gui_font.h" namespace FIFE { GuiFont::GuiFont(AbstractFont* font): m_font(font) { assert(font); } GuiFont::~GuiFont() { delete m_font; } int GuiFont::getStringIndexAt(const std::string& text, int x) { return m_font->getStringIndexAt(text, x); } void GuiFont::drawString(gcn::Graphics* graphics, const std::string& text, int x, int y) { if (text == "") { return; } int yoffset = getRowSpacing() / 2; const gcn::ClipRectangle& clip = graphics->getCurrentClipArea(); FIFE::Rect rect; rect.x = x + clip.xOffset; rect.y = y + clip.yOffset + yoffset; rect.w = getWidth(text); rect.h = getHeight(); if (!rect.intersects(Rect(clip.x,clip.y,clip.width,clip.height)) ) { return; } Image* image = getAsImage(text); image->render(rect); } void GuiFont::drawMultiLineString(gcn::Graphics* graphics, const std::string& text, int x, int y) { if (text == "") { return; } int yoffset = getRowSpacing() / 2; const gcn::ClipRectangle& clip = graphics->getCurrentClipArea(); Image* image = getAsImageMultiline(text); FIFE::Rect rect; rect.x = x + clip.xOffset; rect.y = y + clip.yOffset + yoffset; rect.w = image->getWidth(); rect.h = image->getHeight(); if (!rect.intersects(Rect(clip.x,clip.y,clip.width,clip.height)) ) { return; } image->render(rect); } void GuiFont::setRowSpacing (int spacing) { m_font->setRowSpacing(spacing); } int GuiFont::getRowSpacing() const { return m_font->getRowSpacing(); } void GuiFont::setGlyphSpacing(int spacing) { m_font->setGlyphSpacing(spacing); } int GuiFont::getGlyphSpacing() const { return m_font->getGlyphSpacing(); } void GuiFont::setAntiAlias(bool antiAlias) { m_font->setAntiAlias(antiAlias); } bool GuiFont::isAntiAlias() { return m_font->isAntiAlias(); } Image* GuiFont::getAsImage(const std::string& text) { return m_font->getAsImage(text); } Image* GuiFont::getAsImageMultiline(const std::string& text) { return m_font->getAsImageMultiline(text); } std::string GuiFont::splitTextToWidth (const std::string& text, int render_width) { return m_font->splitTextToWidth(text,render_width); } void GuiFont::setColor(uint8_t r,uint8_t g,uint8_t b) { m_font->setColor(r, g, b); } SDL_Color GuiFont::getColor() const { return m_font->getColor(); } int GuiFont::getWidth(const std::string& text) const { return m_font->getWidth(text); } int GuiFont::getHeight() const { return m_font->getHeight(); } }