--- /dev/null
+/*
+ Copyright (C) 2013-2019 Carl Hetherington <cth@carlh.net>
+
+ 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.
+
+ 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#include "crop.h"
+#include <dcp/raw_convert.h>
+#include <libxml++/libxml++.h>
+
+
+using std::shared_ptr;
+using std::string;
+using dcp::raw_convert;
+
+
+Crop::Crop(shared_ptr<cxml::Node> node)
+{
+ left = node->number_child<int>("LeftCrop");
+ right = node->number_child<int>("RightCrop");
+ top = node->number_child<int>("TopCrop");
+ bottom = node->number_child<int>("BottomCrop");
+}
+
+
+void
+Crop::as_xml(xmlpp::Node* node) const
+{
+ node->add_child("LeftCrop")->add_child_text(raw_convert<string>(left));
+ node->add_child("RightCrop")->add_child_text(raw_convert<string>(right));
+ node->add_child("TopCrop")->add_child_text(raw_convert<string>(top));
+ node->add_child("BottomCrop")->add_child_text(raw_convert<string>(bottom));
+}
+
+
+bool operator==(Crop const & a, Crop const & b)
+{
+ return (a.left == b.left && a.right == b.right && a.top == b.top && a.bottom == b.bottom);
+}
+
+
+bool operator!=(Crop const & a, Crop const & b)
+{
+ return !(a == b);
+}
+
--- /dev/null
+/*
+ Copyright (C) 2013-2021 Carl Hetherington <cth@carlh.net>
+
+ 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.
+
+ 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#ifndef DCPOMATIC_CROP_H
+#define DCPOMATIC_CROP_H
+
+
+#include <dcp/types.h>
+#include <memory>
+
+
+namespace cxml {
+ class Node;
+}
+
+
+/** @struct Crop
+ * @brief A description of the crop of an image or video.
+ */
+struct Crop
+{
+ Crop() {}
+ Crop(int l, int r, int t, int b) : left (l), right (r), top (t), bottom (b) {}
+ explicit Crop(std::shared_ptr<cxml::Node>);
+
+ /** Number of pixels to remove from the left-hand side */
+ int left = 0;
+ /** Number of pixels to remove from the right-hand side */
+ int right = 0;
+ /** Number of pixels to remove from the top */
+ int top = 0;
+ /** Number of pixels to remove from the bottom */
+ int bottom = 0;
+
+ dcp::Size apply(dcp::Size s, int minimum = 4) const {
+ s.width -= left + right;
+ s.height -= top + bottom;
+
+ if (s.width < minimum) {
+ s.width = minimum;
+ }
+
+ if (s.height < minimum) {
+ s.height = minimum;
+ }
+
+ return s;
+ }
+
+ void as_xml (xmlpp::Node *) const;
+};
+
+
+extern bool operator==(Crop const & a, Crop const & b);
+extern bool operator!=(Crop const & a, Crop const & b);
+
+
+#endif
*/
+#include "crop.h"
#include "dcpomatic_time.h"
-#include "types.h"
#include <memory>
#ifndef DCPOMATIC_IMAGE_H
#define DCPOMATIC_IMAGE_H
+
+#include "crop.h"
#include "position.h"
#include "position_image.h"
#include "types.h"
#include <dcp/array_data.h>
#include <dcp/colour_conversion.h>
+
struct AVFrame;
class Socket;
+
class Image : public std::enable_shared_from_this<Image>
{
public:
using std::vector;
using dcp::raw_convert;
-bool operator== (Crop const & a, Crop const & b)
-{
- return (a.left == b.left && a.right == b.right && a.top == b.top && a.bottom == b.bottom);
-}
-
-bool operator!= (Crop const & a, Crop const & b)
-{
- return !(a == b);
-}
/** @param r Resolution.
* @return Untranslated string representation.
return Resolution::TWO_K;
}
-Crop::Crop (shared_ptr<cxml::Node> node)
-{
- left = node->number_child<int> ("LeftCrop");
- right = node->number_child<int> ("RightCrop");
- top = node->number_child<int> ("TopCrop");
- bottom = node->number_child<int> ("BottomCrop");
-}
-
-void
-Crop::as_xml (xmlpp::Node* node) const
-{
- node->add_child("LeftCrop")->add_child_text (raw_convert<string> (left));
- node->add_child("RightCrop")->add_child_text (raw_convert<string> (right));
- node->add_child("TopCrop")->add_child_text (raw_convert<string> (top));
- node->add_child("BottomCrop")->add_child_text (raw_convert<string> (bottom));
-}
TextType
string_to_text_type (string s)
extern std::string text_type_to_name (TextType t);
extern TextType string_to_text_type (std::string s);
-/** @struct Crop
- * @brief A description of the crop of an image or video.
- */
-struct Crop
-{
- Crop () : left (0), right (0), top (0), bottom (0) {}
- Crop (int l, int r, int t, int b) : left (l), right (r), top (t), bottom (b) {}
- explicit Crop (std::shared_ptr<cxml::Node>);
-
- /** Number of pixels to remove from the left-hand side */
- int left;
- /** Number of pixels to remove from the right-hand side */
- int right;
- /** Number of pixels to remove from the top */
- int top;
- /** Number of pixels to remove from the bottom */
- int bottom;
-
- dcp::Size apply (dcp::Size s, int minimum = 4) const {
- s.width -= left + right;
- s.height -= top + bottom;
-
- if (s.width < minimum) {
- s.width = minimum;
- }
-
- if (s.height < minimum) {
- s.height = minimum;
- }
-
- return s;
- }
-
- void as_xml (xmlpp::Node *) const;
-};
-
-extern bool operator== (Crop const & a, Crop const & b);
-extern bool operator!= (Crop const & a, Crop const & b);
struct CPLSummary
{
#include "colour_conversion.h"
#include "content_part.h"
+#include "crop.h"
#include "dcpomatic_time.h"
#include "pixel_quanta.h"
-#include "types.h"
#include "user_property.h"
#include <dcp/language_tag.h>
#include <boost/thread/mutex.hpp>
combine_dcp_job.cc
copy_dcp_details_to_film.cc
create_cli.cc
+ crop.cc
cross_common.cc
crypto.cc
curl_uploader.cc
#include "table_dialog.h"
-#include "lib/types.h"
+#include "lib/crop.h"
#include <boost/signals2.hpp>