summaryrefslogtreecommitdiff
path: root/src/lib/video_content_scale.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-09-08 00:28:03 +0100
committerCarl Hetherington <cth@carlh.net>2014-09-08 00:28:03 +0100
commit34be35fc1ba9a0c0eaebd3e2a6be3eab134e80af (patch)
tree80f2983d3920fe076208261b937f382250368e41 /src/lib/video_content_scale.h
parent8b540964a31926f4afc2be3937a01b28f7c91689 (diff)
Move VideoContentScale to its own file.
Diffstat (limited to 'src/lib/video_content_scale.h')
-rw-r--r--src/lib/video_content_scale.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/lib/video_content_scale.h b/src/lib/video_content_scale.h
new file mode 100644
index 000000000..87dd2f1fa
--- /dev/null
+++ b/src/lib/video_content_scale.h
@@ -0,0 +1,77 @@
+/*
+ Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
+
+ This program 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,
+ 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.
+
+*/
+
+#ifndef DCPOMATIC_VIDEO_CONTENT_SCALE_H
+#define DCPOMATIC_VIDEO_CONTENT_SCALE_H
+
+#include <vector>
+#include <boost/shared_ptr.hpp>
+#include <libdcp/util.h>
+
+namespace cxml {
+ class Node;
+}
+
+namespace xmlpp {
+ class Node;
+}
+
+class Ratio;
+class VideoContent;
+
+class VideoContentScale
+{
+public:
+ VideoContentScale ();
+ VideoContentScale (Ratio const *);
+ VideoContentScale (bool);
+ VideoContentScale (boost::shared_ptr<cxml::Node>);
+
+ libdcp::Size size (boost::shared_ptr<const VideoContent>, libdcp::Size, libdcp::Size) const;
+ std::string id () const;
+ std::string name () const;
+ void as_xml (xmlpp::Node *) const;
+
+ Ratio const * ratio () const {
+ return _ratio;
+ }
+
+ bool scale () const {
+ return _scale;
+ }
+
+ static void setup_scales ();
+ static std::vector<VideoContentScale> all () {
+ return _scales;
+ }
+ static VideoContentScale from_id (std::string id);
+
+private:
+ /** a ratio to stretch the content to, or 0 for no stretch */
+ Ratio const * _ratio;
+ /** true if we want to scale the content */
+ bool _scale;
+
+ static std::vector<VideoContentScale> _scales;
+};
+
+bool operator== (VideoContentScale const & a, VideoContentScale const & b);
+bool operator!= (VideoContentScale const & a, VideoContentScale const & b);
+
+#endif