X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Ftypes.cc;h=ba062c3f8f0834194cc951fa8a506aa22bce3f1e;hp=c077bad3e8c2b66607a92e4a54b613dda465327c;hb=3828baf56467224f5d44049bf1e7a7ed11f43a05;hpb=996b0c06e23bcb6b300d7b8799df94993692e07d diff --git a/src/lib/types.cc b/src/lib/types.cc index c077bad3e..ba062c3f8 100644 --- a/src/lib/types.cc +++ b/src/lib/types.cc @@ -1,26 +1,33 @@ /* Copyright (C) 2013 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ #include "types.h" +#include "dcpomatic_assert.h" +#include "raw_convert.h" +#include +#include using std::max; using std::min; +using std::string; +using boost::shared_ptr; bool operator== (Crop const & a, Crop const & b) { @@ -32,25 +39,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"; + } + + DCPOMATIC_ASSERT (false); + return ""; +} + + +Resolution +string_to_resolution (string s) +{ + if (s == "2K") { + return RESOLUTION_2K; + } + + if (s == "4K") { + return RESOLUTION_4K; + } + + DCPOMATIC_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)); }