1// SuperTux
2// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
3// Ingo Ruhnke <grumbel@gmail.com>
4//
5// This program is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18#include "video/font.hpp"
19
20std::string
21Font::wrap_to_chars(const std::string& s, int line_length, std::string* overflow)
22{
23 // if text is already smaller, return full text
24 if (static_cast<int>(s.length()) <= line_length) {
25 if (overflow) *overflow = "";
26 return s;
27 }
28
29 // if we can find a whitespace character to break at, return text up to this character
30 int i = line_length;
31 while ((i > 0) && (s[i] != ' ')) i--;
32 if (i > 0) {
33 if (overflow) *overflow = s.substr(i+1);
34 return s.substr(0, i);
35 }
36
37 // FIXME: wrap at line_length, taking care of multibyte characters
38 if (overflow) *overflow = "";
39 return s;
40}
41
42/* EOF */
43