X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fcolour_conversion.cc;h=6603e21e68b2e13ef0c35c073c925feda928eec6;hb=89ad6c484689ca399d0960803df75374b7a63490;hp=0f05474d8780fa148543219d4d13de0c45ba62d8;hpb=975a9752b6fb007509605cce7b62bc4c139ddada;p=dcpomatic.git diff --git a/src/lib/colour_conversion.cc b/src/lib/colour_conversion.cc index 0f05474d8..6603e21e6 100644 --- a/src/lib/colour_conversion.cc +++ b/src/lib/colour_conversion.cc @@ -29,6 +29,7 @@ #include #include #include +#include #include "i18n.h" @@ -45,13 +46,13 @@ vector PresetColourConversion::_presets; ColourConversion::ColourConversion () : dcp::ColourConversion (dcp::ColourConversion::srgb_to_xyz ()) { - + } ColourConversion::ColourConversion (dcp::ColourConversion conversion_) : dcp::ColourConversion (conversion_) { - + } ColourConversion::ColourConversion (cxml::NodePtr node, int version) @@ -78,7 +79,7 @@ ColourConversion::ColourConversion (cxml::NodePtr node, int version) } else { /* Version 1.x */ - + if (node->bool_child ("InputGammaLinearised")) { _in.reset (new dcp::ModifiedGammaTransferFunction (node->number_child ("InputGamma"), 0.04045, 0.055, 12.92)); } else { @@ -87,7 +88,7 @@ ColourConversion::ColourConversion (cxml::NodePtr node, int version) } _yuv_to_rgb = static_cast (node->optional_number_child("YUVToRGB").get_value_or (dcp::YUV_TO_RGB_REC601)); - + list m = node->node_children ("Matrix"); if (!m.empty ()) { /* Read in old nodes and convert them to chromaticities */ @@ -117,8 +118,8 @@ ColourConversion::ColourConversion (cxml::NodePtr node, int version) node->number_child ("AdjustedWhiteX"), node->number_child ("AdjustedWhiteY") ); } - } - + } + _out.reset (new dcp::GammaTransferFunction (node->number_child ("OutputGamma"))); } @@ -149,6 +150,7 @@ ColourConversion::as_xml (xmlpp::Node* node) const in_node->add_child("B")->add_child_text (raw_convert (tf->B ())); } + node->add_child("YUVToRGB")->add_child_text (raw_convert (_yuv_to_rgb)); node->add_child("RedX")->add_child_text (raw_convert (_red.x)); node->add_child("RedY")->add_child_text (raw_convert (_red.y)); node->add_child("GreenX")->add_child_text (raw_convert (_green.x)); @@ -170,7 +172,7 @@ ColourConversion::preset () const { vector presets = PresetColourConversion::all (); size_t i = 0; - while (i < presets.size() && (presets[i].conversion != *this)) { + while (i < presets.size() && presets[i].conversion != *this) { ++i; } @@ -212,7 +214,7 @@ ColourConversion::identifier () const } digester.add (dynamic_pointer_cast (_out)->gamma ()); - + return digester.get (); } @@ -275,4 +277,3 @@ PresetColourConversion::from_id (string s) DCPOMATIC_ASSERT (false); } -