├── .bazelrc ├── .bazelversion ├── .clang-format ├── .git-blame-ignore-revs ├── .github ├── dependabot.yml └── workflows │ ├── analysis_workflow.yml │ ├── bazel_build.yml │ ├── ci_steps.yml │ ├── ci_workflow.yml │ ├── ci_workflow_old.yml │ ├── codeql.yml │ ├── ossfuzz_workflow.yml │ ├── python-wheels-publish-test.yml │ ├── python-wheels-publish.yml │ ├── python-wheels.yml │ ├── release-notice.yml │ ├── release-sign.yml │ ├── scorecard.yml │ ├── snyk-scan-cron.yml │ ├── website.yml │ └── website_preview_link.yml ├── .gitignore ├── .mailmap ├── .readthedocs.yml ├── ASWF ├── charter │ └── OpenEXR-Technical-Charter.md ├── images │ ├── aswf.png │ └── openexr-logo.jpg └── proposal │ └── OpenEXR-Adoption-Proposal.md ├── BUILD.bazel ├── CHANGES.md ├── CMakeLists.txt ├── CMakePresets.json ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── CONTRIBUTORS.md ├── Contrib ├── DtexToExr │ ├── AUTHORS │ ├── ChangeLog │ ├── DtexToExr.cpp │ ├── Makefile.test │ ├── PxBaseDeepHelper.h │ ├── PxDeepOutPixel.h │ ├── PxDeepOutRow.h │ ├── PxDeepUtils.cpp │ ├── PxDeepUtils.h │ ├── PxFourChanDeepRgba.h │ ├── PxOneChanDeepAlpha.h │ ├── PxOneChanDeepOpacity.h │ ├── README │ ├── bootstrap │ ├── configure.ac │ └── m4 │ │ ├── compilelinkrun.m4 │ │ ├── path.pkgconfig.m4 │ │ └── threads.m4 └── NuGet │ ├── OpenEXR-msvc-x64-build.nuget.bat │ ├── OpenEXR-msvc-x64.nuspec │ ├── OpenEXR-msvc-x64.targets │ ├── OpenEXR-msvc-x86-build.nuget.bat │ ├── OpenEXR-msvc-x86.nuspec │ └── OpenEXR-msvc-x86.targets ├── GOVERNANCE.md ├── LICENSE.md ├── MODULE.bazel ├── PATENTS ├── README.md ├── SECURITY.md ├── WORKSPACE.bazel ├── bazel ├── BUILD.bazel ├── imath_add_build_file.patch ├── imath_module_dot_bazel.patch ├── libdeflate_add_build_file.patch ├── libdeflate_module_dot_bazel.patch ├── openjph_add_build_file.patch └── openjph_module_dot_bazel.patch ├── cmake ├── CMakeLists.txt ├── FindPythonPackage.cmake ├── FindSphinx.cmake ├── IexConfig.h.in ├── IexConfigInternal.h.in ├── IlmThreadConfig.h.in ├── JoinPaths.cmake ├── LibraryDefine.cmake ├── OpenEXR.pc.in ├── OpenEXRConfig.cmake.in ├── OpenEXRConfig.h.in ├── OpenEXRConfigInternal.h.in ├── OpenEXRLibraryDefine.cmake ├── OpenEXRSetup.cmake ├── SampleCTestScript.cmake ├── Toolchain-Linux-VFX_Platform15.cmake ├── Toolchain-mingw.cmake ├── clang-format.cmake └── cmake_uninstall.cmake.in ├── docs └── CMakeLists.txt ├── pyproject.toml ├── share ├── ci │ ├── install_manifest │ │ ├── install_manifest.macos.1.txt │ │ ├── install_manifest.macos.2.txt │ │ ├── install_manifest.macos.3.txt │ │ ├── install_manifest.macos.4.txt │ │ ├── install_manifest.macos.5.txt │ │ ├── install_manifest.macos.6.txt │ │ ├── install_manifest.macos.7.txt │ │ ├── install_manifest.ubuntu.1.txt │ │ ├── install_manifest.ubuntu.10.txt │ │ ├── install_manifest.ubuntu.2.txt │ │ ├── install_manifest.ubuntu.3.txt │ │ ├── install_manifest.ubuntu.4.txt │ │ ├── install_manifest.ubuntu.5.txt │ │ ├── install_manifest.ubuntu.6.txt │ │ ├── install_manifest.ubuntu.7.txt │ │ ├── install_manifest.ubuntu.8.txt │ │ ├── install_manifest.ubuntu.9.txt │ │ ├── install_manifest.windows.1.txt │ │ ├── install_manifest.windows.10.txt │ │ ├── install_manifest.windows.2.txt │ │ ├── install_manifest.windows.3.txt │ │ ├── install_manifest.windows.4.txt │ │ ├── install_manifest.windows.5.txt │ │ ├── install_manifest.windows.6.txt │ │ ├── install_manifest.windows.7.txt │ │ ├── install_manifest.windows.8.txt │ │ └── install_manifest.windows.9.txt │ └── scripts │ │ ├── install_help2man.sh │ │ ├── install_imath.sh │ │ ├── install_libdeflate.sh │ │ ├── install_openjph.sh │ │ ├── install_pybind11.sh │ │ ├── linux │ │ ├── install_valgrind.sh │ │ ├── log_valgrind.sh │ │ ├── run_gcov.sh │ │ └── validate_openexr_libs.sh │ │ └── validate_install.py └── util │ ├── abi_checker.sh │ ├── clang_coverage.sh │ └── reformat.sh ├── sonar-project.properties ├── src ├── bin │ ├── CMakeLists.txt │ ├── exr2aces │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── exrcheck │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── exrenvmap │ │ ├── CMakeLists.txt │ │ ├── EnvmapImage.cpp │ │ ├── EnvmapImage.h │ │ ├── blurImage.cpp │ │ ├── blurImage.h │ │ ├── main.cpp │ │ ├── makeCubeMap.cpp │ │ ├── makeCubeMap.h │ │ ├── makeLatLongMap.cpp │ │ ├── makeLatLongMap.h │ │ ├── namespaceAlias.h │ │ ├── readInputImage.cpp │ │ ├── readInputImage.h │ │ ├── resizeImage.cpp │ │ └── resizeImage.h │ ├── exrheader │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── exrinfo │ │ ├── CMakeLists.txt │ │ └── main.c │ ├── exrmakepreview │ │ ├── CMakeLists.txt │ │ ├── main.cpp │ │ ├── makePreview.cpp │ │ └── makePreview.h │ ├── exrmaketiled │ │ ├── CMakeLists.txt │ │ ├── Image.cpp │ │ ├── Image.h │ │ ├── main.cpp │ │ ├── makeTiled.cpp │ │ ├── makeTiled.h │ │ └── namespaceAlias.h │ ├── exrmanifest │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── exrmetrics │ │ ├── CMakeLists.txt │ │ ├── exrmetrics.cpp │ │ ├── exrmetrics.h │ │ └── main.cpp │ ├── exrmultipart │ │ ├── CMakeLists.txt │ │ └── exrmultipart.cpp │ ├── exrmultiview │ │ ├── CMakeLists.txt │ │ ├── Image.cpp │ │ ├── Image.h │ │ ├── main.cpp │ │ ├── makeMultiView.cpp │ │ ├── makeMultiView.h │ │ └── namespaceAlias.h │ └── exrstdattr │ │ ├── CMakeLists.txt │ │ └── main.cpp ├── examples │ ├── BUILD.bazel │ ├── CMakeLists.txt │ ├── deepExamples.cpp │ ├── deepExamples.h │ ├── deepTiledExamples.cpp │ ├── deepTiledExamples.h │ ├── deepidexample.cpp │ ├── deepidselect.cpp │ ├── drawImage.cpp │ ├── drawImage.h │ ├── generalInterfaceExamples.cpp │ ├── generalInterfaceExamples.h │ ├── generalInterfaceTiledExamples.cpp │ ├── generalInterfaceTiledExamples.h │ ├── lowLevelIoExamples.cpp │ ├── lowLevelIoExamples.h │ ├── main.cpp │ ├── multipartExamples.cpp │ ├── multipartExamples.h │ ├── namespaceAlias.h │ ├── previewImageExamples.cpp │ ├── previewImageExamples.h │ ├── rgbaInterfaceExamples.cpp │ ├── rgbaInterfaceExamples.h │ ├── rgbaInterfaceTiledExamples.cpp │ └── rgbaInterfaceTiledExamples.h ├── lib │ ├── .gitignore │ ├── CMakeLists.txt │ ├── Iex │ │ ├── CMakeLists.txt │ │ ├── Iex.h │ │ ├── IexBaseExc.cpp │ │ ├── IexBaseExc.h │ │ ├── IexErrnoExc.h │ │ ├── IexExport.h │ │ ├── IexForward.h │ │ ├── IexMacros.h │ │ ├── IexMathExc.h │ │ ├── IexMathFloatExc.cpp │ │ ├── IexMathFloatExc.h │ │ ├── IexMathFpu.cpp │ │ ├── IexMathFpu.h │ │ ├── IexMathIeeeExc.h │ │ ├── IexNamespace.h │ │ ├── IexThrowErrnoExc.cpp │ │ └── IexThrowErrnoExc.h │ ├── IlmThread │ │ ├── CMakeLists.txt │ │ ├── IlmThread.cpp │ │ ├── IlmThread.h │ │ ├── IlmThreadExport.h │ │ ├── IlmThreadForward.h │ │ ├── IlmThreadMutex.h │ │ ├── IlmThreadNamespace.h │ │ ├── IlmThreadPool.cpp │ │ ├── IlmThreadPool.h │ │ ├── IlmThreadProcessGroup.h │ │ ├── IlmThreadSemaphore.cpp │ │ ├── IlmThreadSemaphore.h │ │ ├── IlmThreadSemaphoreOSX.cpp │ │ ├── IlmThreadSemaphorePosix.cpp │ │ ├── IlmThreadSemaphorePosixCompat.cpp │ │ └── IlmThreadSemaphoreWin32.cpp │ ├── OpenEXR │ │ ├── CMakeLists.txt │ │ ├── ImfAcesFile.cpp │ │ ├── ImfAcesFile.h │ │ ├── ImfArray.h │ │ ├── ImfAttribute.cpp │ │ ├── ImfAttribute.h │ │ ├── ImfAutoArray.h │ │ ├── ImfB44Compressor.cpp │ │ ├── ImfB44Compressor.h │ │ ├── ImfBoxAttribute.cpp │ │ ├── ImfBoxAttribute.h │ │ ├── ImfCRgbaFile.cpp │ │ ├── ImfCRgbaFile.h │ │ ├── ImfChannelList.cpp │ │ ├── ImfChannelList.h │ │ ├── ImfChannelListAttribute.cpp │ │ ├── ImfChannelListAttribute.h │ │ ├── ImfCheckedArithmetic.h │ │ ├── ImfChromaticities.cpp │ │ ├── ImfChromaticities.h │ │ ├── ImfChromaticitiesAttribute.cpp │ │ ├── ImfChromaticitiesAttribute.h │ │ ├── ImfCompositeDeepScanLine.cpp │ │ ├── ImfCompositeDeepScanLine.h │ │ ├── ImfCompression.cpp │ │ ├── ImfCompression.h │ │ ├── ImfCompressionAttribute.cpp │ │ ├── ImfCompressionAttribute.h │ │ ├── ImfCompressor.cpp │ │ ├── ImfCompressor.h │ │ ├── ImfContext.cpp │ │ ├── ImfContext.h │ │ ├── ImfContextInit.cpp │ │ ├── ImfContextInit.h │ │ ├── ImfConvert.cpp │ │ ├── ImfConvert.h │ │ ├── ImfDeepCompositing.cpp │ │ ├── ImfDeepCompositing.h │ │ ├── ImfDeepFrameBuffer.cpp │ │ ├── ImfDeepFrameBuffer.h │ │ ├── ImfDeepImageState.h │ │ ├── ImfDeepImageStateAttribute.cpp │ │ ├── ImfDeepImageStateAttribute.h │ │ ├── ImfDeepScanLineInputFile.cpp │ │ ├── ImfDeepScanLineInputFile.h │ │ ├── ImfDeepScanLineInputPart.cpp │ │ ├── ImfDeepScanLineInputPart.h │ │ ├── ImfDeepScanLineOutputFile.cpp │ │ ├── ImfDeepScanLineOutputFile.h │ │ ├── ImfDeepScanLineOutputPart.cpp │ │ ├── ImfDeepScanLineOutputPart.h │ │ ├── ImfDeepTiledInputFile.cpp │ │ ├── ImfDeepTiledInputFile.h │ │ ├── ImfDeepTiledInputPart.cpp │ │ ├── ImfDeepTiledInputPart.h │ │ ├── ImfDeepTiledOutputFile.cpp │ │ ├── ImfDeepTiledOutputFile.h │ │ ├── ImfDeepTiledOutputPart.cpp │ │ ├── ImfDeepTiledOutputPart.h │ │ ├── ImfDoubleAttribute.cpp │ │ ├── ImfDoubleAttribute.h │ │ ├── ImfDwaCompressor.cpp │ │ ├── ImfDwaCompressor.h │ │ ├── ImfEnvmap.cpp │ │ ├── ImfEnvmap.h │ │ ├── ImfEnvmapAttribute.cpp │ │ ├── ImfEnvmapAttribute.h │ │ ├── ImfExport.h │ │ ├── ImfFastHuf.cpp │ │ ├── ImfFastHuf.h │ │ ├── ImfFloatAttribute.cpp │ │ ├── ImfFloatAttribute.h │ │ ├── ImfFloatVectorAttribute.cpp │ │ ├── ImfFloatVectorAttribute.h │ │ ├── ImfForward.h │ │ ├── ImfFrameBuffer.cpp │ │ ├── ImfFrameBuffer.h │ │ ├── ImfFramesPerSecond.cpp │ │ ├── ImfFramesPerSecond.h │ │ ├── ImfGenericInputFile.cpp │ │ ├── ImfGenericInputFile.h │ │ ├── ImfGenericOutputFile.cpp │ │ ├── ImfGenericOutputFile.h │ │ ├── ImfHTCompressor.cpp │ │ ├── ImfHTCompressor.h │ │ ├── ImfHeader.cpp │ │ ├── ImfHeader.h │ │ ├── ImfHuf.cpp │ │ ├── ImfHuf.h │ │ ├── ImfIDManifest.cpp │ │ ├── ImfIDManifest.h │ │ ├── ImfIDManifestAttribute.cpp │ │ ├── ImfIDManifestAttribute.h │ │ ├── ImfIO.cpp │ │ ├── ImfIO.h │ │ ├── ImfInputFile.cpp │ │ ├── ImfInputFile.h │ │ ├── ImfInputPart.cpp │ │ ├── ImfInputPart.h │ │ ├── ImfInputPartData.cpp │ │ ├── ImfInputPartData.h │ │ ├── ImfInputStreamMutex.h │ │ ├── ImfInt64.h │ │ ├── ImfIntAttribute.cpp │ │ ├── ImfIntAttribute.h │ │ ├── ImfKeyCode.cpp │ │ ├── ImfKeyCode.h │ │ ├── ImfKeyCodeAttribute.cpp │ │ ├── ImfKeyCodeAttribute.h │ │ ├── ImfLineOrder.h │ │ ├── ImfLineOrderAttribute.cpp │ │ ├── ImfLineOrderAttribute.h │ │ ├── ImfLut.cpp │ │ ├── ImfLut.h │ │ ├── ImfMatrixAttribute.cpp │ │ ├── ImfMatrixAttribute.h │ │ ├── ImfMisc.cpp │ │ ├── ImfMisc.h │ │ ├── ImfMultiPartInputFile.cpp │ │ ├── ImfMultiPartInputFile.h │ │ ├── ImfMultiPartOutputFile.cpp │ │ ├── ImfMultiPartOutputFile.h │ │ ├── ImfMultiView.cpp │ │ ├── ImfMultiView.h │ │ ├── ImfName.h │ │ ├── ImfNamespace.h │ │ ├── ImfOpaqueAttribute.cpp │ │ ├── ImfOpaqueAttribute.h │ │ ├── ImfOptimizedPixelReading.h │ │ ├── ImfOutputFile.cpp │ │ ├── ImfOutputFile.h │ │ ├── ImfOutputPart.cpp │ │ ├── ImfOutputPart.h │ │ ├── ImfOutputPartData.cpp │ │ ├── ImfOutputPartData.h │ │ ├── ImfOutputStreamMutex.h │ │ ├── ImfPartHelper.h │ │ ├── ImfPartType.cpp │ │ ├── ImfPartType.h │ │ ├── ImfPixelType.h │ │ ├── ImfPizCompressor.cpp │ │ ├── ImfPizCompressor.h │ │ ├── ImfPreviewImage.cpp │ │ ├── ImfPreviewImage.h │ │ ├── ImfPreviewImageAttribute.cpp │ │ ├── ImfPreviewImageAttribute.h │ │ ├── ImfPxr24Compressor.cpp │ │ ├── ImfPxr24Compressor.h │ │ ├── ImfRational.cpp │ │ ├── ImfRational.h │ │ ├── ImfRationalAttribute.cpp │ │ ├── ImfRationalAttribute.h │ │ ├── ImfRgba.h │ │ ├── ImfRgbaFile.cpp │ │ ├── ImfRgbaFile.h │ │ ├── ImfRgbaYca.cpp │ │ ├── ImfRgbaYca.h │ │ ├── ImfRle.cpp │ │ ├── ImfRle.h │ │ ├── ImfRleCompressor.cpp │ │ ├── ImfRleCompressor.h │ │ ├── ImfScanLineInputFile.cpp │ │ ├── ImfScanLineInputFile.h │ │ ├── ImfSimd.h │ │ ├── ImfStandardAttributes.cpp │ │ ├── ImfStandardAttributes.h │ │ ├── ImfStdIO.cpp │ │ ├── ImfStdIO.h │ │ ├── ImfStringAttribute.cpp │ │ ├── ImfStringAttribute.h │ │ ├── ImfStringVectorAttribute.cpp │ │ ├── ImfStringVectorAttribute.h │ │ ├── ImfSystemSpecific.cpp │ │ ├── ImfSystemSpecific.h │ │ ├── ImfTestFile.cpp │ │ ├── ImfTestFile.h │ │ ├── ImfThreading.cpp │ │ ├── ImfThreading.h │ │ ├── ImfTileDescription.h │ │ ├── ImfTileDescriptionAttribute.cpp │ │ ├── ImfTileDescriptionAttribute.h │ │ ├── ImfTileOffsets.cpp │ │ ├── ImfTileOffsets.h │ │ ├── ImfTiledInputFile.cpp │ │ ├── ImfTiledInputFile.h │ │ ├── ImfTiledInputPart.cpp │ │ ├── ImfTiledInputPart.h │ │ ├── ImfTiledMisc.cpp │ │ ├── ImfTiledMisc.h │ │ ├── ImfTiledOutputFile.cpp │ │ ├── ImfTiledOutputFile.h │ │ ├── ImfTiledOutputPart.cpp │ │ ├── ImfTiledOutputPart.h │ │ ├── ImfTiledRgbaFile.cpp │ │ ├── ImfTiledRgbaFile.h │ │ ├── ImfTimeCode.cpp │ │ ├── ImfTimeCode.h │ │ ├── ImfTimeCodeAttribute.cpp │ │ ├── ImfTimeCodeAttribute.h │ │ ├── ImfVecAttribute.cpp │ │ ├── ImfVecAttribute.h │ │ ├── ImfVersion.cpp │ │ ├── ImfVersion.h │ │ ├── ImfWav.cpp │ │ ├── ImfWav.h │ │ ├── ImfXdr.h │ │ ├── ImfZip.cpp │ │ ├── ImfZip.h │ │ ├── ImfZipCompressor.cpp │ │ ├── ImfZipCompressor.h │ │ ├── b44ExpLogTable.cpp │ │ └── dwaLookups.cpp │ ├── OpenEXRCore │ │ ├── CMakeLists.txt │ │ ├── attributes.c │ │ ├── backward_compatibility.h │ │ ├── base.c │ │ ├── channel_list.c │ │ ├── chunk.c │ │ ├── coding.c │ │ ├── compression.c │ │ ├── context.c │ │ ├── debug.c │ │ ├── decoding.c │ │ ├── dwaLookups.h │ │ ├── encoding.c │ │ ├── float_vector.c │ │ ├── internal_attr.h │ │ ├── internal_b44.c │ │ ├── internal_b44_table.c │ │ ├── internal_channel_list.h │ │ ├── internal_coding.h │ │ ├── internal_compress.h │ │ ├── internal_constants.h │ │ ├── internal_cpuid.h │ │ ├── internal_decompress.h │ │ ├── internal_dwa.c │ │ ├── internal_dwa_channeldata.h │ │ ├── internal_dwa_classifier.h │ │ ├── internal_dwa_compressor.h │ │ ├── internal_dwa_decoder.h │ │ ├── internal_dwa_encoder.h │ │ ├── internal_dwa_helpers.h │ │ ├── internal_dwa_simd.h │ │ ├── internal_file.h │ │ ├── internal_float_vector.h │ │ ├── internal_ht.cpp │ │ ├── internal_ht_common.cpp │ │ ├── internal_ht_common.h │ │ ├── internal_huf.c │ │ ├── internal_huf.h │ │ ├── internal_memory.h │ │ ├── internal_opaque.h │ │ ├── internal_piz.c │ │ ├── internal_posix_file_impl.h │ │ ├── internal_preview.h │ │ ├── internal_pxr24.c │ │ ├── internal_rle.c │ │ ├── internal_string.h │ │ ├── internal_string_vector.h │ │ ├── internal_structs.c │ │ ├── internal_structs.h │ │ ├── internal_util.h │ │ ├── internal_win32_file_impl.h │ │ ├── internal_xdr.h │ │ ├── internal_zip.c │ │ ├── memory.c │ │ ├── opaque.c │ │ ├── openexr.h │ │ ├── openexr_attr.h │ │ ├── openexr_base.h │ │ ├── openexr_chunkio.h │ │ ├── openexr_coding.h │ │ ├── openexr_compression.h │ │ ├── openexr_config.h │ │ ├── openexr_context.h │ │ ├── openexr_debug.h │ │ ├── openexr_decode.h │ │ ├── openexr_encode.h │ │ ├── openexr_errors.h │ │ ├── openexr_part.h │ │ ├── openexr_std_attr.h │ │ ├── openexr_version.h │ │ ├── pack.c │ │ ├── parse_header.c │ │ ├── part.c │ │ ├── part_attr.c │ │ ├── preview.c │ │ ├── std_attr.c │ │ ├── string.c │ │ ├── string_vector.c │ │ ├── unpack.c │ │ ├── validation.c │ │ └── write_header.c │ └── OpenEXRUtil │ │ ├── CMakeLists.txt │ │ ├── ImfCheckFile.cpp │ │ ├── ImfCheckFile.h │ │ ├── ImfDeepImage.cpp │ │ ├── ImfDeepImage.h │ │ ├── ImfDeepImageChannel.cpp │ │ ├── ImfDeepImageChannel.h │ │ ├── ImfDeepImageIO.cpp │ │ ├── ImfDeepImageIO.h │ │ ├── ImfDeepImageLevel.cpp │ │ ├── ImfDeepImageLevel.h │ │ ├── ImfFlatImage.cpp │ │ ├── ImfFlatImage.h │ │ ├── ImfFlatImageChannel.cpp │ │ ├── ImfFlatImageChannel.h │ │ ├── ImfFlatImageIO.cpp │ │ ├── ImfFlatImageIO.h │ │ ├── ImfFlatImageLevel.cpp │ │ ├── ImfFlatImageLevel.h │ │ ├── ImfImage.cpp │ │ ├── ImfImage.h │ │ ├── ImfImageChannel.cpp │ │ ├── ImfImageChannel.h │ │ ├── ImfImageChannelRenaming.h │ │ ├── ImfImageDataWindow.cpp │ │ ├── ImfImageDataWindow.h │ │ ├── ImfImageIO.cpp │ │ ├── ImfImageIO.h │ │ ├── ImfImageLevel.cpp │ │ ├── ImfImageLevel.h │ │ ├── ImfSampleCountChannel.cpp │ │ ├── ImfSampleCountChannel.h │ │ ├── ImfUtilExport.h │ │ └── README ├── test │ ├── CMakeLists.txt │ ├── IexTest │ │ ├── CMakeLists.txt │ │ ├── main.cpp │ │ ├── mathFuncs.cpp │ │ ├── mathFuncs.h │ │ ├── testBaseExc.cpp │ │ ├── testBaseExc.h │ │ ├── testMathExc.cpp │ │ └── testMathExc.h │ ├── OpenEXRCoreTest │ │ ├── CMakeLists.txt │ │ ├── base_units.cpp │ │ ├── base_units.h │ │ ├── buffer.cpp │ │ ├── buffer.h │ │ ├── compression.cpp │ │ ├── compression.h │ │ ├── compressionTables.cpp │ │ ├── deep.cpp │ │ ├── deep.h │ │ ├── dwaQuantTables.h │ │ ├── general_attr.cpp │ │ ├── general_attr.h │ │ ├── main.cpp │ │ ├── performance.cpp │ │ ├── read.cpp │ │ ├── read.h │ │ ├── test_value.h │ │ ├── write.cpp │ │ └── write.h │ ├── OpenEXRFuzzTest │ │ ├── CMakeLists.txt │ │ ├── fuzzFile.cpp │ │ ├── fuzzFile.h │ │ ├── main.cpp │ │ ├── oss-fuzz │ │ ├── testFuzzDeepScanLines.cpp │ │ ├── testFuzzDeepScanLines.h │ │ ├── testFuzzDeepTiles.cpp │ │ ├── testFuzzDeepTiles.h │ │ ├── testFuzzScanLines.cpp │ │ ├── testFuzzScanLines.h │ │ ├── testFuzzTiles.cpp │ │ └── testFuzzTiles.h │ ├── OpenEXRTest │ │ ├── CMakeLists.txt │ │ ├── TestUtilFStream.h │ │ ├── bswap_32.h │ │ ├── comp_b44.exr │ │ ├── comp_b44_piz.exr │ │ ├── comp_bad_bounds_piz.exr │ │ ├── comp_bad_neg_bounds_pxr24.exr │ │ ├── comp_bad_pos_bounds_piz.exr │ │ ├── comp_bad_pos_bounds_pxr24.exr │ │ ├── comp_dwaa_piz.exr │ │ ├── comp_dwaa_v1.exr │ │ ├── comp_dwaa_v2.exr │ │ ├── comp_dwab_piz.exr │ │ ├── comp_dwab_v1.exr │ │ ├── comp_dwab_v2.exr │ │ ├── comp_early_eof_piz.exr │ │ ├── comp_invalid_unknown.exr │ │ ├── comp_none.exr │ │ ├── comp_piz.exr │ │ ├── comp_rle.exr │ │ ├── comp_short_decode_piz.exr │ │ ├── comp_zip.exr │ │ ├── comp_zips.exr │ │ ├── compareB44.cpp │ │ ├── compareB44.h │ │ ├── compareDwa.cpp │ │ ├── compareDwa.h │ │ ├── compareFloat.cpp │ │ ├── compareFloat.h │ │ ├── invalid.exr │ │ ├── invalid_shared_attrs_multipart.exr │ │ ├── lineOrder_decreasing.exr │ │ ├── lineOrder_increasing.exr │ │ ├── main.cpp │ │ ├── random.cpp │ │ ├── random.h │ │ ├── scanline_with_deepscanline_type.exr │ │ ├── scanline_with_deeptiled_type.exr │ │ ├── scanline_with_tiledimage_type.exr │ │ ├── testAttributes.cpp │ │ ├── testAttributes.h │ │ ├── testBackwardCompatibility.cpp │ │ ├── testBackwardCompatibility.h │ │ ├── testBadTypeAttributes.cpp │ │ ├── testBadTypeAttributes.h │ │ ├── testCRgba.cpp │ │ ├── testCRgba.h │ │ ├── testChannels.cpp │ │ ├── testChannels.h │ │ ├── testCompositeDeepScanLine.cpp │ │ ├── testCompositeDeepScanLine.h │ │ ├── testCompression.cpp │ │ ├── testCompression.h │ │ ├── testCompressionApi.cpp │ │ ├── testCompressionApi.h │ │ ├── testConversion.cpp │ │ ├── testConversion.h │ │ ├── testCopyDeepScanLine.cpp │ │ ├── testCopyDeepScanLine.h │ │ ├── testCopyDeepTiled.cpp │ │ ├── testCopyDeepTiled.h │ │ ├── testCopyMultiPartFile.cpp │ │ ├── testCopyMultiPartFile.h │ │ ├── testCopyPixels.cpp │ │ ├── testCopyPixels.h │ │ ├── testCpuId.cpp │ │ ├── testCpuId.h │ │ ├── testCustomAttributes.cpp │ │ ├── testCustomAttributes.h │ │ ├── testDeepScanLineBasic.cpp │ │ ├── testDeepScanLineBasic.h │ │ ├── testDeepScanLineHuge.cpp │ │ ├── testDeepScanLineHuge.h │ │ ├── testDeepScanLineMultipleRead.cpp │ │ ├── testDeepScanLineMultipleRead.h │ │ ├── testDeepTiledBasic.cpp │ │ ├── testDeepTiledBasic.h │ │ ├── testExistingStreams.cpp │ │ ├── testExistingStreams.h │ │ ├── testFutureProofing.cpp │ │ ├── testFutureProofing.h │ │ ├── testHeader.cpp │ │ ├── testHeader.h │ │ ├── testHuf.cpp │ │ ├── testHuf.h │ │ ├── testIDManifest.cpp │ │ ├── testIDManifest.h │ │ ├── testInputPart.cpp │ │ ├── testInputPart.h │ │ ├── testIsComplete.cpp │ │ ├── testIsComplete.h │ │ ├── testLargeDataWindowOffsets.cpp │ │ ├── testLargeDataWindowOffsets.h │ │ ├── testLineOrder.cpp │ │ ├── testLineOrder.h │ │ ├── testLut.cpp │ │ ├── testLut.h │ │ ├── testMagic.cpp │ │ ├── testMagic.h │ │ ├── testMalformedImages.cpp │ │ ├── testMalformedImages.h │ │ ├── testMultiPartApi.cpp │ │ ├── testMultiPartApi.h │ │ ├── testMultiPartFileMixingBasic.cpp │ │ ├── testMultiPartFileMixingBasic.h │ │ ├── testMultiPartSharedAttributes.cpp │ │ ├── testMultiPartSharedAttributes.h │ │ ├── testMultiPartThreading.cpp │ │ ├── testMultiPartThreading.h │ │ ├── testMultiScanlinePartThreading.cpp │ │ ├── testMultiScanlinePartThreading.h │ │ ├── testMultiTiledPartThreading.cpp │ │ ├── testMultiTiledPartThreading.h │ │ ├── testMultiView.cpp │ │ ├── testMultiView.h │ │ ├── testNativeFormat.cpp │ │ ├── testNativeFormat.h │ │ ├── testOptimized.cpp │ │ ├── testOptimized.h │ │ ├── testOptimizedInterleavePatterns.cpp │ │ ├── testOptimizedInterleavePatterns.h │ │ ├── testPartHelper.cpp │ │ ├── testPartHelper.h │ │ ├── testPreviewImage.cpp │ │ ├── testPreviewImage.h │ │ ├── testRgba.cpp │ │ ├── testRgba.h │ │ ├── testRgbaThreading.cpp │ │ ├── testRgbaThreading.h │ │ ├── testRle.cpp │ │ ├── testRle.h │ │ ├── testSampleImages.cpp │ │ ├── testSampleImages.h │ │ ├── testScanLineApi.cpp │ │ ├── testScanLineApi.h │ │ ├── testSharedFrameBuffer.cpp │ │ ├── testSharedFrameBuffer.h │ │ ├── testStandardAttributes.cpp │ │ ├── testStandardAttributes.h │ │ ├── testTiledCompression.cpp │ │ ├── testTiledCompression.h │ │ ├── testTiledCopyPixels.cpp │ │ ├── testTiledCopyPixels.h │ │ ├── testTiledLineOrder.cpp │ │ ├── testTiledLineOrder.h │ │ ├── testTiledRgba.cpp │ │ ├── testTiledRgba.h │ │ ├── testTiledYa.cpp │ │ ├── testTiledYa.h │ │ ├── testWav.cpp │ │ ├── testWav.h │ │ ├── testXdr.cpp │ │ ├── testXdr.h │ │ ├── testYca.cpp │ │ ├── testYca.h │ │ ├── test_native1.exr │ │ ├── test_native2.exr │ │ ├── tiled.exr │ │ ├── tiled_with_deepscanline_type.exr │ │ ├── tiled_with_deeptile_type.exr │ │ ├── tiled_with_scanlineimage_type.exr │ │ ├── tmpDir.h │ │ ├── v1.7.test.1.exr │ │ ├── v1.7.test.interleaved.exr │ │ ├── v1.7.test.planar.exr │ │ └── v1.7.test.tiled.exr │ ├── OpenEXRUtilTest │ │ ├── CMakeLists.txt │ │ ├── main.cpp │ │ ├── testDeepImage.cpp │ │ ├── testDeepImage.h │ │ ├── testFlatImage.cpp │ │ ├── testFlatImage.h │ │ ├── testIO.cpp │ │ └── testIO.h │ ├── bin │ │ ├── CMakeLists.txt │ │ ├── do_run.py │ │ ├── test_exr2aces.py │ │ ├── test_exrcheck.py │ │ ├── test_exrenvmap.py │ │ ├── test_exrheader.py │ │ ├── test_exrinfo.py │ │ ├── test_exrmakepreview.py │ │ ├── test_exrmaketiled.py │ │ ├── test_exrmanifest.py │ │ ├── test_exrmetrics.py │ │ ├── test_exrmultipart.py │ │ ├── test_exrmultiview.py │ │ ├── test_exrstdattr.py │ │ └── test_images │ │ │ ├── 11.deep.exr │ │ │ ├── 11.deep.exr.txt │ │ │ ├── 42.deep.exr │ │ │ ├── 42.deep.exr.txt │ │ │ ├── 64.deep.exr │ │ │ ├── 64.deep.exr.txt │ │ │ ├── Flowers.exr │ │ │ ├── GammaChart.exr │ │ │ ├── GrayRampsHorizontal.exr │ │ │ ├── WavyLinesCube.exr │ │ │ ├── WavyLinesLatLong.exr │ │ │ ├── multipart.0001.exr │ │ │ ├── multivariate.deep.exr │ │ │ ├── multivariate.deep.exr.txt │ │ │ ├── objectid.deep.exr │ │ │ └── objectid.deep.exr.txt │ └── oss-fuzz │ │ ├── CMakeLists.txt │ │ ├── openexr_exrcheck_fuzzer.cc │ │ ├── openexr_exrcorecheck_fuzzer.cc │ │ └── test_build.sh └── wrappers │ └── python │ ├── CMakeLists.txt │ ├── Imath.py │ ├── PyOpenEXR.cpp │ ├── PyOpenEXR.h │ ├── PyOpenEXR_old.cpp │ ├── README.md │ ├── openexr_skbuild_plugin.py │ └── tests │ ├── test.exr │ ├── test_deep.py │ ├── test_exceptions.py │ ├── test_images.py │ ├── test_import.py │ ├── test_minimal.py │ ├── test_old.py │ ├── test_readme.py │ ├── test_rgba.py │ └── test_unittest.py └── website ├── API.rst ├── CMakeLists.txt ├── DeepIDsSpecification.rst ├── Doxyfile.in ├── HelloWorld.rst ├── InterpretingDeepPixels.rst ├── MultiViewOpenEXR.rst ├── OpenEXRCoreAPI.rst ├── OpenEXRFileLayout.rst ├── PortingGuide.rst ├── ReadingAndWritingImageFiles.rst ├── SceneLinear.rst ├── StandardAttributes.rst ├── SymbolVisibility.rst ├── TechnicalIntroduction.rst ├── TheoryDeepPixels.rst ├── _templates └── layout.html ├── about.rst ├── bin ├── exr2aces.rst ├── exrcheck.rst ├── exrenvmap.rst ├── exrheader.rst ├── exrinfo.rst ├── exrmakepreview.rst ├── exrmaketiled.rst ├── exrmanifest.rst ├── exrmetrics.rst ├── exrmultipart.rst ├── exrmultiview.rst └── exrstdattr.rst ├── concepts.rst ├── conf.py ├── downloads └── sample.exr ├── imageprocessing.dot ├── images ├── InterpretingDeepPixels1.png ├── InterpretingDeepPixels2.png ├── InterpretingDeepPixels3.png ├── OpenEXR_Reel_2020.png ├── cubeMap.big.png ├── cubeMap.png ├── drawing.png ├── envcube.png ├── imageprocessing.png ├── latlong.png ├── latlongMap.big.png ├── latlongMap.png ├── mapped.jpg ├── news.png ├── openexr-fav.ico ├── openexr-horizontal-color.png ├── openexr-logo.jpg ├── openexr-stacked-color.png ├── raw.jpg ├── screenwin.big.png ├── screenwin.png ├── tiles.big.png ├── tiles.png ├── twosamples.png ├── windowExample1.big.png ├── windowExample1.png ├── windowExample1.small.png ├── windowExample2.big.png └── windowExample2.png ├── index.rst ├── install.rst ├── latest_news_title.rst ├── license.rst ├── news.rst ├── python.rst ├── requirements.txt ├── scripts ├── install_doxygen.sh └── test_images.py ├── src ├── CMakeLists.txt ├── C_IStream.cpp ├── C_IStream_clear.cpp ├── C_IStream_read.cpp ├── C_IStream_seekg.cpp ├── C_IStream_tellg.cpp ├── IStream.cpp ├── MemoryMappedIStream.cpp ├── MemoryMappedIStream_constructor.cpp ├── MemoryMappedIStream_destructor.cpp ├── MemoryMappedIStream_isMemoryMapped.cpp ├── MemoryMappedIStream_read.cpp ├── MemoryMappedIStream_readMemoryMapped.cpp ├── all.cpp ├── compression.cpp ├── envmap.cpp ├── exrreader │ ├── CMakeLists.txt │ ├── build.sh │ └── exrreader.cpp ├── exrwriter │ ├── CMakeLists.txt │ ├── build.sh │ └── exrwriter.cpp ├── mergeOverlappingSamples.cpp ├── multithreading.cpp ├── previewImageExamples.cpp ├── readChannelsAndLayers.cpp ├── readDeepScanLineFile.cpp ├── readDeepTiledFile.cpp ├── readGZ1.cpp ├── readGZ2.cpp ├── readHeader.cpp ├── readRgba1.cpp ├── readRgba2.cpp ├── readRgbaFILE.cpp ├── readTiled1.cpp ├── readTiledRgba1.cpp ├── splitVolumeSample.cpp ├── structDefinitions.cpp ├── tileDescription.cpp ├── validExrFile.cpp ├── writeDeepScanLineFile.cpp ├── writeDeepTiledFile.cpp ├── writeGZ1.cpp ├── writeGZ2.cpp ├── writeRgba1.cpp ├── writeRgba2.cpp ├── writeRgba3.cpp ├── writeRgbaMT.cpp ├── writeRgbaWithPreview1.cpp ├── writeRgbaWithPreview2.cpp ├── writeTiled1.cpp ├── writeTiledRgbaMIP1.cpp ├── writeTiledRgbaMIP2.cpp ├── writeTiledRgbaONE1.cpp ├── writeTiledRgbaONE2.cpp └── writeTiledRgbaRIP1.cpp ├── test_images.txt ├── test_images ├── Beachball │ ├── multipart.0001.rst │ ├── multipart.0002.rst │ ├── multipart.0003.rst │ ├── multipart.0004.rst │ ├── multipart.0005.rst │ ├── multipart.0006.rst │ ├── multipart.0007.rst │ ├── multipart.0008.rst │ ├── singlepart.0001.rst │ ├── singlepart.0002.rst │ ├── singlepart.0003.rst │ ├── singlepart.0004.rst │ ├── singlepart.0005.rst │ ├── singlepart.0006.rst │ ├── singlepart.0007.rst │ └── singlepart.0008.rst ├── Chromaticities │ ├── Rec709.rst │ ├── Rec709_YC.rst │ ├── XYZ.rst │ └── XYZ_YC.rst ├── DisplayWindow │ ├── t01.rst │ ├── t02.rst │ ├── t03.rst │ ├── t04.rst │ ├── t05.rst │ ├── t06.rst │ ├── t07.rst │ ├── t08.rst │ ├── t09.rst │ ├── t10.rst │ ├── t11.rst │ ├── t12.rst │ ├── t13.rst │ ├── t14.rst │ ├── t15.rst │ └── t16.rst ├── LuminanceChroma │ ├── CrissyField.rst │ ├── Flowers.rst │ ├── Garden.rst │ ├── MtTamNorth.rst │ └── StarField.rst ├── MultiResolution │ ├── Bonita.rst │ ├── ColorCodedLevels.rst │ ├── Kapaa.rst │ ├── KernerEnvCube.rst │ ├── KernerEnvLatLong.rst │ ├── MirrorPattern.rst │ ├── OrientationCube.rst │ ├── OrientationLatLong.rst │ ├── PeriodicPattern.rst │ ├── StageEnvCube.rst │ ├── StageEnvLatLong.rst │ ├── WavyLinesCube.rst │ ├── WavyLinesLatLong.rst │ └── WavyLinesSphere.rst ├── MultiView │ ├── Adjuster.rst │ ├── Balls.rst │ ├── Fog.rst │ ├── Impact.rst │ └── LosPadres.rst ├── ScanLines │ ├── Blobbies.rst │ ├── CandleGlass.rst │ ├── Cannon.rst │ ├── Carrots.rst │ ├── Desk.rst │ ├── MtTamWest.rst │ ├── PrismsLenses.rst │ ├── StillLife.rst │ └── Tree.rst ├── TestImages │ ├── AllHalfValues.rst │ ├── BrightRings.rst │ ├── BrightRingsNanInf.rst │ ├── GammaChart.rst │ ├── GrayRampsDiagonal.rst │ ├── GrayRampsHorizontal.rst │ ├── RgbRampsDiagonal.rst │ ├── SquaresSwirls.rst │ ├── WideColorGamut.rst │ └── WideFloatRange.rst ├── Tiles │ ├── GoldenGate.rst │ ├── Ocean.rst │ └── Spirals.rst ├── index.rst ├── toctree.rst └── v2 │ ├── LeftView │ ├── Balls.rst │ ├── Ground.rst │ ├── Leaves.rst │ └── Trunks.rst │ ├── LowResLeftView │ ├── Balls.rst │ ├── Ground.rst │ ├── Leaves.rst │ ├── Trunks.rst │ └── composited.rst │ └── Stereo │ ├── Balls.rst │ ├── Ground.rst │ ├── Leaves.rst │ ├── Trunks.rst │ └── composited.rst ├── toc_redirect.rst └── tools.rst /.bazelrc: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | common --enable_platform_specific_config 5 | 6 | # Enable modern C++ features 7 | build:linux --cxxopt=-std=c++17 8 | build:linux --host_cxxopt=-std=c++17 9 | build:macos --cxxopt=-std=c++17 10 | build:macos --host_cxxopt=-std=c++17 11 | build:windows --cxxopt=/std:c++17 12 | build:windows --host_cxxopt=/std:c++17 13 | -------------------------------------------------------------------------------- /.bazelversion: -------------------------------------------------------------------------------- 1 | 8.1.1 2 | -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # if you have git newer than 2.23, you can either 2 | # specify this on the command line 3 | # git blame foo.cpp --ignore-revs-file path/to/this/file 4 | # or add this file to your config 5 | # git config --global blame.ignoreRevsFile .git-blame-ignore-revs 6 | 7 | # initial clang-format run 8 | 2a24ae77ab94f4c06b102eba73feb52e2f90cb46 9 | # clang-format run 17-Mar-2024 10 | 84f58b85aef7a7844f0d3bfb1301e778eb22e42c 11 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | version: 2 5 | updates: 6 | 7 | - package-ecosystem: "github-actions" 8 | directory: "/" 9 | schedule: 10 | interval: "daily" 11 | 12 | - package-ecosystem: "pip" 13 | directory: "/" 14 | schedule: 15 | day: "monday" 16 | interval: "weekly" 17 | 18 | - package-ecosystem: "gitsubmodule" 19 | directory: "/" 20 | schedule: 21 | day: "monday" 22 | interval: "weekly" 23 | -------------------------------------------------------------------------------- /.github/workflows/website_preview_link.yml: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | # 4 | # GitHub Actions workflow file 5 | # https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions 6 | 7 | # 8 | # This action adds a link to the PR description pointing to the 9 | # readthedocs build of the website, for PRs that modify the website. 10 | # 11 | # Note that the link is also available in the PR checks, but it gets 12 | # buried among the output of the checks and isn't obvious. 13 | # 14 | 15 | name: Website preview link 16 | on: 17 | pull_request_target: 18 | types: 19 | - opened 20 | paths: 21 | - 'website/**' 22 | 23 | permissions: 24 | pull-requests: write 25 | 26 | jobs: 27 | pull-request-links: 28 | runs-on: ubuntu-latest 29 | steps: 30 | - uses: readthedocs/actions/preview@cc0920454cf03ca8a3fbd3cbaa2ce2e509e70636 # v1.2 31 | with: 32 | project-slug: "openexr" 33 | message-template: "Website preview: {docs-pr-index-url}" 34 | 35 | 36 | -------------------------------------------------------------------------------- /.readthedocs.yml: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright Contributors to the OpenEXR Project. 3 | 4 | # .readthedocs.yml 5 | # Read the Docs configuration file 6 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details 7 | 8 | # Required 9 | version: 2 10 | 11 | build: 12 | os: "ubuntu-22.04" 13 | tools: 14 | python: "3.9" 15 | 16 | sphinx: 17 | configuration: website/conf.py 18 | 19 | python: 20 | install: 21 | - requirements: website/requirements.txt 22 | -------------------------------------------------------------------------------- /ASWF/images/aswf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/ASWF/images/aswf.png -------------------------------------------------------------------------------- /ASWF/images/openexr-logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/ASWF/images/openexr-logo.jpg -------------------------------------------------------------------------------- /CMakePresets.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "cmakeMinimumRequired": { 4 | "major": 3, 5 | "minor": 15, 6 | "patch": 0 7 | }, 8 | "configurePresets": [ 9 | { 10 | "name": "oss_fuzz", 11 | "cacheVariables": { 12 | "CMAKE_VERBOSE_MAKEFILE": "ON", 13 | "BUILD_SHARED_LIBS": "OFF", 14 | "OPENEXR_FORCE_INTERNAL_IMATH": "ON", 15 | "OPENEXR_FORCE_INTERNAL_DEFLATE": "ON", 16 | "OPENEXR_FORCE_INTERNAL_OPENJPH": "ON", 17 | "OPENEXR_BUILD_TOOLS": "OFF", 18 | "OPENEXR_BUILD_EXAMPLES": "OFF", 19 | "OPENEXR_BUILD_DOCS": "OFF", 20 | "OPENEXR_BUILD_OSS_FUZZ": "ON" 21 | } 22 | } 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/about-codeowners/ 2 | # for more info about CODEOWNERS file 3 | 4 | # It uses the same pattern rule for gitignore file 5 | # https://git-scm.com/docs/gitignore#_pattern_format 6 | 7 | # Admin 8 | /openexr/ASWF/ @cary-ilm @kdt3rd @lgritz @meshula @peterhillman @xlietz 9 | /openexr/*.md @cary-ilm @kdt3rd @lgritz @meshula @peterhillman @xlietz 10 | 11 | 12 | -------------------------------------------------------------------------------- /Contrib/DtexToExr/AUTHORS: -------------------------------------------------------------------------------- 1 | Developers: 2 | ----------- 3 | 4 | Christopher Horvath 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Contrib/DtexToExr/ChangeLog: -------------------------------------------------------------------------------- 1 | Version 1.0.0: 2 | * Initial release of this code. 3 | 4 | Version 1.0.1: 5 | * Fixed misinterpretation of values read from "deepopacity" dtex files. 6 | The data stored is actually transmission, or 1.0-opacity, which means 7 | that "deepopacity" dtex values actually monotonically decrease from 1 8 | to 0. We have updated the comments and documentation to reflect this 9 | and have fixed the PxOneChanDeepOpacity file to convert the data 10 | as it is read out of the file. 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Contrib/NuGet/OpenEXR-msvc-x64.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | openexr-msvc-x64 5 | 2.3.0.8788 6 | administrator 7 | false 8 | Visual Studio 2017 Release OpenEXR as NuGet package. 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Contrib/NuGet/OpenEXR-msvc-x86.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | openexr-msvc-x86 5 | 2.3.0.8788 6 | administrator 7 | false 8 | Visual Studio 2017 Release OpenEXR as NuGet package. 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /WORKSPACE.bazel: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright Contributors to the OpenEXR Project. 3 | 4 | # WORKSPACE marker file needed by Bazel 5 | -------------------------------------------------------------------------------- /bazel/BUILD.bazel: -------------------------------------------------------------------------------- 1 | # Empty by intend 2 | -------------------------------------------------------------------------------- /bazel/imath_module_dot_bazel.patch: -------------------------------------------------------------------------------- 1 | --- MODULE.bazel 2 | +++ MODULE.bazel 3 | @@ -0,0 +1,6 @@ 4 | +module( 5 | + name = "imath", 6 | + compatibility_level = 1, 7 | +) 8 | + 9 | +bazel_dep(name = "bazel_skylib", version = "1.7.1") 10 | -------------------------------------------------------------------------------- /bazel/libdeflate_module_dot_bazel.patch: -------------------------------------------------------------------------------- 1 | --- MODULE.bazel 2 | +++ MODULE.bazel 3 | @@ -0,0 +1,4 @@ 4 | +module( 5 | + name = "libdeflate", 6 | + compatibility_level = 1, 7 | +) 8 | -------------------------------------------------------------------------------- /bazel/openjph_module_dot_bazel.patch: -------------------------------------------------------------------------------- 1 | --- MODULE.bazel 2 | +++ MODULE.bazel 3 | @@ -0,0 +1,8 @@ 4 | +module( 5 | + name = "openjph", 6 | + version = "0.21.2", 7 | + compatibility_level = 1, 8 | +) 9 | + 10 | +bazel_dep(name = "rules_cc", version = "0.1.1") 11 | +bazel_dep(name = "rules_license", version = "1.0.0") -------------------------------------------------------------------------------- /cmake/FindSphinx.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | #Look for an executable called sphinx-build 5 | find_program(SPHINX_EXECUTABLE 6 | NAMES sphinx-build 7 | DOC "Path to sphinx-build executable") 8 | 9 | include(FindPackageHandleStandardArgs) 10 | 11 | #Handle standard arguments to find_package like REQUIRED and QUIET 12 | find_package_handle_standard_args(Sphinx 13 | "Failed to find sphinx-build executable" 14 | SPHINX_EXECUTABLE) 15 | 16 | -------------------------------------------------------------------------------- /cmake/IexConfig.h.in: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | // This file is auto-generated by the cmake configure step 5 | 6 | #ifndef INCLUDED_IEX_CONFIG_H 7 | #define INCLUDED_IEX_CONFIG_H 1 8 | 9 | #pragma once 10 | 11 | // 12 | // 13 | // C++ namespace configuration / options 14 | 15 | // automated formatting does not handle the cmake tags well 16 | // clang-format off 17 | 18 | // 19 | // Current internal library namespace name 20 | // 21 | #define IEX_INTERNAL_NAMESPACE_CUSTOM @IEX_NAMESPACE_CUSTOM@ 22 | #define IEX_INTERNAL_NAMESPACE @IEX_INTERNAL_NAMESPACE@ 23 | 24 | // 25 | // Current public user namespace name 26 | // 27 | 28 | #define IEX_NAMESPACE_CUSTOM @IEX_NAMESPACE_CUSTOM@ 29 | #define IEX_NAMESPACE @IEX_NAMESPACE@ 30 | 31 | // clang-format on 32 | 33 | #endif // INCLUDED_IEX_CONFIG_H 34 | -------------------------------------------------------------------------------- /cmake/IexConfigInternal.h.in: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | #pragma once 5 | 6 | // 7 | // Dealing with FPEs 8 | // 9 | 10 | // automated formatting does not handle the cmake tags well 11 | // clang-format off 12 | 13 | #cmakedefine HAVE_UCONTEXT_H 1 14 | #cmakedefine IEX_HAVE_CONTROL_REGISTER_SUPPORT 1 15 | #cmakedefine IEX_HAVE_SIGCONTEXT_CONTROL_REGISTER_SUPPORT 1 16 | 17 | // clang-format on 18 | -------------------------------------------------------------------------------- /cmake/JoinPaths.cmake: -------------------------------------------------------------------------------- 1 | # This module provides function for joining paths 2 | # known from from most languages 3 | # 4 | # SPDX-License-Identifier: BSD-3-Clause 5 | # Copyright (c) Contributors to the OpenEXR Project. 6 | # https://github.com/jtojnar/cmake-snips 7 | # 8 | # Modelled after Python’s os.path.join 9 | # https://docs.python.org/3.7/library/os.path.html#os.path.join 10 | # Windows not supported 11 | function(join_paths joined_path first_path_segment) 12 | set(temp_path "${first_path_segment}") 13 | foreach(current_segment IN LISTS ARGN) 14 | if(NOT ("${current_segment}" STREQUAL "")) 15 | if(IS_ABSOLUTE "${current_segment}") 16 | set(temp_path "${current_segment}") 17 | else() 18 | set(temp_path "${temp_path}/${current_segment}") 19 | endif() 20 | endif() 21 | endforeach() 22 | set(${joined_path} "${temp_path}" PARENT_SCOPE) 23 | endfunction() 24 | -------------------------------------------------------------------------------- /cmake/OpenEXR.pc.in: -------------------------------------------------------------------------------- 1 | ## 2 | ## SPDX-License-Identifier: BSD-3-Clause 3 | ## Copyright (c) Contributors to the OpenEXR Project. 4 | ## 5 | 6 | prefix=@CMAKE_INSTALL_PREFIX@ 7 | exec_prefix=${prefix} 8 | libdir=@PKG_CONFIG_INSTALL_LIBDIR@ 9 | includedir=@PKG_CONFIG_INSTALL_INCLUDEDIR@ 10 | OpenEXR_includedir=${includedir}/OpenEXR 11 | libsuffix=@LIB_SUFFIX_DASH@ 12 | 13 | Name: OpenEXR 14 | Description: OpenEXR image library 15 | Version: @OPENEXR_VERSION@ 16 | 17 | Libs: @exr_pthread_libs@ -L${libdir} -lOpenEXR${libsuffix} -lOpenEXRUtil${libsuffix} -lOpenEXRCore${libsuffix} -lIex${libsuffix} -lIlmThread${libsuffix} 18 | Cflags: -I${includedir} -I${OpenEXR_includedir} @exr_pthread_cflags@ 19 | Requires: Imath 20 | Requires: openjph 21 | Requires.private: @EXR_DEFLATE_PKGCONFIG_REQUIRES@ 22 | 23 | -------------------------------------------------------------------------------- /cmake/OpenEXRConfig.cmake.in: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | @PACKAGE_INIT@ 5 | 6 | include(CMakeFindDependencyMacro) 7 | 8 | set(openexr_needthreads @OPENEXR_ENABLE_THREADING@) 9 | if (openexr_needthreads) 10 | set(THREADS_PREFER_PTHREAD_FLAG ON) 11 | find_dependency(Threads) 12 | endif() 13 | unset(openexr_needthreads) 14 | 15 | find_dependency(Imath) 16 | 17 | if (@libdeflate_FOUND@) 18 | find_dependency(libdeflate) 19 | endif() 20 | 21 | include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") 22 | check_required_components("@PROJECT_NAME@") 23 | -------------------------------------------------------------------------------- /cmake/cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | # Source: https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake 2 | 3 | if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") 4 | message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt") 5 | endif() 6 | 7 | file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) 8 | string(REGEX REPLACE "\n" ";" files "${files}") 9 | foreach(file ${files}) 10 | message(STATUS "Uninstalling $ENV{DESTDIR}${file}") 11 | if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 12 | exec_program( 13 | "@CMAKE_COMMAND@" ARGS 14 | "-E remove \"$ENV{DESTDIR}${file}\"" 15 | OUTPUT_VARIABLE rm_out 16 | RETURN_VALUE rm_retval) 17 | if(NOT "${rm_retval}" STREQUAL 0) 18 | message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") 19 | endif() 20 | else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 21 | message(STATUS "File $ENV{DESTDIR}${file} does not exist.") 22 | endif() 23 | endforeach() 24 | -------------------------------------------------------------------------------- /share/ci/scripts/install_help2man.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # SPDX-License-Identifier: BSD-3-Clause 3 | # Copyright Contributors to the OpenColorIO Project. 4 | 5 | set -ex 6 | 7 | HELP2MAN_VERSION="1.49.3" 8 | HELP2MAN_URL="https://ftp.gnu.org/gnu/help2man/help2man-$HELP2MAN_VERSION.tar.xz" 9 | HELP2MAN_DIR="help2man-$HELP2MAN_VERSION" 10 | 11 | SUDO=$(command -v sudo >/dev/null 2>&1 && echo sudo || echo "") 12 | 13 | # Download help2man source code 14 | echo "Downloading help2man version $HELP2MAN_VERSION..." 15 | curl -O "$HELP2MAN_URL" 16 | 17 | # Extract the downloaded tarball. On ChangeLog is a symlink, which 18 | # Windows doesn't like, so exclude it. 19 | echo "Extracting help2man..." 20 | tar -xf "$HELP2MAN_DIR.tar.xz" --exclude="*/ChangeLog" 21 | 22 | # Navigate into the help2man source directory 23 | cd "$HELP2MAN_DIR" 24 | 25 | # Configure, build, and install help2man 26 | echo "Configuring help2man..." 27 | ./configure 28 | 29 | echo "Building help2man..." 30 | make 31 | 32 | echo "Installing help2man..." 33 | $SUDO make install 34 | 35 | echo "help2man installed successfully!" 36 | 37 | 38 | -------------------------------------------------------------------------------- /share/ci/scripts/install_imath.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # SPDX-License-Identifier: BSD-3-Clause 3 | # Copyright Contributors to the OpenColorIO Project. 4 | 5 | set -ex 6 | 7 | TAG="$1" 8 | 9 | SUDO=$(command -v sudo >/dev/null 2>&1 && echo sudo || echo "") 10 | 11 | git clone https://github.com/AcademySoftwareFoundation/Imath.git 12 | cd Imath 13 | 14 | git checkout ${TAG} 15 | 16 | mkdir build 17 | cd build 18 | cmake -DCMAKE_BUILD_TYPE=Release .. 19 | $SUDO cmake --build . \ 20 | --target install \ 21 | --config Release \ 22 | --parallel 2 23 | 24 | cd ../.. 25 | rm -rf Imath 26 | -------------------------------------------------------------------------------- /share/ci/scripts/install_libdeflate.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # SPDX-License-Identifier: BSD-3-Clause 3 | # Copyright Contributors to the OpenColorIO Project. 4 | 5 | set -ex 6 | 7 | TAG="$1" 8 | 9 | SUDO=$(command -v sudo >/dev/null 2>&1 && echo sudo || echo "") 10 | 11 | git clone https://github.com/ebiggers/libdeflate 12 | cd libdeflate 13 | 14 | git checkout ${TAG} 15 | 16 | mkdir build 17 | cd build 18 | cmake -DCMAKE_BUILD_TYPE=Release .. 19 | $SUDO cmake --build . \ 20 | --target install \ 21 | --config Release \ 22 | --parallel 2 23 | 24 | cd ../.. 25 | rm -rf libdeflate 26 | -------------------------------------------------------------------------------- /share/ci/scripts/install_openjph.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # SPDX-License-Identifier: BSD-3-Clause 3 | # Copyright Contributors to the OpenColorIO Project. 4 | 5 | set -ex 6 | 7 | TAG="$1" 8 | 9 | SUDO=$(command -v sudo >/dev/null 2>&1 && echo sudo || echo "") 10 | 11 | git clone https://github.com/aous72/OpenJPH.git 12 | cd OpenJPH 13 | 14 | git checkout ${TAG} 15 | 16 | cd build 17 | cmake -DOJPH_ENABLE_TIFF_SUPPORT=OFF -DCMAKE_BUILD_TYPE=Release .. 18 | $SUDO cmake --build . \ 19 | --target install \ 20 | --config Release \ 21 | --parallel 2 22 | 23 | cd ../.. 24 | rm -rf OpenJPH 25 | -------------------------------------------------------------------------------- /share/ci/scripts/install_pybind11.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # SPDX-License-Identifier: BSD-3-Clause 3 | # Copyright Contributors to the OpenColorIO Project. 4 | 5 | set -ex 6 | 7 | PYBIND11_VERSION="$1" 8 | 9 | SUDO=$(command -v sudo >/dev/null 2>&1 && echo sudo || echo "") 10 | 11 | git clone https://github.com/pybind/pybind11.git 12 | cd pybind11 13 | 14 | if [ "$PYBIND11_VERSION" == "latest" ]; then 15 | LATEST_TAG=$(git describe --abbrev=0 --tags) 16 | git checkout tags/${LATEST_TAG} -b ${LATEST_TAG} 17 | else 18 | git checkout tags/v${PYBIND11_VERSION} -b v${PYBIND11_VERSION} 19 | fi 20 | 21 | mkdir build 22 | cd build 23 | cmake -DCMAKE_BUILD_TYPE=Release \ 24 | -DPYBIND11_INSTALL=ON \ 25 | -DPYBIND11_TEST=OFF \ 26 | ../. 27 | $SUDO cmake --build . \ 28 | --target install \ 29 | --config Release \ 30 | --parallel 2 31 | 32 | cd ../.. 33 | rm -rf pybind11 34 | -------------------------------------------------------------------------------- /share/ci/scripts/linux/install_valgrind.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright Contributors to the OpenEXR Project. 5 | 6 | set -ex 7 | 8 | VALGRIND_VERSION="3.15.0" 9 | 10 | echo "Updating to Valgrind ${VALGRIND_VERSION}" 11 | 12 | wget -q https://sourceware.org/ftp/valgrind/valgrind-${VALGRIND_VERSION}.tar.bz2 13 | tar -xjf valgrind-${VALGRIND_VERSION}.tar.bz2 14 | 15 | cd valgrind-${VALGRIND_VERSION} 16 | 17 | # Build valgrind 18 | sed -i 's|/doc/valgrind||' docs/Makefile.in && 19 | ./configure --prefix=/usr \ 20 | --datadir=/usr/share/doc/valgrind-${VALGRIND_VERSION} && 21 | make 22 | 23 | # Test the build - disabled 24 | # NOTE: if enabled, must install prerequisites gedb-8.3 and six-1.12.0 25 | # make regtest 26 | 27 | # Install valgrind 28 | sudo make install 29 | 30 | echo $(which valgrind) 31 | 32 | cd .. 33 | -------------------------------------------------------------------------------- /share/ci/scripts/linux/log_valgrind.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright Contributors to the OpenEXR Project. 5 | 6 | set -ex 7 | 8 | LOGDIR="$1" 9 | 10 | if [[ -d ${LOGDIR}/Testing/Temporary ]]; then 11 | for log in ${LOGDIR}/Testing/Temporary/MemoryChecker.*.log; do 12 | echo "========================== " ${log##*/} " ==========================" 13 | cat $log 14 | echo 15 | done 16 | else 17 | echo "Memcheck log files not found." 18 | fi 19 | -------------------------------------------------------------------------------- /share/util/reformat.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | cformat=`which clang-format` 4 | if [[ "${cformat}" == "" ]]; then 5 | echo "ERROR: clang-format not found" 6 | exit 1 7 | fi 8 | 9 | scriptpath=`realpath $0` 10 | scriptdir=`dirname $scriptpath` 11 | basedir=`dirname $scriptdir` 12 | echo "Processing files in: ${basedir}" 13 | cd ${basedir} 14 | find . \( -name '*.cpp' -o -name '*.h' \) -exec ${cformat} -style=file -verbose -i {} \; 15 | 16 | -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | # 4 | # SonarCloud analysis configuration file 5 | # https://sonarcloud.io/documentation/analysis/analysis-parameters 6 | 7 | sonar.host.url=https://sonarcloud.io 8 | 9 | # Required metadata 10 | sonar.organization=academysoftwarefoundation 11 | sonar.projectKey=AcademySoftwareFoundation_openexr 12 | sonar.projectName=OpenEXR 13 | sonar.projectVersion=2.5 14 | 15 | # Project links 16 | sonar.links.homepage=http://openexr.com 17 | sonar.links.ci=https://github.com/AcademySoftwareFoundation/openexr/actions 18 | sonar.links.scm=https://github.com/AcademySoftwareFoundation/openexr 19 | sonar.links.issue=https://github.com/AcademySoftwareFoundation/openexr/issues 20 | 21 | # Source properties 22 | sonar.sources=src 23 | sonar.sourceEncoding=UTF-8 24 | sonar.exclusions=src/bindings/java/**,*.java 25 | 26 | # C/C++ analyzer properties 27 | sonar.cfamily.build-wrapper-output=_build/bw_output 28 | sonar.cfamily.gcov.reportsPath=_coverage 29 | 30 | -------------------------------------------------------------------------------- /src/bin/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | ################## 5 | # Binaries / Tools 6 | ################## 7 | 8 | message(STATUS "Building OpenEXR tools") 9 | 10 | add_subdirectory( exr2aces ) 11 | add_subdirectory( exrheader ) 12 | add_subdirectory( exrinfo ) 13 | add_subdirectory( exrmaketiled ) 14 | add_subdirectory( exrmetrics ) 15 | add_subdirectory( exrstdattr ) 16 | add_subdirectory( exrmakepreview ) 17 | add_subdirectory( exrenvmap ) 18 | add_subdirectory( exrmultiview ) 19 | add_subdirectory( exrmultipart ) 20 | add_subdirectory( exrcheck ) 21 | add_subdirectory( exrmanifest ) 22 | -------------------------------------------------------------------------------- /src/bin/exr2aces/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(exr2aces main.cpp) 5 | target_link_libraries(exr2aces OpenEXR::OpenEXR) 6 | set_target_properties(exr2aces PROPERTIES 7 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 8 | ) 9 | if(OPENEXR_INSTALL_TOOLS) 10 | install(TARGETS exr2aces DESTINATION ${CMAKE_INSTALL_BINDIR}) 11 | endif() 12 | if(WIN32 AND BUILD_SHARED_LIBS) 13 | target_compile_definitions(exr2aces PRIVATE OPENEXR_DLL) 14 | endif() 15 | -------------------------------------------------------------------------------- /src/bin/exrcheck/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(exrcheck main.cpp) 5 | target_link_libraries(exrcheck OpenEXR::OpenEXR OpenEXR::OpenEXRUtil) 6 | set_target_properties(exrcheck PROPERTIES 7 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 8 | ) 9 | 10 | # exrcheck is considered a "developer" tool, so only install it 11 | # when installation of developer tools is enabled. 12 | if(OPENEXR_INSTALL_DEVELOPER_TOOLS) 13 | install(TARGETS exrcheck DESTINATION ${CMAKE_INSTALL_BINDIR}) 14 | endif() 15 | if(WIN32 AND (BUILD_SHARED_LIBS OR OPENEXR_BUILD_BOTH_STATIC_SHARED)) 16 | target_compile_definitions(exrcheck PRIVATE OPENEXR_DLL) 17 | endif() 18 | -------------------------------------------------------------------------------- /src/bin/exrenvmap/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable( exrenvmap 5 | blurImage.cpp 6 | blurImage.h 7 | EnvmapImage.cpp 8 | EnvmapImage.h 9 | main.cpp 10 | makeCubeMap.cpp 11 | makeCubeMap.h 12 | makeLatLongMap.cpp 13 | makeLatLongMap.h 14 | namespaceAlias.h 15 | readInputImage.cpp 16 | readInputImage.h 17 | resizeImage.cpp 18 | resizeImage.h 19 | ) 20 | 21 | target_link_libraries(exrenvmap OpenEXR::OpenEXR) 22 | set_target_properties(exrenvmap PROPERTIES 23 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 24 | ) 25 | if(OPENEXR_INSTALL_TOOLS) 26 | install(TARGETS exrenvmap DESTINATION ${CMAKE_INSTALL_BINDIR}) 27 | endif() 28 | if(WIN32 AND BUILD_SHARED_LIBS) 29 | target_compile_definitions(exrenvmap PRIVATE OPENEXR_DLL) 30 | endif() 31 | -------------------------------------------------------------------------------- /src/bin/exrenvmap/blurImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_BLUR_IMAGE_H 7 | #define INCLUDED_BLUR_IMAGE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // function blurImage() -- performs a hemispherical blur 12 | // 13 | // An environment map image is blurred by applying a 180-degree-wide 14 | // filter kernel, such that point-sampling the blurred image at a 15 | // location that corresponds to 3D direction N returns the color that 16 | // a white diffuse reflector with surface normal N would have if it 17 | // was illuminated using the original non-blurred image. 18 | // 19 | //----------------------------------------------------------------------------- 20 | 21 | #include 22 | 23 | void blurImage (EnvmapImage& image, bool verbose); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /src/bin/exrenvmap/namespaceAlias.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef NAMESPACEALIAS_H_ 7 | #define NAMESPACEALIAS_H_ 8 | 9 | #include "IexNamespace.h" 10 | #include "ImathNamespace.h" 11 | #include "ImfNamespace.h" 12 | 13 | namespace IMF = OPENEXR_IMF_NAMESPACE; 14 | namespace IMATH = IMATH_NAMESPACE; 15 | namespace IEX = IEX_NAMESPACE; 16 | 17 | #endif /* NAMESPACEALIAS_H_ */ 18 | -------------------------------------------------------------------------------- /src/bin/exrenvmap/readInputImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_READ_INPUT_IMAGE_H 7 | #define INCLUDED_READ_INPUT_IMAGE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // function readInputImage() -- 12 | // reads an image file and constructs an EnvMapImage object 13 | // 14 | //----------------------------------------------------------------------------- 15 | 16 | #include 17 | #include 18 | #include 19 | 20 | #include "namespaceAlias.h" 21 | 22 | class EnvmapImage; 23 | 24 | void readInputImage ( 25 | const char inFileName[], 26 | float padTop, 27 | float padBottom, 28 | IMF::Envmap overrideType, 29 | bool verbose, 30 | EnvmapImage& image, 31 | IMF::Header& header, 32 | IMF::RgbaChannels& channels); 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/bin/exrenvmap/resizeImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_RESIZE_IMAGE_H 7 | #define INCLUDED_RESIZE_IMAGE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // resizeLatLong(), resizeCube() -- functions that resample 12 | // an environment map and convert it to latitude-longitude or 13 | // cube-face format. 14 | // 15 | //----------------------------------------------------------------------------- 16 | 17 | #include "EnvmapImage.h" 18 | 19 | void resizeLatLong ( 20 | const EnvmapImage& image1, 21 | EnvmapImage& image2, 22 | const IMATH::Box2i& image2DataWindow, 23 | float filterRadius, 24 | int numSamples); 25 | 26 | void resizeCube ( 27 | const EnvmapImage& image1, 28 | EnvmapImage& image2, 29 | const IMATH::Box2i& image2DataWindow, 30 | float filterRadius, 31 | int numSamples); 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/bin/exrheader/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(exrheader main.cpp) 5 | target_link_libraries(exrheader OpenEXR::OpenEXR) 6 | set_target_properties(exrheader PROPERTIES 7 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 8 | ) 9 | if(OPENEXR_INSTALL_TOOLS) 10 | install(TARGETS exrheader DESTINATION ${CMAKE_INSTALL_BINDIR}) 11 | endif() 12 | if(WIN32 AND BUILD_SHARED_LIBS) 13 | target_compile_definitions(exrheader PRIVATE OPENEXR_DLL) 14 | endif() 15 | -------------------------------------------------------------------------------- /src/bin/exrinfo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright Contributors to the OpenEXR Project. 3 | 4 | add_executable(exrinfo main.c) 5 | target_link_libraries(exrinfo OpenEXR::OpenEXRCore) 6 | set_target_properties(exrinfo PROPERTIES 7 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 8 | ) 9 | 10 | if(OPENEXR_INSTALL_TOOLS) 11 | install(TARGETS exrinfo DESTINATION ${CMAKE_INSTALL_BINDIR}) 12 | endif() 13 | if(WIN32 AND (BUILD_SHARED_LIBS OR OPENEXR_BUILD_BOTH_STATIC_SHARED)) 14 | target_compile_definitions(exrinfo PRIVATE OPENEXR_DLL) 15 | endif() 16 | -------------------------------------------------------------------------------- /src/bin/exrmakepreview/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(exrmakepreview 5 | main.cpp 6 | makePreview.cpp 7 | makePreview.h 8 | ) 9 | target_link_libraries(exrmakepreview OpenEXR::OpenEXR) 10 | set_target_properties(exrmakepreview PROPERTIES 11 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 12 | ) 13 | if(OPENEXR_INSTALL_TOOLS) 14 | install(TARGETS exrmakepreview DESTINATION ${CMAKE_INSTALL_BINDIR}) 15 | endif() 16 | if(WIN32 AND BUILD_SHARED_LIBS) 17 | target_compile_definitions(exrmakepreview PRIVATE OPENEXR_DLL) 18 | endif() 19 | -------------------------------------------------------------------------------- /src/bin/exrmakepreview/makePreview.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_MAKE_PREVIEW_H 7 | #define INCLUDED_MAKE_PREVIEW_H 8 | 9 | //---------------------------------------------------------------------------- 10 | // 11 | // Add a preview image to an OpenEXR file. 12 | // 13 | //---------------------------------------------------------------------------- 14 | 15 | void makePreview ( 16 | const char inFileName[], 17 | const char outFileName[], 18 | int previewWidth, 19 | float exposure, 20 | bool verbose); 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /src/bin/exrmaketiled/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors (c) to the OpenEXR Project. 3 | 4 | add_executable(exrmaketiled 5 | Image.cpp 6 | Image.h 7 | main.cpp 8 | makeTiled.cpp 9 | makeTiled.h 10 | namespaceAlias.h 11 | ) 12 | target_link_libraries(exrmaketiled OpenEXR::OpenEXR) 13 | set_target_properties(exrmaketiled PROPERTIES 14 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 15 | ) 16 | if(OPENEXR_INSTALL_TOOLS) 17 | install(TARGETS exrmaketiled DESTINATION ${CMAKE_INSTALL_BINDIR}) 18 | endif() 19 | if(WIN32 AND BUILD_SHARED_LIBS) 20 | target_compile_definitions(exrmaketiled PRIVATE OPENEXR_DLL) 21 | endif() 22 | -------------------------------------------------------------------------------- /src/bin/exrmaketiled/namespaceAlias.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef NAMESPACEALIAS_H_ 7 | #define NAMESPACEALIAS_H_ 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | namespace IMF = OPENEXR_IMF_NAMESPACE; 14 | namespace IMATH = IMATH_NAMESPACE; 15 | namespace IEX = IEX_NAMESPACE; 16 | 17 | #endif /* NAMESPACEALIAS_H_ */ 18 | -------------------------------------------------------------------------------- /src/bin/exrmanifest/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(exrmanifest main.cpp) 5 | target_link_libraries(exrmanifest OpenEXR::OpenEXR) 6 | set_target_properties(exrmanifest PROPERTIES 7 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 8 | ) 9 | if(OPENEXR_INSTALL_TOOLS) 10 | install(TARGETS exrmanifest DESTINATION ${CMAKE_INSTALL_BINDIR}) 11 | endif() 12 | if(WIN32 AND BUILD_SHARED_LIBS) 13 | target_compile_definitions(exrmanifest PRIVATE OPENEXR_DLL) 14 | endif() 15 | -------------------------------------------------------------------------------- /src/bin/exrmetrics/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(exrmetrics main.cpp exrmetrics.cpp) 5 | target_link_libraries(exrmetrics OpenEXR::OpenEXR) 6 | set_target_properties(exrmetrics PROPERTIES 7 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 8 | ) 9 | if(OPENEXR_INSTALL_TOOLS) 10 | install(TARGETS exrmetrics DESTINATION ${CMAKE_INSTALL_BINDIR}) 11 | endif() 12 | if(WIN32 AND BUILD_SHARED_LIBS) 13 | target_compile_definitions(exrmetrics PRIVATE OPENEXR_DLL) 14 | endif() 15 | -------------------------------------------------------------------------------- /src/bin/exrmultipart/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(exrmultipart exrmultipart.cpp) 5 | target_link_libraries(exrmultipart OpenEXR::OpenEXR) 6 | set_target_properties(exrmultipart PROPERTIES 7 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 8 | ) 9 | if(OPENEXR_INSTALL_TOOLS) 10 | install(TARGETS exrmultipart DESTINATION ${CMAKE_INSTALL_BINDIR}) 11 | endif() 12 | if(WIN32 AND BUILD_SHARED_LIBS) 13 | target_compile_definitions(exrmultipart PRIVATE OPENEXR_DLL) 14 | endif() 15 | -------------------------------------------------------------------------------- /src/bin/exrmultiview/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(exrmultiview 5 | Image.cpp 6 | Image.h 7 | main.cpp 8 | makeMultiView.cpp 9 | makeMultiView.h 10 | namespaceAlias.h 11 | ) 12 | target_link_libraries(exrmultiview OpenEXR::OpenEXR) 13 | set_target_properties(exrmultiview PROPERTIES 14 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 15 | ) 16 | if(OPENEXR_INSTALL_TOOLS) 17 | install(TARGETS exrmultiview DESTINATION ${CMAKE_INSTALL_BINDIR}) 18 | endif() 19 | if(WIN32 AND BUILD_SHARED_LIBS) 20 | target_compile_definitions(exrmultiview PRIVATE OPENEXR_DLL) 21 | endif() 22 | -------------------------------------------------------------------------------- /src/bin/exrmultiview/makeMultiView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_MAKE_MULTI_VIEW_H 7 | #define INCLUDED_MAKE_MULTI_VIEW_H 8 | 9 | //---------------------------------------------------------------------------- 10 | // 11 | // Combine multiple single-view images 12 | // into one multi-view image. 13 | // 14 | //---------------------------------------------------------------------------- 15 | 16 | #include "namespaceAlias.h" 17 | #include 18 | #include 19 | #include 20 | 21 | void makeMultiView ( 22 | const std::vector& viewNames, 23 | const std::vector& inFileNames, 24 | const char* outFileName, 25 | IMF::Compression compression, 26 | bool verbose); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /src/bin/exrmultiview/namespaceAlias.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef NAMESPACEALIAS_H_ 7 | #define NAMESPACEALIAS_H_ 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | namespace IMF = OPENEXR_IMF_NAMESPACE; 14 | namespace IMATH = IMATH_NAMESPACE; 15 | namespace IEX = IEX_NAMESPACE; 16 | 17 | #endif /* NAMESPACEALIAS_H_ */ 18 | -------------------------------------------------------------------------------- /src/bin/exrstdattr/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(exrstdattr main.cpp) 5 | target_link_libraries(exrstdattr OpenEXR::OpenEXR) 6 | set_target_properties(exrstdattr PROPERTIES 7 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 8 | ) 9 | if(OPENEXR_INSTALL_TOOLS) 10 | install(TARGETS exrstdattr DESTINATION ${CMAKE_INSTALL_BINDIR}) 11 | endif() 12 | if(WIN32 AND BUILD_SHARED_LIBS) 13 | target_compile_definitions(exrstdattr PRIVATE OPENEXR_DLL) 14 | endif() 15 | -------------------------------------------------------------------------------- /src/examples/BUILD.bazel: -------------------------------------------------------------------------------- 1 | cc_test( 2 | name = "OpenEXRExamples", 3 | srcs = [ 4 | "deepExamples.cpp", 5 | "deepExamples.h", 6 | "deepTiledExamples.cpp", 7 | "deepTiledExamples.h", 8 | "drawImage.cpp", 9 | "drawImage.h", 10 | "generalInterfaceExamples.cpp", 11 | "generalInterfaceExamples.h", 12 | "generalInterfaceTiledExamples.cpp", 13 | "generalInterfaceTiledExamples.h", 14 | "lowLevelIoExamples.cpp", 15 | "lowLevelIoExamples.h", 16 | "main.cpp", 17 | "multipartExamples.cpp", 18 | "multipartExamples.h", 19 | "namespaceAlias.h", 20 | "previewImageExamples.cpp", 21 | "previewImageExamples.h", 22 | "rgbaInterfaceExamples.cpp", 23 | "rgbaInterfaceExamples.h", 24 | "rgbaInterfaceTiledExamples.cpp", 25 | "rgbaInterfaceTiledExamples.h", 26 | ], 27 | deps = ["//:OpenEXR"], 28 | ) 29 | -------------------------------------------------------------------------------- /src/examples/deepExamples.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void deepExamples (); 7 | -------------------------------------------------------------------------------- /src/examples/deepTiledExamples.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void deepTiledExamples (); 7 | -------------------------------------------------------------------------------- /src/examples/generalInterfaceExamples.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void generalInterfaceExamples (); 7 | -------------------------------------------------------------------------------- /src/examples/generalInterfaceTiledExamples.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | void generalInterfaceTiledExamples (); 5 | -------------------------------------------------------------------------------- /src/examples/lowLevelIoExamples.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | void lowLevelIoExamples (); 5 | -------------------------------------------------------------------------------- /src/examples/multipartExamples.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void multipartExamples (); 7 | -------------------------------------------------------------------------------- /src/examples/namespaceAlias.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef NAMESPACEALIAS_H_ 7 | #define NAMESPACEALIAS_H_ 8 | 9 | #include 10 | 11 | namespace IMF = OPENEXR_IMF_NAMESPACE; 12 | 13 | #endif /* NAMESPACEALIAS_H_ */ 14 | -------------------------------------------------------------------------------- /src/examples/previewImageExamples.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void previewImageExamples (); 7 | -------------------------------------------------------------------------------- /src/examples/rgbaInterfaceExamples.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void rgbaInterfaceExamples (); 7 | -------------------------------------------------------------------------------- /src/examples/rgbaInterfaceTiledExamples.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void rgbaInterfaceTiledExamples (); 7 | -------------------------------------------------------------------------------- /src/lib/.gitignore: -------------------------------------------------------------------------------- 1 | IlmBase.pc 2 | autom4te.cache/ 3 | config.guess 4 | config.log 5 | config.status 6 | config.sub 7 | config/IlmBaseConfig.h 8 | config/stamp-h1 9 | configure 10 | depcomp 11 | install-sh 12 | libtool 13 | ltmain.sh 14 | missing 15 | .metadata/ 16 | 17 | -------------------------------------------------------------------------------- /src/lib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | message(STATUS "Building OpenEXR libraries") 5 | 6 | add_subdirectory( Iex ) 7 | add_subdirectory( IlmThread ) 8 | 9 | add_subdirectory( OpenEXRCore ) 10 | add_subdirectory( OpenEXR ) 11 | add_subdirectory( OpenEXRUtil ) 12 | -------------------------------------------------------------------------------- /src/lib/Iex/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | openexr_define_library(Iex 5 | PRIV_EXPORT IEX_EXPORTS 6 | CURDIR ${CMAKE_CURRENT_SOURCE_DIR} 7 | SOURCES 8 | IexMathFpu.h 9 | IexBaseExc.cpp 10 | IexMathFloatExc.cpp 11 | IexMathFpu.cpp 12 | IexThrowErrnoExc.cpp 13 | HEADERS 14 | Iex.h 15 | IexBaseExc.h 16 | IexErrnoExc.h 17 | IexExport.h 18 | IexForward.h 19 | IexMacros.h 20 | IexMathExc.h 21 | IexMathFloatExc.h 22 | IexMathIeeeExc.h 23 | IexNamespace.h 24 | IexThrowErrnoExc.h 25 | DEPENDENCIES 26 | OpenEXR::Config 27 | ) 28 | -------------------------------------------------------------------------------- /src/lib/Iex/Iex.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IEX_H 7 | #define INCLUDED_IEX_H 8 | 9 | //-------------------------------- 10 | // 11 | // Exception handling 12 | // 13 | //-------------------------------- 14 | 15 | #include "IexBaseExc.h" 16 | #include "IexMacros.h" 17 | #include "IexMathExc.h" 18 | #include "IexThrowErrnoExc.h" 19 | 20 | // Note that we do not include file IexErrnoExc.h here. That file 21 | // defines over 150 classes and significantly slows down compilation. 22 | // If you throw ErrnoExc exceptions using the throwErrnoExc() function, 23 | // you don't need IexErrnoExc.h. You have to include IexErrnoExc.h 24 | // only if you want to catch specific subclasses of ErrnoExc. 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/lib/Iex/IexExport.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IEXEXPORT_H 7 | #define INCLUDED_IEXEXPORT_H 8 | 9 | #include "OpenEXRConfig.h" 10 | 11 | #if defined(OPENEXR_DLL) 12 | 13 | // when building as a DLL for windows, typical dllexport / import case 14 | // where we need to switch depending on whether we are compiling 15 | // internally or not 16 | 17 | # if defined(IEX_EXPORTS) 18 | # define IEX_EXPORT __declspec (dllexport) 19 | # else 20 | # define IEX_EXPORT __declspec (dllimport) 21 | # endif 22 | 23 | // DLLs don't support these types of visibility controls, just leave them as empty 24 | # define IEX_EXPORT_TYPE 25 | # define IEX_EXPORT_ENUM 26 | 27 | #else // OPENEXR_DLL 28 | 29 | // just pass these through from the top level config 30 | # define IEX_EXPORT OPENEXR_EXPORT 31 | # define IEX_EXPORT_TYPE OPENEXR_EXPORT_TYPE 32 | # define IEX_EXPORT_ENUM OPENEXR_EXPORT_ENUM 33 | 34 | #endif // OPENEXR_DLL 35 | 36 | #endif // #ifndef INCLUDED_IEXEXPORT_H 37 | -------------------------------------------------------------------------------- /src/lib/Iex/IexMathExc.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IEXMATHEXC_H 7 | #define INCLUDED_IEXMATHEXC_H 8 | 9 | #include "IexBaseExc.h" 10 | 11 | IEX_INTERNAL_NAMESPACE_HEADER_ENTER 12 | 13 | //-------------------------------------------------------- 14 | // Exception classes which correspond to specific floating 15 | // point exceptions. 16 | //-------------------------------------------------------- 17 | 18 | DEFINE_EXC_EXP (IEX_EXPORT, OverflowExc, MathExc) // Overflow 19 | DEFINE_EXC_EXP (IEX_EXPORT, UnderflowExc, MathExc) // Underflow 20 | DEFINE_EXC_EXP (IEX_EXPORT, DivzeroExc, MathExc) // Division by zero 21 | DEFINE_EXC_EXP (IEX_EXPORT, InexactExc, MathExc) // Inexact result 22 | DEFINE_EXC_EXP (IEX_EXPORT, InvalidFpOpExc, MathExc) // Invalid operation 23 | 24 | IEX_INTERNAL_NAMESPACE_HEADER_EXIT 25 | 26 | #endif // INCLUDED_IEXMATHEXC_H 27 | -------------------------------------------------------------------------------- /src/lib/Iex/IexMathIeeeExc.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IEXMATHIEEE_EXC_H 7 | #define INCLUDED_IEXMATHIEEE_EXC_H 8 | 9 | //--------------------------------------------------------------------------- 10 | // 11 | // Names for the loating point exceptions defined by IEEE standard 754 12 | // 13 | //--------------------------------------------------------------------------- 14 | 15 | #include "IexExport.h" 16 | #include "IexNamespace.h" 17 | 18 | IEX_INTERNAL_NAMESPACE_HEADER_ENTER 19 | 20 | enum IEX_EXPORT_ENUM IeeeExcType 21 | { 22 | IEEE_OVERFLOW = 1, 23 | IEEE_UNDERFLOW = 2, 24 | IEEE_DIVZERO = 4, 25 | IEEE_INEXACT = 8, 26 | IEEE_INVALID = 16 27 | }; 28 | 29 | IEX_INTERNAL_NAMESPACE_HEADER_EXIT 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/lib/IlmThread/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | openexr_define_library(IlmThread 5 | PRIV_EXPORT ILMTHREAD_EXPORTS 6 | CURDIR ${CMAKE_CURRENT_SOURCE_DIR} 7 | SOURCES 8 | IlmThread.cpp 9 | IlmThreadPool.cpp 10 | IlmThreadSemaphore.cpp 11 | IlmThreadSemaphoreOSX.cpp 12 | IlmThreadSemaphorePosix.cpp 13 | IlmThreadSemaphorePosixCompat.cpp 14 | IlmThreadSemaphoreWin32.cpp 15 | HEADERS 16 | IlmThread.h 17 | IlmThreadExport.h 18 | IlmThreadForward.h 19 | IlmThreadMutex.h 20 | IlmThreadNamespace.h 21 | IlmThreadPool.h 22 | IlmThreadProcessGroup.h 23 | IlmThreadSemaphore.h 24 | DEPENDENCIES 25 | OpenEXR::Config 26 | OpenEXR::Iex 27 | ) 28 | 29 | if(OPENEXR_ENABLE_THREADING) 30 | if (ILMTHREAD_USE_TBB) 31 | target_link_libraries(IlmThread PUBLIC TBB::tbb) 32 | endif() 33 | target_link_libraries(IlmThread PUBLIC Threads::Threads) 34 | endif() 35 | 36 | -------------------------------------------------------------------------------- /src/lib/IlmThread/IlmThreadForward.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_ILMTHREADFORWARD_H 7 | #define INCLUDED_ILMTHREADFORWARD_H 8 | 9 | #include "IlmThreadConfig.h" 10 | #include "IlmThreadNamespace.h" 11 | 12 | #if ILMTHREAD_THREADING_ENABLED 13 | namespace std 14 | { 15 | class mutex; 16 | } 17 | #endif 18 | 19 | ILMTHREAD_INTERNAL_NAMESPACE_HEADER_ENTER 20 | 21 | class Thread; 22 | #if ILMTHREAD_THREADING_ENABLED 23 | using Mutex = std::mutex; 24 | #else 25 | class Mutex; 26 | #endif 27 | class Lock; 28 | class ThreadPool; 29 | class Task; 30 | class TaskGroup; 31 | class Semaphore; 32 | 33 | ILMTHREAD_INTERNAL_NAMESPACE_HEADER_EXIT 34 | 35 | #endif // INCLUDED_ILMTHREADFORWARD_H 36 | -------------------------------------------------------------------------------- /src/lib/IlmThread/IlmThreadSemaphore.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | //----------------------------------------------------------------------------- 7 | // 8 | // class Semaphore -- dummy implementation for 9 | // for platforms that do not support threading 10 | // 11 | //----------------------------------------------------------------------------- 12 | 13 | #include "IlmThreadSemaphore.h" 14 | 15 | #if ILMTHREAD_SEMAPHORE_DISABLED 16 | 17 | ILMTHREAD_INTERNAL_NAMESPACE_SOURCE_ENTER 18 | 19 | Semaphore::Semaphore (unsigned int value) 20 | {} 21 | Semaphore::~Semaphore () 22 | {} 23 | void 24 | Semaphore::wait () 25 | {} 26 | bool 27 | Semaphore::tryWait () 28 | { 29 | return true; 30 | } 31 | void 32 | Semaphore::post () 33 | {} 34 | int 35 | Semaphore::value () const 36 | { 37 | return 0; 38 | } 39 | 40 | ILMTHREAD_INTERNAL_NAMESPACE_SOURCE_EXIT 41 | 42 | #endif // ILMTHREAD_SEMAPHORE_DISABLED 43 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfBoxAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_BOX_ATTRIBUTE_H 7 | #define INCLUDED_IMF_BOX_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class Box2iAttribute 12 | // class Box2fAttribute 13 | // 14 | //----------------------------------------------------------------------------- 15 | 16 | #include "ImfExport.h" 17 | #include "ImfNamespace.h" 18 | 19 | #include "ImfAttribute.h" 20 | #include 21 | 22 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 23 | 24 | using Box2iAttribute = TypedAttribute; 25 | using Box2fAttribute = TypedAttribute; 26 | 27 | #ifndef COMPILING_IMF_BOX_ATTRIBUTE 28 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 29 | TypedAttribute; 30 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 31 | TypedAttribute; 32 | #endif 33 | 34 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfChannelListAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_CHANNEL_LIST_ATTRIBUTE_H 7 | #define INCLUDED_IMF_CHANNEL_LIST_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class ChannelListAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | #include "ImfChannelList.h" 20 | 21 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 22 | 23 | typedef TypedAttribute 24 | ChannelListAttribute; 25 | 26 | #ifndef COMPILING_IMF_CHANNEL_LIST_ATTRIBUTE 27 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 28 | TypedAttribute; 29 | #endif 30 | 31 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfChromaticitiesAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_CHROMATICITIES_ATTRIBUTE_H 7 | #define INCLUDED_IMF_CHROMATICITIES_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class ChromaticitiesAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfAttribute.h" 16 | #include "ImfChromaticities.h" 17 | 18 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 19 | 20 | typedef TypedAttribute 21 | ChromaticitiesAttribute; 22 | 23 | #ifndef COMPILING_IMF_CHROMATICITIES_ATTRIBUTE 24 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 25 | TypedAttribute; 26 | #endif 27 | 28 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfCompressionAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_COMPRESSION_ATTRIBUTE_H 7 | #define INCLUDED_IMF_COMPRESSION_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class CompressionAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfAttribute.h" 16 | #include "ImfCompression.h" 17 | 18 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 19 | 20 | typedef TypedAttribute 21 | CompressionAttribute; 22 | 23 | #ifndef COMPILING_IMF_COMPRESSION_ATTRIBUTE 24 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 25 | TypedAttribute; 26 | #endif 27 | 28 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfDeepImageStateAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_DEEPIMAGESTATE_ATTRIBUTE_H 7 | #define INCLUDED_IMF_DEEPIMAGESTATE_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class DeepImageStateAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfAttribute.h" 16 | #include "ImfDeepImageState.h" 17 | #include "ImfExport.h" 18 | 19 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 20 | 21 | typedef TypedAttribute 22 | DeepImageStateAttribute; 23 | 24 | #ifndef COMPILING_IMF_DEEP_IMAGE_STATE_ATTRIBUTE 25 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 26 | TypedAttribute; 27 | #endif 28 | 29 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfDoubleAttribute.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | //----------------------------------------------------------------------------- 7 | // 8 | // class DoubleAttribute 9 | // 10 | //----------------------------------------------------------------------------- 11 | 12 | #define COMPILING_IMF_DOUBLE_ATTRIBUTE 13 | #include "ImfDoubleAttribute.h" 14 | 15 | #if defined(_MSC_VER) 16 | // suppress warning about non-exported base classes 17 | # pragma warning(disable : 4251) 18 | # pragma warning(disable : 4275) 19 | #endif 20 | 21 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 22 | 23 | template <> 24 | IMF_EXPORT const char* 25 | DoubleAttribute::staticTypeName () 26 | { 27 | return "double"; 28 | } 29 | 30 | template class IMF_EXPORT_TEMPLATE_INSTANCE TypedAttribute; 31 | 32 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 33 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfDoubleAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_DOUBLE_ATTRIBUTE_H 7 | #define INCLUDED_IMF_DOUBLE_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class DoubleAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfAttribute.h" 16 | #include "ImfExport.h" 17 | 18 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 19 | 20 | typedef TypedAttribute DoubleAttribute; 21 | 22 | #ifndef COMPILING_IMF_DOUBLE_ATTRIBUTE 23 | extern template class IMF_EXPORT_EXTERN_TEMPLATE TypedAttribute; 24 | #endif 25 | 26 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfEnvmapAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_ENVMAP_ATTRIBUTE_H 7 | #define INCLUDED_IMF_ENVMAP_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class EnvmapAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfAttribute.h" 16 | #include "ImfEnvmap.h" 17 | #include "ImfExport.h" 18 | 19 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 20 | 21 | typedef TypedAttribute EnvmapAttribute; 22 | 23 | #ifndef COMPILING_IMF_ENVMAP_ATTRIBUTE 24 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 25 | TypedAttribute; 26 | #endif 27 | 28 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfFloatAttribute.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | //----------------------------------------------------------------------------- 7 | // 8 | // class FloatAttribute 9 | // 10 | //----------------------------------------------------------------------------- 11 | 12 | #define COMPILING_IMF_FLOAT_ATTRIBUTE 13 | 14 | #include 15 | 16 | #if defined(_MSC_VER) 17 | // suppress warning about non-exported base classes 18 | # pragma warning(disable : 4251) 19 | # pragma warning(disable : 4275) 20 | #endif 21 | 22 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 23 | 24 | template <> 25 | IMF_EXPORT const char* 26 | FloatAttribute::staticTypeName () 27 | { 28 | return "float"; 29 | } 30 | 31 | template class IMF_EXPORT_TEMPLATE_INSTANCE TypedAttribute; 32 | 33 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfFloatAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_FLOAT_ATTRIBUTE_H 7 | #define INCLUDED_IMF_FLOAT_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class FloatAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | 20 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 21 | 22 | typedef TypedAttribute FloatAttribute; 23 | 24 | #ifndef COMPILING_IMF_FLOAT_ATTRIBUTE 25 | extern template class IMF_EXPORT_EXTERN_TEMPLATE TypedAttribute; 26 | #endif 27 | 28 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfFloatVectorAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Weta Digital, Ltd and Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_FLOATVECTOR_ATTRIBUTE_H 7 | #define INCLUDED_IMF_FLOATVECTOR_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class FloatVectorAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | 20 | #include 21 | 22 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 23 | 24 | typedef std::vector FloatVector; 25 | 26 | typedef TypedAttribute 27 | FloatVectorAttribute; 28 | 29 | #ifndef COMPILING_IMF_FLOAT_VECTOR_ATTRIBUTE 30 | extern template class IMF_EXPORT_EXTERN_TEMPLATE TypedAttribute; 31 | #endif 32 | 33 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfGenericInputFile.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef IMFGENERICINPUTFILE_H_ 7 | #define IMFGENERICINPUTFILE_H_ 8 | 9 | #include "ImfForward.h" 10 | 11 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 12 | 13 | class IMF_EXPORT_TYPE GenericInputFile 14 | { 15 | public: 16 | IMF_EXPORT 17 | virtual ~GenericInputFile (); 18 | 19 | protected: 20 | IMF_EXPORT 21 | GenericInputFile (); 22 | IMF_EXPORT 23 | void readMagicNumberAndVersionField ( 24 | OPENEXR_IMF_INTERNAL_NAMESPACE::IStream& is, int& version); 25 | }; 26 | 27 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 28 | 29 | #endif /* IMFGENERICINPUTFILE_H_ */ 30 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfGenericOutputFile.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef IMFGENERICOUTPUTFILE_H_ 7 | #define IMFGENERICOUTPUTFILE_H_ 8 | 9 | #include "ImfForward.h" 10 | 11 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 12 | 13 | class IMF_EXPORT_TYPE GenericOutputFile 14 | { 15 | public: 16 | IMF_EXPORT 17 | virtual ~GenericOutputFile (); 18 | 19 | protected: 20 | IMF_EXPORT 21 | GenericOutputFile (); 22 | IMF_EXPORT 23 | void writeMagicNumberAndVersionField ( 24 | OPENEXR_IMF_INTERNAL_NAMESPACE::OStream& os, const Header& header); 25 | IMF_EXPORT 26 | void writeMagicNumberAndVersionField ( 27 | OPENEXR_IMF_INTERNAL_NAMESPACE::OStream& os, 28 | const Header* headers, 29 | int parts); 30 | }; 31 | 32 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 33 | 34 | #endif /* GENERICOUTPUTFILE_H_ */ 35 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfIDManifestAttribute.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | #ifndef INCLUDED_IMF_IDMANIFEST_ATTRIBUTE_H 5 | #define INCLUDED_IMF_IDMANIFEST_ATTRIBUTE_H 6 | 7 | #include "ImfExport.h" 8 | #include "ImfNamespace.h" 9 | 10 | #include "ImfAttribute.h" 11 | #include "ImfIDManifest.h" 12 | 13 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 14 | 15 | #if defined(_MSC_VER) 16 | // suppress warning about non-exported base classes 17 | # pragma warning(disable : 4251) 18 | # pragma warning(disable : 4275) 19 | #endif 20 | 21 | typedef TypedAttribute 22 | IDManifestAttribute; 23 | 24 | #ifndef COMPILING_IMF_IDMANIFEST_ATTRIBUTE 25 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 26 | TypedAttribute; 27 | #endif 28 | 29 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfInputPartData.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include "ImfInputPartData.h" 7 | #include "ImfNamespace.h" 8 | 9 | #include 10 | #include 11 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 12 | 13 | InputPartData::InputPartData ( 14 | const Context& ctxt, 15 | int partNumber, 16 | int numThreads 17 | ) 18 | : header (ctxt.header (partNumber)) 19 | , numThreads (numThreads) 20 | , partNumber (partNumber) 21 | , context (ctxt) 22 | { 23 | } 24 | 25 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 26 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfInputPartData.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef IMFINPUTPARTDATA_H_ 7 | #define IMFINPUTPARTDATA_H_ 8 | 9 | #include "ImfForward.h" 10 | 11 | #include 12 | 13 | #include "ImfHeader.h" 14 | 15 | #include "ImfContext.h" 16 | 17 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 18 | 19 | struct InputPartData 20 | { 21 | // TODO: reconsider / update 22 | Header header; 23 | 24 | int numThreads; 25 | int partNumber; 26 | Context context; 27 | 28 | InputPartData () = default; 29 | 30 | InputPartData ( 31 | const Context& ctxt, 32 | int partNumber, 33 | int numThreads); 34 | }; 35 | 36 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 37 | 38 | #endif /* IMFINPUTPARTDATA_H_ */ 39 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfInputStreamMutex.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef IMFINPUTSTREAMMUTEX_H_ 7 | #define IMFINPUTSTREAMMUTEX_H_ 8 | 9 | #include "ImfForward.h" 10 | 11 | #include "IlmThreadConfig.h" 12 | 13 | #if ILMTHREAD_THREADING_ENABLED 14 | # include 15 | #endif 16 | 17 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 18 | 19 | // 20 | // Used to wrap OPENEXR_IMF_INTERNAL_NAMESPACE::IStream as a mutex. 21 | // 22 | struct InputStreamMutex 23 | #if ILMTHREAD_THREADING_ENABLED 24 | : public std::mutex 25 | #endif 26 | { 27 | OPENEXR_IMF_INTERNAL_NAMESPACE::IStream* is = nullptr; 28 | uint64_t currentPosition = 0; 29 | }; 30 | 31 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 32 | 33 | #endif /* IMFINPUTSTREAMMUTEX_H_ */ 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfInt64.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_INT64_H 7 | #define INCLUDED_IMF_INT64_H 8 | 9 | //---------------------------------------------------------------------------- 10 | // 11 | // Deprecated Int64/SInt64 unsigned 64-bit integer type. 12 | // Use int64_t and uint64_t instead. 13 | // 14 | //---------------------------------------------------------------------------- 15 | 16 | #include "ImathInt64.h" 17 | #include "ImfNamespace.h" 18 | #include 19 | 20 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 21 | 22 | IMATH_DEPRECATED ("use uint64_t") 23 | typedef IMATH_NAMESPACE::Int64 Int64; 24 | 25 | IMATH_DEPRECATED ("use int64_t") 26 | typedef IMATH_NAMESPACE::SInt64 SInt64; 27 | 28 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 29 | 30 | #endif // INCLUDED_IMF_INT64_H 31 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfIntAttribute.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | //----------------------------------------------------------------------------- 7 | // 8 | // class IntAttribute 9 | // 10 | //----------------------------------------------------------------------------- 11 | 12 | #define COMPILING_IMF_INT_ATTRIBUTE 13 | #include "ImfIntAttribute.h" 14 | 15 | #if defined(_MSC_VER) 16 | // suppress warning about non-exported base classes 17 | # pragma warning(disable : 4251) 18 | # pragma warning(disable : 4275) 19 | #endif 20 | 21 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 22 | 23 | //#if defined(__MINGW32__) 24 | //template <> 25 | //IMF_EXPORT 26 | //TypedAttribute::~TypedAttribute () 27 | //{ 28 | //} 29 | //#endif 30 | 31 | template <> 32 | IMF_EXPORT const char* 33 | IntAttribute::staticTypeName () 34 | { 35 | return "int"; 36 | } 37 | 38 | template class IMF_EXPORT_TEMPLATE_INSTANCE TypedAttribute; 39 | 40 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 41 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfIntAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_INT_ATTRIBUTE_H 7 | #define INCLUDED_IMF_INT_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class IntAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | 20 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 21 | 22 | typedef TypedAttribute IntAttribute; 23 | 24 | #ifndef COMPILING_IMF_INT_ATTRIBUTE 25 | extern template class IMF_EXPORT_EXTERN_TEMPLATE TypedAttribute; 26 | #endif 27 | 28 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfKeyCodeAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_KEY_CODE_ATTRIBUTE_H 7 | #define INCLUDED_IMF_KEY_CODE_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class KeyCodeAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | 20 | #include "ImfKeyCode.h" 21 | 22 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 23 | 24 | typedef TypedAttribute 25 | KeyCodeAttribute; 26 | 27 | #ifndef COMPILING_IMF_KEYCODE_ATTRIBUTE 28 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 29 | TypedAttribute; 30 | #endif 31 | 32 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfLineOrder.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_LINE_ORDER_H 7 | #define INCLUDED_IMF_LINE_ORDER_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // enum LineOrder 12 | // 13 | //----------------------------------------------------------------------------- 14 | #include "ImfExport.h" 15 | #include "ImfNamespace.h" 16 | 17 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 18 | 19 | enum IMF_EXPORT_ENUM LineOrder 20 | { 21 | INCREASING_Y = 0, // first scan line has lowest y coordinate 22 | 23 | DECREASING_Y = 1, // first scan line has highest y coordinate 24 | 25 | RANDOM_Y = 2, // only for tiled files; tiles are written 26 | // in random order 27 | 28 | NUM_LINEORDERS // number of different line orders 29 | }; 30 | 31 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfLineOrderAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_LINE_ORDER_ATTRIBUTE_H 7 | #define INCLUDED_IMF_LINE_ORDER_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class LineOrderAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | #include "ImfLineOrder.h" 20 | 21 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 22 | 23 | using LineOrderAttribute = 24 | TypedAttribute; 25 | 26 | #ifndef COMPILING_IMF_LINE_ORDER_ATTRIBUTE 27 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 28 | TypedAttribute; 29 | #endif 30 | 31 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfOutputPartData.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include "ImfOutputPartData.h" 7 | #include "ImfNamespace.h" 8 | 9 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 10 | 11 | OutputPartData::OutputPartData ( 12 | OutputStreamMutex* mutex, 13 | const Header& header, 14 | int partNumber, 15 | int numThreads, 16 | bool multipart) 17 | : header (header) 18 | , numThreads (numThreads) 19 | , partNumber (partNumber) 20 | , multipart (multipart) 21 | , mutex (mutex) 22 | {} 23 | 24 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 25 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfOutputPartData.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef IMFOUTPUTPARTDATA_H_ 7 | #define IMFOUTPUTPARTDATA_H_ 8 | 9 | #include "ImfForward.h" 10 | 11 | #include "ImfHeader.h" 12 | 13 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 14 | 15 | struct OutputPartData 16 | { 17 | Header header; 18 | uint64_t chunkOffsetTablePosition; 19 | uint64_t previewPosition; 20 | int numThreads; 21 | int partNumber; 22 | bool multipart; 23 | OutputStreamMutex* mutex; 24 | 25 | OutputPartData ( 26 | OutputStreamMutex* mutex, 27 | const Header& header, 28 | int partNumber, 29 | int numThreads, 30 | bool multipart); 31 | }; 32 | 33 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 34 | 35 | #endif /* IMFOUTPUTPARTDATA_H_ */ 36 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfOutputStreamMutex.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef IMFOUTPUTSTREAMMUTEX_H_ 7 | #define IMFOUTPUTSTREAMMUTEX_H_ 8 | 9 | #include "ImfForward.h" 10 | 11 | #include "IlmThreadConfig.h" 12 | 13 | #if ILMTHREAD_THREADING_ENABLED 14 | # include 15 | #endif 16 | 17 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 18 | 19 | // 20 | // Used to wrap OPENEXR_IMF_INTERNAL_NAMESPACE::OStream as a Mutex. 21 | // 22 | struct OutputStreamMutex 23 | #if ILMTHREAD_THREADING_ENABLED 24 | : public std::mutex 25 | #endif 26 | { 27 | OPENEXR_IMF_INTERNAL_NAMESPACE::OStream* os = nullptr; 28 | uint64_t currentPosition = 0; 29 | }; 30 | 31 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 32 | 33 | #endif /* IMFOUTPUTSTREAMMUTEX_H_ */ 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfPartType.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include "ImfNamespace.h" 7 | #include 8 | 9 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 10 | 11 | using std::string; 12 | 13 | bool 14 | isImage (const string& name) 15 | { 16 | return (name == SCANLINEIMAGE || name == TILEDIMAGE); 17 | } 18 | 19 | bool 20 | isTiled (const string& name) 21 | { 22 | return (name == TILEDIMAGE || name == DEEPTILE); 23 | } 24 | 25 | bool 26 | isDeepData (const string& name) 27 | { 28 | return (name == DEEPTILE || name == DEEPSCANLINE); 29 | } 30 | 31 | bool 32 | isSupportedType (const string& name) 33 | { 34 | return ( 35 | name == SCANLINEIMAGE || name == TILEDIMAGE || name == DEEPSCANLINE || 36 | name == DEEPTILE); 37 | } 38 | 39 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 40 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfPartType.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef IMFPARTTYPE_H_ 7 | #define IMFPARTTYPE_H_ 8 | 9 | #include "ImfExport.h" 10 | #include "ImfNamespace.h" 11 | 12 | #include 13 | 14 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 15 | 16 | static const std::string SCANLINEIMAGE = "scanlineimage"; 17 | static const std::string TILEDIMAGE = "tiledimage"; 18 | static const std::string DEEPSCANLINE = "deepscanline"; 19 | static const std::string DEEPTILE = "deeptile"; 20 | 21 | IMF_EXPORT bool isImage (const std::string& name); 22 | 23 | IMF_EXPORT bool isTiled (const std::string& name); 24 | 25 | IMF_EXPORT bool isDeepData (const std::string& name); 26 | 27 | IMF_EXPORT bool isSupportedType (const std::string& name); 28 | 29 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 30 | 31 | #endif /* IMFPARTTYPE_H_ */ 32 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfPixelType.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_PIXEL_TYPE_H 7 | #define INCLUDED_IMF_PIXEL_TYPE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // enum PixelType 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 19 | 20 | enum IMF_EXPORT_ENUM PixelType 21 | { 22 | UINT = 0, // unsigned int (32 bit) 23 | HALF = 1, // half (16 bit floating point) 24 | FLOAT = 2, // float (32 bit floating point) 25 | 26 | NUM_PIXELTYPES // number of different pixel types 27 | }; 28 | 29 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfPizCompressor.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | //----------------------------------------------------------------------------- 7 | // 8 | // class PizCompressor 9 | // 10 | //----------------------------------------------------------------------------- 11 | 12 | #include "ImfPizCompressor.h" 13 | 14 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 15 | 16 | PizCompressor::PizCompressor ( 17 | const Header& hdr, size_t maxScanLineSize, int numScanLines) 18 | : Compressor (hdr, EXR_COMPRESSION_PIZ, maxScanLineSize, numScanLines) 19 | { 20 | } 21 | 22 | PizCompressor::~PizCompressor () 23 | { 24 | } 25 | 26 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 27 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfPizCompressor.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_PIZ_COMPRESSOR_H 7 | #define INCLUDED_IMF_PIZ_COMPRESSOR_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class PizCompressor -- uses Wavelet and Huffman encoding. 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfCompressor.h" 16 | 17 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 18 | 19 | class PizCompressor : public Compressor 20 | { 21 | public: 22 | PizCompressor ( 23 | const Header& hdr, size_t maxScanLineSize, int numScanLines); 24 | 25 | virtual ~PizCompressor (); 26 | 27 | PizCompressor (const PizCompressor& other) = delete; 28 | PizCompressor& operator= (const PizCompressor& other) = delete; 29 | PizCompressor (PizCompressor&& other) = delete; 30 | PizCompressor& operator= (PizCompressor&& other) = delete; 31 | }; 32 | 33 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfPreviewImageAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_PREVIEW_IMAGE_ATTRIBUTE_H 7 | #define INCLUDED_IMF_PREVIEW_IMAGE_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class PreviewImageAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | #include "ImfPreviewImage.h" 20 | 21 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 22 | 23 | typedef TypedAttribute 24 | PreviewImageAttribute; 25 | 26 | #ifndef COMPILING_IMF_PREVIEW_IMAGE_ATTRIBUTE 27 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 28 | TypedAttribute; 29 | #endif 30 | 31 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfRationalAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_RATIONAL_ATTRIBUTE_H 7 | #define INCLUDED_IMF_RATIONAL_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class RationalAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfAttribute.h" 16 | #include "ImfRational.h" 17 | 18 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 19 | 20 | typedef TypedAttribute 21 | RationalAttribute; 22 | 23 | #ifndef COMPILING_IMF_RATIONAL_ATTRIBUTE 24 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 25 | TypedAttribute; 26 | #endif 27 | 28 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfRle.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_RLE_H_ 7 | #define INCLUDED_IMF_RLE_H_ 8 | 9 | #include "ImfExport.h" 10 | #include "ImfNamespace.h" 11 | 12 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 13 | 14 | // 15 | // Compress an array of bytes, using run-length encoding, 16 | // and return the length of the compressed data. 17 | // 18 | 19 | IMF_EXPORT 20 | int rleCompress (int inLength, const char in[], signed char out[]); 21 | 22 | // 23 | // Uncompress an array of bytes compressed with rleCompress(). 24 | // Returns the length of the uncompressed data, or 0 if the 25 | // length of the uncompressed data would be more than maxLength. 26 | // 27 | 28 | IMF_EXPORT 29 | int 30 | rleUncompress (int inLength, int maxLength, const signed char in[], char out[]); 31 | 32 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfRleCompressor.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | //----------------------------------------------------------------------------- 7 | // 8 | // class RleCompressor 9 | // 10 | //----------------------------------------------------------------------------- 11 | 12 | #include "ImfRleCompressor.h" 13 | 14 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 15 | 16 | RleCompressor::RleCompressor (const Header& hdr, size_t maxScanLineSize) 17 | : Compressor (hdr, EXR_COMPRESSION_RLE, maxScanLineSize, 1) 18 | { 19 | } 20 | 21 | RleCompressor::~RleCompressor () 22 | { 23 | } 24 | 25 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 26 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfRleCompressor.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_RLE_COMPRESSOR_H 7 | #define INCLUDED_IMF_RLE_COMPRESSOR_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class RleCompressor -- performs run-length encoding 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfCompressor.h" 16 | 17 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 18 | 19 | class RleCompressor : public Compressor 20 | { 21 | public: 22 | RleCompressor (const Header& hdr, size_t maxScanLineSize); 23 | virtual ~RleCompressor (); 24 | 25 | RleCompressor (const RleCompressor& other) = delete; 26 | RleCompressor& operator= (const RleCompressor& other) = delete; 27 | RleCompressor (RleCompressor&& other) = delete; 28 | RleCompressor& operator= (RleCompressor&& other) = delete; 29 | }; 30 | 31 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfStringAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_STRING_ATTRIBUTE_H 7 | #define INCLUDED_IMF_STRING_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class StringAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | 20 | #include 21 | 22 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 23 | 24 | typedef TypedAttribute StringAttribute; 25 | 26 | #ifndef COMPILING_IMF_STRING_ATTRIBUTE 27 | extern template class IMF_EXPORT_EXTERN_TEMPLATE TypedAttribute; 28 | #endif 29 | 30 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfStringVectorAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Weta Digital, Ltd and Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_STRINGVECTOR_ATTRIBUTE_H 7 | #define INCLUDED_IMF_STRINGVECTOR_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class StringVectorAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | 20 | #include 21 | #include 22 | 23 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 24 | 25 | typedef std::vector StringVector; 26 | typedef TypedAttribute 27 | StringVectorAttribute; 28 | 29 | #ifndef COMPILING_IMF_STRING_VECTOR_ATTRIBUTE 30 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 31 | TypedAttribute; 32 | #endif 33 | 34 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfThreading.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | //----------------------------------------------------------------------------- 7 | // 8 | // Threading support for the OpenEXR library 9 | // 10 | //----------------------------------------------------------------------------- 11 | 12 | #include "ImfThreading.h" 13 | #include "IlmThreadPool.h" 14 | #include "ImfNamespace.h" 15 | 16 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 17 | 18 | int 19 | globalThreadCount () 20 | { 21 | return ILMTHREAD_NAMESPACE::ThreadPool::globalThreadPool ().numThreads (); 22 | } 23 | 24 | void 25 | setGlobalThreadCount (int count) 26 | { 27 | ILMTHREAD_NAMESPACE::ThreadPool::globalThreadPool ().setNumThreads (count); 28 | } 29 | 30 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 31 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfTileDescriptionAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_TILE_DESCRIPTION_ATTRIBUTE_H 7 | #define INCLUDED_IMF_TILE_DESCRIPTION_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class TileDescriptionAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | #include "ImfTileDescription.h" 20 | 21 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 22 | 23 | typedef TypedAttribute 24 | TileDescriptionAttribute; 25 | 26 | #ifndef COMPILING_IMF_STRING_VECTOR_ATTRIBUTE 27 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 28 | TypedAttribute; 29 | #endif 30 | 31 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfTimeCodeAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_TIME_CODE_ATTRIBUTE_H 7 | #define INCLUDED_IMF_TIME_CODE_ATTRIBUTE_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class TimeCodeAttribute 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfExport.h" 16 | #include "ImfNamespace.h" 17 | 18 | #include "ImfAttribute.h" 19 | #include "ImfTimeCode.h" 20 | 21 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 22 | 23 | typedef TypedAttribute 24 | TimeCodeAttribute; 25 | 26 | #ifndef COMPILING_IMF_TIMECODE_ATTRIBUTE 27 | extern template class IMF_EXPORT_EXTERN_TEMPLATE 28 | TypedAttribute; 29 | #endif 30 | 31 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfVersion.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | //----------------------------------------------------------------------------- 7 | // 8 | // Magic and version number. 9 | // 10 | //----------------------------------------------------------------------------- 11 | 12 | #include "ImfNamespace.h" 13 | #include 14 | 15 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 16 | 17 | bool 18 | isImfMagic (const char bytes[4]) 19 | { 20 | return bytes[0] == ((MAGIC >> 0) & 0x00ff) && 21 | bytes[1] == ((MAGIC >> 8) & 0x00ff) && 22 | bytes[2] == ((MAGIC >> 16) & 0x00ff) && 23 | bytes[3] == ((MAGIC >> 24) & 0x00ff); 24 | } 25 | 26 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 27 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfZipCompressor.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | //----------------------------------------------------------------------------- 7 | // 8 | // class ZipCompressor 9 | // 10 | //----------------------------------------------------------------------------- 11 | 12 | #include "ImfZipCompressor.h" 13 | 14 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER 15 | 16 | ZipCompressor::ZipCompressor ( 17 | const Header& hdr, size_t maxScanLineSize, int numScanLines) 18 | : Compressor (hdr, 19 | (numScanLines == 16) ? EXR_COMPRESSION_ZIPS : EXR_COMPRESSION_ZIP, 20 | maxScanLineSize, 21 | numScanLines) 22 | { 23 | } 24 | 25 | ZipCompressor::~ZipCompressor () 26 | { 27 | } 28 | 29 | OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT 30 | -------------------------------------------------------------------------------- /src/lib/OpenEXR/ImfZipCompressor.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_IMF_ZIP_COMPRESSOR_H 7 | #define INCLUDED_IMF_ZIP_COMPRESSOR_H 8 | 9 | //----------------------------------------------------------------------------- 10 | // 11 | // class ZipCompressor -- performs zlib-style compression 12 | // 13 | //----------------------------------------------------------------------------- 14 | 15 | #include "ImfCompressor.h" 16 | 17 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER 18 | 19 | class ZipCompressor : public Compressor 20 | { 21 | public: 22 | ZipCompressor ( 23 | const Header& hdr, size_t maxScanLineSize, int numScanLines); 24 | 25 | virtual ~ZipCompressor (); 26 | }; 27 | 28 | OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/lib/OpenEXRCore/internal_constants.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** SPDX-License-Identifier: BSD-3-Clause 3 | ** Copyright Contributors to the OpenEXR Project. 4 | */ 5 | 6 | #ifndef OPENEXR_PRIV_CONSTANTS_H 7 | #define OPENEXR_PRIV_CONSTANTS_H 8 | 9 | #define EXR_REQ_CHANNELS_STR "channels" 10 | #define EXR_REQ_COMP_STR "compression" 11 | #define EXR_REQ_DATA_STR "dataWindow" 12 | #define EXR_REQ_DISP_STR "displayWindow" 13 | #define EXR_REQ_LO_STR "lineOrder" 14 | #define EXR_REQ_PAR_STR "pixelAspectRatio" 15 | #define EXR_REQ_SCR_WC_STR "screenWindowCenter" 16 | #define EXR_REQ_SCR_WW_STR "screenWindowWidth" 17 | #define EXR_REQ_TILES_STR "tiles" 18 | /* exr 2.0 req attr */ 19 | #define EXR_REQ_NAME_STR "name" 20 | #define EXR_REQ_TYPE_STR "type" 21 | #define EXR_REQ_VERSION_STR "version" 22 | #define EXR_REQ_CHUNK_COUNT_STR "chunkCount" 23 | /* this is in the file layout / technical info document 24 | * but not actually used anywhere... 25 | * #define REQ_MSS_COUNT_STR "maxSamplesPerPixel" 26 | */ 27 | 28 | #define EXR_SHORTNAME_MAXLEN 31 29 | #define EXR_LONGNAME_MAXLEN 255 30 | 31 | #endif /* OPENEXR_PRIV_CONSTANTS_H */ 32 | -------------------------------------------------------------------------------- /src/lib/OpenEXRCore/internal_ht_common.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** SPDX-License-Identifier: BSD-3-Clause 3 | ** Copyright Contributors to the OpenEXR Project. 4 | */ 5 | 6 | #ifndef OPENEXR_PRIVATE_HT_COMMON_H 7 | #define OPENEXR_PRIVATE_HT_COMMON_H 8 | 9 | #include 10 | #include 11 | #include "openexr_coding.h" 12 | 13 | struct CodestreamChannelInfo { 14 | int file_index; 15 | size_t raster_line_offset; 16 | }; 17 | 18 | bool 19 | make_channel_map ( 20 | int channel_count, exr_coding_channel_info_t* channels, std::vector& cs_to_file_ch); 21 | 22 | #endif /* OPENEXR_PRIVATE_HT_COMMON_H */ 23 | -------------------------------------------------------------------------------- /src/lib/OpenEXRCore/internal_huf.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** SPDX-License-Identifier: BSD-3-Clause 3 | ** Copyright Contributors to the OpenEXR Project. 4 | */ 5 | 6 | #ifndef OPENEXR_CORE_HUF_CODING_H 7 | #define OPENEXR_CORE_HUF_CODING_H 8 | 9 | #include "openexr_errors.h" 10 | #include "openexr_decode.h" 11 | 12 | uint64_t internal_exr_huf_compress_spare_bytes (void); 13 | uint64_t internal_exr_huf_decompress_spare_bytes (void); 14 | 15 | exr_result_t internal_huf_compress ( 16 | uint64_t* encbytes, 17 | void* out, 18 | uint64_t outsz, 19 | const uint16_t* raw, 20 | uint64_t nRaw, 21 | void* spare, 22 | uint64_t sparebytes); 23 | 24 | exr_result_t internal_huf_decompress ( 25 | exr_decode_pipeline_t* decode, 26 | const uint8_t* compressed, 27 | uint64_t nCompressed, 28 | uint16_t* raw, 29 | uint64_t nRaw, 30 | void* spare, 31 | uint64_t sparebytes); 32 | 33 | #endif /* OPENEXR_CORE_HUF_CODING_H */ 34 | -------------------------------------------------------------------------------- /src/lib/OpenEXRCore/internal_memory.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** SPDX-License-Identifier: BSD-3-Clause 3 | ** Copyright Contributors to the OpenEXR Project. 4 | */ 5 | 6 | #ifndef OPENEXR_PRIVATE_MEMORY_H 7 | #define OPENEXR_PRIVATE_MEMORY_H 8 | 9 | #include "openexr_base.h" 10 | 11 | #if defined(__GNUC__) || defined(__clang__) 12 | __attribute__ ((malloc)) 13 | #endif 14 | void* 15 | internal_exr_alloc (size_t bytes); 16 | 17 | #if defined(__GNUC__) || defined(__clang__) 18 | __attribute__ ((malloc)) 19 | #endif 20 | void* 21 | internal_exr_alloc_aligned ( 22 | void* (*alloc_fn) (size_t), void** tofreeptr, size_t bytes, size_t align); 23 | 24 | void internal_exr_free (void* ptr); 25 | 26 | #endif /* OPENEXR_PRIVATE_MEMORY_H */ 27 | -------------------------------------------------------------------------------- /src/lib/OpenEXRCore/openexr.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** SPDX-License-Identifier: BSD-3-Clause 3 | ** Copyright Contributors to the OpenEXR Project. 4 | */ 5 | 6 | #ifndef OPENEXR_CORE_H 7 | #define OPENEXR_CORE_H 8 | 9 | #include "openexr_config.h" 10 | 11 | #include "openexr_base.h" 12 | #include "openexr_errors.h" 13 | 14 | #include "openexr_attr.h" 15 | #include "openexr_context.h" 16 | 17 | #include "openexr_part.h" 18 | 19 | #include "openexr_std_attr.h" 20 | 21 | #include "openexr_chunkio.h" 22 | 23 | #include "openexr_compression.h" 24 | 25 | #include "openexr_decode.h" 26 | #include "openexr_encode.h" 27 | 28 | #include "openexr_debug.h" 29 | 30 | #endif /* OPENEXR_CORE_H */ 31 | -------------------------------------------------------------------------------- /src/lib/OpenEXRCore/openexr_debug.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** SPDX-License-Identifier: BSD-3-Clause 3 | ** Copyright Contributors to the OpenEXR Project. 4 | */ 5 | 6 | #ifndef OPENEXR_DEBUG_H 7 | #define OPENEXR_DEBUG_H 8 | 9 | #include "openexr_context.h" 10 | 11 | #ifdef __cplusplus 12 | extern "C" { 13 | #endif 14 | 15 | /** @file */ 16 | 17 | /** Debug function: print to stdout the parts and attributes of the 18 | * context @p c 19 | */ 20 | EXR_EXPORT exr_result_t 21 | exr_print_context_info (exr_const_context_t c, int verbose); 22 | 23 | #ifdef __cplusplus 24 | } /* extern "C" */ 25 | #endif 26 | 27 | #endif /* OPENEXR_DEBUG_H */ 28 | -------------------------------------------------------------------------------- /src/lib/OpenEXRCore/openexr_std_attr.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** SPDX-License-Identifier: BSD-3-Clause 3 | ** Copyright Contributors to the OpenEXR Project. 4 | */ 5 | 6 | #ifndef OPENEXR_CORE_STD_ATTR_H 7 | #define OPENEXR_CORE_STD_ATTR_H 8 | 9 | #include "openexr_attr.h" 10 | 11 | #ifdef __cplusplus 12 | extern "C" { 13 | #endif 14 | 15 | /** @file */ 16 | 17 | /** 18 | * @defgroup Standard attributes 19 | * @brief These are a group of attributes which are not strictly required, 20 | * but have common definitions and should be preferred for representing 21 | * the information they describe. 22 | * @{ 23 | */ 24 | 25 | /* 26 | chromaticities 27 | whiteLuminance 28 | adoptedNeutral 29 | xDensity 30 | owner 31 | comments 32 | capDate 33 | utcOffset 34 | longitude 35 | latitude 36 | altitude 37 | focus 38 | expTime 39 | aperture 40 | isoSpeed 41 | envmap 42 | keyCode 43 | timeCode 44 | wrapmodes 45 | framesPerSecond 46 | multiView 47 | worldToCamera 48 | worldToNDC 49 | deepImageState 50 | originalDataWindow 51 | */ 52 | 53 | /** @} */ 54 | 55 | #ifdef __cplusplus 56 | } /* extern "C" */ 57 | #endif 58 | 59 | #endif /* OPENEXR_CORE_STD_ATTR_H */ 60 | -------------------------------------------------------------------------------- /src/lib/OpenEXRCore/openexr_version.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | // This is the OpenEXR library version information. 6 | // ImfVersion.h contains version information about the file format. 7 | #pragma once 8 | #ifndef INCLUDED_OPENEXR_VERSION_H 9 | # define INCLUDED_OPENEXR_VERSION_H 10 | 11 | # define OPENEXR_VERSION_MAJOR 3 12 | # define OPENEXR_VERSION_MINOR 4 13 | # define OPENEXR_VERSION_PATCH 0 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /src/lib/OpenEXRCore/std_attr.c: -------------------------------------------------------------------------------- 1 | /* 2 | ** SPDX-License-Identifier: BSD-3-Clause 3 | ** Copyright Contributors to the OpenEXR Project. 4 | */ 5 | 6 | #include "openexr_std_attr.h" 7 | -------------------------------------------------------------------------------- /src/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | # We require this to get object library link library support and 5 | # combined python 2 + 3 support 6 | 7 | if (OPENEXR_TEST_LIBRARIES) 8 | add_subdirectory(IexTest) 9 | add_subdirectory(OpenEXRCoreTest) 10 | add_subdirectory(OpenEXRTest) 11 | add_subdirectory(OpenEXRUtilTest) 12 | add_subdirectory(OpenEXRFuzzTest) 13 | endif() 14 | 15 | set(LIB_FUZZING_ENGINE $ENV{LIB_FUZZING_ENGINE}) 16 | if (OPENEXR_BUILD_OSS_FUZZ AND LIB_FUZZING_ENGINE) 17 | add_subdirectory(oss-fuzz) 18 | endif() 19 | 20 | if (OPENEXR_BUILD_TOOLS AND OPENEXR_TEST_TOOLS) 21 | add_subdirectory(bin) 22 | endif() 23 | 24 | -------------------------------------------------------------------------------- /src/test/IexTest/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(IexTest 5 | main.cpp 6 | testBaseExc.cpp 7 | testBaseExc.h 8 | testMathExc.cpp 9 | testMathExc.h 10 | mathFuncs.cpp 11 | mathFuncs.h 12 | ) 13 | 14 | target_link_libraries(IexTest OpenEXR::Iex) 15 | set_target_properties(IexTest PROPERTIES 16 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 17 | ) 18 | if(WIN32 AND BUILD_SHARED_LIBS) 19 | target_compile_definitions(IexTest PRIVATE OPENEXR_DLL) 20 | endif() 21 | 22 | # CMAKE_CROSSCOMPILING_EMULATOR is necessary to support cross-compiling (ex: to win32 from mingw and running tests with wine) 23 | add_test(NAME OpenEXR.Iex COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) 24 | -------------------------------------------------------------------------------- /src/test/IexTest/main.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifdef NDEBUG 7 | # undef NDEBUG 8 | #endif 9 | 10 | #include 11 | #include 12 | 13 | #include 14 | 15 | #define TEST(x) \ 16 | if (argc < 2 || !strcmp (argv[1], #x)) x (); 17 | 18 | int 19 | main (int argc, char* argv[]) 20 | { 21 | TEST (testBaseExc); 22 | TEST (testMathExc); 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /src/test/IexTest/mathFuncs.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright Contributors to the OpenEXR Project. 3 | 4 | #undef __THROW 5 | #include 6 | #include 7 | 8 | float 9 | divide (float x, float y) 10 | { 11 | std::cout << x << " / " << y << std::endl; 12 | return x / y; 13 | } 14 | 15 | float 16 | root (float x) 17 | { 18 | std::cout << "sqrt (" << x << ")" << std::endl; 19 | return sqrt (x); 20 | } 21 | 22 | float 23 | grow (float x, int y) 24 | { 25 | std::cout << "grow (" << x << ", " << y << ")" << std::endl; 26 | 27 | for (int i = 0; i < y; i++) 28 | x = x * x; 29 | 30 | return x; 31 | } 32 | -------------------------------------------------------------------------------- /src/test/IexTest/mathFuncs.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright Contributors to the OpenEXR Project. 3 | 4 | float divide (float x, float y); 5 | float root (float x); 6 | float grow (float x, int y); 7 | -------------------------------------------------------------------------------- /src/test/IexTest/testBaseExc.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void testBaseExc (); 7 | -------------------------------------------------------------------------------- /src/test/IexTest/testMathExc.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright Contributors to the OpenEXR Project. 3 | 4 | void testMathExc (); 5 | -------------------------------------------------------------------------------- /src/test/OpenEXRCoreTest/base_units.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright Contributors to the OpenEXR Project. 3 | 4 | #ifndef OPENEXR_CORE_TEST_BASE_H 5 | #define OPENEXR_CORE_TEST_BASE_H 6 | 7 | #include 8 | 9 | void testBase (const std::string& tempdir); 10 | void testBaseErrors (const std::string& tempdir); 11 | void testBaseLimits (const std::string& tempdir); 12 | void testBaseDebug (const std::string& tempdir); 13 | void testCPUIdent (const std::string& tempdir); 14 | void testHalf (const std::string& tempdir); 15 | void testTempContext (const std::string& tempdir); 16 | 17 | #endif // OPENEXR_CORE_TEST_BASE_H 18 | -------------------------------------------------------------------------------- /src/test/OpenEXRCoreTest/buffer.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright Contributors to the OpenEXR Project. 3 | 4 | #ifndef OPENEXR_CORE_TEST_BUFFER_H 5 | #define OPENEXR_CORE_TEST_BUFFER_H 6 | 7 | void testBufferCompression (const std::string& tempdir); 8 | 9 | #endif // OPENEXR_CORE_TEST_BUFFER_H 10 | -------------------------------------------------------------------------------- /src/test/OpenEXRCoreTest/deep.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright Contributors to the OpenEXR Project. 3 | 4 | #ifndef OPENEXR_CORE_TEST_DEEP_H 5 | #define OPENEXR_CORE_TEST_DEEP_H 6 | 7 | #include 8 | 9 | void testOpenDeep (const std::string& tempdir); 10 | 11 | void testReadDeep (const std::string& tempdir); 12 | void testWriteDeep (const std::string& tempdir); 13 | 14 | #endif // OPENEXR_CORE_TEST_READ_H 15 | -------------------------------------------------------------------------------- /src/test/OpenEXRCoreTest/general_attr.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright Contributors to the OpenEXR Project. 3 | 4 | #ifndef OPENEXR_CORE_TEST_GEN_ATTR_H 5 | #define OPENEXR_CORE_TEST_GEN_ATTR_H 6 | 7 | #include 8 | 9 | void testAttrSizes (const std::string& tempdir); 10 | void testAttrStrings (const std::string& tempdir); 11 | void testAttrStringVectors (const std::string& tempdir); 12 | void testAttrFloatVectors (const std::string& tempdir); 13 | void testAttrChlists (const std::string& tempdir); 14 | void testAttrPreview (const std::string& tempdir); 15 | void testAttrOpaque (const std::string& tempdir); 16 | void testAttrHandler (const std::string& tempdir); 17 | 18 | void testAttrLists (const std::string& tempdir); 19 | 20 | void testXDR (const std::string& tempdir); 21 | 22 | #endif // OPENEXR_CORE_TEST_GEN_ATTR_H 23 | -------------------------------------------------------------------------------- /src/test/OpenEXRCoreTest/read.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright Contributors to the OpenEXR Project. 3 | 4 | #ifndef OPENEXR_CORE_TEST_READ_H 5 | #define OPENEXR_CORE_TEST_READ_H 6 | 7 | #include 8 | 9 | void testReadBadArgs (const std::string& tempdir); 10 | void testReadBadFiles (const std::string& tempdir); 11 | 12 | void testReadMeta (const std::string& tempdir); 13 | 14 | void testOpenScans (const std::string& tempdir); 15 | void testOpenTiles (const std::string& tempdir); 16 | void testOpenMultiPart (const std::string& tempdir); 17 | void testOpenDeep (const std::string& tempdir); 18 | 19 | void testReadScans (const std::string& tempdir); 20 | void testReadTiles (const std::string& tempdir); 21 | void testReadMultiPart (const std::string& tempdir); 22 | 23 | void testReadUnpack (const std::string& tempdir); 24 | 25 | #endif // OPENEXR_CORE_TEST_READ_H 26 | -------------------------------------------------------------------------------- /src/test/OpenEXRCoreTest/write.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright Contributors to the OpenEXR Project. 3 | 4 | #ifndef OPENEXR_CORE_TEST_WRITE_H 5 | #define OPENEXR_CORE_TEST_WRITE_H 6 | 7 | #include 8 | 9 | void testWriteBadArgs (const std::string& tempdir); 10 | void testWriteBadFiles (const std::string& tempdir); 11 | 12 | void testWriteBaseHeader (const std::string& tempdir); 13 | void testWriteAttrs (const std::string& tempdir); 14 | 15 | void testStartWriteScan (const std::string& tempdir); 16 | void testStartWriteTile (const std::string& tempdir); 17 | void testStartWriteDeepScan (const std::string& tempdir); 18 | void testStartWriteDeepTile (const std::string& tempdir); 19 | void testStartWriteUTF8 (const std::string& tempdir); 20 | 21 | void testUpdateMeta (const std::string& tempdir); 22 | 23 | void testWriteScans (const std::string& tempdir); 24 | void testWriteTiles (const std::string& tempdir); 25 | void testWriteMultiPart (const std::string& tempdir); 26 | 27 | #endif // OPENEXR_CORE_TEST_WRITE_H 28 | -------------------------------------------------------------------------------- /src/test/OpenEXRFuzzTest/fuzzFile.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef INCLUDED_FUZZ_FILE_H 7 | #define INCLUDED_FUZZ_FILE_H 8 | 9 | #include 10 | 11 | void fuzzFile ( 12 | const char goodFile[], 13 | const char brokenFile[], 14 | void (*readFile) (const char[]), 15 | int nSlidingWindow, 16 | int nFixedWindow, 17 | IMATH_NAMESPACE::Rand48& random); 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /src/test/OpenEXRFuzzTest/oss-fuzz: -------------------------------------------------------------------------------- 1 | ../oss-fuzz -------------------------------------------------------------------------------- /src/test/OpenEXRFuzzTest/testFuzzDeepScanLines.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void testFuzzDeepScanLines (const char* file); 7 | -------------------------------------------------------------------------------- /src/test/OpenEXRFuzzTest/testFuzzDeepTiles.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void testFuzzDeepTiles (const char* file); 7 | -------------------------------------------------------------------------------- /src/test/OpenEXRFuzzTest/testFuzzScanLines.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void testFuzzScanLines (const char* file); 7 | -------------------------------------------------------------------------------- /src/test/OpenEXRFuzzTest/testFuzzTiles.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void testFuzzTiles (const char* file); 7 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/bswap_32.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. See LICENSE file for details. 4 | // 5 | 6 | #if defined(_WIN32) || defined(_WIN64) 7 | # include 8 | # define bswap_32(x) _byteswap_ulong (x) 9 | #elif defined(__APPLE__) 10 | # include 11 | # define bswap_32(x) OSSwapInt32 (x) 12 | #elif defined(__sun) || defined(sun) 13 | # include 14 | # define bswap_32(x) BSWAP_32 (x) 15 | #elif defined(__FreeBSD__) 16 | # include 17 | # define bswap_32(x) bswap32 (x) 18 | #elif defined(__OpenBSD__) 19 | # include 20 | # define bswap_32(x) swap32 (x) 21 | #elif defined(__NetBSD__) 22 | # include 23 | # include 24 | # define bswap_32(x) bswap32 (x) 25 | #else 26 | # include 27 | #endif 28 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_b44.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_b44.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_b44_piz.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_b44_piz.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_bad_bounds_piz.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_bad_bounds_piz.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_bad_neg_bounds_pxr24.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_bad_neg_bounds_pxr24.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_bad_pos_bounds_piz.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_bad_pos_bounds_piz.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_bad_pos_bounds_pxr24.exr: -------------------------------------------------------------------------------- 1 | v/1channelschlist0000G0000compressioncompression0000dataWindowbox2i00000000000000000000lineOrderlineOrder0000o0000string'000000000000000000000000000000000000000p0000000000000000 -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_dwaa_piz.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_dwaa_piz.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_dwaa_v1.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_dwaa_v1.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_dwaa_v2.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_dwaa_v2.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_dwab_piz.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_dwab_piz.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_dwab_v1.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_dwab_v1.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_dwab_v2.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_dwab_v2.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_early_eof_piz.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_early_eof_piz.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_invalid_unknown.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_invalid_unknown.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_none.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_none.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_piz.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_piz.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_rle.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_rle.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_short_decode_piz.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_short_decode_piz.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_zip.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_zip.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/comp_zips.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/comp_zips.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/compareB44.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include "ImfNamespace.h" 7 | 8 | #include 9 | #include 10 | 11 | bool withinB44ErrorBounds (const half A[4][4], const half B[4][4]); 12 | 13 | void compareB44 ( 14 | int width, 15 | int height, 16 | const OPENEXR_IMF_NAMESPACE::Array2D& p1, 17 | const OPENEXR_IMF_NAMESPACE::Array2D& p2); 18 | 19 | void compareB44 ( 20 | int width, 21 | int height, 22 | const OPENEXR_IMF_NAMESPACE::Array2D& p1, 23 | const OPENEXR_IMF_NAMESPACE::Array2D& p2, 24 | OPENEXR_IMF_NAMESPACE::RgbaChannels channels); 25 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/compareDwa.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) DreamWorks Animation LLC and Contributors of the OpenEXR Project 4 | // 5 | 6 | #ifndef COMPARE_DWA_H_INCLUDED 7 | #define COMPARE_DWA_H_INCLUDED 8 | 9 | #include "ImfArray.h" 10 | #include "ImfNamespace.h" 11 | #include "ImfRgba.h" 12 | 13 | void compareDwa ( 14 | int width, 15 | int height, 16 | const OPENEXR_IMF_NAMESPACE::Array2D& src, 17 | const OPENEXR_IMF_NAMESPACE::Array2D& test, 18 | OPENEXR_IMF_NAMESPACE::RgbaChannels channels); 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/compareFloat.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifdef NDEBUG 7 | # undef NDEBUG 8 | #endif 9 | 10 | #include "compareFloat.h" 11 | 12 | using namespace OPENEXR_IMF_NAMESPACE; 13 | 14 | bool 15 | equivalent (float f1, float f2, Compression comp) 16 | { 17 | // 18 | // Test if a float, f1, is "equivalent" to another float, f2, 19 | // which results from storing f1 in an image file, and reading 20 | // it back: 21 | // If the file was compressed with PXR24_COMPRESSION, then f1 22 | // and f2 must the same as f1 rounded to 24 bits (see class 23 | // ImfPxr24Compressor); otherwise f1 and f2 must be the same. 24 | // 25 | 26 | union 27 | { 28 | float f; 29 | unsigned int i; 30 | } u1, u2; 31 | 32 | u1.f = f1; 33 | u2.f = f2; 34 | 35 | if (comp == PXR24_COMPRESSION) 36 | return (u2.i >> 8) - (u1.i >> 8) < 2; 37 | else 38 | return u2.i == u1.i; 39 | } 40 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/compareFloat.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include "ImfCompression.h" 7 | #include "ImfNamespace.h" 8 | 9 | bool equivalent (float f1, float f2, OPENEXR_IMF_NAMESPACE::Compression comp); 10 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/invalid.exr: -------------------------------------------------------------------------------- 1 | this is not a valid EXR file 2 | 3 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/invalid_shared_attrs_multipart.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/invalid_shared_attrs_multipart.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/lineOrder_decreasing.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/lineOrder_decreasing.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/lineOrder_increasing.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/lineOrder_increasing.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/random.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | #include "random.h" 5 | #include 6 | #include 7 | 8 | static std::default_random_engine generator; 9 | 10 | void 11 | random_reseed (int s) 12 | { 13 | generator.seed (s); 14 | } 15 | 16 | // 17 | // Return an integer in the range [0,range), so that 0 <= i < range 18 | // 19 | int 20 | random_int (int range) 21 | { 22 | std::uniform_int_distribution distribution (0, range - 1); 23 | int i = distribution (generator); 24 | assert (0 <= i && i < range); 25 | return i; 26 | } 27 | 28 | // 29 | // Return a float in the range [0, range), so that 0 <= f < range 30 | // 31 | 32 | float 33 | random_float (float range) 34 | { 35 | std::uniform_real_distribution distribution (0, range); 36 | float f = distribution (generator); 37 | assert (0 <= f && f < range); 38 | return f; 39 | } 40 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/random.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | #pragma once 5 | 6 | #include 7 | 8 | extern int random_int (int range = std::numeric_limits::max ()); 9 | extern float random_float (float range = std::numeric_limits::max ()); 10 | extern void random_reseed (int s); 11 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/scanline_with_deepscanline_type.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/scanline_with_deepscanline_type.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/scanline_with_deeptiled_type.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/scanline_with_deeptiled_type.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/scanline_with_tiledimage_type.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/scanline_with_tiledimage_type.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testAttributes (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testBackwardCompatibility.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTBACKWARDCOMPATIBILITY_H_ 7 | #define TESTBACKWARDCOMPATIBILITY_H_ 8 | 9 | #include 10 | 11 | void testBackwardCompatibility (const std::string& tempDir); 12 | 13 | #endif /* TESTBACKWARDCOMPATIBILITY_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testBadTypeAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Weta Digital, Ltd and Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TEST_BAD_TYPE_ATTRIBUTES 7 | #define TEST_BAD_TYPE_ATTRIBUTES 8 | 9 | #include 10 | 11 | void testBadTypeAttributes (const std::string& tempDir); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testCRgba.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testCRgba (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testChannels.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testChannels (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testCompositeDeepScanLine.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Weta Digital, Ltd and Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTCOMPOSITEDEEPSCANLINE_H_ 7 | #define TESTCOMPOSITEDEEPSCANLINE_H_ 8 | 9 | #include 10 | 11 | void testCompositeDeepScanLine (const std::string& tempDir); 12 | 13 | #endif /* TESTCOMPOSITEDEEPSCANLINE_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testCompression.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testCompression (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testCompressionApi.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testCompressionApi (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testConversion.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testConversion (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testCopyDeepScanLine.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTCOPYDEEPSCANLINE_H_ 7 | #define TESTCOPYDEEPSCANLINE_H_ 8 | 9 | #include 10 | 11 | void testCopyDeepScanLine (const std::string& tempDir); 12 | 13 | #endif /* TESTCOPYDEEPSCANLINE_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testCopyDeepTiled.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTCOPYDEEPTILED_H_ 7 | #define TESTCOPYDEEPTILED_H_ 8 | 9 | #include 10 | 11 | void testCopyDeepTiled (const std::string& tempDir); 12 | 13 | #endif /* TESTCOPYDEEPTILED_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testCopyMultiPartFile.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTCOPYMULTIPARTFILE_H_ 7 | #define TESTCOPYMULTIPARTFILE_H_ 8 | 9 | #include 10 | 11 | void testCopyMultiPartFile (const std::string& tempDir); 12 | 13 | #endif /* TESTCOPYMULTIPARTFILE_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testCopyPixels.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testCopyPixels (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testCpuId.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | void testCpuId (const std::string&); 7 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testCustomAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testCustomAttributes (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testDeepScanLineBasic.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTDEEPSCANLINEBASIC_H_ 7 | #define TESTDEEPSCANLINEBASIC_H_ 8 | 9 | #include 10 | 11 | void testDeepScanLineBasic (const std::string& tempDir); 12 | 13 | #endif /* TESTDEEPSCANLINEBASIC_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testDeepScanLineHuge.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTDEEPSCANLINEHUGE_H_ 7 | #define TESTDEEPSCANLINEHUGE_H_ 8 | 9 | void testDeepScanLineHuge (const std::string& tempDir); 10 | 11 | #endif /* TESTDEEPSCANLINEHUGE_H_ */ 12 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testDeepScanLineMultipleRead.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Weta Digital, Ltd and Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTDEEPSCANLINEMULTIPLEREAD_H_ 7 | #define TESTDEEPSCANLINEMULTIPLEREAD_H_ 8 | 9 | #include 10 | 11 | void testDeepScanLineMultipleRead (const std::string& tempDir); 12 | 13 | #endif /* DEEPSCANLINEMULTIPLEREAD_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testDeepTiledBasic.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTDEEPTILEDBASIC_H_ 7 | #define TESTDEEPTILEDBASIC_H_ 8 | 9 | #include 10 | 11 | void testDeepTiledBasic (const std::string& tempDir); 12 | 13 | #endif /* TESTDEEPTILEDBASIC_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testExistingStreams.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testExistingStreams (const std::string& tempDir); 9 | void testExistingStreamsUTF8 (const std::string& tempDir); 10 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testFutureProofing.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Weta Digital, Ltd and Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTFUTUREPROOFING_H_ 7 | #define TESTFUTUREPROOFING_H_ 8 | 9 | #include 10 | void testFutureProofing (const std::string& tempDir); 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testHeader (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testHuf.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testHuf (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testIDManifest.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | #ifndef _TEST_ID_MANIFEST_ 5 | #define _TEST_ID_MANIFEST_ 6 | 7 | #include 8 | 9 | void testIDManifest (const std::string& tempDir); 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testInputPart.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTINPUTPART_H_ 7 | #define TESTINPUTPART_H_ 8 | 9 | #include 10 | 11 | void testInputPart (const std::string& tempDir); 12 | 13 | #endif /* TESTINPUTPART_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testIsComplete.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testIsComplete (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testLargeDataWindowOffsets.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Weta Digital, Ltd and Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef _TEST_LARGE_DATA_WINDOW_OFFSETS_ 7 | #define _TEST_LARGE_DATA_WINDOW_OFFSETS_ 8 | 9 | void testLargeDataWindowOffsets (const std::string& tempDir); 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testLineOrder.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testLineOrder (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testLut.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testLut (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testMagic.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testMagic (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testMalformedImages.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testMalformedImages (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testMultiPartApi.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTMULTIPARTAPI_H_ 7 | #define TESTMULTIPARTAPI_H_ 8 | 9 | #include 10 | 11 | void testMultiPartApi (const std::string& tempDir); 12 | 13 | #endif /* TESTMULTIPARTAPI_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testMultiPartFileMixingBasic.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTMULTIPARTFILEMIXINGBASIC_H_ 7 | #define TESTMULTIPARTFILEMIXINGBASIC_H_ 8 | 9 | #include 10 | 11 | void testMultiPartFileMixingBasic (const std::string& tempDir); 12 | 13 | #endif /* TESTMULTIPARTFILEMIXINGBASIC_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testMultiPartSharedAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTMULTIPARTSHAREDATTRIBUTES_H_ 7 | #define TESTMULTIPARTSHAREDATTRIBUTES_H_ 8 | 9 | #include 10 | 11 | void testMultiPartSharedAttributes (const std::string& tempDir); 12 | 13 | #endif /* TESTMULTIPARTSHAREDATTRIBUTES_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testMultiPartThreading.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTMULTIPARTTHREADING_H_ 7 | #define TESTMULTIPARTTHREADING_H_ 8 | 9 | #include 10 | 11 | void testMultiPartThreading (const std::string& tempDir); 12 | 13 | #endif /* TESTMULTIPARTTHREADING_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testMultiScanlinePartThreading.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTMULTISCANLINEPARTTHREADING_H_ 7 | #define TESTMULTISCANLINEPARTTHREADING_H_ 8 | 9 | #include 10 | 11 | void testMultiScanlinePartThreading (const std::string& tempDir); 12 | 13 | #endif /* TESTMULTISCANLINEPARTTHREADING_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testMultiTiledPartThreading.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTMULTITILEDPARTTHREADING_H_ 7 | #define TESTMULTITILEDPARTTHREADING_H_ 8 | 9 | #include 10 | 11 | void testMultiTiledPartThreading (const std::string& tempDir); 12 | 13 | #endif /* TESTMULTITILEDPARTTHREADING_H_ */ 14 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testMultiView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Weta Digital, Ltd and Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testMultiView (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testNativeFormat.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testNativeFormat (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testOptimized.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testOptimized (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testOptimizedInterleavePatterns.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Weta Digital, Ltd and Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef _TEST_OPTIMIZED_INTERLEAVE_PATTERNS_ 7 | #define _TEST_OPTIMIZED_INTERLEAVE_PATTERNS_ 8 | 9 | void testOptimizedInterleavePatterns (const std::string& tempDir); 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testPartHelper.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Weta Digital, Ltd and Contributors to the OpenEXR Project. 4 | // 5 | 6 | #ifndef TESTPARTHELPER_H_ 7 | #define TESTPARTHELPER_H_ 8 | 9 | #include 10 | void testPartHelper (const std::string& tempDir); 11 | 12 | #endif /* TESTPARTHELPER_H_ */ 13 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testPreviewImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testPreviewImage (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testRgba.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testRgba (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testRgbaThreading.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testRgbaThreading (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testRle.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) DreamWorks Animation LLC and Contributors of the OpenEXR Project 4 | // 5 | 6 | #ifndef TESTRLE_H_ 7 | #define TESTRLE_H_ 8 | 9 | #include 10 | void testRle (const std::string&); 11 | 12 | #endif /* TESTRLE_H_ */ 13 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testSampleImages.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testSampleImages (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testScanLineApi.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testScanLineApi (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testSharedFrameBuffer.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testSharedFrameBuffer (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testStandardAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testStandardAttributes (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testTiledCompression.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testTiledCompression (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testTiledCopyPixels.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testTiledCopyPixels (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testTiledLineOrder.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testTiledLineOrder (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testTiledRgba.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testTiledRgba (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testTiledYa.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testTiledYa (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testWav.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testWav (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testXdr.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testXdr (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/testYca.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testYca (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/test_native1.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/test_native1.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/test_native2.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/test_native2.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/tiled.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/tiled.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/tiled_with_deepscanline_type.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/tiled_with_deepscanline_type.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/tiled_with_deeptile_type.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/tiled_with_deeptile_type.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/tiled_with_scanlineimage_type.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/tiled_with_scanlineimage_type.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/tmpDir.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #if defined(ANDROID) || defined(__ANDROID_API__) 7 | # define IMF_TMP_DIR "/sdcard/" 8 | # define IMF_PATH_SEPARATOR "/" 9 | #elif defined(_WIN32) || defined(_WIN64) 10 | # define IMF_TMP_DIR \ 11 | "" // TODO: get this from GetTempPath() or env var $TEMP or $TMP 12 | # define IMF_PATH_SEPARATOR "\\" 13 | # include // for _mkdir, _rmdir 14 | # define mkdir(name, mode) _mkdir (name) 15 | # define rmdir _rmdir 16 | #else 17 | # include // for mkdir 18 | # define IMF_TMP_DIR "/var/tmp/" 19 | # define IMF_PATH_SEPARATOR "/" 20 | #endif 21 | -------------------------------------------------------------------------------- /src/test/OpenEXRTest/v1.7.test.1.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/v1.7.test.1.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/v1.7.test.interleaved.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/v1.7.test.interleaved.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/v1.7.test.planar.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/v1.7.test.planar.exr -------------------------------------------------------------------------------- /src/test/OpenEXRTest/v1.7.test.tiled.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/OpenEXRTest/v1.7.test.tiled.exr -------------------------------------------------------------------------------- /src/test/OpenEXRUtilTest/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(OpenEXRUtilTest 5 | main.cpp 6 | testFlatImage.cpp 7 | testFlatImage.h 8 | testDeepImage.cpp 9 | testDeepImage.h 10 | testIO.cpp 11 | testIO.h 12 | ) 13 | target_include_directories(OpenEXRUtilTest PRIVATE ../OpenEXRTest) 14 | target_link_libraries(OpenEXRUtilTest OpenEXR::OpenEXRUtil) 15 | set_target_properties(OpenEXRUtilTest PROPERTIES 16 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 17 | ) 18 | if(WIN32 AND BUILD_SHARED_LIBS) 19 | target_compile_definitions(OpenEXRUtilTest PRIVATE OPENEXR_DLL) 20 | endif() 21 | 22 | function(DEFINE_OPENEXR_UTIL_TESTS) 23 | foreach(curtest IN LISTS ARGN) 24 | # CMAKE_CROSSCOMPILING_EMULATOR is necessary to support cross-compiling (ex: to win32 from mingw and running tests with wine) 25 | add_test(NAME OpenEXRUtil.${curtest} COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ ${curtest}) 26 | endforeach() 27 | endfunction() 28 | 29 | define_openexr_util_tests( 30 | testFlatImage 31 | testDeepImage 32 | testIO 33 | ) 34 | -------------------------------------------------------------------------------- /src/test/OpenEXRUtilTest/testDeepImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testDeepImage (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRUtilTest/testFlatImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testFlatImage (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/OpenEXRUtilTest/testIO.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | // Copyright (c) Contributors to the OpenEXR Project. 4 | // 5 | 6 | #include 7 | 8 | void testIO (const std::string& tempDir); 9 | -------------------------------------------------------------------------------- /src/test/bin/do_run.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | from subprocess import PIPE, run 5 | import sys 6 | 7 | def do_run(cmd, expect_error = False, data=None): 8 | cmd_string = " ".join(cmd) 9 | print(f"running {cmd_string}") 10 | if data: 11 | result = run (cmd, input=data, stdout=PIPE, stderr=PIPE) 12 | else: 13 | result = run (cmd, stdout=PIPE, stderr=PIPE, universal_newlines=True) 14 | if expect_error: 15 | if result.returncode != 0: 16 | return result 17 | print(f"error: {cmd_string} did not fail as expected") 18 | print(f"stdout:\n{result.stdout}") 19 | print(f"stderr:\n{result.stderr}") 20 | sys.exit(1) 21 | 22 | if result.returncode != 0: 23 | print(f"error: {cmd_string} failed: returncode={result.returncode}") 24 | print(f"stdout:\n{result.stdout}") 25 | print(f"stderr:\n{result.stderr}") 26 | sys.exit(1) 27 | return result 28 | -------------------------------------------------------------------------------- /src/test/bin/test_exrcheck.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright (c) Contributors to the OpenEXR Project. 5 | 6 | import sys, os 7 | from do_run import do_run 8 | 9 | print(f"testing exrcheck: {' '.join(sys.argv)}") 10 | 11 | exrcheck = sys.argv[1] 12 | image_files = sys.argv[2:] 13 | 14 | if not os.path.isfile(exrcheck) or not os.access(exrcheck, os.X_OK): 15 | print(f"error: no such file: {exrcheck}") 16 | sys.exit(1) 17 | 18 | for exr_file in image_files: 19 | 20 | do_run([exrcheck, exr_file]) 21 | do_run([exrcheck, "-m", exr_file]) 22 | do_run([exrcheck, "-t", exr_file]) 23 | do_run([exrcheck, "-s", exr_file]) 24 | do_run([exrcheck, "-c", exr_file]) 25 | 26 | print("success.") 27 | sys.exit(0) 28 | 29 | -------------------------------------------------------------------------------- /src/test/bin/test_images/11.deep.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/11.deep.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/11.deep.exr.txt: -------------------------------------------------------------------------------- 1 | channels : id 2 | hashScheme: MurmurHash3_32 3 | encoding : id 4 | lifetime : stable 5 | model material 6 | 523461226 circle/medium blue 7 | 683859976 circle/small blue 8 | 1552124883 blob/medium yellow 9 | 2202049807 blob/small green 10 | 2303547305 blob/small blue 11 | 2433329986 circle/big yellow 12 | 2698909330 blob/small yellow 13 | 3182339638 circle/small green 14 | 3236172513 blob/big white 15 | 3626859046 blob/big yellow 16 | 3739501011 circle/small yellow 17 | 18 | 19 | channels : particleid 20 | hashScheme: none 21 | encoding : id 22 | lifetime : shot 23 | 24 | raw text size : 332 25 | uncompressed size: 262 26 | compressed size : 233 27 | -------------------------------------------------------------------------------- /src/test/bin/test_images/42.deep.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/42.deep.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/42.deep.exr.txt: -------------------------------------------------------------------------------- 1 | channels : modelid 2 | hashScheme: MurmurHash3_32 3 | encoding : id 4 | lifetime : stable 5 | model 6 | 147148503 circle/medium 7 | 1252544961 blob/medium 8 | 1917926828 circle/big 9 | 3170049167 circle/small 10 | 3338960663 blob/small 11 | 3411631724 blob/big 12 | 13 | 14 | channels : materialid 15 | hashScheme: MurmurHash3_32 16 | encoding : id 17 | lifetime : stable 18 | material 19 | 489905694 green 20 | 507819813 yellow 21 | 2340321182 cyan 22 | 3683581971 white 23 | 3905155331 blue 24 | 3947898621 red 25 | 4179825792 magenta 26 | 27 | 28 | channels : particleid 29 | hashScheme: none 30 | encoding : id 31 | lifetime : shot 32 | 33 | raw text size : 283 34 | uncompressed size: 334 35 | compressed size : 261 36 | -------------------------------------------------------------------------------- /src/test/bin/test_images/64.deep.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/64.deep.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/64.deep.exr.txt: -------------------------------------------------------------------------------- 1 | channels : model.id0,model.id1 2 | hashScheme: MurmurHash3_64 3 | encoding : id2 4 | lifetime : stable 5 | model 6 | 97515517976221909 circle/medium 7 | 742872203054891411 circle/small 8 | 6191538508622224182 blob/medium 9 | 6650017402852611196 blob/big 10 | 9225128210671310825 circle/big 11 | 17511330964567540308 blob/small 12 | 13 | 14 | channels : material.id0,material.id1 15 | hashScheme: MurmurHash3_64 16 | encoding : id2 17 | lifetime : stable 18 | material 19 | 2470908766622966990 blue 20 | 2785030139762120788 white 21 | 7547477443120661518 yellow 22 | 14272065673169316387 red 23 | 14592330334135882751 green 24 | 16918673263070507131 magenta 25 | 18125959695279297844 cyan 26 | 27 | 28 | channels : particleid 29 | hashScheme: none 30 | encoding : id 31 | lifetime : shot 32 | 33 | raw text size : 432 34 | uncompressed size: 415 35 | compressed size : 333 36 | -------------------------------------------------------------------------------- /src/test/bin/test_images/Flowers.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/Flowers.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/GammaChart.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/GammaChart.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/GrayRampsHorizontal.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/GrayRampsHorizontal.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/WavyLinesCube.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/WavyLinesCube.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/WavyLinesLatLong.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/WavyLinesLatLong.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/multipart.0001.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/multipart.0001.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/multivariate.deep.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/multivariate.deep.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/objectid.deep.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/test/bin/test_images/objectid.deep.exr -------------------------------------------------------------------------------- /src/test/bin/test_images/objectid.deep.exr.txt: -------------------------------------------------------------------------------- 1 | no manifest found 2 | -------------------------------------------------------------------------------- /src/test/oss-fuzz/openexr_exrcheck_fuzzer.cc: -------------------------------------------------------------------------------- 1 | 2 | // 3 | // SPDX-License-Identifier: BSD-3-Clause 4 | // Copyright (c) Contributors to the OpenEXR Project. 5 | // 6 | 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | using OPENEXR_IMF_NAMESPACE::checkOpenEXRFile; 13 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) 14 | { 15 | checkOpenEXRFile ((const char*) data , size , true , true, false); 16 | return 0; 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/test/oss-fuzz/openexr_exrcorecheck_fuzzer.cc: -------------------------------------------------------------------------------- 1 | 2 | // 3 | // SPDX-License-Identifier: BSD-3-Clause 4 | // Copyright (c) Contributors to the OpenEXR Project. 5 | // 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | using OPENEXR_IMF_NAMESPACE::checkOpenEXRFile; 12 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) 13 | { 14 | checkOpenEXRFile ((const char*) data , size , true , true, true); 15 | return 0; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/wrappers/python/tests/test.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/src/wrappers/python/tests/test.exr -------------------------------------------------------------------------------- /src/wrappers/python/tests/test_import.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright (c) Contributors to the OpenEXR Project. 5 | 6 | import pytest 7 | 8 | def test_import(): 9 | import OpenEXR 10 | assert OpenEXR.__name__ == "OpenEXR" 11 | -------------------------------------------------------------------------------- /src/wrappers/python/tests/test_minimal.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright (c) Contributors to the OpenEXR Project. 5 | 6 | import pytest 7 | 8 | def test_import(): 9 | import OpenEXR 10 | assert OpenEXR.__name__ == "OpenEXR" 11 | -------------------------------------------------------------------------------- /website/_templates/layout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% extends '!layout.html' %} 5 | 6 | {% block footer %} 7 | 8 |

