source: NonGTP/OpenEXR/include/IlmImf/ImfVersion.h @ 855

Revision 855, 3.7 KB checked in by igarcia, 18 years ago (diff)
Line 
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
46namespace 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
55const 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
69const int VERSION_NUMBER_FIELD  = 0x000000ff;
70const int VERSION_FLAGS_FIELD   = 0xffffff00;
71
72
73//
74// Value that goes into VERSION_NUMBER_FIELD.
75//
76
77const 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
85const int TILED_FLAG            = 0x00000200;
86
87
88//
89// Bitwise OR of all known flags.
90//
91
92const int ALL_FLAGS             = TILED_FLAG;
93
94
95//
96// Utility functions
97//
98
99inline bool  isTiled (int version)      {return !!(version & TILED_FLAG);}
100inline int   makeTiled (int version)    {return version | TILED_FLAG;}
101inline int   makeNotTiled (int version) {return version & ~TILED_FLAG;}
102inline int   getVersion (int version)   {return version & VERSION_NUMBER_FIELD;}
103inline int   getFlags (int version)     {return version & VERSION_FLAGS_FIELD;}
104inline 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
112bool         isImfMagic (const char bytes[4]);
113
114
115} // namespace Imf
116
117#endif
Note: See TracBrowser for help on using the repository browser.