1///////////////////////////////////////////////////////////////////////////
2//
3// Copyright (c) 2013, 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_DEEPIMAGESTATE_H
37#define INCLUDED_IMF_DEEPIMAGESTATE_H
38
39//-----------------------------------------------------------------------------
40//
41// enum DeepImageState -- describes how orderly the pixel data
42// in a deep image are
43//
44// The samples in a deep image pixel may be sorted according to
45// depth, and the sample depths or depth ranges may or may not
46// overlap each other. A pixel is
47//
48// - SORTED if for every i and j with i < j
49//
50// (Z[i] < Z[j]) || (Z[i] == Z[j] && ZBack[i] < ZBack[j]),
51//
52// - NON_OVERLAPPING if for every i and j with i != j
53//
54// (Z[i] < Z[j] && ZBack[i] <= Z[j]) ||
55// (Z[j] < Z[i] && ZBack[j] <= Z[i]) ||
56// (Z[i] == Z[j] && ZBack[i] <= Z[i] & ZBack[j] > Z[j]) ||
57// (Z[i] == Z[j] && ZBack[j] <= Z[j] & ZBack[i] > Z[i]),
58//
59// - TIDY if it is SORTED and NON_OVERLAPPING,
60//
61// - MESSY if it is neither SORTED nor NON_OVERLAPPING.
62//
63// A deep image is
64//
65// - MESSY if at least one of its pixels is MESSY,
66// - SORTED if all of its pixels are SORTED,
67// - NON_OVERLAPPING if all of its pixels are NON_OVERLAPPING,
68// - TIDY if all of its pixels are TIDY.
69//
70// Note: the rather complicated definition of NON_OVERLAPPING prohibits
71// overlapping volume samples, coincident point samples and point samples
72// in the middle of a volume sample, but it does allow point samples at
73// the front or back of a volume sample.
74//
75//-----------------------------------------------------------------------------
76
77#include "ImfNamespace.h"
78#include "ImfExport.h"
79
80
81OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
82
83enum DeepImageState
84{
85 DIS_MESSY = 0,
86 DIS_SORTED = 1,
87 DIS_NON_OVERLAPPING = 2,
88 DIS_TIDY = 3,
89
90 DIS_NUMSTATES // Number of different image states
91};
92
93OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
94
95
96#endif
97