Move the sources to trunk
[opencv] / otherlibs / _graphics / include / OpenEXR / ImfVersion.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_VERSION_H
37 #define INCLUDED_IMF_VERSION_H
38
39 //-----------------------------------------------------------------------------
40 //
41 //      Magic and version number.
42 //
43 //-----------------------------------------------------------------------------
44
45
46 namespace Imf {
47
48
49 //
50 // The MAGIC number is stored in the first four bytes of every
51 // OpenEXR image file.  This can be used to quickly test whether
52 // a given file is an OpenEXR image file (see isImfMagic(), below).
53 //
54
55 const int MAGIC = 20000630;
56
57
58 //
59 // The second item in each OpenEXR image file, right after the
60 // magic number, is a four-byte file version identifier.  Depending
61 // on a file's version identifier, a file reader can enable various
62 // backwards-compatibility switches, or it can quickly reject files
63 // that it cannot read.
64 //
65 // The version identifier is split into an 8-bit version number,
66 // and a 24-bit flags field.
67 //
68
69 const int VERSION_NUMBER_FIELD  = 0x000000ff;
70 const int VERSION_FLAGS_FIELD   = 0xffffff00;
71
72
73 //
74 // Value that goes into VERSION_NUMBER_FIELD.
75 //
76
77 const int EXR_VERSION           = 2;
78
79
80 //
81 // Flags that can go into VERSION_FLAGS_FIELD.
82 // Flags can only occupy the 1 bits in VERSION_FLAGS_FIELD.
83 //
84
85 const int TILED_FLAG            = 0x00000200;
86
87
88 //
89 // Bitwise OR of all known flags.
90 //
91
92 const int ALL_FLAGS             = TILED_FLAG;
93
94
95 //
96 // Utility functions
97 //
98
99 inline bool  isTiled (int version)      {return !!(version & TILED_FLAG);}
100 inline int   makeTiled (int version)    {return version | TILED_FLAG;}
101 inline int   makeNotTiled (int version) {return version & ~TILED_FLAG;}
102 inline int   getVersion (int version)   {return version & VERSION_NUMBER_FIELD;}
103 inline int   getFlags (int version)     {return version & VERSION_FLAGS_FIELD;}
104 inline bool  supportsFlags (int flags)  {return !(flags & ~ALL_FLAGS);}
105
106
107 //
108 // Given the first four bytes of a file, returns true if the
109 // file is probably an OpenEXR image file, false if not.
110 //
111
112 bool         isImfMagic (const char bytes[4]);
113
114
115 } // namespace Imf
116
117 #endif