Include trimming.
[dcpomatic.git] / src / wx / colour_conversion_editor.cc
index 36ca074fa0765efae1429ee4b5ddb3e876acd18a..aab05d71bd3836dd4b7be9b73bfacc549a4fe889 100644 (file)
 #include <dcp/modified_gamma_transfer_function.h>
 #include <wx/spinctrl.h>
 #include <wx/gbsizer.h>
-#include <boost/lexical_cast.hpp>
 #include <iostream>
 
 using std::string;
 using std::cout;
 using boost::shared_ptr;
 using boost::dynamic_pointer_cast;
-using boost::lexical_cast;
 
 ColourConversionEditor::ColourConversionEditor (wxWindow* parent, bool yuv)
        : wxPanel (parent, wxID_ANY)
+       , _ignore_chromaticity_changed (false)
 {
        wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL);
        SetSizer (overall_sizer);
@@ -245,6 +244,8 @@ ColourConversionEditor::set (ColourConversion conversion)
 
        _yuv_to_rgb->SetSelection (conversion.yuv_to_rgb ());
 
+       _ignore_chromaticity_changed = true;
+
        SafeStringStream s;
        s.setf (std::ios::fixed, std::ios::floatfield);
        s.precision (6);
@@ -280,6 +281,8 @@ ColourConversionEditor::set (ColourConversion conversion)
        s << conversion.white().y;
        _white_y->SetValue (std_to_wx (s.str ()));
 
+       _ignore_chromaticity_changed = false;
+
        if (conversion.adjusted_white ()) {
                _adjust_white->SetValue (true);
                s.str ("");
@@ -294,6 +297,7 @@ ColourConversionEditor::set (ColourConversion conversion)
 
        update_rgb_to_xyz ();
        update_bradford ();
+       changed ();
 }
 
 ColourConversion
@@ -365,6 +369,10 @@ ColourConversionEditor::changed ()
 void
 ColourConversionEditor::chromaticity_changed ()
 {
+       if (_ignore_chromaticity_changed) {
+               return;
+       }
+
        update_rgb_to_xyz ();
        changed ();
 }