Extract crop.h
authorCarl Hetherington <cth@carlh.net>
Sat, 10 Dec 2022 00:39:38 +0000 (01:39 +0100)
committerCarl Hetherington <cth@carlh.net>
Sat, 10 Dec 2022 00:39:38 +0000 (01:39 +0100)
src/lib/crop.cc [new file with mode: 0644]
src/lib/crop.h [new file with mode: 0644]
src/lib/guess_crop.h
src/lib/image.h
src/lib/types.cc
src/lib/types.h
src/lib/video_content.h
src/lib/wscript
src/wx/auto_crop_dialog.h

diff --git a/src/lib/crop.cc b/src/lib/crop.cc
new file mode 100644 (file)
index 0000000..105baaa
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+    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);
+}
+
diff --git a/src/lib/crop.h b/src/lib/crop.h
new file mode 100644 (file)
index 0000000..00734d5
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+    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
index d7491204234c5ca9abf2483353865f8a8b75ab06..f18c2db5e6c90fe65bd5826c41d9c95c894822c1 100644 (file)
@@ -19,8 +19,8 @@
 */
 
 
+#include "crop.h"
 #include "dcpomatic_time.h"
-#include "types.h"
 #include <memory>
 
 
index 73d08b90244eeb5c88d280b1538d5771bbd49113..60e65c20a9c2737f990644488bc62d3098e8187c 100644 (file)
@@ -25,6 +25,8 @@
 #ifndef DCPOMATIC_IMAGE_H
 #define DCPOMATIC_IMAGE_H
 
+
+#include "crop.h"
 #include "position.h"
 #include "position_image.h"
 #include "types.h"
@@ -34,9 +36,11 @@ extern "C" {
 #include <dcp/array_data.h>
 #include <dcp/colour_conversion.h>
 
+
 struct AVFrame;
 class Socket;
 
+
 class Image : public std::enable_shared_from_this<Image>
 {
 public:
index e9b412ded06bf2709b03601fce9fda9e6bd23325..6bac0cf3efe0298f0e734b10d6a1e60567f0a379 100644 (file)
@@ -42,15 +42,6 @@ using std::shared_ptr;
 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.
@@ -85,22 +76,6 @@ string_to_resolution (string s)
        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)
index f2a79b2fdcbd879c25f7484ec918afc1d8130f95..ab3f15841b3b367e2e07efb3cb52c4d89a934fb5 100644 (file)
@@ -167,44 +167,6 @@ extern std::string text_type_to_string (TextType t);
 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
 {
index cff141e4ed6fe371fe0b4899b675495c7aafe92f..087a922452ab85bc870fc5056c2aea0e1cd0ff25 100644 (file)
@@ -25,9 +25,9 @@
 
 #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>
index cf97623f9ee3b42c36c8834efb369fb3f80367ab..3a3c8fd51ea2960dc9ca6f87d7d5f0c2d1253fe7 100644 (file)
@@ -59,6 +59,7 @@ sources = """
           combine_dcp_job.cc
           copy_dcp_details_to_film.cc
           create_cli.cc
+          crop.cc
           cross_common.cc
           crypto.cc
           curl_uploader.cc
index 0615c14bb4dc3d7c0524365342ed0cd31f3555fe..6c02acbdd9e8535cc8e206aea24386cb72676d9e 100644 (file)
@@ -20,7 +20,7 @@
 
 
 #include "table_dialog.h"
-#include "lib/types.h"
+#include "lib/crop.h"
 #include <boost/signals2.hpp>