libsub
 All Classes Files Functions Variables
subtitle.h
1 /*
2  Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
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 2 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, write to the Free Software
16  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
20 #ifndef LIBSUB_SUBTITLE_H
21 #define LIBSUB_SUBTITLE_H
22 
23 #include "colour.h"
24 #include "vertical_reference.h"
25 #include "effect.h"
26 #include "font_size.h"
27 #include "vertical_position.h"
28 #include "raw_subtitle.h"
29 #include <boost/optional.hpp>
30 #include <string>
31 #include <list>
32 
33 namespace sub {
34 
40 class Block
41 {
42 public:
43  Block ()
44  : colour (1, 1, 1)
45  , bold (false)
46  , italic (false)
47  , underline (false)
48  {}
49 
51  Block (RawSubtitle s);
52 
54  std::string text;
55  boost::optional<std::string> font;
56 
59 
60  boost::optional<Effect> effect;
61  boost::optional<Colour> effect_colour;
62 
63  Colour colour;
64  bool bold;
65  bool italic;
66  bool underline;
67 };
68 
74 class Line
75 {
76 public:
77  Line () {}
78 
80  Line (RawSubtitle s);
81 
84 
85  std::list<Block> blocks;
86 
87  bool same_metadata (RawSubtitle) const;
88 };
89 
96 class Subtitle
97 {
98 public:
99  Subtitle ()
100  {}
101 
103  Subtitle (RawSubtitle s);
104 
109 
110  boost::optional<Time> fade_up;
111  boost::optional<Time> fade_down;
112 
113  std::list<Line> lines;
114 
115  bool same_metadata (RawSubtitle) const;
116 };
117 
118 }
119 
120 #endif
bool italic
true to use an italic version of font
Definition: subtitle.h:65
An RGB colour.
Definition: colour.h:30
Definition: collect.h:26
FontSize font_size
Definition: subtitle.h:58
Vertical position of the baseline of some text, expressed in one of a number of ways.
Definition: vertical_position.h:31
A line of text within a subtitle.
Definition: subtitle.h:74
A subtitle which has been collected into lines and blocks.
Definition: subtitle.h:96
Definition: sub_time.h:43
A bit of a subtitle, created with no regard for any nearby bits.
Definition: raw_subtitle.h:38
VerticalPosition vertical_position
Definition: subtitle.h:83
bool bold
true to use a bold version of font
Definition: subtitle.h:64
A description of a font's size in one of a number of ways.
Definition: font_size.h:33
Time to
Definition: subtitle.h:108
A block of text within a subtitle's line.
Definition: subtitle.h:40
Time from
Definition: subtitle.h:106
bool underline
true to underline
Definition: subtitle.h:66
std::string text
Definition: subtitle.h:54