~cosme/ubuntu/precise/freeimage/freeimage-3.15.1

« back to all changes in this revision

Viewing changes to Source/OpenEXR/IlmImf/ImfChromaticities.h

  • Committer: Stefano Rivera
  • Date: 2010-07-24 15:35:51 UTC
  • mto: This revision was merged to the branch mainline in revision 5.
  • Revision ID: stefanor@ubuntu.com-20100724153551-6s3fth1653huk31a
Tags: upstream-3.13.1
ImportĀ upstreamĀ versionĀ 3.31.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
///////////////////////////////////////////////////////////////////////////
2
 
//
3
 
// Copyright (c) 2003, Industrial Light & Magic, a division of Lucas
4
 
// Digital Ltd. LLC
5
 
// 
6
 
// All rights reserved.
7
 
// 
8
 
// Redistribution and use in source and binary forms, with or without
9
 
// modification, are permitted provided that the following conditions are
10
 
// met:
11
 
// *       Redistributions of source code must retain the above copyright
12
 
// notice, this list of conditions and the following disclaimer.
13
 
// *       Redistributions in binary form must reproduce the above
14
 
// copyright notice, this list of conditions and the following disclaimer
15
 
// in the documentation and/or other materials provided with the
16
 
// distribution.
17
 
// *       Neither the name of Industrial Light & Magic nor the names of
18
 
// its contributors may be used to endorse or promote products derived
19
 
// from this software without specific prior written permission. 
20
 
// 
21
 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
 
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
 
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
 
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
 
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
 
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
 
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
 
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
 
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
 
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
 
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
 
//
33
 
///////////////////////////////////////////////////////////////////////////
34
 
 
35
 
 
36
 
#ifndef INCLUDED_IMF_CHROMATICITIES_H
37
 
#define INCLUDED_IMF_CHROMATICITIES_H
38
 
 
39
 
//-----------------------------------------------------------------------------
40
 
//
41
 
//      CIE (x,y) chromaticities, and conversions between
42
 
//      RGB tiples and CIE XYZ tristimulus values.
43
 
//
44
 
//-----------------------------------------------------------------------------
45
 
 
46
 
#include "ImathVec.h"
47
 
#include "ImathMatrix.h"
48
 
 
49
 
namespace Imf {
50
 
 
51
 
   
52
 
struct Chromaticities
53
 
{
54
 
    //-----------------------------------------------
55
 
    // The CIE x and y coordinates of the RGB triples
56
 
    // (1,0,0), (0,1,0), (0,0,1) and (1,1,1).
57
 
    //-----------------------------------------------
58
 
 
59
 
    Imath::V2f  red;
60
 
    Imath::V2f  green;
61
 
    Imath::V2f  blue;
62
 
    Imath::V2f  white;
63
 
 
64
 
    //--------------------------------------------
65
 
    // Default constructor produces chromaticities
66
 
    // according to Rec. ITU-R BT.709-3
67
 
    //--------------------------------------------
68
 
 
69
 
    Chromaticities (const Imath::V2f &red   = Imath::V2f (0.6400f, 0.3300f),
70
 
                    const Imath::V2f &green = Imath::V2f (0.3000f, 0.6000f),
71
 
                    const Imath::V2f &blue  = Imath::V2f (0.1500f, 0.0600f),
72
 
                    const Imath::V2f &white = Imath::V2f (0.3127f, 0.3290f));
73
 
};
74
 
 
75
 
 
76
 
//
77
 
// Conversions between RGB and CIE XYZ
78
 
//
79
 
// RGB to XYZ:
80
 
//
81
 
//      Given a set of chromaticities, c, and the luminance, Y, of the RGB
82
 
//      triple (1,1,1), or "white", RGBtoXYZ(c,Y) computes a matrix, M, so
83
 
//      that multiplying an RGB value, v, with M produces an equivalent
84
 
//      XYZ value, w.  (w == v * M)
85
 
// 
86
 
//      If we define that
87
 
// 
88
 
//         (Xr, Yr, Zr) == (1, 0, 0) * M
89
 
//         (Xg, Yg, Zg) == (0, 1, 0) * M
90
 
//         (Xb, Yb, Zb) == (0, 0, 1) * M
91
 
//         (Xw, Yw, Zw) == (1, 1, 1) * M,
92
 
// 
93
 
//      then the following statements are true:
94
 
// 
95
 
//         Xr / (Xr + Yr + Zr) == c.red.x
96
 
//         Yr / (Xr + Yr + Zr) == c.red.y
97
 
// 
98
 
//         Xg / (Xg + Yg + Zg) == c.red.x
99
 
//         Yg / (Xg + Yg + Zg) == c.red.y
100
 
// 
101
 
//         Xb / (Xb + Yb + Zb) == c.red.x
102
 
//         Yb / (Xb + Yb + Zb) == c.red.y
103
 
// 
104
 
//         Xw / (Xw + Yw + Zw) == c.red.x
105
 
//         Yw / (Xw + Yw + Zw) == c.red.y
106
 
// 
107
 
//         Yw == Y.
108
 
// 
109
 
// XYZ to RGB:
110
 
// 
111
 
//      YYZtoRGB(c,Y) returns RGBtoXYZ(c,Y).inverse().
112
 
// 
113
 
 
114
 
Imath::M44f     RGBtoXYZ (const Chromaticities chroma, float Y);
115
 
Imath::M44f     XYZtoRGB (const Chromaticities chroma, float Y);
116
 
 
117
 
 
118
 
} // namespace Imf
119
 
 
120
 
