diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-01-04 13:54:15 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-01-04 13:54:15 +0000 |
| commit | c2018e0dae9ed2503b6244a47524a7ce16eedb0b (patch) | |
| tree | 267fc895ab639dbd59c460867a90efe9bbee7e40 /src/colour_conversion.cc | |
| parent | 3a546df5dacafb99958d53c9738e135d4f0deb2b (diff) | |
Try to fix static initialisation order problems.
Diffstat (limited to 'src/colour_conversion.cc')
| -rw-r--r-- | src/colour_conversion.cc | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/src/colour_conversion.cc b/src/colour_conversion.cc index f2e85e76..5a2b1fd5 100644 --- a/src/colour_conversion.cc +++ b/src/colour_conversion.cc @@ -25,23 +25,38 @@ using boost::shared_ptr; using namespace dcp; -ColourConversion ColourConversion::srgb_to_xyz ( - shared_ptr<const TransferFunction> (new ModifiedGammaTransferFunction (false, 2.4, 0.04045, 0.055, 12.92)), - dcp::colour_matrix::srgb_to_xyz, - shared_ptr<const TransferFunction> (new GammaTransferFunction (true, 2.6)) - ); +ColourConversion const & +ColourConversion::srgb_to_xyz () +{ + static ColourConversion* c = new ColourConversion ( + shared_ptr<const TransferFunction> (new ModifiedGammaTransferFunction (false, 2.4, 0.04045, 0.055, 12.92)), + dcp::colour_matrix::srgb_to_xyz, + shared_ptr<const TransferFunction> (new GammaTransferFunction (true, 2.6)) + ); + return *c; +} -ColourConversion ColourConversion::xyz_to_srgb ( - shared_ptr<const TransferFunction> (new GammaTransferFunction (false, 2.6)), - dcp::colour_matrix::xyz_to_rgb, - shared_ptr<const TransferFunction> (new ModifiedGammaTransferFunction (true, 2.4, 0.04045, 0.055, 12.92)) - ); +ColourConversion const & +ColourConversion::xyz_to_srgb () +{ + static ColourConversion* c = new ColourConversion ( + shared_ptr<const TransferFunction> (new GammaTransferFunction (false, 2.6)), + dcp::colour_matrix::xyz_to_rgb, + shared_ptr<const TransferFunction> (new ModifiedGammaTransferFunction (true, 2.4, 0.04045, 0.055, 12.92)) + ); + return *c; +} -ColourConversion ColourConversion::rec709_to_xyz ( - shared_ptr<const TransferFunction> (new ModifiedGammaTransferFunction (false, 2.4, 0.081, 0.099, 4.5)), - dcp::colour_matrix::srgb_to_xyz, - shared_ptr<const TransferFunction> (new GammaTransferFunction (true, 2.6)) - ); +ColourConversion const & +ColourConversion::rec709_to_xyz () +{ + static ColourConversion* c = new ColourConversion ( + shared_ptr<const TransferFunction> (new ModifiedGammaTransferFunction (false, 2.4, 0.081, 0.099, 4.5)), + dcp::colour_matrix::srgb_to_xyz, + shared_ptr<const TransferFunction> (new GammaTransferFunction (true, 2.6)) + ); + return *c; +} ColourConversion::ColourConversion ( shared_ptr<const TransferFunction> in, |
