Allow multiple selection; return multiple selection from FilmEditor methods.
[dcpomatic.git] / src / lib / types.h
index 01560ba81fdedbd9eb643a816adb002b45acaace..ad706270e66a79d2ace667d79604f35bc9c69de4 100644 (file)
@@ -26,6 +26,9 @@
 #include <libdcp/util.h>
 
 class Content;
+class VideoContent;
+class AudioContent;
+class SubtitleContent;
 class AudioBuffers;
 
 /** The version number of the protocol used to communicate
@@ -40,6 +43,9 @@ typedef int64_t Time;
 typedef int64_t OutputAudioFrame;
 typedef int    OutputVideoFrame;
 typedef std::vector<boost::shared_ptr<Content> > ContentList;
+typedef std::vector<boost::shared_ptr<VideoContent> > VideoContentList;
+typedef std::vector<boost::shared_ptr<AudioContent> > AudioContentList;
+typedef std::vector<boost::shared_ptr<SubtitleContent> > SubtitleContentList;
 
 template<class T>
 struct TimedAudioBuffers
@@ -87,6 +93,21 @@ struct Crop
        int top;
        /** Number of pixels to remove from the bottom */
        int bottom;
+
+       libdcp::Size apply (libdcp::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;
+       }
 };
 
 extern bool operator== (Crop const & a, Crop const & b);