X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ftypes.cc;h=d052b2a9a71dd3c458bc9126785a15af263e8e6c;hb=1c13441a19aa387ddd8ac0c972207ccbbe3114d8;hp=c077bad3e8c2b66607a92e4a54b613dda465327c;hpb=bdbddbe89d4996a39dc6e695f23a6457c03774ae;p=dcpomatic.git diff --git a/src/lib/types.cc b/src/lib/types.cc index c077bad3e..d052b2a9a 100644 --- a/src/lib/types.cc +++ b/src/lib/types.cc @@ -17,10 +17,16 @@ */ +#include +#include +#include #include "types.h" using std::max; using std::min; +using std::string; +using boost::shared_ptr; +using dcp::raw_convert; bool operator== (Crop const & a, Crop const & b) { @@ -32,25 +38,52 @@ bool operator!= (Crop const & a, Crop const & b) return !(a == b); } - -/** @param other A Rect. - * @return The intersection of this with `other'. +/** @param r Resolution. + * @return Untranslated string representation. */ -Rect -Rect::intersection (Rect const & other) const +string +resolution_to_string (Resolution r) +{ + switch (r) { + case RESOLUTION_2K: + return "2K"; + case RESOLUTION_4K: + return "4K"; + } + + assert (false); + return ""; +} + + +Resolution +string_to_resolution (string s) +{ + if (s == "2K") { + return RESOLUTION_2K; + } + + if (s == "4K") { + return RESOLUTION_4K; + } + + assert (false); + return RESOLUTION_2K; +} + +Crop::Crop (shared_ptr node) { - int const tx = max (x, other.x); - int const ty = max (y, other.y); - - return Rect ( - tx, ty, - min (x + width, other.x + other.width) - tx, - min (y + height, other.y + other.height) - ty - ); + left = node->number_child ("LeftCrop"); + right = node->number_child ("RightCrop"); + top = node->number_child ("TopCrop"); + bottom = node->number_child ("BottomCrop"); } -bool -Rect::contains (Position p) const +void +Crop::as_xml (xmlpp::Node* node) const { - return (p.x >= x && p.x <= (x + width) && p.y >= y && p.y <= (y + height)); + node->add_child("LeftCrop")->add_child_text (raw_convert (left)); + node->add_child("RightCrop")->add_child_text (raw_convert (right)); + node->add_child("TopCrop")->add_child_text (raw_convert (top)); + node->add_child("BottomCrop")->add_child_text (raw_convert (bottom)); }