summaryrefslogtreecommitdiff
path: root/src/colour_conversion.cc
diff options
context:
space:
mode:
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,