Cleanup: extract VAlign to its own files.
[libdcp.git] / src / types.cc
index 9b1aca31635e2663356da5949dedbac06aa8587c..809319225eb997baa29df9019fe91cb6e76dbb63 100644 (file)
@@ -109,12 +109,6 @@ dcp::operator!= (Fraction const & a, Fraction const & b)
 }
 
 
-Colour::Colour ()
-{
-
-}
-
-
 Colour::Colour (int r_, int g_, int b_)
        : r (r_)
        , g (g_)
@@ -227,37 +221,6 @@ dcp::string_to_halign (string s)
 }
 
 
-string
-dcp::valign_to_string (VAlign v)
-{
-       switch (v) {
-       case VAlign::TOP:
-               return "top";
-       case VAlign::CENTER:
-               return "center";
-       case VAlign::BOTTOM:
-               return "bottom";
-       }
-
-       boost::throw_exception (MiscError("unknown subtitle valign type"));
-}
-
-
-VAlign
-dcp::string_to_valign (string s)
-{
-       if (s == "top") {
-               return VAlign::TOP;
-       } else if (s == "center") {
-               return VAlign::CENTER;
-       } else if (s == "bottom") {
-               return VAlign::BOTTOM;
-       }
-
-       boost::throw_exception (ReadError("unknown subtitle valign type"));
-}
-
-
 string
 dcp::direction_to_string (Direction v)
 {
@@ -473,21 +436,23 @@ MainSoundConfiguration::MainSoundConfiguration (string s)
 {
        vector<string> parts;
        boost::split (parts, s, boost::is_any_of("/"));
-       if (parts.size() != 2) {
-               throw MainSoundConfigurationError (s);
+       if (parts.empty()) {
+               throw MainSoundConfigurationError(s);
        }
 
-       if (parts[0] == "20") {
-               /* I can't find any mention in the standard of 20 being OK here, but Deluxe fail
-                * QCs if the audio is stereo and 51 is used here.
-                */
-               _field = MCASoundField::STEREO;
-       } else if (parts[0] == "51") {
+       if (parts[0] == "51") {
                _field = MCASoundField::FIVE_POINT_ONE;
        } else if (parts[0] == "71") {
                _field = MCASoundField::SEVEN_POINT_ONE;
        } else {
-               throw MainSoundConfigurationError (s);
+               _field = MCASoundField::OTHER;
+       }
+
+       if (parts.size() < 2) {
+               /* I think it's OK to just have the sound field descriptor with no channels, though
+                * to me it's not clear and I might be wrong.
+                */
+               return;
        }
 
        vector<string> channels;
@@ -519,9 +484,6 @@ MainSoundConfiguration::to_string () const
 {
        string c;
        switch (_field) {
-       case MCASoundField::STEREO:
-               c = "20/";
-               break;
        case MCASoundField::FIVE_POINT_ONE:
                c = "51/";
                break;
@@ -598,31 +560,33 @@ dcp::string_to_status (string s)
 Channel
 dcp::mca_id_to_channel (string id)
 {
-       if (id == "L") {
+       transform(id.begin(), id.end(), id.begin(), ::tolower);
+
+       if (id == "l") {
                return Channel::LEFT;
-       } else if (id == "R") {
+       } else if (id == "r") {
                return Channel::RIGHT;
-       } else if (id == "C") {
+       } else if (id == "c") {
                return Channel::CENTRE;
-       } else if (id == "LFE") {
+       } else if (id == "lfe") {
                return Channel::LFE;
-       } else if (id == "Ls" || id == "Lss") {
+       } else if (id == "ls" || id == "lss") {
                return Channel::LS;
-       } else if (id == "Rs" || id == "Rss") {
+       } else if (id == "rs" || id == "rss") {
                return Channel::RS;
-       } else if (id == "HI") {
+       } else if (id == "hi") {
                return Channel::HI;
-       } else if (id == "VIN") {
+       } else if (id == "vin") {
                return Channel::VI;
-       } else if (id == "Lrs") {
+       } else if (id == "lrs") {
                return Channel::BSL;
-       } else if (id == "Rrs") {
+       } else if (id == "rrs") {
                return Channel::BSR;
-       } else if (id == "DBOX") {
+       } else if (id == "dbox") {
                return Channel::MOTION_DATA;
-       } else if (id == "FSKSync") {
+       } else if (id == "sync" || id == "fsksync") {
                return Channel::SYNC_SIGNAL;
-       } else if (id == "SLVS") {
+       } else if (id == "slvs") {
                return Channel::SIGN_LANGUAGE;
        }