summaryrefslogtreecommitdiff
path: root/src/subtitle.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-05-30 10:53:53 +0100
committerCarl Hetherington <cth@carlh.net>2014-05-30 10:53:53 +0100
commit38a5ff713757b9dc0cb67cb09613182c46dc9657 (patch)
treeef337ee8bcd315b85f3a50ce37f623f3b1c51d76 /src/subtitle.cc
parent97495d8cce58f0e5d9a43977698c60b8b66a83e3 (diff)
Split up into RawSubtitle and Subtitle, with collect(). Hopefully cleaner.
Diffstat (limited to 'src/subtitle.cc')
-rw-r--r--src/subtitle.cc69
1 files changed, 25 insertions, 44 deletions
diff --git a/src/subtitle.cc b/src/subtitle.cc
index 5eb5784..d828628 100644
--- a/src/subtitle.cc
+++ b/src/subtitle.cc
@@ -21,62 +21,43 @@
using namespace sub;
-bool
-sub::operator< (Subtitle const & a, Subtitle const & b)
+Subtitle::Subtitle (RawSubtitle s)
+ : from (s.from)
+ , to (s.to)
+ , fade_up (s.fade_up)
+ , fade_down (s.fade_down)
{
- if (a.from.frame() && b.from.frame()) {
- return a.from.frame().get() < b.from.frame().get();
- }
-
- if (a.from.metric() && b.from.metric()) {
- return a.from.metric().get() < b.from.metric().get();
- }
-
- assert (false);
+ lines.push_back (Line (s));
}
-
-float
-Block::FontSize::proportional (int screen_height_in_points) const
+bool
+Subtitle::same_metadata (RawSubtitle s) const
{
- if (_proportional) {
- return _proportional.get ();
- }
-
- return float (_points.get ()) / screen_height_in_points;
+ return from == s.from && to == s.to && fade_up == s.fade_up && fade_down == s.fade_down;
}
-int
-Block::FontSize::points (int screen_height_in_points) const
+Line::Line (RawSubtitle s)
+ : vertical_position (s.vertical_position)
{
- if (_points) {
- return _points.get ();
- }
-
- return _proportional.get() * screen_height_in_points;
+ blocks.push_back (Block (s));
}
bool
-Subtitle::same_metadata (Subtitle const & other) const
+Line::same_metadata (RawSubtitle s) const
{
- return (
- vertical_position == other.vertical_position &&
- from == other.from &&
- to == other.to &&
- fade_up == other.fade_up &&
- fade_down == other.fade_down
- );
+ return vertical_position == s.vertical_position;
}
-bool
-Subtitle::VerticalPosition::operator== (Subtitle::VerticalPosition const & other) const
+Block::Block (RawSubtitle s)
+ : text (s.text)
+ , font (s.font)
+ , font_size (s.font_size)
+ , effect (s.effect)
+ , effect_colour (s.effect_colour)
+ , colour (s.colour)
+ , bold (s.bold)
+ , italic (s.italic)
+ , underline (s.underline)
{
- if (proportional && reference && other.proportional && other.reference) {
- return proportional.get() == other.proportional.get() && reference.get() == other.reference.get();
- } else if (line && other.line) {
- return line.get() == other.line.get();
- }
-
- return false;
+
}
-