diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-10-19 19:42:26 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-10-19 19:42:26 +0100 |
| commit | af9b2212f0d8f8c1f53aaf29e520b812dfdc321c (patch) | |
| tree | 82d12ed02b489d4e0f978a333cc130f4c427ea60 /src/types.cc | |
| parent | 13c6d55d16337abbd8d8969d7062a515c1b26995 (diff) | |
Initial work on subtitle writing.
Diffstat (limited to 'src/types.cc')
| -rw-r--r-- | src/types.cc | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/types.cc b/src/types.cc index 50aee2a2..a00e8261 100644 --- a/src/types.cc +++ b/src/types.cc @@ -1,5 +1,6 @@ #include <vector> #include <cstdio> +#include <iomanip> #include <boost/lexical_cast.hpp> #include <boost/algorithm/string.hpp> #include "types.h" @@ -56,6 +57,20 @@ Color::Color (string argb_hex) } } +string +Color::to_argb_string () const +{ + stringstream s; + s << "FF"; + s << hex + << setw(2) << setfill('0') << r + << setw(2) << setfill('0') << g + << setw(2) << setfill('0') << b; + + string t = s.str(); + to_upper (t); + return t; +} bool libdcp::operator== (Color const & a, Color const & b) @@ -63,9 +78,75 @@ libdcp::operator== (Color const & a, Color const & b) return (a.r == b.r && a.g == b.g && a.b == b.b); } +bool +libdcp::operator!= (Color const & a, Color const & b) +{ + return !(a == b); +} + ostream & libdcp::operator<< (ostream& s, Color const & c) { s << "(" << c.r << ", " << c.g << ", " << c.b << ")"; return s; } + +string +libdcp::effect_to_string (Effect e) +{ + switch (e) { + case NONE: + return "none"; + case BORDER: + return "border"; + case SHADOW: + return "shadow"; + } + + throw MiscError ("unknown effect type"); +} + +Effect +libdcp::string_to_effect (string s) +{ + if (s == "none") { + return NONE; + } else if (s == "border") { + return BORDER; + } else if (s == "shadow") { + return SHADOW; + } + + throw DCPReadError ("unknown subtitle effect type"); +} + +string +libdcp::valign_to_string (VAlign v) +{ + switch (v) { + case TOP: + return "top"; + case CENTER: + return "center"; + case BOTTOM: + return "bottom"; + } + + throw MiscError ("unknown valign type"); +} + +VAlign +libdcp::string_to_valign (string s) +{ + if (s == "top") { + return TOP; + } else if (s == "center") { + return CENTER; + } else if (s == "bottom") { + return BOTTOM; + } + + throw DCPReadError ("unknown subtitle valign type"); +} + + |
