supertux
src
supertux
info_box_line.hpp
1
// SuperTux
2
// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
3
//
4
// This program is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// This program is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17
#ifndef HEADER_SUPERTUX_SUPERTUX_INFO_BOX_LINE_HPP
18
#define HEADER_SUPERTUX_SUPERTUX_INFO_BOX_LINE_HPP
19
20
#include <string>
21
#include <vector>
22
#include <memory>
23
24
#include "video/color.hpp"
25
#include "video/font_ptr.hpp"
26
#include "video/surface_ptr.hpp"
27
28
class
DrawingContext
;
29
class
Rectf
;
30
34
class
InfoBoxLine
final
35
{
36
public
:
37
enum
LineType { NORMAL, NORMAL_LEFT, SMALL, HEADING, REFERENCE, IMAGE};
38
enum
LineAlignment { LEFT, CENTER, RIGHT };
39
40
InfoBoxLine
(
char
format_char,
const
std::string& text);
41
42
void
draw(
DrawingContext
& context,
const
Rectf
& bbox,
int
layer, LineAlignment alignment = CENTER);
43
float
get_height()
const
;
44
45
static
std::vector<std::unique_ptr<InfoBoxLine> > split(
const
std::string& text,
float
width);
46
47
static
bool
is_valid_format_char(
char
format_char)
48
{
49
switch
(format_char)
50
{
51
case
' '
:
52
case
'-'
:
53
case
'*'
:
54
case
'\t'
:
55
case
'#'
:
56
case
'!'
:
57
return
true
;
58
default
:
59
return
false
;
60
}
61
}
62
63
private
:
64
InfoBoxLine::LineType lineType;
65
FontPtr font;
66
Color
color;
67
std::string text;
68
SurfacePtr image;
69
70
private
:
71
InfoBoxLine
(
const
InfoBoxLine
&) =
delete
;
72
InfoBoxLine
& operator=(
const
InfoBoxLine
&) =
delete
;
73
};
74
75
#endif
76
77
/* EOF */
Rectf
Definition:
rectf.hpp:31
InfoBoxLine
Helper class for InfoBox: Represents a line of text.
Definition:
info_box_line.hpp:34
Color
Definition:
color.hpp:26
DrawingContext
This class provides functions for drawing things on screen.
Definition:
drawing_context.hpp:42
Generated by
1.8.13