X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fcolour_conversion.h;h=580374623cf9d29f5b2fb4a3c6f10178f3f4270d;hb=6495409c098a1a295f344b30a0fb65d090513091;hp=ed89f8c635a9932d60fe78b14211320d58385801;hpb=74a8d26a8907c6e00e29f054178a3425f44e38ed;p=dcpomatic.git diff --git a/src/lib/colour_conversion.h b/src/lib/colour_conversion.h index ed89f8c63..580374623 100644 --- a/src/lib/colour_conversion.h +++ b/src/lib/colour_conversion.h @@ -17,29 +17,62 @@ */ -#include -#include +#ifndef DCPOMATIC_COLOUR_CONVERSION_H +#define DCPOMATIC_COLOUR_CONVERSION_H -namespace cxml { - class Node; -} +/* Hack for OS X compile failure; see https://bugs.launchpad.net/hugin/+bug/910160 */ +#ifdef check +#undef check +#endif + +#include +#include namespace xmlpp { class Node; } -class ColourConversion : public boost::noncopyable +class ColourConversion : public dcp::ColourConversion { public: ColourConversion (); - ColourConversion (std::string, float, bool, float const matrix[3][3], float); - ColourConversion (boost::shared_ptr); + ColourConversion (dcp::ColourConversion); + ColourConversion (cxml::NodePtr, int version); + + virtual void as_xml (xmlpp::Node *) const; + std::string identifier () const; - void as_xml (xmlpp::Node *) const; + boost::optional preset () const; + static boost::optional from_xml (cxml::NodePtr, int version); +}; + +class PresetColourConversion +{ +public: + PresetColourConversion (); + PresetColourConversion (std::string n, std::string i, dcp::ColourConversion); + PresetColourConversion (cxml::NodePtr node, int version); + + ColourConversion conversion; std::string name; - float input_gamma; - bool input_gamma_linearised; - boost::numeric::ublas::matrix matrix; - float output_gamma; + /** an internal short (non-internationalised) name for this preset */ + std::string id; + + static std::vector all () { + return _presets; + } + + static PresetColourConversion from_id (std::string id); + + static void setup_colour_conversion_presets (); + +private: + static std::vector _presets; }; + +bool operator== (ColourConversion const &, ColourConversion const &); +bool operator!= (ColourConversion const &, ColourConversion const &); +bool operator== (PresetColourConversion const &, PresetColourConversion const &); + +#endif