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
39
InfoBoxLine
(
char
format_char,
const
std::string& text);
40
41
void
draw(
DrawingContext
& context,
const
Rectf
& bbox,
int
layer);
42
float
get_height()
const
;
43
44
static
std::vector<std::unique_ptr<InfoBoxLine> > split(
const
std::string& text,
float
width);
45
46
static
bool
is_valid_format_char(
char
format_char)
47
{
48
switch
(format_char)
49
{
50
case
' '
:
51
case
'-'
:
52
case
'*'
:
53
case
'\t'
:
54
case
'#'
:
55
case
'!'
:
56
return
true
;
57
default
:
58
return
false
;
59
}
60
}
61
62
private
:
63
InfoBoxLine::LineType lineType;
64
FontPtr font;
65
Color
color;
66
std::string text;
67
SurfacePtr image;
68
69
private
:
70
InfoBoxLine
(
const
InfoBoxLine
&) =
delete
;
71
InfoBoxLine
& operator=(
const
InfoBoxLine
&) =
delete
;
72
};
73
74
#endif
75
76
/* EOF */
Rectf
Definition:
rectf.hpp:29
InfoBoxLine
Helper class for InfoBox: Represents a line of text.
Definition:
info_box_line.hpp:34
Color
Definition:
color.hpp:25
DrawingContext
This class provides functions for drawing things on screen.
Definition:
drawing_context.hpp:42
Generated by
1.8.12