Some OS X build fixes.
[libdcp.git] / src / transfer_function.h
index 31a794e20f5af59877b5b9eb7855311fc2f37833..4105f3d4860d544369010744c04fbcb3fa00cff5 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <boost/noncopyable.hpp>
 #include <boost/shared_ptr.hpp>
+#include <boost/thread/mutex.hpp>
 #include <map>
 
 namespace dcp {
@@ -29,17 +30,24 @@ namespace dcp {
 class TransferFunction : public boost::noncopyable
 {
 public:
+       TransferFunction (bool inverse);
+       
        virtual ~TransferFunction ();
 
-       float const * lut (int bit_depth) const;
+       /** @return A look-up table (of size 2^bit_depth) whose values range from 0 to 1 */
+       double const * lut (int bit_depth) const;
 
-       virtual bool about_equal (boost::shared_ptr<const TransferFunction> other, float epsilon) const = 0;
+       virtual bool about_equal (boost::shared_ptr<const TransferFunction> other, double epsilon) const;
 
 protected:
-       virtual float * make_lut (int bit_depth) const = 0;
+       virtual double * make_lut (int bit_depth) const = 0;
 
-private:       
-       mutable std::map<int, float*> _luts;
+       bool _inverse;
+
+private:
+       mutable std::map<int, double*> _luts;
+       /** mutex to protect _luts */
+       mutable boost::mutex _mutex;
 };
 
 }