1///////////////////////////////////////////////////////////////////////////
2//
3// Copyright (c) 2002, 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_CONVERT_H
37#define INCLUDED_IMF_CONVERT_H
38
39//-----------------------------------------------------------------------------
40//
41// Routines for converting between pixel data types,
42// with well-defined behavior for exceptional cases,
43// without depending on how hardware and operating
44// system handle integer overflows and floating-point
45// exceptions.
46//
47//-----------------------------------------------------------------------------
48
49#include "half.h"
50#include "ImfExport.h"
51#include "ImfNamespace.h"
52
53OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
54
55
56//---------------------------------------------------------
57// Conversion from half or float to unsigned int:
58//
59// input result
60// ---------------------------------------------------
61//
62// finite, >= 0 input, cast to unsigned int
63// (rounds towards zero)
64//
65// finite, < 0 0
66//
67// NaN 0
68//
69// +infinity UINT_MAX
70//
71// -infinity 0
72//
73//---------------------------------------------------------
74
75IMF_EXPORT unsigned int halfToUint (half h);
76IMF_EXPORT unsigned int floatToUint (float f);
77
78
79//---------------------------------------------------------
80// Conversion from unsigned int or float to half:
81//
82// input result
83// ---------------------------------------------------
84//
85// finite, closest possible half
86// magnitude <= HALF_MAX
87//
88// finite, > HALF_MAX +infinity
89//
90// finite, < -HALF_MAX -infinity
91//
92// NaN NaN
93//
94// +infinity +infinity
95//
96// -infinity -infinity
97//
98//---------------------------------------------------------
99
100IMF_EXPORT half uintToHalf (unsigned int ui);
101IMF_EXPORT half floatToHalf (float f);
102
103
104OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
105
106
107#endif
108

source code of include/OpenEXR/ImfConvert.h