9 | 10 |

Copyright © OpenEXR a Series of LF Projects, LLC.

11 |

For web site terms of use, trademark policy and other project policies 12 | please see https://lfprojects.org.

13 | 14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /website/bin/exrcheck.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | exrcheck 6 | ######## 7 | 8 | :: 9 | 10 | exrcheck [options] imagefile [imagefile ...] 11 | 12 | Description 13 | ----------- 14 | Read exr files to validate their contents and the correct behavior of the software. 15 | 16 | Options: 17 | -------- 18 | 19 | .. describe:: -m 20 | 21 | avoid excessive memory allocation (some files will not be fully checked) 22 | 23 | .. describe:: -t 24 | 25 | avoid spending excessive time (some files will not be fully checked) 26 | 27 | .. describe:: -s 28 | 29 | use stream API instead of file API 30 | 31 | .. describe:: -c 32 | 33 | add core library checks 34 | 35 | .. describe:: -h, --help 36 | 37 | print this message 38 | 39 | .. describe:: --version 40 | 41 | print version information 42 | 43 | -------------------------------------------------------------------------------- /website/bin/exrheader.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | exrheader 6 | ######### 7 | 8 | :: 9 | 10 | exrheader imagefile [imagefile ...] 11 | 12 | Description 13 | ----------- 14 | 15 | Read exr files and print the values of header attributes. 16 | 17 | Options: 18 | -------- 19 | 20 | .. describe:: -h, --help 21 | 22 | print this message 23 | 24 | .. describe:: --version 25 | 26 | print version information 27 | 28 | -------------------------------------------------------------------------------- /website/bin/exrinfo.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | exrinfo 6 | ####### 7 | 8 | :: 9 | 10 | exrinfo [-v|--verbose] [-a|--all-metadata] [-s|--strict] [ ...] 11 | 12 | Description 13 | ----------- 14 | 15 | Read exr files and print values of header attributes 16 | 17 | Options: 18 | -------- 19 | 20 | .. describe:: -s, --strict 21 | 22 | strict mode 23 | 24 | .. describe:: -a, --all-metadata 25 | 26 | print all metadata 27 | 28 | .. describe:: -v, --verbose 29 | 30 | verbose mode 31 | 32 | .. describe:: -h, --help 33 | 34 | print this message 35 | 36 | .. describe:: --version 37 | 38 | print version information 39 | 40 | -------------------------------------------------------------------------------- /website/bin/exrmanifest.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | exrmanifest 6 | ########### 7 | 8 | :: 9 | 10 | exrmanifest [options] imagefile [imagefile ...] 11 | 12 | 13 | Description 14 | ----------- 15 | 16 | Read exr files and print the contents of the embedded manifest. 17 | 18 | Options: 19 | -------- 20 | 21 | .. describe:: -v, --verbose 22 | 23 | verbose mode 24 | 25 | .. describe:: -h, --help 26 | 27 | print this message 28 | 29 | .. describe:: --version 30 | 31 | print version information 32 | 33 | Report bugs via https://github.com/AcademySoftwareFoundation/openexr/issues or email security@openexr.com 34 | -------------------------------------------------------------------------------- /website/bin/exrmultipart.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | exrmultipart 6 | ############ 7 | 8 | :: 9 | 10 | exrmultipart -combine -i input.exr[:partnum][::partname] [input2.exr[:partnum]][::partname] [...] -o outfile.exr [options] 11 | 12 | or: exrmultipart -separate -i infile.exr -o outfileBaseName [options] 13 | 14 | or: exrmultipart -convert -i infile.exr -o outfile.exr [options] 15 | 16 | Description 17 | ----------- 18 | 19 | Combine or split multipart data 20 | 21 | Options: 22 | -------- 23 | 24 | .. describe:: -override [0/1] 25 | 26 | * 0 = do not override conflicting shared attributes [default] 27 | 28 | * 1 = override conflicting shared attributes 29 | 30 | .. describe:: -view name 31 | 32 | (after specifying -i) assign following inputs to view 'name' 33 | 34 | .. describe:: -h, --help 35 | 36 | print this message 37 | 38 | .. describe:: --version 39 | 40 | print version information 41 | 42 | -------------------------------------------------------------------------------- /website/concepts.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | .. _OpenEXR Concepts: 6 | 7 | OpenEXR Concepts 8 | ################ 9 | 10 | .. toctree:: 11 | :caption: Concepts 12 | :maxdepth: 2 13 | 14 | TechnicalIntroduction 15 | StandardAttributes 16 | MultiViewOpenEXR 17 | SceneLinear 18 | InterpretingDeepPixels 19 | TheoryDeepPixels 20 | DeepIDsSpecification 21 | OpenEXRFileLayout 22 | PortingGuide 23 | SymbolVisibility 24 | -------------------------------------------------------------------------------- /website/downloads/sample.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/downloads/sample.exr -------------------------------------------------------------------------------- /website/images/InterpretingDeepPixels1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/InterpretingDeepPixels1.png -------------------------------------------------------------------------------- /website/images/InterpretingDeepPixels2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/InterpretingDeepPixels2.png -------------------------------------------------------------------------------- /website/images/InterpretingDeepPixels3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/InterpretingDeepPixels3.png -------------------------------------------------------------------------------- /website/images/OpenEXR_Reel_2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/OpenEXR_Reel_2020.png -------------------------------------------------------------------------------- /website/images/cubeMap.big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/cubeMap.big.png -------------------------------------------------------------------------------- /website/images/cubeMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/cubeMap.png -------------------------------------------------------------------------------- /website/images/drawing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/drawing.png -------------------------------------------------------------------------------- /website/images/envcube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/envcube.png -------------------------------------------------------------------------------- /website/images/imageprocessing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/imageprocessing.png -------------------------------------------------------------------------------- /website/images/latlong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/latlong.png -------------------------------------------------------------------------------- /website/images/latlongMap.big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/latlongMap.big.png -------------------------------------------------------------------------------- /website/images/latlongMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/latlongMap.png -------------------------------------------------------------------------------- /website/images/mapped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/mapped.jpg -------------------------------------------------------------------------------- /website/images/news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/news.png -------------------------------------------------------------------------------- /website/images/openexr-fav.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/openexr-fav.ico -------------------------------------------------------------------------------- /website/images/openexr-horizontal-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/openexr-horizontal-color.png -------------------------------------------------------------------------------- /website/images/openexr-logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/openexr-logo.jpg -------------------------------------------------------------------------------- /website/images/openexr-stacked-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/openexr-stacked-color.png -------------------------------------------------------------------------------- /website/images/raw.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/raw.jpg -------------------------------------------------------------------------------- /website/images/screenwin.big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/screenwin.big.png -------------------------------------------------------------------------------- /website/images/screenwin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/screenwin.png -------------------------------------------------------------------------------- /website/images/tiles.big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/tiles.big.png -------------------------------------------------------------------------------- /website/images/tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/tiles.png -------------------------------------------------------------------------------- /website/images/twosamples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/twosamples.png -------------------------------------------------------------------------------- /website/images/windowExample1.big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/windowExample1.big.png -------------------------------------------------------------------------------- /website/images/windowExample1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/windowExample1.png -------------------------------------------------------------------------------- /website/images/windowExample1.small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/windowExample1.small.png -------------------------------------------------------------------------------- /website/images/windowExample2.big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/windowExample2.big.png -------------------------------------------------------------------------------- /website/images/windowExample2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr/ef8cfd2afe67f12250507160d189215d568aeaad/website/images/windowExample2.png -------------------------------------------------------------------------------- /website/latest_news_title.rst: -------------------------------------------------------------------------------- 1 | .. |latest-news-title| replace:: **March 23, 2025 - OpenEXR 3.3.3 Released** -------------------------------------------------------------------------------- /website/requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx == 7.1.2 2 | breathe 3 | sphinx-press-theme 4 | -------------------------------------------------------------------------------- /website/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright (c) Contributors to the OpenEXR Project. 3 | 4 | add_executable(website_src all.cpp) 5 | target_link_libraries(website_src OpenEXR::OpenEXR) 6 | set_target_properties(website_src PROPERTIES 7 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 8 | ) 9 | -------------------------------------------------------------------------------- /website/src/C_IStream.cpp: -------------------------------------------------------------------------------- 1 | class C_IStream: public IStream 2 | { 3 | public: 4 | C_IStream (FILE *file, const char fileName[]): 5 | IStream (fileName), _file (file) {} 6 | 7 | virtual bool read (char c[], int n); 8 | virtual uint64_t tellg (); 9 | virtual void seekg (uint64_t pos); 10 | virtual void clear (); 11 | 12 | private: 13 | 14 | FILE * _file; 15 | }; 16 | -------------------------------------------------------------------------------- /website/src/C_IStream_clear.cpp: -------------------------------------------------------------------------------- 1 | void 2 | C_IStream::clear () 3 | { 4 | clearerr (_file); 5 | } 6 | -------------------------------------------------------------------------------- /website/src/C_IStream_read.cpp: -------------------------------------------------------------------------------- 1 | bool 2 | C_IStream::read (char c[], int n) 3 | { 4 | if (n != static_cast (fread (c, 1, n, _file))) 5 | { 6 | // fread() failed, but the return value does not distinguish 7 | // between I/O errors and end of file, so we call ferror() to 8 | // determine what happened. 9 | 10 | if (ferror (_file)) 11 | throwErrnoExc(); 12 | else 13 | throw InputExc ("Unexpected end of file."); 14 | } 15 | 16 | return !feof (_file); 17 | } 18 | 19 | -------------------------------------------------------------------------------- /website/src/C_IStream_seekg.cpp: -------------------------------------------------------------------------------- 1 | void 2 | C_IStream::seekg (uint64_t pos) 3 | { 4 | clearerr (_file); 5 | fseek (_file, pos, SEEK_SET); 6 | } 7 | 8 | -------------------------------------------------------------------------------- /website/src/C_IStream_tellg.cpp: -------------------------------------------------------------------------------- 1 | uint64_t 2 | C_IStream::tellg () 3 | { 4 | return ftell (_file); 5 | } 6 | 7 | -------------------------------------------------------------------------------- /website/src/IStream.cpp: -------------------------------------------------------------------------------- 1 | class IStream 2 | { 3 | public: 4 | virtual ~IStream (); 5 | 6 | virtual bool read (char c[], int n) = 0; 7 | virtual uint64_t tellg () = 0; 8 | virtual void seekg (uint64_t pos) = 0; 9 | virtual void clear (); 10 | const char * fileName () const; 11 | virtual bool isMemoryMapped () const; 12 | virtual char * readMemoryMapped (int n); 13 | 14 | protected: 15 | IStream (const char fileName[]); 16 | private: 17 | 18 | // ... 19 | }; 20 | 21 | -------------------------------------------------------------------------------- /website/src/MemoryMappedIStream.cpp: -------------------------------------------------------------------------------- 1 | class MemoryMappedIStream: public IStream 2 | { 3 | public: 4 | MemoryMappedIStream (const char fileName[]); 5 | 6 | virtual ~MemoryMappedIStream (); 7 | 8 | virtual bool isMemoryMapped () const; 9 | virtual char * readMemoryMapped (int n); 10 | virtual bool read (char c[], int n); 11 | virtual uint64_t tellg (); 12 | 13 | virtual void seekg (uint64_t pos); 14 | 15 | private: 16 | 17 | char * _buffer; 18 | uint64_t _fileLength; 19 | uint64_t _readPosition; 20 | }; 21 | 22 | -------------------------------------------------------------------------------- /website/src/MemoryMappedIStream_constructor.cpp: -------------------------------------------------------------------------------- 1 | MemoryMappedIStream::MemoryMappedIStream (const char fileName[]) 2 | : IStream (fileName), 3 | _buffer (0), 4 | _fileLength (0), 5 | _readPosition (0) 6 | { 7 | int file = open (fileName, O_RDONLY); 8 | 9 | if (file < 0) 10 | THROW_ERRNO ("Cannot open file \"" << fileName << "\"."); 11 | 12 | struct stat stat; 13 | fstat (file, &stat); 14 | 15 | _fileLength = stat.st_size; 16 | 17 | _buffer = (char *) mmap (0, _fileLength, PROT_READ, MAP_PRIVATE, file, 0); 18 | 19 | close (file); 20 | 21 | if (_buffer == MAP_FAILED) 22 | THROW_ERRNO ("Cannot memory-map file \"" << fileName << "\"."); 23 | } 24 | -------------------------------------------------------------------------------- /website/src/MemoryMappedIStream_destructor.cpp: -------------------------------------------------------------------------------- 1 | bool 2 | MemoryMappedIStream::isMemoryMapped () const 3 | { 4 | return true; 5 | } 6 | -------------------------------------------------------------------------------- /website/src/MemoryMappedIStream_isMemoryMapped.cpp: -------------------------------------------------------------------------------- 1 | MemoryMappedIStream::~MemoryMappedIStream() 2 | { 3 | munmap (_buffer, _fileLength); 4 | } 5 | -------------------------------------------------------------------------------- /website/src/MemoryMappedIStream_read.cpp: -------------------------------------------------------------------------------- 1 | bool 2 | MemoryMappedIStream::read (char c[], int n) 3 | { 4 | if (_readPosition >= _fileLength) 5 | throw InputExc ("Unexpected end of file."); 6 | 7 | if (_readPosition + n > _fileLength) 8 | throw InputExc ("Reading past end of file."); 9 | 10 | memcpy (c, _buffer + _readPosition, n); 11 | 12 | _readPosition += n; 13 | 14 | return _readPosition < _fileLength; 15 | 16 | } 17 | 18 | uint64_t 19 | MemoryMappedIStream::tellg () 20 | { 21 | return _readPosition; 22 | } 23 | 24 | void 25 | MemoryMappedIStream::seekg (uint64_t pos) 26 | { 27 | _readPosition = pos; 28 | } 29 | 30 | -------------------------------------------------------------------------------- /website/src/MemoryMappedIStream_readMemoryMapped.cpp: -------------------------------------------------------------------------------- 1 | char * 2 | MemoryMappedIStream::readMemoryMapped (int n) 3 | { 4 | if (_readPosition >= _fileLength) 5 | throw InputExc ("Unexpected end of file."); 6 | 7 | if (_readPosition + n > _fileLength) 8 | throw InputExc ("Reading past end of file."); 9 | 10 | char *data = _buffer + _readPosition; 11 | 12 | _readPosition += n; 13 | 14 | return data; 15 | 16 | } 17 | 18 | -------------------------------------------------------------------------------- /website/src/compression.cpp: -------------------------------------------------------------------------------- 1 | 2 | int width=1; int height=1; 3 | // [begin setCompression] 4 | Header header (width, height); 5 | header.channels().insert ("G", Channel (HALF)); 6 | header.channels().insert ("Z", Channel (FLOAT)); 7 | header.compression() = ZIP_COMPRESSION; 8 | header.zipCompressionLevel() = 6; 9 | // [end setCompression] 10 | 11 | // [begin setCompressionDefault] 12 | setDefaultZipCompressionLevel (6); 13 | setDefaultDwaCompressionLevel (45.0f); 14 | // [end setCompressionDefault] -------------------------------------------------------------------------------- /website/src/envmap.cpp: -------------------------------------------------------------------------------- 1 | 2 | char fileName[] = ""; 3 | // [begin hasEnvmap] 4 | RgbaInputFile file (fileName); 5 | 6 | if (hasEnvmap (file.header())) 7 | { 8 | Envmap type = envmap (file.header()); 9 | // ... 10 | } 11 | // [end hasEnvmap] 12 | -------------------------------------------------------------------------------- /website/src/exrreader/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.12) 2 | project(exrreader) 3 | find_package(OpenEXR REQUIRED) 4 | 5 | add_executable(${PROJECT_NAME} exrreader.cpp) 6 | target_link_libraries(${PROJECT_NAME} OpenEXR::OpenEXR) 7 | 8 | -------------------------------------------------------------------------------- /website/src/exrreader/build.sh: -------------------------------------------------------------------------------- 1 | $ mkdir _build 2 | $ cmake -S . -B _build -DCMAKE_PREFIX_PATH= 3 | $ cmake --build _build 4 | -------------------------------------------------------------------------------- /website/src/exrreader/exrreader.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int 6 | main() 7 | { 8 | try { 9 | Imf::RgbaInputFile file("hello.exr"); 10 | Imath::Box2i dw = file.dataWindow(); 11 | int width = dw.max.x - dw.min.x + 1; 12 | int height = dw.max.y - dw.min.y + 1; 13 | 14 | Imf::Array2D pixels(width, height); 15 | 16 | file.setFrameBuffer(&pixels[0][0], 1, width); 17 | file.readPixels(dw.min.y, dw.max.y); 18 | 19 | } catch (const std::exception &e) { 20 | std::cerr << "error reading image file hello.exr:" << e.what() << std::endl; 21 | return 1; 22 | } 23 | 24 | return 0; 25 | } 26 | -------------------------------------------------------------------------------- /website/src/exrwriter/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.12) 2 | project(exrwriter) 3 | find_package(OpenEXR REQUIRED) 4 | 5 | add_executable(${PROJECT_NAME} exrwriter.cpp) 6 | target_link_libraries(${PROJECT_NAME} OpenEXR::OpenEXR) 7 | 8 | -------------------------------------------------------------------------------- /website/src/exrwriter/build.sh: -------------------------------------------------------------------------------- 1 | $ mkdir _build 2 | $ cmake -S . -B _build -DCMAKE_PREFIX_PATH= 3 | $ cmake --build _build 4 | -------------------------------------------------------------------------------- /website/src/exrwriter/exrwriter.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int 6 | main() 7 | { 8 | int width = 10; 9 | int height = 10; 10 | 11 | Imf::Array2D pixels(width, height); 12 | for (int y=0; y& pixels, int& width, int& height) 3 | { 4 | InputFile file (fileName); 5 | 6 | Box2i dw = file.header ().dataWindow (); 7 | width = dw.max.x - dw.min.x + 1; 8 | height = dw.max.y - dw.min.y + 1; 9 | 10 | int dx = dw.min.x; 11 | int dy = dw.min.y; 12 | 13 | pixels.resizeErase (height, width); 14 | 15 | FrameBuffer frameBuffer; 16 | 17 | frameBuffer.insert ( 18 | "G", 19 | Slice ( 20 | HALF, 21 | (char*) &pixels[-dy][-dx].g, 22 | sizeof (pixels[0][0]) * 1, 23 | sizeof (pixels[0][0]) * width)); 24 | 25 | frameBuffer.insert ( 26 | "Z", 27 | Slice ( 28 | FLOAT, 29 | (char*) &pixels[-dy][-dx].z, 30 | sizeof (pixels[0][0]) * 1, 31 | sizeof (pixels[0][0]) * width)); 32 | 33 | file.setFrameBuffer (frameBuffer); 34 | file.readPixels (dw.min.y, dw.max.y); 35 | } 36 | -------------------------------------------------------------------------------- /website/src/readRgba1.cpp: -------------------------------------------------------------------------------- 1 | void 2 | readRgba1 ( 3 | const char fileName[], Array2D& pixels, int& width, int& height) 4 | { 5 | RgbaInputFile file (fileName); 6 | Box2i dw = file.dataWindow (); 7 | 8 | width = dw.max.x - dw.min.x + 1; 9 | height = dw.max.y - dw.min.y + 1; 10 | pixels.resizeErase (height, width); 11 | 12 | file.setFrameBuffer (&pixels[0][0] - dw.min.x - dw.min.y * width, 1, width); 13 | file.readPixels (dw.min.y, dw.max.y); 14 | } 15 | -------------------------------------------------------------------------------- /website/src/readRgba2.cpp: -------------------------------------------------------------------------------- 1 | void 2 | readRgba2 (const char fileName[]) 3 | { 4 | RgbaInputFile file (fileName); 5 | Box2i dw = file.dataWindow (); 6 | 7 | int width = dw.max.x - dw.min.x + 1; 8 | Array2D pixels (10, width); 9 | 10 | while (dw.min.y <= dw.max.y) 11 | { 12 | file.setFrameBuffer ( 13 | &pixels[0][0] - dw.min.x - dw.min.y * width, 1, width); 14 | 15 | file.readPixels (dw.min.y, min (dw.min.y + 9, dw.max.y)); 16 | 17 | // processPixels (pixels) 18 | 19 | dw.min.y += 10; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /website/src/readRgbaFILE.cpp: -------------------------------------------------------------------------------- 1 | void 2 | readRgbaFILE ( 3 | FILE* cfile, 4 | const char fileName[], 5 | Array2D& pixels, 6 | int& width, 7 | int& height) 8 | { 9 | C_IStream istr (cfile, fileName); 10 | 11 | RgbaInputFile file (istr); 12 | 13 | Box2i dw = file.dataWindow (); 14 | 15 | width = dw.max.x - dw.min.x + 1; 16 | height = dw.max.y - dw.min.y + 1; 17 | pixels.resizeErase (height, width); 18 | 19 | file.setFrameBuffer (&pixels[0][0] - dw.min.x - dw.min.y * width, 1, width); 20 | 21 | file.readPixels (dw.min.y, dw.max.y); 22 | } 23 | -------------------------------------------------------------------------------- /website/src/readTiledRgba1.cpp: -------------------------------------------------------------------------------- 1 | void 2 | readTiledRgba1 ( 3 | const char fileName[], Array2D& pixels, int& width, int& height) 4 | { 5 | TiledRgbaInputFile in (fileName); 6 | 7 | Box2i dw = in.dataWindow (); 8 | width = dw.max.x - dw.min.x + 1; 9 | height = dw.max.y - dw.min.y + 1; 10 | 11 | int dx = dw.min.x; 12 | int dy = dw.min.y; 13 | 14 | pixels.resizeErase (height, width); 15 | 16 | in.setFrameBuffer (&pixels[-dy][-dx], 1, width); 17 | in.readTiles (0, in.numXTiles () - 1, 0, in.numYTiles () - 1); 18 | } 19 | -------------------------------------------------------------------------------- /website/src/structDefinitions.cpp: -------------------------------------------------------------------------------- 1 | // [Rgba definition begin] 2 | struct Rgba 3 | { 4 | half r; // red 5 | half g; // green 6 | half b; // blue 7 | half a; // alpha (opacity) 8 | }; 9 | // [Rgba definition end] 10 | 11 | // [GZ definition begin] 12 | struct GZ 13 | { 14 | half g; 15 | float z; 16 | }; 17 | // [GZ definition end] -------------------------------------------------------------------------------- /website/src/tileDescription.cpp: -------------------------------------------------------------------------------- 1 | // Enums defined in ImfTileDescription.h 2 | // enum LevelMode 3 | // { 4 | // ONE_LEVEL, 5 | // MIPMAP_LEVELS, 6 | // RIPMAP_LEVELS 7 | // }; 8 | 9 | // enum LevelRoundingMode 10 | // { 11 | // ROUND_DOWN, 12 | // ROUND_UP 13 | // }; 14 | 15 | class TileDescription 16 | { 17 | public: 18 | unsigned int xSize; // size of a tile in the x dimension 19 | unsigned int ySize; // size of a tile in the y dimension 20 | LevelMode mode; 21 | LevelRoundingMode roundingMode; 22 | // ... (methods omitted) 23 | }; -------------------------------------------------------------------------------- /website/src/validExrFile.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // [begin validFileCheck] 3 | bool 4 | isThisAnOpenExrFile (const char fileName[]) 5 | { 6 | std::ifstream f (fileName, std::ios_base::binary); 7 | 8 | char b[4]; 9 | f.read (b, sizeof (b)); 10 | 11 | return !!f && b[0] == 0x76 && b[1] == 0x2f && b[2] == 0x31 && b[3] == 0x01; 12 | } 13 | // [end validFileCheck] 14 | // [begin completeFileCheck] 15 | bool 16 | isComplete (const char fileName[]) 17 | { 18 | InputFile in (fileName); 19 | return in.isComplete(); 20 | } 21 | // [end completeFileCheck] 22 | 23 | // [begin otherValidFileChecks] 24 | bool isOpenExrFile (const char fileName[], bool &isTiled); 25 | 26 | bool isOpenExrFile (const char fileName[]); 27 | 28 | bool isTiledOpenExrFile (const char fileName[]); 29 | 30 | bool isOpenExrFile (IStream &is, bool &isTiled); 31 | 32 | bool isOpenExrFile (IStream &is); 33 | 34 | bool isTiledOpenExrFile (IStream &is); 35 | // [end otherValidFileChecks] -------------------------------------------------------------------------------- /website/src/writeRgba1.cpp: -------------------------------------------------------------------------------- 1 | // [begin writeRgba1] 2 | void 3 | writeRgba1 (const char fileName[], const Rgba* pixels, int width, int height) 4 | { 5 | RgbaOutputFile file (fileName, width, height, WRITE_RGBA); // 1 6 | file.setFrameBuffer (pixels, 1, width); // 2 7 | file.writePixels (height); // 3 8 | } 9 | // [end writeRgba1] 10 | 11 | void 12 | tryCatchExample (const char fileName[], const Rgba* pixels, int width, int height) { 13 | // [begin tryCatchExample] 14 | try 15 | { 16 | writeRgba1 (fileName, pixels, width, height); 17 | } 18 | catch (const std::exception &exc) 19 | { 20 | std::cerr << exc.what() << std::endl; 21 | } 22 | // [end tryCatchExample] 23 | } -------------------------------------------------------------------------------- /website/src/writeRgba2.cpp: -------------------------------------------------------------------------------- 1 | // [begin writeRgba2] 2 | void 3 | writeRgba2 ( 4 | const char fileName[], 5 | const Rgba* pixels, 6 | int width, 7 | int height, 8 | const Box2i& dataWindow) 9 | { 10 | Box2i displayWindow (V2i (0, 0), V2i (width - 1, height - 1)); 11 | RgbaOutputFile file (fileName, displayWindow, dataWindow, WRITE_RGBA); 12 | file.setFrameBuffer (pixels, 1, width); 13 | file.writePixels (dataWindow.max.y - dataWindow.min.y + 1); 14 | } 15 | // [end writeRgba2] 16 | 17 | void 18 | writeRgba2ResizeFrameBuffer ( 19 | const char fileName[], 20 | const Rgba* pixels, 21 | int width, 22 | int height, 23 | const Box2i& dataWindow) 24 | { 25 | Box2i displayWindow (V2i (0, 0), V2i (width - 1, height - 1)); 26 | RgbaOutputFile file (fileName, displayWindow, dataWindow, WRITE_RGBA); 27 | // [begin writeRgba2ResizeFrameBuffer] 28 | int dwWidth = dataWindow.max.x - dataWindow.min.x + 1; 29 | file.setFrameBuffer (pixels - dataWindow.min.x - dataWindow.min.y * dwWidth, 1, dwWidth); 30 | // [end writeRgba2ResizeFrameBuffer] 31 | } 32 | 33 | -------------------------------------------------------------------------------- /website/src/writeRgba3.cpp: -------------------------------------------------------------------------------- 1 | void 2 | writeRgba3 ( 3 | const char fileName[], 4 | const Rgba* pixels, 5 | int width, 6 | int height, 7 | const char comments[], 8 | const M44f& cameraTransform) 9 | { 10 | Header header (width, height); 11 | 12 | header.insert ("comments", StringAttribute (comments)); 13 | header.insert ("cameraTransform", M44fAttribute (cameraTransform)); 14 | 15 | RgbaOutputFile file (fileName, header, WRITE_RGBA); 16 | file.setFrameBuffer (pixels, 1, width); 17 | file.writePixels (height); 18 | } 19 | -------------------------------------------------------------------------------- /website/src/writeRgbaMT.cpp: -------------------------------------------------------------------------------- 1 | void 2 | writeRgbaMT (const char fileName[], const Rgba* pixels, int width, int height) 3 | { 4 | setGlobalThreadCount (4); 5 | 6 | RgbaOutputFile file (fileName, width, height, WRITE_RGBA); 7 | file.setFrameBuffer (pixels, 1, width); 8 | file.writePixels (height); 9 | } 10 | -------------------------------------------------------------------------------- /website/src/writeRgbaWithPreview1.cpp: -------------------------------------------------------------------------------- 1 | void 2 | writeRgbaWithPreview1 ( 3 | const char fileName[], const Array2D& pixels, int width, int height) 4 | { 5 | Array2D previewPixels; // 1 6 | 7 | int previewWidth; // 2 8 | int previewHeight; // 3 9 | 10 | makePreviewImage ( 11 | pixels, 12 | width, 13 | height, // 4 14 | previewPixels, 15 | previewWidth, 16 | previewHeight); 17 | 18 | Header header (width, height); // 5 19 | header.setPreviewImage ( 20 | PreviewImage (previewWidth, previewHeight, &previewPixels[0][0])); 21 | 22 | RgbaOutputFile file (fileName, header, WRITE_RGBA); // 7 23 | file.setFrameBuffer (&pixels[0][0], 1, width); // 8 24 | file.writePixels (height); // 9 25 | } 26 | -------------------------------------------------------------------------------- /website/src/writeTiledRgbaMIP1.cpp: -------------------------------------------------------------------------------- 1 | void 2 | writeTiledRgbaMIP1 ( 3 | const char fileName[], int width, int height, int tileWidth, int tileHeight) 4 | { 5 | TiledRgbaOutputFile out ( 6 | fileName, 7 | width, 8 | height, 9 | tileWidth, 10 | tileHeight, 11 | MIPMAP_LEVELS, 12 | ROUND_DOWN, 13 | WRITE_RGBA); // 1 14 | 15 | Array2D pixels (height, width); // 2 16 | 17 | out.setFrameBuffer (&pixels[0][0], 1, width); // 3 18 | 19 | for (int level = 0; level < out.numLevels (); ++level) // 4 20 | { 21 | generatePixels (pixels, width, height, level); // 5 22 | 23 | out.writeTiles ( 24 | 0, 25 | out.numXTiles (level) - 1, // 6 26 | 0, 27 | out.numYTiles (level) - 1, 28 | level); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /website/src/writeTiledRgbaONE1.cpp: -------------------------------------------------------------------------------- 1 | void 2 | writeTiledRgbaONE1 ( 3 | const char fileName[], 4 | const Rgba* pixels, 5 | int width, 6 | int height, 7 | int tileWidth, 8 | int tileHeight) 9 | { 10 | TiledRgbaOutputFile out ( 11 | fileName, 12 | width, 13 | height, // image size 14 | tileWidth, 15 | tileHeight, // tile size 16 | ONE_LEVEL, // level mode 17 | ROUND_DOWN, // rounding mode 18 | WRITE_RGBA); // channels in file // 1 19 | out.setFrameBuffer (pixels, 1, width); // 2 20 | out.writeTiles (0, out.numXTiles () - 1, 0, out.numYTiles () - 1); // 3 21 | } 22 | -------------------------------------------------------------------------------- /website/src/writeTiledRgbaONE2.cpp: -------------------------------------------------------------------------------- 1 | void 2 | writeTiledRgbaONE2 ( 3 | const char fileName[], int width, int height, int tileWidth, int tileHeight) 4 | { 5 | TiledRgbaOutputFile out ( 6 | fileName, 7 | width, 8 | height, // image size 9 | tileWidth, 10 | tileHeight, // tile size 11 | ONE_LEVEL, // level mode 12 | ROUND_DOWN, // rounding mode 13 | WRITE_RGBA); // channels in file // 1 14 | 15 | Array2D pixels (tileHeight, tileWidth); // 2 16 | 17 | for (int tileY = 0; tileY < out.numYTiles (); ++tileY) // 3 18 | { 19 | for (int tileX = 0; tileX < out.numXTiles (); ++tileX) // 4 20 | { 21 | Box2i range = out.dataWindowForTile (tileX, tileY); // 5 22 | 23 | generatePixels (pixels, width, height, range); // 6 24 | 25 | out.setFrameBuffer ( 26 | &pixels[-range.min.y][-range.min.x], 27 | 1, // xStride 28 | tileWidth); // yStride // 7 29 | 30 | out.writeTile (tileX, tileY); // 8 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /website/src/writeTiledRgbaRIP1.cpp: -------------------------------------------------------------------------------- 1 | void 2 | writeTiledRgbaRIP1 ( 3 | const char fileName[], int width, int height, int tileWidth, int tileHeight) 4 | { 5 | TiledRgbaOutputFile out ( 6 | fileName, 7 | width, 8 | height, 9 | tileWidth, 10 | tileHeight, 11 | RIPMAP_LEVELS, 12 | ROUND_DOWN, 13 | WRITE_RGBA); 14 | 15 | Array2D pixels (height, width); 16 | 17 | out.setFrameBuffer (&pixels[0][0], 1, width); 18 | 19 | for (int yLevel = 0; yLevel < out.numYLevels (); ++yLevel) 20 | { 21 | for (int xLevel = 0; xLevel < out.numXLevels (); ++xLevel) 22 | { 23 | generatePixels (pixels, width, height, xLevel, yLevel); 24 | 25 | out.writeTiles ( 26 | 0, 27 | out.numXTiles (xLevel) - 1, 28 | 0, 29 | out.numYTiles (yLevel) - 1, 30 | xLevel, 31 | yLevel); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /website/test_images/ScanLines/Cannon.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | Cannon.exr 6 | ########## 7 | 8 | :download:`https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/ScanLines/Cannon.exr` 9 | 10 | .. image:: https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/ScanLines/Cannon.jpg 11 | :target: https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/ScanLines/Cannon.exr 12 | 13 | .. list-table:: 14 | :align: left 15 | 16 | * - screenWindowWidth 17 | - 1 18 | * - dataWindow 19 | - (0 0) - (779 565) 20 | * - owner 21 | - Copyright 2006 Industrial Light & Magic 22 | * - screenWindowCenter 23 | - (0 0) 24 | * - displayWindow 25 | - (0 0) - (779 565) 26 | * - channels 27 | - B, G, R 28 | * - lineOrder 29 | - increasing y 30 | * - pixelAspectRatio 31 | - 1 32 | * - compression 33 | - b44 34 | * - type 35 | - scanlineimage 36 | -------------------------------------------------------------------------------- /website/test_images/ScanLines/Desk.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | Desk.exr 6 | ######## 7 | 8 | :download:`https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/ScanLines/Desk.exr` 9 | 10 | .. image:: https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/ScanLines/Desk.jpg 11 | :target: https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/ScanLines/Desk.exr 12 | 13 | .. list-table:: 14 | :align: left 15 | 16 | * - screenWindowWidth 17 | - 1 18 | * - dataWindow 19 | - (0 0) - (643 873) 20 | * - screenWindowCenter 21 | - (0 0) 22 | * - displayWindow 23 | - (0 0) - (643 873) 24 | * - channels 25 | - A, B, G, R 26 | * - lineOrder 27 | - increasing y 28 | * - pixelAspectRatio 29 | - 1 30 | * - compression 31 | - piz 32 | * - type 33 | - scanlineimage 34 | -------------------------------------------------------------------------------- /website/test_images/TestImages/GammaChart.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | GammaChart.exr 6 | ############## 7 | 8 | :download:`https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/TestImages/GammaChart.exr` 9 | 10 | .. image:: https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/TestImages/GammaChart.jpg 11 | :target: https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/TestImages/GammaChart.exr 12 | 13 | .. list-table:: 14 | :align: left 15 | 16 | * - screenWindowWidth 17 | - 1 18 | * - dataWindow 19 | - (0 0) - (799 799) 20 | * - screenWindowCenter 21 | - (0 0) 22 | * - displayWindow 23 | - (0 0) - (799 799) 24 | * - channels 25 | - B, G, R 26 | * - lineOrder 27 | - increasing y 28 | * - pixelAspectRatio 29 | - 1 30 | * - compression 31 | - pxr24 32 | * - type 33 | - scanlineimage 34 | -------------------------------------------------------------------------------- /website/test_images/TestImages/GrayRampsDiagonal.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | GrayRampsDiagonal.exr 6 | ##################### 7 | 8 | :download:`https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/TestImages/GrayRampsDiagonal.exr` 9 | 10 | .. image:: https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/TestImages/GrayRampsDiagonal.jpg 11 | :target: https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/TestImages/GrayRampsDiagonal.exr 12 | 13 | .. list-table:: 14 | :align: left 15 | 16 | * - screenWindowWidth 17 | - 1 18 | * - dataWindow 19 | - (0 0) - (799 799) 20 | * - screenWindowCenter 21 | - (0 0) 22 | * - displayWindow 23 | - (0 0) - (799 799) 24 | * - channels 25 | - Y 26 | * - lineOrder 27 | - increasing y 28 | * - pixelAspectRatio 29 | - 1 30 | * - compression 31 | - pxr24 32 | * - type 33 | - scanlineimage 34 | -------------------------------------------------------------------------------- /website/test_images/TestImages/RgbRampsDiagonal.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | RgbRampsDiagonal.exr 6 | #################### 7 | 8 | :download:`https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/TestImages/RgbRampsDiagonal.exr` 9 | 10 | .. image:: https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/TestImages/RgbRampsDiagonal.jpg 11 | :target: https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/TestImages/RgbRampsDiagonal.exr 12 | 13 | .. list-table:: 14 | :align: left 15 | 16 | * - screenWindowWidth 17 | - 1 18 | * - dataWindow 19 | - (0 0) - (799 799) 20 | * - screenWindowCenter 21 | - (0 0) 22 | * - displayWindow 23 | - (0 0) - (799 799) 24 | * - channels 25 | - B, G, R 26 | * - lineOrder 27 | - increasing y 28 | * - pixelAspectRatio 29 | - 1 30 | * - compression 31 | - pxr24 32 | * - type 33 | - scanlineimage 34 | -------------------------------------------------------------------------------- /website/toc_redirect.rst: -------------------------------------------------------------------------------- 1 | .. 2 | SPDX-License-Identifier: BSD-3-Clause 3 | Copyright Contributors to the OpenEXR Project. 4 | 5 | .. toctree:: 6 | :hidden: 7 | 8 | concepts 9 | 10 | .. toctree:: 11 | :hidden: 12 | 13 | tools 14 | 15 | .. toctree:: 16 | :hidden: 17 | 18 | API 19 | 20 | .. toctree:: 21 | :hidden: 22 | 23 | python 24 | 25 | .. toctree:: 26 | :hidden: 27 | 28 | install 29 | 30 | .. toctree:: 31 | :hidden: 32 | 33 | license 34 | 35 | .. toctree:: 36 | :hidden: 37 | 38 | news 39 | 40 | .. toctree:: 41 | :hidden: 42 | 43 | about 44 | 45 | .. toctree:: 46 | :hidden: 47 | 48 | test_images/index 49 | 50 | 51 | 52 | 53 | 54 | 55 | --------------------------------------------------------------------------------