summaryrefslogtreecommitdiff
path: root/src/colour_conversion.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-01-04 13:54:15 +0000
committerCarl Hetherington <cth@carlh.net>2015-01-04 13:54:15 +0000
commitc2018e0dae9ed2503b6244a47524a7ce16eedb0b (patch)
tree267fc895ab639dbd59c460867a90efe9bbee7e40 /src/colour_conversion.cc
parent3a546df5dacafb99958d53c9738e135d4f0deb2b (diff)
Try to fix static initialisation order problems.
Diffstat (limited to 'src/colour_conversion.cc')
-rw-r--r--src/colour_conversion.cc45
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,