#endif
 
1
///////////////////////////////////////////////////////////////////////////
 
2
//
 
3
// Copyright (c) 2003, Industrial Light & Magic, a division of Lucas
 
4
// Digital Ltd. LLC
 
5
// 
 
6
// All rights reserved.
 
7
// 
 
8
// Redistribution and use in source and binary forms, with or without
 
9
// modification, are permitted provided that the following conditions are
 
10
// met:
 
11
// *       Redistributions of source code must retain the above copyright
 
12
// notice, this list of conditions and the following disclaimer.
 
13
// *       Redistributions in binary form must reproduce the above
 
14
// copyright notice, this list of conditions and the following disclaimer
 
15
// in the documentation and/or other materials provided with the
 
16
// distribution.
 
17
// *       Neither the name of Industrial Light & Magic nor the names of
 
18
// its contributors may be used to endorse or promote products derived
 
19
// from this software without specific prior written permission. 
 
20
// 
 
21
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
22
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
23
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 
24
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 
25
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 
26
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 
27
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
28
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
29
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
30
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
31
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
32
//
 
33
///////////////////////////////////////////////////////////////////////////
 
34
 
 
35
 
 
36
#ifndef INCLUDED_IMF_CHROMATICITIES_H
 
37
#define INCLUDED_IMF_CHROMATICITIES_H
 
38
 
 
39
//-----------------------------------------------------------------------------
 
40
//
 
41
//      CIE (x,y) chromaticities, and conversions between
 
42
//      RGB tiples and CIE XYZ tristimulus values.
 
43
//
 
44
//-----------------------------------------------------------------------------
 
45
 
 
46
#include "ImathVec.h"
 
47
#include "ImathMatrix.h"
 
48
 
 
49
namespace Imf {
 
50
 
 
51
   
 
52
struct Chromaticities
 
53
{
 
54
    //-----------------------------------------------
 
55
    // The CIE x and y coordinates of the RGB triples
 
56
    // (1,0,0), (0,1,0), (0,0,1) and (1,1,1).
 
57
    //-----------------------------------------------
 
58
 
 
59
    Imath::V2f  red;
 
60
    Imath::V2f  green;
 
61
    Imath::V2f  blue;
 
62
    Imath::V2f  white;
 
63
 
 
64
    //--------------------------------------------
 
65
    // Default constructor produces chromaticities
 
66
    // according to Rec. ITU-R BT.709-3
 
67
    //--------------------------------------------
 
68
 
 
69
    Chromaticities (const Imath::V2f &red   = Imath::V2f (0.6400f, 0.3300f),
 
70
                    const Imath::V2f &green = Imath::V2f (0.3000f, 0.6000f),
 
71
                    const Imath::V2f &blue  = Imath::V2f (0.1500f, 0.0600f),
 
72
                    const Imath::V2f &white = Imath::V2f (0.3127f, 0.3290f));
 
73
};
 
74
 
 
75
 
 
76
//
 
77
// Conversions between RGB and CIE XYZ
 
78
//
 
79
// RGB to XYZ:
 
80
//
 
81
//      Given a set of chromaticities, c, and the luminance, Y, of the RGB
 
82
//      triple (1,1,1), or "white", RGBtoXYZ(c,Y) computes a matrix, M, so
 
83
//      that multiplying an RGB value, v, with M produces an equivalent
 
84
//      XYZ value, w.  (w == v * M)
 
85
// 
 
86
//      If we define that
 
87
// 
 
88
//         (Xr, Yr, Zr) == (1, 0, 0) * M
 
89
//         (Xg, Yg, Zg) == (0, 1, 0) * M
 
90
//         (Xb, Yb, Zb) == (0, 0, 1) * M
 
91
//         (Xw, Yw, Zw) == (1, 1, 1) * M,
 
92
// 
 
93
//      then the following statements are true:
 
94
// 
 
95
//         Xr / (Xr + Yr + Zr) == c.red.x
 
96
//         Yr / (Xr + Yr + Zr) == c.red.y
 
97
// 
 
98
//         Xg / (Xg + Yg + Zg) == c.red.x
 
99
//         Yg / (Xg + Yg + Zg) == c.red.y
 
100
// 
 
101
//         Xb / (Xb + Yb + Zb) == c.red.x
 
102
//         Yb / (Xb + Yb + Zb) == c.red.y
 
103
// 
 
104
//         Xw / (Xw + Yw + Zw) == c.red.x
 
105
//         Yw / (Xw + Yw + Zw) == c.red.y
 
106
// 
 
107
//         Yw == Y.
 
108
// 
 
109
// XYZ to RGB:
 
110
// 
 
111
//      YYZtoRGB(c,Y) returns RGBtoXYZ(c,Y).inverse().
 
112
// 
 
113
 
 
114
Imath::M44f     RGBtoXYZ (const Chromaticities chroma, float Y);
 
115
Imath::M44f     XYZtoRGB (const Chromaticities chroma, float Y);
 
116
 
 
117
 
 
118
} // namespace Imf
 
119
 
 
120
#endif