Note that newer libsub version is required.
[dcpomatic.git] / src / lib / filter.h
index 3c2a49792d97ac197439b477164304e162eac94c..bcc40dad7c88fa162b63a893f9a804de4e50e1d1 100644 (file)
@@ -28,6 +28,7 @@
 #define DCPOMATIC_FILTER_H
 
 
+#include <boost/optional.hpp>
 #include <string>
 #include <vector>
 
 class Filter
 {
 public:
-       Filter (std::string i, std::string n, std::string c, std::string f);
-
-       Filter (Filter const&) = delete;
-       Filter& operator= (Filter const&) = delete;
+       Filter(std::string id, std::string name, std::string category, std::string ffmpeg_string);
 
        /** @return our id */
        std::string id () const {
@@ -66,10 +64,10 @@ public:
                return _category;
        }
 
-       static std::vector<Filter const *> all ();
-       static Filter const * from_id (std::string d);
+       static std::vector<Filter> all ();
+       static boost::optional<Filter> from_id(std::string d);
        static void setup_filters ();
-       static std::string ffmpeg_string (std::vector<Filter const *> const & filters);
+       static std::string ffmpeg_string(std::vector<Filter> const& filters);
 
 private:
 
@@ -82,9 +80,13 @@ private:
        std::string _ffmpeg;
 
        /** all available filters */
-       static std::vector<Filter const *> _filters;
-       static void maybe_add (std::string, std::string, std::string, std::string);
+       static std::vector<Filter> _filters;
 };
 
 
+bool operator==(Filter const& a, Filter const& b);
+bool operator!=(Filter const& a, Filter const& b);
+bool operator<(Filter const& a, Filter const& b);
+
+
 #endif