X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fcolour_conversion.cc;h=5ecbf4021ce4efb30f8ccb39de37eea6f127820b;hb=b6c780d3107557d452c6612d715d01e2be52dbda;hp=5f17f9184c9dfb6bfb10fdd195ad6f8cd5432338;hpb=21e8238484af35ac207b01defe406e73445632be;p=dcpomatic.git diff --git a/src/lib/colour_conversion.cc b/src/lib/colour_conversion.cc index 5f17f9184..5ecbf4021 100644 --- a/src/lib/colour_conversion.cc +++ b/src/lib/colour_conversion.cc @@ -18,23 +18,23 @@ */ #include -#include -#include +#include +#include #include #include "config.h" #include "colour_conversion.h" #include "util.h" +#include "md5_digester.h" #include "i18n.h" using std::list; using std::string; -using std::stringstream; using std::cout; using std::vector; using boost::shared_ptr; using boost::optional; -using libdcp::raw_convert; +using dcp::raw_convert; ColourConversion::ColourConversion () : input_gamma (2.4) @@ -44,7 +44,7 @@ ColourConversion::ColourConversion () { for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { - matrix (i, j) = libdcp::colour_matrix::srgb_to_xyz[i][j]; + matrix (i, j) = dcp::colour_matrix::srgb_to_xyz[i][j]; } } } @@ -84,6 +84,16 @@ ColourConversion::ColourConversion (cxml::NodePtr node) output_gamma = node->number_child ("OutputGamma"); } +boost::optional +ColourConversion::from_xml (cxml::NodePtr node) +{ + if (!node->optional_node_child ("InputGamma")) { + return boost::optional (); + } + + return ColourConversion (node); +} + void ColourConversion::as_xml (xmlpp::Node* node) const { @@ -121,21 +131,18 @@ ColourConversion::preset () const string ColourConversion::identifier () const { - double numbers[12]; - - int n = 0; - numbers[n++] = input_gamma; - numbers[n++] = input_gamma_linearised; + MD5Digester digester; + + digester.add (input_gamma); + digester.add (input_gamma_linearised); for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { - numbers[n++] = matrix (i, j); + digester.add (matrix (i, j)); } } - numbers[n++] = output_gamma; - - assert (n == 12); - - return md5_digest (numbers, 12 * sizeof (double)); + digester.add (output_gamma); + + return digester.get (); } PresetColourConversion::PresetColourConversion ()