summaryrefslogtreecommitdiff
path: root/src/types.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-10-19 19:42:26 +0100
committerCarl Hetherington <cth@carlh.net>2012-10-19 19:42:26 +0100
commitaf9b2212f0d8f8c1f53aaf29e520b812dfdc321c (patch)
tree82d12ed02b489d4e0f978a333cc130f4c427ea60 /src/types.cc
parent13c6d55d16337abbd8d8969d7062a515c1b26995 (diff)
Initial work on subtitle writing.
Diffstat (limited to 'src/types.cc')
-rw-r--r--src/types.cc81
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");
+}
+
+