Cleanup: handle Filter objects by value rather than by reference.
[dcpomatic.git] / src / lib / filter.h
index 36e4dfa2795ddba7cbe99ea0c4fd99de261d6333..1144a2ca4b0c93efed7c826fca7a253f944de0d5 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
+
 /** @file src/filter.h
  *  @brief A class to describe one of FFmpeg's video or audio filters.
  */
 
+
 #ifndef DCPOMATIC_FILTER_H
 #define DCPOMATIC_FILTER_H
 
-#include <boost/utility.hpp>
+
+#include <boost/optional.hpp>
 #include <string>
 #include <vector>
 
+
 /** @class Filter
  *  @brief A class to describe one of FFmpeg's video or audio filters.
  *
  *  8bpp.  FFmpeg quantizes e.g. yuv422p10le down to yuv422p before running such filters, which
  *  we don't really want to do.
  */
-class Filter : public boost::noncopyable
+class Filter
 {
 public:
-       Filter (std::string, std::string, std::string, std::string);
+       Filter (std::string i, std::string n, std::string c, std::string f);
 
        /** @return our id */
        std::string id () const {
@@ -60,10 +64,10 @@ public:
                return _category;
        }
 
-       static std::vector<Filter const *> all ();
-       static Filter const * from_id (std::string);
+       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 &);
+       static std::string ffmpeg_string(std::vector<Filter> const& filters);
 
 private:
 
@@ -76,8 +80,14 @@ private:
        std::string _ffmpeg;
 
        /** all available filters */
-       static std::vector<Filter const *> _filters;
+       static std::vector<Filter> _filters;
        static void maybe_add (std::string, std::string, std::string, std::string);
 };
 
+
+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