Skip to content

Commit fe93433

Browse files
Changes to support OpenEXR 3.0. (#422)
1 parent 63ed454 commit fe93433

File tree

4 files changed

+35
-35
lines changed

4 files changed

+35
-35
lines changed

source/backend/povray.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,21 @@
6868
extern "C" const char* TIFFGetVersion(void);
6969
#endif
7070
#ifndef OPENEXR_MISSING
71-
#include <IlmBaseConfig.h>
7271
#include <OpenEXRConfig.h>
72+
#if (OPENEXR_VERSION_MAJOR < 3)
73+
#include <IlmBaseConfig.h>
74+
#else
75+
#include <Imath/ImathConfig.h>
76+
#endif
7377
// NOTE:
7478
// Versions of OpenEXR and IlmImf prior to 1.7.1 do not seem to have a way to get the version number,
7579
// nor do the official hard-coded Windows config headers.
7680
#ifndef ILMBASE_PACKAGE_STRING
7781
#define ILMBASE_PACKAGE_STRING "IlmBase"
7882
#endif
83+
#ifndef IMATH_PACKAGE_STRING
84+
#define IMATH_PACKAGE_STRING "Imath"
85+
#endif
7986
#ifndef OPENEXR_PACKAGE_STRING
8087
#define OPENEXR_PACKAGE_STRING "OpenEXR"
8188
#endif
@@ -458,7 +465,11 @@ void BuildInitInfo(POVMSObjectPtr msg)
458465
err = POVMSAttr_New(&attr);
459466
if(err == kNoErr)
460467
{
468+
#if (OPENEXR_VERSION_MAJOR < 3)
461469
const char *tempstr = OPENEXR_PACKAGE_STRING " and " ILMBASE_PACKAGE_STRING ", Copyright (c) 2002-2011 Industrial Light & Magic.";
470+
#else
471+
const char *tempstr = OPENEXR_PACKAGE_STRING " and " IMATH_PACKAGE_STRING ", Copyright (c) Contributors to the OpenEXR Project.";
472+
#endif
462473
err = POVMSAttr_Set(&attr, kPOVMSType_CString, reinterpret_cast<const void *>(tempstr), (int) strlen(tempstr) + 1);
463474
if(err == kNoErr)
464475
err = POVMSAttrList_Append(&attrlist, &attr);

source/base/image/openexr.cpp

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,11 @@
4646

4747
#ifndef OPENEXR_MISSING
4848

49-
#ifdef NON_UNIX_OPENEXR_HEADERS
50-
5149
#include <ImfRgbaFile.h>
5250
#include <ImfStringAttribute.h>
5351
#include <ImfMatrixAttribute.h>
5452
#include <ImfArray.h>
5553

56-
#else
57-
58-
#include <OpenEXR/ImfRgbaFile.h>
59-
#include <OpenEXR/ImfStringAttribute.h>
60-
#include <OpenEXR/ImfMatrixAttribute.h>
61-
#include <OpenEXR/ImfArray.h>
62-
63-
#endif
6454
#include "metadata.h"
6555

6656
// this must be the last file included
@@ -78,6 +68,11 @@ using namespace Imath;
7868
/*****************************************************************************
7969
* Local preprocessor defines
8070
******************************************************************************/
71+
#if (OPENEXR_VERSION_MAJOR < 3)
72+
#define OPENEXR_INT64 Int64
73+
#else
74+
#define OPENEXR_INT64 uint64_t
75+
#endif
8176

8277
/*****************************************************************************
8378
* Local typedefs
@@ -105,17 +100,17 @@ class POV_EXR_OStream : public Imf::OStream
105100
throw POV_EXCEPTION(kFileDataErr, "Error while writing EXR output");
106101
}
107102

108-
Int64 tellp()
103+
OPENEXR_INT64 tellp()
109104
{
110-
unsigned long pos = os.tellg();
105+
POV_LONG pos = os.tellg();
111106
if((int) pos == -1)
112107
throw POV_EXCEPTION(kFileDataErr, "Error while writing EXR output");
113108
return(pos);
114109
}
115110

116-
void seekp(Int64 pos)
111+
void seekp(OPENEXR_INT64 pos)
117112
{
118-
if(!os.seekg((unsigned long)pos))
113+
if(!os.seekg((POV_LONG)pos))
119114
throw POV_EXCEPTION(kFileDataErr, "Error when writing EXR output");
120115
}
121116
private:
@@ -147,22 +142,22 @@ class POV_EXR_IStream : public Imf::IStream
147142
return (is.tellg() < fsize);
148143
}
149144

150-
Int64 tellg()
145+
OPENEXR_INT64 tellg()
151146
{
152-
unsigned long pos = is.tellg();
147+
POV_LONG pos = is.tellg();
153148
if((int)pos == -1)
154149
throw POV_EXCEPTION(kFileDataErr, "Error while reading EXR file");
155150
return pos;
156151
}
157152

158-
void seekg(Int64 pos)
153+
void seekg(OPENEXR_INT64 pos)
159154
{
160-
if(!is.seekg((unsigned long)pos))
155+
if(!is.seekg((POV_LONG)pos))
161156
throw POV_EXCEPTION(kFileDataErr, "Error while reading EXR file");
162157
}
163158
private:
164159
pov_base::IStream& is;
165-
unsigned long fsize;
160+
POV_LONG fsize;
166161
};
167162

168163
/*****************************************************************************
@@ -282,7 +277,7 @@ void Write(OStream *file, const Image *image, const Image::WriteOptions& options
282277
comments += meta.getComment3() + "\n";
283278
if (!meta.getComment4().empty())
284279
comments += meta.getComment4() + "\n";
285-
280+
286281
if (!comments.empty())
287282
hdr.insert("comments",StringAttribute(comments.c_str()));
288283

unix/config/ax_check_openexr.m4

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#
99
# LAST MODIFICATION
1010
#
11-
# 2007-11-08
11+
# 2021-06-15
1212
#
1313
# COPYLEFT
1414
#
@@ -46,17 +46,11 @@ AC_DEFUN([AX_CHECK_OPENEXR],
4646
ax_check_openexr_save_cppflags="$CPPFLAGS"
4747
ax_check_openexr_save_libs="$LIBS"
4848
CPPFLAGS="$ax_check_openexr_cflags $CPPFLAGS"
49+
LIBS="$ax_check_openexr_libs $LIBS"
4950
50-
# FIXME: workaround for versions >= 1.4.0
51-
AX_COMPARE_VERSION([$ax_check_openexr_version], [ge], [1.4],
52-
[LIBS="$ax_check_openexr_libs -lIlmThread $LIBS"],
53-
[LIBS="$ax_check_openexr_libs $LIBS"]
54-
)
55-
56-
# check include file
5751
AC_CHECK_HEADER(
5852
[OpenEXR/ImfCRgbaFile.h],
59-
[AC_CHECK_LIB([IlmImf], [ImfInputReadPixels], [], [ax_check_openexr="not found"])],
53+
[ax_check_openexr="ok"],
6054
[ax_check_openexr="no headers"]
6155
)
6256
fi

windows/vs10/povbase.vcxproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@
119119
<Optimization>Disabled</Optimization>
120120
<IntrinsicFunctions>true</IntrinsicFunctions>
121121
<AdditionalIncludeDirectories>..\..\libraries\ilmbase\config.windows;..\..\libraries\openexr\config.windows;..\..\libraries\openexr\IlmImf;..\..\libraries\ilmbase\Half;..\..\libraries\ilmbase\Imath;..\..\libraries\ilmbase\Iex;..\..\libraries\boost;..\..\vfe\win;..\..\vfe;..\..\source;..\..\source\base;..\..\source\backend;..\..\source\frontend;..\..\libraries\jpeg;..\..\libraries\zlib;..\..\libraries\png;..\..\libraries\tiff\libtiff;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
122-
<PreprocessorDefinitions>BOOST_ALL_NO_LIB;NON_UNIX_OPENEXR_HEADERS;_DEBUG;WIN32;WIN32_LEAN_AND_MEAN;_WINDOWS;WINVER=0x0500;_WIN32_WINNT=0x0500;COMMONCTRL_VERSION=0x500;CLASSLIB_DEFS_H;NOMINMAX;ISOLATION_AWARE_ENABLED;_CRT_SECURE_NO_DEPRECATE;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
122+
<PreprocessorDefinitions>BOOST_ALL_NO_LIB;_DEBUG;WIN32;WIN32_LEAN_AND_MEAN;_WINDOWS;WINVER=0x0500;_WIN32_WINNT=0x0500;COMMONCTRL_VERSION=0x500;CLASSLIB_DEFS_H;NOMINMAX;ISOLATION_AWARE_ENABLED;_CRT_SECURE_NO_DEPRECATE;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
123123
<StringPooling>true</StringPooling>
124124
<ExceptionHandling>Sync</ExceptionHandling>
125125
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
@@ -165,7 +165,7 @@
165165
<Optimization>Disabled</Optimization>
166166
<IntrinsicFunctions>true</IntrinsicFunctions>
167167
<AdditionalIncludeDirectories>..\..\libraries\ilmbase\config.windows;..\..\libraries\openexr\config.windows;..\..\libraries\openexr\IlmImf;..\..\libraries\ilmbase\Half;..\..\libraries\ilmbase\Imath;..\..\libraries\ilmbase\Iex;..\..\libraries\boost;..\..\vfe\win\;..\..\vfe\;..\..\source;..\..\source\base;..\..\source\backend;..\..\source\frontend;..\..\libraries\jpeg;..\..\libraries\zlib;..\..\libraries\png;..\..\libraries\tiff\libtiff;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
168-
<PreprocessorDefinitions>BOOST_ALL_NO_LIB;NON_UNIX_OPENEXR_HEADERS;_DEBUG;WIN32;WIN32_LEAN_AND_MEAN;_WINDOWS;CLASSLIB_DEFS_H;NOMINMAX;ISOLATION_AWARE_ENABLED;_CRT_SECURE_NO_DEPRECATE;_HAS_ITERATOR_DEBUGGING=0;BUILDING_AMD64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
168+
<PreprocessorDefinitions>BOOST_ALL_NO_LIB;_DEBUG;WIN32;WIN32_LEAN_AND_MEAN;_WINDOWS;CLASSLIB_DEFS_H;NOMINMAX;ISOLATION_AWARE_ENABLED;_CRT_SECURE_NO_DEPRECATE;_HAS_ITERATOR_DEBUGGING=0;BUILDING_AMD64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
169169
<StringPooling>true</StringPooling>
170170
<ExceptionHandling>Sync</ExceptionHandling>
171171
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
@@ -212,7 +212,7 @@
212212
<EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations>
213213
<WholeProgramOptimization>true</WholeProgramOptimization>
214214
<AdditionalIncludeDirectories>..\..\libraries\ilmbase\config.windows;..\..\libraries\openexr\config.windows;..\..\libraries\openexr\IlmImf;..\..\libraries\ilmbase\Half;..\..\libraries\ilmbase\Imath;..\..\libraries\ilmbase\Iex;..\..\libraries\boost;..\..\vfe\win;..\..\vfe;..\..\source;..\..\source\base;..\..\source\backend;..\..\source\frontend;..\..\libraries\jpeg;..\..\libraries\zlib;..\..\libraries\png;..\..\libraries\tiff\libtiff;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
215-
<PreprocessorDefinitions>BOOST_ALL_NO_LIB;NON_UNIX_OPENEXR_HEADERS;NDEBUG;WIN32;WIN32_LEAN_AND_MEAN;_WINDOWS;COMMONCTRL_VERSION=0x500;CLASSLIB_DEFS_H;WINVER=0x0500;_WIN32_WINNT=0x0500;NOMINMAX;ISOLATION_AWARE_ENABLED;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
215+
<PreprocessorDefinitions>BOOST_ALL_NO_LIB;NDEBUG;WIN32;WIN32_LEAN_AND_MEAN;_WINDOWS;COMMONCTRL_VERSION=0x500;CLASSLIB_DEFS_H;WINVER=0x0500;_WIN32_WINNT=0x0500;NOMINMAX;ISOLATION_AWARE_ENABLED;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
216216
<StringPooling>true</StringPooling>
217217
<ExceptionHandling>Sync</ExceptionHandling>
218218
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -262,7 +262,7 @@
262262
<OmitFramePointers>false</OmitFramePointers>
263263
<EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations>
264264
<AdditionalIncludeDirectories>..\..\libraries\ilmbase\config.windows;..\..\libraries\openexr\config.windows;..\..\libraries\openexr\IlmImf;..\..\libraries\ilmbase\Half;..\..\libraries\ilmbase\Imath;..\..\libraries\ilmbase\Iex;..\..\libraries\boost;..\..\vfe\win\;..\..\vfe\;..\..\source;..\..\source\base;..\..\source\backend;..\..\source\frontend;..\..\libraries\jpeg;..\..\libraries\zlib;..\..\libraries\png;..\..\libraries\tiff\libtiff;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
265-
<PreprocessorDefinitions>BOOST_ALL_NO_LIB;NON_UNIX_OPENEXR_HEADERS;NDEBUG;WIN32;WIN32_LEAN_AND_MEAN;_WINDOWS;CLASSLIB_DEFS_H;NOMINMAX;ISOLATION_AWARE_ENABLED;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;BUILDING_AMD64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
265+
<PreprocessorDefinitions>BOOST_ALL_NO_LIB;NDEBUG;WIN32;WIN32_LEAN_AND_MEAN;_WINDOWS;CLASSLIB_DEFS_H;NOMINMAX;ISOLATION_AWARE_ENABLED;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;BUILDING_AMD64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
266266
<StringPooling>true</StringPooling>
267267
<ExceptionHandling>Sync</ExceptionHandling>
268268
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -309,7 +309,7 @@
309309
<EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations>
310310
<WholeProgramOptimization>true</WholeProgramOptimization>
311311
<AdditionalIncludeDirectories>..\..\libraries\ilmbase\config.windows;..\..\libraries\openexr\config.windows;..\..\libraries\openexr\IlmImf;..\..\libraries\ilmbase\Half;..\..\libraries\ilmbase\Imath;..\..\libraries\ilmbase\Iex;..\..\libraries\boost;..\..\vfe\win\;..\..\vfe\;..\..\source;..\..\source\base;..\..\source\backend;..\..\source\frontend;..\..\libraries\jpeg;..\..\libraries\zlib;..\..\libraries\png;..\..\libraries\tiff\libtiff;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
312-
<PreprocessorDefinitions>BOOST_ALL_NO_LIB;NON_UNIX_OPENEXR_HEADERS;NDEBUG;WIN32;WIN32_LEAN_AND_MEAN;_WINDOWS;COMMONCTRL_VERSION=0x500;CLASSLIB_DEFS_H;WINVER=0x0500;_WIN32_WINNT=0x0500;NOMINMAX;ISOLATION_AWARE_ENABLED;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;BUILD_SSE2=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
312+
<PreprocessorDefinitions>BOOST_ALL_NO_LIB;NDEBUG;WIN32;WIN32_LEAN_AND_MEAN;_WINDOWS;COMMONCTRL_VERSION=0x500;CLASSLIB_DEFS_H;WINVER=0x0500;_WIN32_WINNT=0x0500;NOMINMAX;ISOLATION_AWARE_ENABLED;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;BUILD_SSE2=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
313313
<StringPooling>true</StringPooling>
314314
<ExceptionHandling>Sync</ExceptionHandling>
315315
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>

0 commit comments

Comments
 (0)