diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-05-30 10:53:53 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-05-30 10:53:53 +0100 |
| commit | 38a5ff713757b9dc0cb67cb09613182c46dc9657 (patch) | |
| tree | ef337ee8bcd315b85f3a50ce37f623f3b1c51d76 /src/subtitle.cc | |
| parent | 97495d8cce58f0e5d9a43977698c60b8b66a83e3 (diff) | |
Split up into RawSubtitle and Subtitle, with collect(). Hopefully cleaner.
Diffstat (limited to 'src/subtitle.cc')
| -rw-r--r-- | src/subtitle.cc | 69 |
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; + } - |
