Update to 2.0.0 tree from current Fremantle build
[opencv] / 3rdparty / include / OpenEXR / ImfRgba.h
1 ///////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (c) 2004, 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_RGBA_H
37 #define INCLUDED_IMF_RGBA_H
38
39 //-----------------------------------------------------------------------------
40 //
41 //      class Rgba
42 //
43 //-----------------------------------------------------------------------------
44
45 #include "half.h"
46
47 namespace Imf {
48
49
50 //
51 // RGBA pixel
52 //
53
54 struct Rgba
55 {
56     half        r;
57     half        g;
58     half        b;
59     half        a;
60     
61     Rgba () {}
62     Rgba (half r, half g, half b, half a = 1.f): r (r), g (g), b (b), a (a) {}
63
64     Rgba & operator = (const Rgba &other)
65     {
66         r = other.r;
67         g = other.g;
68         b = other.b;
69         a = other.a;
70
71         return *this;
72     }
73 };
74
75
76 //
77 // Channels in an RGBA file
78 //
79
80 enum RgbaChannels
81 {
82     WRITE_R     = 0x01,         // Red
83     WRITE_G     = 0x02,         // Green
84     WRITE_B     = 0x04,         // Blue
85     WRITE_A     = 0x08,         // Alpha
86
87     WRITE_Y     = 0x10,         // Luminance, for black-and-white images,
88                                 // or in combination with chroma
89
90     WRITE_C     = 0x20,         // Chroma (two subsampled channels, RY and BY,
91                                 // supported only for scanline-based files)
92
93     WRITE_RGB   = 0x07,         // Red, green, blue
94     WRITE_RGBA  = 0x0f,         // Red, green, blue, alpha
95
96     WRITE_YC    = 0x30,         // Luminance, chroma
97     WRITE_YA    = 0x18,         // Luminance, alpha
98     WRITE_YCA   = 0x38          // Luminance, chroma, alpha
99 };
100
101
102 } // namespace Imf
103
104 #endif