Remove user-configurable colour conversion presets.
authorCarl Hetherington <cth@carlh.net>
Mon, 25 May 2015 00:37:20 +0000 (01:37 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 25 May 2015 00:37:20 +0000 (01:37 +0100)
src/lib/colour_conversion.cc
src/lib/colour_conversion.h
src/lib/config.cc
src/lib/config.h
src/lib/player.cc
src/lib/util.cc
src/wx/colour_conversion_editor.cc
src/wx/config_dialog.cc
src/wx/content_colour_conversion_dialog.cc
src/wx/video_panel.cc

index 3c076b030ed19ee7d483f130287b8e73c3303270..cb3a92c1a428ffa4988356b7eb06c1bfb4551a4e 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2013-2015 Carl Hetherington <cth@carlh.net>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -28,6 +28,7 @@
 #include <dcp/modified_gamma_transfer_function.h>
 #include <libcxml/cxml.h>
 #include <libxml++/libxml++.h>
+#include <boost/foreach.hpp>
 
 #include "i18n.h"
 
@@ -39,6 +40,8 @@ using boost::shared_ptr;
 using boost::optional;
 using boost::dynamic_pointer_cast;
 
+vector<PresetColourConversion> PresetColourConversion::_presets;
+
 ColourConversion::ColourConversion ()
        : dcp::ColourConversion (dcp::ColourConversion::srgb_to_xyz ())
 {
@@ -165,7 +168,7 @@ ColourConversion::as_xml (xmlpp::Node* node) const
 optional<size_t>
 ColourConversion::preset () const
 {
-       vector<PresetColourConversion> presets = Config::instance()->colour_conversions ();
+       vector<PresetColourConversion> presets = PresetColourConversion::all ();
        size_t i = 0;
        while (i < presets.size() && (presets[i].conversion != *this)) {
                ++i;
@@ -233,13 +236,6 @@ PresetColourConversion::PresetColourConversion (cxml::NodePtr node, int version)
 
 }
 
-void
-PresetColourConversion::as_xml (xmlpp::Node* node) const
-{
-       conversion.as_xml (node);
-       node->add_child("Name")->add_child_text (name);
-}
-
 bool
 operator== (ColourConversion const & a, ColourConversion const & b)
 {
@@ -257,3 +253,12 @@ operator== (PresetColourConversion const & a, PresetColourConversion const & b)
 {
        return a.name == b.name && a.conversion == b.conversion;
 }
+
+void
+PresetColourConversion::setup_colour_conversion_presets ()
+{
+       _presets.push_back (PresetColourConversion (_("sRGB"), dcp::ColourConversion::srgb_to_xyz ()));
+       _presets.push_back (PresetColourConversion (_("Rec. 601"), dcp::ColourConversion::rec601_to_xyz ()));
+       _presets.push_back (PresetColourConversion (_("Rec. 709"), dcp::ColourConversion::rec709_to_xyz ()));
+       _presets.push_back (PresetColourConversion (_("P3"), dcp::ColourConversion::p3_to_xyz ()));
+}
index 9f07e095698086a7691eaf8498d8992a8fa2c7e2..1b42dffb7829c43f98baab2ae8fb54baca17f7f2 100644 (file)
@@ -55,10 +55,17 @@ public:
        PresetColourConversion (std::string, dcp::ColourConversion);
        PresetColourConversion (cxml::NodePtr node, int version);
 
-       void as_xml (xmlpp::Node *) const;
-
        ColourConversion conversion;
        std::string name;
+
+       static std::vector<PresetColourConversion> all () {
+               return _presets;
+       }
+
+       static void setup_colour_conversion_presets ();
+       
+private:
+       static std::vector<PresetColourConversion> _presets;
 };
 
 bool operator== (ColourConversion const &, ColourConversion const &);
index 5a0b74854e1396081bdb77ca713de9b56128ba8c..bbb7e1e0b4a18d5f6790a65f1014a29c80979a76 100644 (file)
@@ -91,12 +91,6 @@ Config::set_defaults ()
        _allowed_dcp_frame_rates.push_back (50);
        _allowed_dcp_frame_rates.push_back (60);
 
-       _colour_conversions.clear ();
-       _colour_conversions.push_back (PresetColourConversion (_("sRGB"), dcp::ColourConversion::srgb_to_xyz ()));
-       _colour_conversions.push_back (PresetColourConversion (_("Rec. 601"), dcp::ColourConversion::rec601_to_xyz ()));
-       _colour_conversions.push_back (PresetColourConversion (_("Rec. 709"), dcp::ColourConversion::rec709_to_xyz ()));
-       _colour_conversions.push_back (PresetColourConversion (_("P3 (from SMPTE RP 431-2)"), dcp::ColourConversion::p3_to_xyz ()));
-
        set_kdm_email_to_default ();
 }
 
@@ -187,25 +181,6 @@ Config::read ()
        _default_j2k_bandwidth = f.optional_number_child<int>("DefaultJ2KBandwidth").get_value_or (200000000);
        _default_audio_delay = f.optional_number_child<int>("DefaultAudioDelay").get_value_or (0);
 
-       list<cxml::NodePtr> cc = f.node_children ("ColourConversion");
-
-       if (!cc.empty ()) {
-               _colour_conversions.clear ();
-       }
-
-       try {
-               for (list<cxml::NodePtr>::iterator i = cc.begin(); i != cc.end(); ++i) {
-                       /* This is a bit of a hack; use 32 (the first Film state file version for the 2.x branch)
-                          for version 2 and 10 (the current Film state version for the 1.x branch) for version 1.
-                       */
-                       _colour_conversions.push_back (PresetColourConversion (*i, version == 2 ? 32 : 10));
-               }
-       } catch (cxml::Error) {
-               /* Probably failed to load an old-style ColourConversion tag; just give up */
-               _colour_conversions.push_back (PresetColourConversion (_("sRGB"), dcp::ColourConversion::srgb_to_xyz ()));
-               _colour_conversions.push_back (PresetColourConversion (_("Rec. 709"), dcp::ColourConversion::rec709_to_xyz ()));
-       }
-
        list<cxml::NodePtr> cin = f.node_children ("Cinema");
        for (list<cxml::NodePtr>::iterator i = cin.begin(); i != cin.end(); ++i) {
                /* Slightly grotty two-part construction of Cinema here so that we can use
@@ -355,10 +330,6 @@ Config::write () const
        root->add_child("DefaultJ2KBandwidth")->add_child_text (raw_convert<string> (_default_j2k_bandwidth));
        root->add_child("DefaultAudioDelay")->add_child_text (raw_convert<string> (_default_audio_delay));
 
-       for (vector<PresetColourConversion>::const_iterator i = _colour_conversions.begin(); i != _colour_conversions.end(); ++i) {
-               i->as_xml (root->add_child ("ColourConversion"));
-       }
-
        for (list<shared_ptr<Cinema> >::const_iterator i = _cinemas.begin(); i != _cinemas.end(); ++i) {
                (*i)->as_xml (root->add_child ("Cinema"));
        }
index f436061e82754d1e92a0d5bc5deeb70847bc72df..b39e7af3ac028c8b1bdd1b418eceaddfccd8e7a0 100644 (file)
@@ -25,7 +25,6 @@
 #define DCPOMATIC_CONFIG_H
 
 #include "isdcf_metadata.h"
-#include "colour_conversion.h"
 #include "video_content.h"
 #include <dcp/metadata.h>
 #include <dcp/certificates.h>
@@ -154,10 +153,6 @@ public:
                return _default_audio_delay;
        }
 
-       std::vector<PresetColourConversion> colour_conversions () const {
-               return _colour_conversions;
-       }
-
        std::string mail_server () const {
                return _mail_server;
        }
@@ -325,10 +320,6 @@ public:
                maybe_set (_default_audio_delay, d);
        }
 
-       void set_colour_conversions (std::vector<PresetColourConversion> const & c) {
-               maybe_set (_colour_conversions, c);
-       }
-
        void set_mail_server (std::string s) {
                maybe_set (_mail_server, s);
        }
@@ -464,7 +455,6 @@ private:
        std::string _dcp_issuer;
        int _default_j2k_bandwidth;
        int _default_audio_delay;
-       std::vector<PresetColourConversion> _colour_conversions;
        std::list<boost::shared_ptr<Cinema> > _cinemas;
        std::string _mail_server;
        std::string _mail_user;
index 640253c6d97da8e80ca4bca5b604a5ab3f989b78..d5098fed7c455bcb900b0b59d4d3a499ac770cba 100644 (file)
@@ -307,7 +307,7 @@ Player::black_player_video_frame (DCPTime time) const
                        _video_container_size,
                        EYES_BOTH,
                        PART_WHOLE,
-                       Config::instance()->colour_conversions().front().conversion
+                       PresetColourConversion::all().front().conversion
                )
        );
 }
index 0b35ad5395dfde0c59037a4af4542081650b7381..dccf32f4d6c5d1345d4c7202b0dbe5ae812eb85d 100644 (file)
@@ -325,6 +325,7 @@ dcpomatic_setup ()
        dcp::init ();
        
        Ratio::setup_ratios ();
+       PresetColourConversion::setup_colour_conversion_presets ();
        VideoContentScale::setup_scales ();
        DCPContentType::setup_dcp_content_types ();
        Filter::setup_filters ();
index 482e403095ab94879660e89c8415b3c327cf0b1a..be72fd0010006138e4940b605fb24cb4da783b74 100644 (file)
@@ -197,7 +197,7 @@ ColourConversionEditor::ColourConversionEditor (wxWindow* parent)
        _input_gamma->SetDigits (2);
        _input_gamma->SetIncrement (0.1);
        _input_power->SetRange (0.1, 4.0);
-       _input_power->SetDigits (2);
+       _input_power->SetDigits (6);
        _input_power->SetIncrement (0.1);
        _output_gamma->SetRange (0.1, 4.0);
        _output_gamma->SetDigits (2);
index 7223dd84fafadf6cd0f642d251f4871a01e2aa5b..e4e6dd5739736d7d14075d7d08f67cdf58491865 100644 (file)
 #include <wx/preferences.h>
 #include <wx/filepicker.h>
 #include <wx/spinctrl.h>
-#include <dcp/colour_matrix.h>
 #include <dcp/exceptions.h>
 #include <dcp/signer.h>
 #include "lib/config.h"
 #include "lib/ratio.h"
 #include "lib/filter.h"
 #include "lib/dcp_content_type.h"
-#include "lib/colour_conversion.h"
 #include "lib/log.h"
 #include "lib/util.h"
 #include "lib/cross.h"
@@ -46,7 +44,6 @@
 #include "filter_dialog.h"
 #include "dir_picker_ctrl.h"
 #include "isdcf_metadata_dialog.h"
-#include "preset_colour_conversion_dialog.h"
 #include "server_dialog.h"
 #include "make_signer_chain_dialog.h"
 
@@ -539,55 +536,6 @@ private:
        EditableList<string, ServerDialog>* _servers_list;
 };
 
-class ColourConversionsPage : public StandardPage
-{
-public:
-       ColourConversionsPage (wxSize panel_size, int border)
-               : StandardPage (panel_size, border)
-       {}
-       
-       wxString GetName () const
-       {
-               return _("Colour Conversions");
-       }
-
-#ifdef DCPOMATIC_OSX   
-       wxBitmap GetLargeIcon () const
-       {
-               return wxBitmap ("colour_conversions", wxBITMAP_TYPE_PNG_RESOURCE);
-       }
-#endif
-
-private:       
-       void setup ()
-       {
-               vector<string> columns;
-               columns.push_back (wx_to_std (_("Name")));
-               _list = new EditableList<PresetColourConversion, PresetColourConversionDialog> (
-                       _panel,
-                       columns,
-                       boost::bind (&Config::colour_conversions, Config::instance()),
-                       boost::bind (&Config::set_colour_conversions, Config::instance(), _1),
-                       boost::bind (&ColourConversionsPage::colour_conversion_column, this, _1),
-                       300
-                       );
-
-               _panel->GetSizer()->Add (_list, 1, wxEXPAND | wxALL, _border);
-       }
-
-       void config_changed ()
-       {
-               _list->refresh ();
-       }
-
-       string colour_conversion_column (PresetColourConversion c)
-       {
-               return c.name;
-       }
-
-       EditableList<PresetColourConversion, PresetColourConversionDialog>* _list;
-};
-
 class KeysPage : public StandardPage
 {
 public:
@@ -1318,7 +1266,6 @@ create_config_dialog ()
        e->AddPage (new GeneralPage (ps, border));
        e->AddPage (new DefaultsPage (ps, border));
        e->AddPage (new EncodingServersPage (ps, border));
-       e->AddPage (new ColourConversionsPage (ps, border));
        e->AddPage (new KeysPage (ps, border));
        e->AddPage (new TMSPage (ps, border));
        e->AddPage (new KDMEmailPage (ps, border));
index 500a168f5d990eddb3d46311d43954e31e279bdc..b382c342937f5d01ab77c43a527ab259958fcadd 100644 (file)
 
 */
 
-#include <wx/statline.h>
 #include "lib/colour_conversion.h"
 #include "lib/config.h"
 #include "lib/util.h"
 #include "wx_util.h"
 #include "content_colour_conversion_dialog.h"
 #include "colour_conversion_editor.h"
+#include <wx/statline.h>
+#include <boost/foreach.hpp>
 
 using std::string;
 using std::vector;
@@ -61,9 +62,8 @@ ContentColourConversionDialog::ContentColourConversionDialog (wxWindow* parent)
 
        _editor_connection = _editor->Changed.connect (boost::bind (&ContentColourConversionDialog::check_for_preset, this));
 
-       vector<PresetColourConversion> presets = Config::instance()->colour_conversions ();
-       for (vector<PresetColourConversion>::const_iterator i = presets.begin(); i != presets.end(); ++i) {
-               _preset_choice->Append (std_to_wx (i->name));
+       BOOST_FOREACH (PresetColourConversion const &i, PresetColourConversion::all ()) {
+               _preset_choice->Append (std_to_wx (i.name));
        }
 }
 
@@ -116,7 +116,7 @@ ContentColourConversionDialog::preset_check_clicked ()
 void
 ContentColourConversionDialog::preset_choice_changed ()
 {
-       vector<PresetColourConversion> presets = Config::instance()->colour_conversions ();
+       vector<PresetColourConversion> presets = PresetColourConversion::all ();
        int const s = _preset_choice->GetCurrentSelection();
        if (s != -1) {
                set (presets[s].conversion);
index c4be761db876532442287a904e6c1c2082ee9f23..0f241506e6a29f8f0083f23703c2106a5e9088b1 100644 (file)
@@ -249,7 +249,7 @@ VideoPanel::film_content_changed (int property)
                        checked_set (_colour_conversion, wxT (""));
                } else if (vcs->colour_conversion ()) {
                        optional<size_t> preset = vcs->colour_conversion().get().preset ();
-                       vector<PresetColourConversion> cc = Config::instance()->colour_conversions ();
+                       vector<PresetColourConversion> cc = PresetColourConversion::all ();
                        if (preset) {
                                checked_set (_colour_conversion, std_to_wx (cc[preset.get()].name));
                        } else {