git: c7884e3597e5 - main - graphics/openfx-misc: Update to 2.4.3
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 22 Jul 2022 01:25:09 UTC
The branch main has been updated by olivier: URL: https://cgit.FreeBSD.org/ports/commit/?id=c7884e3597e5488fe8164fc0dd26ec8698e0a3c6 commit c7884e3597e5488fe8164fc0dd26ec8698e0a3c6 Author: Olivier Cochard <olivier@FreeBSD.org> AuthorDate: 2022-07-22 01:23:19 +0000 Commit: Olivier Cochard <olivier@FreeBSD.org> CommitDate: 2022-07-22 01:23:19 +0000 graphics/openfx-misc: Update to 2.4.3 --- graphics/openfx-misc/Makefile | 16 +- graphics/openfx-misc/distinfo | 16 +- graphics/openfx-misc/files/patch-CImg_CImg.h | 60855 ------------------- .../openfx-misc/files/patch-CImg_Inpaint_inpaint.h | 503 - graphics/openfx-misc/files/patch-CImg_Makefile | 13 +- graphics/openfx-misc/files/patch-CImg_nlmeans.h | 245 - graphics/openfx-misc/files/patch-Makefile.master | 4 +- graphics/openfx-misc/pkg-plist | 11 +- 8 files changed, 34 insertions(+), 61629 deletions(-) diff --git a/graphics/openfx-misc/Makefile b/graphics/openfx-misc/Makefile index 1c01756b4920..1b21170e5b3c 100644 --- a/graphics/openfx-misc/Makefile +++ b/graphics/openfx-misc/Makefile @@ -1,6 +1,6 @@ PORTNAME= openfx-misc -PORTVERSION= 2.3.14 -PORTREVISION= 2 +PORTVERSION= 2.4.3 +DISTVERSIONPREFIX= Natron- CATEGORIES= graphics MAINTAINER= olivier@FreeBSD.org @@ -14,13 +14,15 @@ USES= gl gmake USE_GL= gl USE_GITHUB= yes GH_ACCOUNT= NatronGitHub -GH_TAGNAME= 3ab0531 -GH_TUPLE= NatronGitHub:openfx-supportext:e600cae:openfx_supportext/SupportExt \ - NatronGitHub:openfx:a85dc34:openfx/openfx +GH_TUPLE= NatronGitHub:openfx-supportext:79d8c22:openfx_supportext/SupportExt \ + NatronGitHub:openfx:d5db5d0:openfx/openfx \ + dtschump:CImg:b33dcc8f9f1acf1f276ded92c04f8231f6c23fcd:CImg + MAKE_ENV+= CONFIG=release -pre-patch: - @${RM} ${WRKSRC}/CImg/CImg.h.orig +post-extract: + ${CP} ${WRKSRC_CImg}/CImg.h ${WRKSRC}/CImg/CImg.h + ${CP} ${WRKSRC_CImg}/plugins/inpaint.h ${WRKSRC}/CImg/Inpaint/inpaint.h post-patch: @${REINPLACE_CMD} -e 's|/usr/OFX/Plugins|${PREFIX}/OFX/Plugins|g' \ diff --git a/graphics/openfx-misc/distinfo b/graphics/openfx-misc/distinfo index 0f836203f882..52277c7ea01c 100644 --- a/graphics/openfx-misc/distinfo +++ b/graphics/openfx-misc/distinfo @@ -1,7 +1,9 @@ -TIMESTAMP = 1533472629 -SHA256 (NatronGitHub-openfx-misc-2.3.14-3ab0531_GH0.tar.gz) = c2c4c5b056a107709d380a4d4dda803d3a7b619ba2c8f3227f89b5ab6a0464c5 -SIZE (NatronGitHub-openfx-misc-2.3.14-3ab0531_GH0.tar.gz) = 2305004 -SHA256 (NatronGitHub-openfx-supportext-e600cae_GH0.tar.gz) = b6fbe4552d0986a4913ab4e6a999bd30b432646495b2b431d2e295b1ed6514cf -SIZE (NatronGitHub-openfx-supportext-e600cae_GH0.tar.gz) = 287231 -SHA256 (NatronGitHub-openfx-a85dc34_GH0.tar.gz) = c59082fcd9327e87ff544e93179ddc5b81d39442854283064480526ab153bfde -SIZE (NatronGitHub-openfx-a85dc34_GH0.tar.gz) = 10651841 +TIMESTAMP = 1658451676 +SHA256 (NatronGitHub-openfx-misc-Natron-2.4.3_GH0.tar.gz) = c1c57c1fdc3b79c9bf1125268c852f30342dcfe1453ebd0ec4c9347ea7e71f12 +SIZE (NatronGitHub-openfx-misc-Natron-2.4.3_GH0.tar.gz) = 1896250 +SHA256 (NatronGitHub-openfx-supportext-79d8c22_GH0.tar.gz) = fa4a1565a46f536540df650d31d8ebb862703043e6386d12bf9a4c500f998d43 +SIZE (NatronGitHub-openfx-supportext-79d8c22_GH0.tar.gz) = 295608 +SHA256 (NatronGitHub-openfx-d5db5d0_GH0.tar.gz) = 7d626b85a7731c8ee4175f7cd7c7c9dd3c7c77523c3c49c19d8090d39fd28161 +SIZE (NatronGitHub-openfx-d5db5d0_GH0.tar.gz) = 10706209 +SHA256 (dtschump-CImg-b33dcc8f9f1acf1f276ded92c04f8231f6c23fcd_GH0.tar.gz) = e0a0e1958f66dfc758a28ab537a44779fe15c22364ec96ce45fd3d39cf868b4b +SIZE (dtschump-CImg-b33dcc8f9f1acf1f276ded92c04f8231f6c23fcd_GH0.tar.gz) = 11272408 diff --git a/graphics/openfx-misc/files/patch-CImg_CImg.h b/graphics/openfx-misc/files/patch-CImg_CImg.h deleted file mode 100644 index 9a90b101b354..000000000000 --- a/graphics/openfx-misc/files/patch-CImg_CImg.h +++ /dev/null @@ -1,60855 +0,0 @@ ---- CImg/CImg.h.orig 2018-04-30 23:16:26 UTC -+++ CImg/CImg.h -@@ -0,0 +1,60852 @@ -+/* -+ # -+ # File : CImg.h -+ # ( C++ header file ) -+ # -+ # Description : The C++ Template Image Processing Toolkit. -+ # This file is the main component of the CImg Library project. -+ # ( http://cimg.eu ) -+ # -+ # Project manager : David Tschumperle. -+ # ( http://tschumperle.users.greyc.fr/ ) -+ # -+ # A complete list of contributors is available in file 'README.txt' -+ # distributed within the CImg package. -+ # -+ # Licenses : This file is 'dual-licensed', you have to choose one -+ # of the two licenses below to apply. -+ # -+ # CeCILL-C -+ # The CeCILL-C license is close to the GNU LGPL. -+ # ( http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html ) -+ # -+ # or CeCILL v2.1 -+ # The CeCILL license is compatible with the GNU GPL. -+ # ( http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html ) -+ # -+ # This software is governed either by the CeCILL or the CeCILL-C license -+ # under French law and abiding by the rules of distribution of free software. -+ # You can use, modify and or redistribute the software under the terms of -+ # the CeCILL or CeCILL-C licenses as circulated by CEA, CNRS and INRIA -+ # at the following URL: "http://www.cecill.info". -+ # -+ # As a counterpart to the access to the source code and rights to copy, -+ # modify and redistribute granted by the license, users are provided only -+ # with a limited warranty and the software's author, the holder of the -+ # economic rights, and the successive licensors have only limited -+ # liability. -+ # -+ # In this respect, the user's attention is drawn to the risks associated -+ # with loading, using, modifying and/or developing or reproducing the -+ # software by the user in light of its specific status of free software, -+ # that may mean that it is complicated to manipulate, and that also -+ # therefore means that it is reserved for developers and experienced -+ # professionals having in-depth computer knowledge. Users are therefore -+ # encouraged to load and test the software's suitability as regards their -+ # requirements in conditions enabling the security of their systems and/or -+ # data to be ensured and, more generally, to use and operate it in the -+ # same conditions as regards security. -+ # -+ # The fact that you are presently reading this means that you have had -+ # knowledge of the CeCILL and CeCILL-C licenses and that you accept its terms. -+ # -+*/ -+ -+// Set version number of the library. -+#ifndef cimg_version -+#define cimg_version 221 -+ -+/*----------------------------------------------------------- -+ # -+ # Test and possibly auto-set CImg configuration variables -+ # and include required headers. -+ # -+ # If you find that the default configuration variables are -+ # not adapted to your system, you can override their values -+ # before including the header file "CImg.h" -+ # (use the #define directive). -+ # -+ ------------------------------------------------------------*/ -+ -+// Include standard C++ headers. -+// This is the minimal set of required headers to make CImg-based codes compile. -+#include <cstdio> -+#include <cstdlib> -+#include <cstdarg> -+#include <cstring> -+#include <cmath> -+#include <cfloat> -+#include <climits> -+#include <ctime> -+#include <exception> -+#include <algorithm> -+ -+// Detect/configure OS variables. -+// -+// Define 'cimg_OS' to: '0' for an unknown OS (will try to minize library dependencies). -+// '1' for a Unix-like OS (Linux, Solaris, BSD, MacOSX, Irix, ...). -+// '2' for Microsoft Windows. -+// (auto-detection is performed if 'cimg_OS' is not set by the user). -+#ifndef cimg_OS -+#if defined(unix) || defined(__unix) || defined(__unix__) \ -+ || defined(linux) || defined(__linux) || defined(__linux__) \ -+ || defined(sun) || defined(__sun) \ -+ || defined(BSD) || defined(__OpenBSD__) || defined(__NetBSD__) \ -+ || defined(__FreeBSD__) || defined (__DragonFly__) \ -+ || defined(sgi) || defined(__sgi) \ -+ || defined(__MACOSX__) || defined(__APPLE__) \ -+ || defined(__CYGWIN__) -+#define cimg_OS 1 -+#elif defined(_MSC_VER) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) \ -+ || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) -+#define cimg_OS 2 -+#else -+#define cimg_OS 0 -+#endif -+#elif !(cimg_OS==0 || cimg_OS==1 || cimg_OS==2) -+#error CImg Library: Invalid configuration variable 'cimg_OS'. -+#error (correct values are '0 = unknown OS', '1 = Unix-like OS', '2 = Microsoft Windows'). -+#endif -+#ifndef cimg_date -+#define cimg_date __DATE__ -+#endif -+#ifndef cimg_time -+#define cimg_time __TIME__ -+#endif -+ -+// Disable silly warnings on some Microsoft VC++ compilers. -+#ifdef _MSC_VER -+#pragma warning(push) -+#pragma warning(disable:4127) -+#pragma warning(disable:4244) -+#pragma warning(disable:4311) -+#pragma warning(disable:4312) -+#pragma warning(disable:4319) -+#pragma warning(disable:4512) -+#pragma warning(disable:4571) -+#pragma warning(disable:4640) -+#pragma warning(disable:4706) -+#pragma warning(disable:4710) -+#pragma warning(disable:4800) -+#pragma warning(disable:4804) -+#pragma warning(disable:4820) -+#pragma warning(disable:4996) -+ -+#ifndef _CRT_SECURE_NO_DEPRECATE -+#define _CRT_SECURE_NO_DEPRECATE 1 -+#endif -+#ifndef _CRT_SECURE_NO_WARNINGS -+#define _CRT_SECURE_NO_WARNINGS 1 -+#endif -+#ifndef _CRT_NONSTDC_NO_DEPRECATE -+#define _CRT_NONSTDC_NO_DEPRECATE 1 -+#endif -+#endif -+ -+// Define correct string functions for each compiler and OS. -+#if cimg_OS==2 && defined(_MSC_VER) -+#define cimg_sscanf std::sscanf -+#define cimg_sprintf std::sprintf -+#define cimg_snprintf cimg::_snprintf -+#define cimg_vsnprintf cimg::_vsnprintf -+#else -+#include <stdio.h> -+#if defined(__MACOSX__) || defined(__APPLE__) -+#define cimg_sscanf cimg::_sscanf -+#define cimg_sprintf cimg::_sprintf -+#define cimg_snprintf cimg::_snprintf -+#define cimg_vsnprintf cimg::_vsnprintf -+#else -+#define cimg_sscanf std::sscanf -+#define cimg_sprintf std::sprintf -+#define cimg_snprintf snprintf -+#define cimg_vsnprintf vsnprintf -+#endif -+#endif -+ -+// Include OS-specific headers. -+#if cimg_OS==1 -+#include <sys/types.h> -+#include <sys/time.h> -+#include <sys/stat.h> -+#include <unistd.h> -+#include <dirent.h> -+#include <fnmatch.h> -+#elif cimg_OS==2 -+#ifndef std_fopen -+#define std_fopen cimg::win_fopen -+#endif -+#ifndef NOMINMAX -+#define NOMINMAX -+#endif -+#ifndef WIN32_LEAN_AND_MEAN -+#define WIN32_LEAN_AND_MEAN -+#endif -+#include <windows.h> -+#ifndef _WIN32_IE -+#define _WIN32_IE 0x0400 -+#endif -+#include <shlobj.h> -+#include <process.h> -+#include <io.h> -+#endif -+ -+// Look for C++11 features. -+#ifndef cimg_use_cpp11 -+#if __cplusplus>201100 -+#define cimg_use_cpp11 1 -+#else -+#define cimg_use_cpp11 0 -+#endif -+#endif -+#if cimg_use_cpp11==1 -+#include <initializer_list> -+#include <utility> -+#endif -+ -+// Convenient macro to define pragma -+#ifdef _MSC_VER -+#define cimg_pragma(x) __pragma(x) -+#else -+#define cimg_pragma(x) _Pragma(#x) -+#endif -+ -+// Define own types 'cimg_long/ulong' and 'cimg_int64/uint64' to ensure portability. -+// ( constrained to 'sizeof(cimg_ulong/cimg_long) = sizeof(void*)' and 'sizeof(cimg_int64/cimg_uint64)=8' ). -+#if cimg_OS==2 -+ -+#define cimg_uint64 unsigned __int64 -+#define cimg_int64 __int64 -+#define cimg_ulong UINT_PTR -+#define cimg_long INT_PTR -+#ifdef _MSC_VER -+#define cimg_fuint64 "%I64u" -+#define cimg_fint64 "%I64d" -+#else -+#define cimg_fuint64 "%llu" -+#define cimg_fint64 "%lld" -+#endif -+ -+#else -+ -+#if UINTPTR_MAX==0xffffffff || defined(__arm__) || defined(_M_ARM) || ((ULONG_MAX)==(UINT_MAX)) -+#define cimg_uint64 unsigned long long -+#define cimg_int64 long long -+#define cimg_fuint64 "%llu" -+#define cimg_fint64 "%lld" -+#else -+#define cimg_uint64 unsigned long -+#define cimg_int64 long -+#define cimg_fuint64 "%lu" -+#define cimg_fint64 "%ld" -+#endif -+ -+#if defined(__arm__) || defined(_M_ARM) -+#define cimg_ulong unsigned long long -+#define cimg_long long long -+#else -+#define cimg_ulong unsigned long -+#define cimg_long long -+#endif -+ -+#endif -+ -+// Configure filename separator. -+// -+// Filename separator is set by default to '/', except for Windows where it is '\'. -+#ifndef cimg_file_separator -+#if cimg_OS==2 -+#define cimg_file_separator '\\' -+#else -+#define cimg_file_separator '/' -+#endif -+#endif -+ -+// Configure verbosity of output messages. -+// -+// Define 'cimg_verbosity' to: '0' to hide library messages (quiet mode). -+// '1' to output library messages on the console. -+// '2' to output library messages on a basic dialog window (default behavior). -+// '3' to do as '1' + add extra warnings (may slow down the code!). -+// '4' to do as '2' + add extra warnings (may slow down the code!). -+// -+// Define 'cimg_strict_warnings' to replace warning messages by exception throwns. -+// -+// Define 'cimg_use_vt100' to allow output of color messages on VT100-compatible terminals. -+#ifndef cimg_verbosity -+#if cimg_OS==2 -+#define cimg_verbosity 2 -+#else -+#define cimg_verbosity 1 -+#endif -+#elif !(cimg_verbosity==0 || cimg_verbosity==1 || cimg_verbosity==2 || cimg_verbosity==3 || cimg_verbosity==4) -+#error CImg Library: Configuration variable 'cimg_verbosity' is badly defined. -+#error (should be { 0=quiet | 1=console | 2=dialog | 3=console+warnings | 4=dialog+warnings }). -+#endif -+ -+// Configure display framework. -+// -+// Define 'cimg_display' to: '0' to disable display capabilities. -+// '1' to use the X-Window framework (X11). -+// '2' to use the Microsoft GDI32 framework. -+#ifndef cimg_display -+#if cimg_OS==0 -+#define cimg_display 0 -+#elif cimg_OS==1 -+#define cimg_display 1 -+#elif cimg_OS==2 -+#define cimg_display 2 -+#endif -+#elif !(cimg_display==0 || cimg_display==1 || cimg_display==2) -+#error CImg Library: Configuration variable 'cimg_display' is badly defined. -+#error (should be { 0=none | 1=X-Window (X11) | 2=Microsoft GDI32 }). -+#endif -+ -+// Configure the 'abort' signal handler (does nothing by default). -+// A typical signal handler can be defined in your own source like this: -+// #define cimg_abort_test if (is_abort) throw CImgAbortException("") -+// -+// where 'is_abort' is a boolean variable defined somewhere in your code and reachable in the method. -+// 'cimg_abort_test2' does the same but is called more often (in inner loops). -+#if defined(cimg_abort_test) && defined(cimg_use_openmp) -+ -+// Define abort macros to be used with OpenMP. -+#ifndef _cimg_abort_init_omp -+#define _cimg_abort_init_omp bool _cimg_abort_go_omp = true; cimg::unused(_cimg_abort_go_omp) -+#endif -+#ifndef _cimg_abort_try_omp -+#define _cimg_abort_try_omp if (_cimg_abort_go_omp) try -+#endif -+#ifndef _cimg_abort_catch_omp -+#define _cimg_abort_catch_omp catch (CImgAbortException&) { cimg_pragma(omp atomic) _cimg_abort_go_omp&=false; } -+#endif -+#ifdef cimg_abort_test2 -+#ifndef _cimg_abort_try_omp2 -+#define _cimg_abort_try_omp2 _cimg_abort_try_omp -+#endif -+#ifndef _cimg_abort_catch_omp2 -+#define _cimg_abort_catch_omp2 _cimg_abort_catch_omp -+#endif -+#ifndef _cimg_abort_catch_fill_omp -+#define _cimg_abort_catch_fill_omp \ -+ catch (CImgException& e) { cimg_pragma(omp critical(abort)) CImg<charT>::string(e._message).move_to(is_error); \ -+ cimg_pragma(omp atomic) _cimg_abort_go_omp&=false; } -+#endif -+#endif -+#endif -+ -+#ifndef _cimg_abort_init_omp -+#define _cimg_abort_init_omp -+#endif -+#ifndef _cimg_abort_try_omp -+#define _cimg_abort_try_omp -+#endif -+#ifndef _cimg_abort_catch_omp -+#define _cimg_abort_catch_omp -+#endif -+#ifndef _cimg_abort_try_omp2 -+#define _cimg_abort_try_omp2 -+#endif -+#ifndef _cimg_abort_catch_omp2 -+#define _cimg_abort_catch_omp2 -+#endif -+#ifndef _cimg_abort_catch_fill_omp -+#define _cimg_abort_catch_fill_omp -+#endif -+#ifndef cimg_abort_init -+#define cimg_abort_init -+#endif -+#ifndef cimg_abort_test -+#define cimg_abort_test -+#endif -+#ifndef cimg_abort_test2 -+#define cimg_abort_test2 -+#endif -+#ifndef std_fopen -+#define std_fopen std::fopen -+#endif -+ -+// Include display-specific headers. -+#if cimg_display==1 -+#include <X11/Xlib.h> -+#include <X11/Xutil.h> -+#include <X11/keysym.h> -+#include <pthread.h> -+#ifdef cimg_use_xshm -+#include <sys/ipc.h> -+#include <sys/shm.h> -+#include <X11/extensions/XShm.h> -+#endif -+#ifdef cimg_use_xrandr -+#include <X11/extensions/Xrandr.h> -+#endif -+#endif -+#ifndef cimg_appname -+#define cimg_appname "CImg" -+#endif -+ -+// Configure OpenMP support. -+// (http://www.openmp.org) -+// -+// Define 'cimg_use_openmp' to enable OpenMP support. -+// -+// OpenMP directives may be used in a (very) few CImg functions to get -+// advantages of multi-core CPUs. -+#ifdef cimg_use_openmp -+#include <omp.h> -+#define cimg_pragma_openmp(p) cimg_pragma(omp p) -+#else -+#define cimg_pragma_openmp(p) -+#endif -+ -+// Configure OpenCV support. -+// (http://opencv.willowgarage.com/wiki/) -+// -+// Define 'cimg_use_opencv' to enable OpenCV support. -+// -+// OpenCV library may be used to access images from cameras -+// (see method 'CImg<T>::load_camera()'). -+#ifdef cimg_use_opencv -+#ifdef True -+#undef True -+#define _cimg_redefine_True -+#endif -+#ifdef False -+#undef False -+#define _cimg_redefine_False -+#endif -+#include <cstddef> -+#include "cv.h" -+#include "highgui.h" -+#endif -+ -+// Configure LibPNG support. -+// (http://www.libpng.org) -+// -+// Define 'cimg_use_png' to enable LibPNG support. -+// -+// PNG library may be used to get a native support of '.png' files. -+// (see methods 'CImg<T>::{load,save}_png()'. -+#ifdef cimg_use_png -+extern "C" { -+#include "png.h" -+} -+#endif -+ -+// Configure LibJPEG support. -+// (http://en.wikipedia.org/wiki/Libjpeg) -+// -+// Define 'cimg_use_jpeg' to enable LibJPEG support. -+// -+// JPEG library may be used to get a native support of '.jpg' files. -+// (see methods 'CImg<T>::{load,save}_jpeg()'). -+#ifdef cimg_use_jpeg -+extern "C" { -+#include "jpeglib.h" -+#include "setjmp.h" -+} -+#endif -+ -+// Configure LibTIFF support. -+// (http://www.libtiff.org) -+// -+// Define 'cimg_use_tiff' to enable LibTIFF support. -+// -+// TIFF library may be used to get a native support of '.tif' files. -+// (see methods 'CImg[List]<T>::{load,save}_tiff()'). -+#ifdef cimg_use_tiff -+extern "C" { -+#define uint64 uint64_hack_ -+#define int64 int64_hack_ -+#include "tiffio.h" -+#undef uint64 -+#undef int64 -+} -+#endif -+ -+// Configure LibMINC2 support. -+// (http://en.wikibooks.org/wiki/MINC/Reference/MINC2.0_File_Format_Reference) -+// -+// Define 'cimg_use_minc2' to enable LibMINC2 support. -+// -+// MINC2 library may be used to get a native support of '.mnc' files. -+// (see methods 'CImg<T>::{load,save}_minc2()'). -+#ifdef cimg_use_minc2 -+#include "minc_io_simple_volume.h" -+#include "minc_1_simple.h" -+#include "minc_1_simple_rw.h" -+#endif -+ -+// Configure Zlib support. -+// (http://www.zlib.net) -+// -+// Define 'cimg_use_zlib' to enable Zlib support. -+// -+// Zlib library may be used to allow compressed data in '.cimgz' files -+// (see methods 'CImg[List]<T>::{load,save}_cimg()'). -+#ifdef cimg_use_zlib -+extern "C" { -+#include "zlib.h" -+} -+#endif -+ -+// Configure libcurl support. -+// (http://curl.haxx.se/libcurl/) -+// -+// Define 'cimg_use_curl' to enable libcurl support. -+// -+// Libcurl may be used to get a native support of file downloading from the network. -+// (see method 'cimg::load_network()'.) -+#ifdef cimg_use_curl -+#include "curl/curl.h" -+#endif -+ -+// Configure Magick++ support. -+// (http://www.imagemagick.org/Magick++) -+// -+// Define 'cimg_use_magick' to enable Magick++ support. -+// -+// Magick++ library may be used to get a native support of various image file formats. -+// (see methods 'CImg<T>::{load,save}()'). -+#ifdef cimg_use_magick -+#include "Magick++.h" -+#endif -+ -+// Configure FFTW3 support. -+// (http://www.fftw.org) -+// -+// Define 'cimg_use_fftw3' to enable libFFTW3 support. -+// -+// FFTW3 library may be used to efficiently compute the Fast Fourier Transform -+// of image data, without restriction on the image size. -+// (see method 'CImg[List]<T>::FFT()'). -+#ifdef cimg_use_fftw3 -+extern "C" { -+#include "fftw3.h" -+} -+#endif -+ -+// Configure LibBoard support. -+// (http://libboard.sourceforge.net/) -+// -+// Define 'cimg_use_board' to enable Board support. -+// -+// Board library may be used to draw 3d objects in vector-graphics canvas -+// that can be saved as '.ps' or '.svg' files afterwards. -+// (see method 'CImg<T>::draw_object3d()'). -+#ifdef cimg_use_board -+#include "Board.h" -+#endif -+ -+// Configure OpenEXR support. -+// (http://www.openexr.com/) -+// -+// Define 'cimg_use_openexr' to enable OpenEXR support. -+// -+// OpenEXR library may be used to get a native support of '.exr' files. -+// (see methods 'CImg<T>::{load,save}_exr()'). -+#ifdef cimg_use_openexr -+#include "ImfRgbaFile.h" -+#include "ImfInputFile.h" -+#include "ImfChannelList.h" -+#include "ImfMatrixAttribute.h" -+#include "ImfArray.h" -+#endif -+ -+// Configure TinyEXR support. -+// (https://github.com/syoyo/tinyexr) -+// -+// Define 'cimg_use_tinyexr' to enable TinyEXR support. -+// -+// TinyEXR is a small, single header-only library to load and save OpenEXR(.exr) images. -+#ifdef cimg_use_tinyexr -+#ifndef TINYEXR_IMPLEMENTATION -+#define TINYEXR_IMPLEMENTATION -+#endif -+#include "tinyexr.h" -+#endif -+ -+// Lapack configuration. -+// (http://www.netlib.org/lapack) -+// -+// Define 'cimg_use_lapack' to enable LAPACK support. -+// -+// Lapack library may be used in several CImg methods to speed up -+// matrix computations (eigenvalues, inverse, ...). -+#ifdef cimg_use_lapack -+extern "C" { -+ extern void sgetrf_(int*, int*, float*, int*, int*, int*); -+ extern void sgetri_(int*, float*, int*, int*, float*, int*, int*); -+ extern void sgetrs_(char*, int*, int*, float*, int*, int*, float*, int*, int*); -+ extern void sgesvd_(char*, char*, int*, int*, float*, int*, float*, float*, int*, float*, int*, float*, int*, int*); -+ extern void ssyev_(char*, char*, int*, float*, int*, float*, float*, int*, int*); -+ extern void dgetrf_(int*, int*, double*, int*, int*, int*); -+ extern void dgetri_(int*, double*, int*, int*, double*, int*, int*); -+ extern void dgetrs_(char*, int*, int*, double*, int*, int*, double*, int*, int*); -+ extern void dgesvd_(char*, char*, int*, int*, double*, int*, double*, double*, -+ int*, double*, int*, double*, int*, int*); -+ extern void dsyev_(char*, char*, int*, double*, int*, double*, double*, int*, int*); -+ extern void dgels_(char*, int*,int*,int*,double*,int*,double*,int*,double*,int*,int*); -+ extern void sgels_(char*, int*,int*,int*,float*,int*,float*,int*,float*,int*,int*); -+} -+#endif -+ -+// Check if min/max/PI macros are defined. -+// -+// CImg does not compile if macros 'min', 'max' or 'PI' are defined, -+// because it redefines functions min(), max() and const variable PI in the cimg:: namespace. -+// so it '#undef' these macros if necessary, and restore them to reasonable -+// values at the end of this file. -+#ifdef min -+#undef min -+#define _cimg_redefine_min -+#endif -+#ifdef max -+#undef max -+#define _cimg_redefine_max -+#endif -+#ifdef PI -+#undef PI -+#define _cimg_redefine_PI -+#endif -+ -+// Define 'cimg_library' namespace suffix. -+// -+// You may want to add a suffix to the 'cimg_library' namespace, for instance if you need to work -+// with several versions of the library at the same time. -+#ifdef cimg_namespace_suffix -+#define __cimg_library_suffixed(s) cimg_library_##s -+#define _cimg_library_suffixed(s) __cimg_library_suffixed(s) -+#define cimg_library_suffixed _cimg_library_suffixed(cimg_namespace_suffix) -+#else -+#define cimg_library_suffixed cimg_library -+#endif -+ -+/*------------------------------------------------------------------------------ -+ # -+ # Define user-friendly macros. -+ # -+ # These CImg macros are prefixed by 'cimg_' and can be used safely in your own -+ # code. They are useful to parse command line options, or to write image loops. -+ # -+ ------------------------------------------------------------------------------*/ -+ -+// Macros to define program usage, and retrieve command line arguments. -+#define cimg_usage(usage) cimg_library_suffixed::cimg::option((char*)0,argc,argv,(char*)0,usage,false) -+#define cimg_help(str) cimg_library_suffixed::cimg::option((char*)0,argc,argv,str,(char*)0) -+#define cimg_option(name,defaut,usage) cimg_library_suffixed::cimg::option(name,argc,argv,defaut,usage) -+ -+// Macros to define and manipulate local neighborhoods. -+#define CImg_2x2(I,T) T I[4]; \ -+ T& I##cc = I[0]; T& I##nc = I[1]; \ -+ T& I##cn = I[2]; T& I##nn = I[3]; \ -+ I##cc = I##nc = \ -+ I##cn = I##nn = 0 -+ -+#define CImg_3x3(I,T) T I[9]; \ -+ T& I##pp = I[0]; T& I##cp = I[1]; T& I##np = I[2]; \ -+ T& I##pc = I[3]; T& I##cc = I[4]; T& I##nc = I[5]; \ -+ T& I##pn = I[6]; T& I##cn = I[7]; T& I##nn = I[8]; \ -+ I##pp = I##cp = I##np = \ -+ I##pc = I##cc = I##nc = \ -+ I##pn = I##cn = I##nn = 0 -+ -+#define CImg_4x4(I,T) T I[16]; \ -+ T& I##pp = I[0]; T& I##cp = I[1]; T& I##np = I[2]; T& I##ap = I[3]; \ -+ T& I##pc = I[4]; T& I##cc = I[5]; T& I##nc = I[6]; T& I##ac = I[7]; \ -+ T& I##pn = I[8]; T& I##cn = I[9]; T& I##nn = I[10]; T& I##an = I[11]; \ -+ T& I##pa = I[12]; T& I##ca = I[13]; T& I##na = I[14]; T& I##aa = I[15]; \ -+ I##pp = I##cp = I##np = I##ap = \ -+ I##pc = I##cc = I##nc = I##ac = \ -+ I##pn = I##cn = I##nn = I##an = \ -+ I##pa = I##ca = I##na = I##aa = 0 -+ -+#define CImg_5x5(I,T) T I[25]; \ -+ T& I##bb = I[0]; T& I##pb = I[1]; T& I##cb = I[2]; T& I##nb = I[3]; T& I##ab = I[4]; \ -+ T& I##bp = I[5]; T& I##pp = I[6]; T& I##cp = I[7]; T& I##np = I[8]; T& I##ap = I[9]; \ -+ T& I##bc = I[10]; T& I##pc = I[11]; T& I##cc = I[12]; T& I##nc = I[13]; T& I##ac = I[14]; \ -+ T& I##bn = I[15]; T& I##pn = I[16]; T& I##cn = I[17]; T& I##nn = I[18]; T& I##an = I[19]; \ -+ T& I##ba = I[20]; T& I##pa = I[21]; T& I##ca = I[22]; T& I##na = I[23]; T& I##aa = I[24]; \ -+ I##bb = I##pb = I##cb = I##nb = I##ab = \ -+ I##bp = I##pp = I##cp = I##np = I##ap = \ -+ I##bc = I##pc = I##cc = I##nc = I##ac = \ -+ I##bn = I##pn = I##cn = I##nn = I##an = \ -+ I##ba = I##pa = I##ca = I##na = I##aa = 0 -+ -+#define CImg_2x2x2(I,T) T I[8]; \ -+ T& I##ccc = I[0]; T& I##ncc = I[1]; \ -+ T& I##cnc = I[2]; T& I##nnc = I[3]; \ -+ T& I##ccn = I[4]; T& I##ncn = I[5]; \ -+ T& I##cnn = I[6]; T& I##nnn = I[7]; \ -+ I##ccc = I##ncc = \ -+ I##cnc = I##nnc = \ -+ I##ccn = I##ncn = \ -+ I##cnn = I##nnn = 0 -+ -+#define CImg_3x3x3(I,T) T I[27]; \ -+ T& I##ppp = I[0]; T& I##cpp = I[1]; T& I##npp = I[2]; \ -+ T& I##pcp = I[3]; T& I##ccp = I[4]; T& I##ncp = I[5]; \ -+ T& I##pnp = I[6]; T& I##cnp = I[7]; T& I##nnp = I[8]; \ -+ T& I##ppc = I[9]; T& I##cpc = I[10]; T& I##npc = I[11]; \ -+ T& I##pcc = I[12]; T& I##ccc = I[13]; T& I##ncc = I[14]; \ -+ T& I##pnc = I[15]; T& I##cnc = I[16]; T& I##nnc = I[17]; \ -+ T& I##ppn = I[18]; T& I##cpn = I[19]; T& I##npn = I[20]; \ -+ T& I##pcn = I[21]; T& I##ccn = I[22]; T& I##ncn = I[23]; \ -+ T& I##pnn = I[24]; T& I##cnn = I[25]; T& I##nnn = I[26]; \ -+ I##ppp = I##cpp = I##npp = \ -+ I##pcp = I##ccp = I##ncp = \ -+ I##pnp = I##cnp = I##nnp = \ -+ I##ppc = I##cpc = I##npc = \ -+ I##pcc = I##ccc = I##ncc = \ -+ I##pnc = I##cnc = I##nnc = \ -+ I##ppn = I##cpn = I##npn = \ -+ I##pcn = I##ccn = I##ncn = \ -+ I##pnn = I##cnn = I##nnn = 0 -+ -+#define cimg_get2x2(img,x,y,z,c,I,T) \ -+ I[0] = (T)(img)(x,y,z,c), I[1] = (T)(img)(_n1##x,y,z,c), I[2] = (T)(img)(x,_n1##y,z,c), \ -+ I[3] = (T)(img)(_n1##x,_n1##y,z,c) -+ -+#define cimg_get3x3(img,x,y,z,c,I,T) \ -+ I[0] = (T)(img)(_p1##x,_p1##y,z,c), I[1] = (T)(img)(x,_p1##y,z,c), I[2] = (T)(img)(_n1##x,_p1##y,z,c), \ -+ I[3] = (T)(img)(_p1##x,y,z,c), I[4] = (T)(img)(x,y,z,c), I[5] = (T)(img)(_n1##x,y,z,c), \ -+ I[6] = (T)(img)(_p1##x,_n1##y,z,c), I[7] = (T)(img)(x,_n1##y,z,c), I[8] = (T)(img)(_n1##x,_n1##y,z,c) -+ -+#define cimg_get4x4(img,x,y,z,c,I,T) \ -+ I[0] = (T)(img)(_p1##x,_p1##y,z,c), I[1] = (T)(img)(x,_p1##y,z,c), I[2] = (T)(img)(_n1##x,_p1##y,z,c), \ -+ I[3] = (T)(img)(_n2##x,_p1##y,z,c), I[4] = (T)(img)(_p1##x,y,z,c), I[5] = (T)(img)(x,y,z,c), \ -+ I[6] = (T)(img)(_n1##x,y,z,c), I[7] = (T)(img)(_n2##x,y,z,c), I[8] = (T)(img)(_p1##x,_n1##y,z,c), \ -+ I[9] = (T)(img)(x,_n1##y,z,c), I[10] = (T)(img)(_n1##x,_n1##y,z,c), I[11] = (T)(img)(_n2##x,_n1##y,z,c), \ -+ I[12] = (T)(img)(_p1##x,_n2##y,z,c), I[13] = (T)(img)(x,_n2##y,z,c), I[14] = (T)(img)(_n1##x,_n2##y,z,c), \ -+ I[15] = (T)(img)(_n2##x,_n2##y,z,c) -+ -+#define cimg_get5x5(img,x,y,z,c,I,T) \ -+ I[0] = (T)(img)(_p2##x,_p2##y,z,c), I[1] = (T)(img)(_p1##x,_p2##y,z,c), I[2] = (T)(img)(x,_p2##y,z,c), \ -+ I[3] = (T)(img)(_n1##x,_p2##y,z,c), I[4] = (T)(img)(_n2##x,_p2##y,z,c), I[5] = (T)(img)(_p2##x,_p1##y,z,c), \ -+ I[6] = (T)(img)(_p1##x,_p1##y,z,c), I[7] = (T)(img)(x,_p1##y,z,c), I[8] = (T)(img)(_n1##x,_p1##y,z,c), \ -+ I[9] = (T)(img)(_n2##x,_p1##y,z,c), I[10] = (T)(img)(_p2##x,y,z,c), I[11] = (T)(img)(_p1##x,y,z,c), \ -+ I[12] = (T)(img)(x,y,z,c), I[13] = (T)(img)(_n1##x,y,z,c), I[14] = (T)(img)(_n2##x,y,z,c), \ -+ I[15] = (T)(img)(_p2##x,_n1##y,z,c), I[16] = (T)(img)(_p1##x,_n1##y,z,c), I[17] = (T)(img)(x,_n1##y,z,c), \ -+ I[18] = (T)(img)(_n1##x,_n1##y,z,c), I[19] = (T)(img)(_n2##x,_n1##y,z,c), I[20] = (T)(img)(_p2##x,_n2##y,z,c), \ -+ I[21] = (T)(img)(_p1##x,_n2##y,z,c), I[22] = (T)(img)(x,_n2##y,z,c), I[23] = (T)(img)(_n1##x,_n2##y,z,c), \ -+ I[24] = (T)(img)(_n2##x,_n2##y,z,c) -+ -+#define cimg_get6x6(img,x,y,z,c,I,T) \ -+ I[0] = (T)(img)(_p2##x,_p2##y,z,c), I[1] = (T)(img)(_p1##x,_p2##y,z,c), I[2] = (T)(img)(x,_p2##y,z,c), \ -+ I[3] = (T)(img)(_n1##x,_p2##y,z,c), I[4] = (T)(img)(_n2##x,_p2##y,z,c), I[5] = (T)(img)(_n3##x,_p2##y,z,c), \ -+ I[6] = (T)(img)(_p2##x,_p1##y,z,c), I[7] = (T)(img)(_p1##x,_p1##y,z,c), I[8] = (T)(img)(x,_p1##y,z,c), \ -+ I[9] = (T)(img)(_n1##x,_p1##y,z,c), I[10] = (T)(img)(_n2##x,_p1##y,z,c), I[11] = (T)(img)(_n3##x,_p1##y,z,c), \ -+ I[12] = (T)(img)(_p2##x,y,z,c), I[13] = (T)(img)(_p1##x,y,z,c), I[14] = (T)(img)(x,y,z,c), \ -+ I[15] = (T)(img)(_n1##x,y,z,c), I[16] = (T)(img)(_n2##x,y,z,c), I[17] = (T)(img)(_n3##x,y,z,c), \ -+ I[18] = (T)(img)(_p2##x,_n1##y,z,c), I[19] = (T)(img)(_p1##x,_n1##y,z,c), I[20] = (T)(img)(x,_n1##y,z,c), \ -+ I[21] = (T)(img)(_n1##x,_n1##y,z,c), I[22] = (T)(img)(_n2##x,_n1##y,z,c), I[23] = (T)(img)(_n3##x,_n1##y,z,c), \ -+ I[24] = (T)(img)(_p2##x,_n2##y,z,c), I[25] = (T)(img)(_p1##x,_n2##y,z,c), I[26] = (T)(img)(x,_n2##y,z,c), \ -+ I[27] = (T)(img)(_n1##x,_n2##y,z,c), I[28] = (T)(img)(_n2##x,_n2##y,z,c), I[29] = (T)(img)(_n3##x,_n2##y,z,c), \ -+ I[30] = (T)(img)(_p2##x,_n3##y,z,c), I[31] = (T)(img)(_p1##x,_n3##y,z,c), I[32] = (T)(img)(x,_n3##y,z,c), \ -+ I[33] = (T)(img)(_n1##x,_n3##y,z,c), I[34] = (T)(img)(_n2##x,_n3##y,z,c), I[35] = (T)(img)(_n3##x,_n3##y,z,c) -+ -+#define cimg_get7x7(img,x,y,z,c,I,T) \ -+ I[0] = (T)(img)(_p3##x,_p3##y,z,c), I[1] = (T)(img)(_p2##x,_p3##y,z,c), I[2] = (T)(img)(_p1##x,_p3##y,z,c), \ -+ I[3] = (T)(img)(x,_p3##y,z,c), I[4] = (T)(img)(_n1##x,_p3##y,z,c), I[5] = (T)(img)(_n2##x,_p3##y,z,c), \ -+ I[6] = (T)(img)(_n3##x,_p3##y,z,c), I[7] = (T)(img)(_p3##x,_p2##y,z,c), I[8] = (T)(img)(_p2##x,_p2##y,z,c), \ -+ I[9] = (T)(img)(_p1##x,_p2##y,z,c), I[10] = (T)(img)(x,_p2##y,z,c), I[11] = (T)(img)(_n1##x,_p2##y,z,c), \ -+ I[12] = (T)(img)(_n2##x,_p2##y,z,c), I[13] = (T)(img)(_n3##x,_p2##y,z,c), I[14] = (T)(img)(_p3##x,_p1##y,z,c), \ -+ I[15] = (T)(img)(_p2##x,_p1##y,z,c), I[16] = (T)(img)(_p1##x,_p1##y,z,c), I[17] = (T)(img)(x,_p1##y,z,c), \ -+ I[18] = (T)(img)(_n1##x,_p1##y,z,c), I[19] = (T)(img)(_n2##x,_p1##y,z,c), I[20] = (T)(img)(_n3##x,_p1##y,z,c), \ -+ I[21] = (T)(img)(_p3##x,y,z,c), I[22] = (T)(img)(_p2##x,y,z,c), I[23] = (T)(img)(_p1##x,y,z,c), \ -+ I[24] = (T)(img)(x,y,z,c), I[25] = (T)(img)(_n1##x,y,z,c), I[26] = (T)(img)(_n2##x,y,z,c), \ -+ I[27] = (T)(img)(_n3##x,y,z,c), I[28] = (T)(img)(_p3##x,_n1##y,z,c), I[29] = (T)(img)(_p2##x,_n1##y,z,c), \ -+ I[30] = (T)(img)(_p1##x,_n1##y,z,c), I[31] = (T)(img)(x,_n1##y,z,c), I[32] = (T)(img)(_n1##x,_n1##y,z,c), \ -+ I[33] = (T)(img)(_n2##x,_n1##y,z,c), I[34] = (T)(img)(_n3##x,_n1##y,z,c), I[35] = (T)(img)(_p3##x,_n2##y,z,c), \ -+ I[36] = (T)(img)(_p2##x,_n2##y,z,c), I[37] = (T)(img)(_p1##x,_n2##y,z,c), I[38] = (T)(img)(x,_n2##y,z,c), \ -+ I[39] = (T)(img)(_n1##x,_n2##y,z,c), I[40] = (T)(img)(_n2##x,_n2##y,z,c), I[41] = (T)(img)(_n3##x,_n2##y,z,c), \ -+ I[42] = (T)(img)(_p3##x,_n3##y,z,c), I[43] = (T)(img)(_p2##x,_n3##y,z,c), I[44] = (T)(img)(_p1##x,_n3##y,z,c), \ -+ I[45] = (T)(img)(x,_n3##y,z,c), I[46] = (T)(img)(_n1##x,_n3##y,z,c), I[47] = (T)(img)(_n2##x,_n3##y,z,c), \ -+ I[48] = (T)(img)(_n3##x,_n3##y,z,c) -+ -+#define cimg_get8x8(img,x,y,z,c,I,T) \ -+ I[0] = (T)(img)(_p3##x,_p3##y,z,c), I[1] = (T)(img)(_p2##x,_p3##y,z,c), I[2] = (T)(img)(_p1##x,_p3##y,z,c), \ -+ I[3] = (T)(img)(x,_p3##y,z,c), I[4] = (T)(img)(_n1##x,_p3##y,z,c), I[5] = (T)(img)(_n2##x,_p3##y,z,c), \ -+ I[6] = (T)(img)(_n3##x,_p3##y,z,c), I[7] = (T)(img)(_n4##x,_p3##y,z,c), I[8] = (T)(img)(_p3##x,_p2##y,z,c), \ -+ I[9] = (T)(img)(_p2##x,_p2##y,z,c), I[10] = (T)(img)(_p1##x,_p2##y,z,c), I[11] = (T)(img)(x,_p2##y,z,c), \ -+ I[12] = (T)(img)(_n1##x,_p2##y,z,c), I[13] = (T)(img)(_n2##x,_p2##y,z,c), I[14] = (T)(img)(_n3##x,_p2##y,z,c), \ -+ I[15] = (T)(img)(_n4##x,_p2##y,z,c), I[16] = (T)(img)(_p3##x,_p1##y,z,c), I[17] = (T)(img)(_p2##x,_p1##y,z,c), \ -+ I[18] = (T)(img)(_p1##x,_p1##y,z,c), I[19] = (T)(img)(x,_p1##y,z,c), I[20] = (T)(img)(_n1##x,_p1##y,z,c), \ -+ I[21] = (T)(img)(_n2##x,_p1##y,z,c), I[22] = (T)(img)(_n3##x,_p1##y,z,c), I[23] = (T)(img)(_n4##x,_p1##y,z,c), \ -+ I[24] = (T)(img)(_p3##x,y,z,c), I[25] = (T)(img)(_p2##x,y,z,c), I[26] = (T)(img)(_p1##x,y,z,c), \ -+ I[27] = (T)(img)(x,y,z,c), I[28] = (T)(img)(_n1##x,y,z,c), I[29] = (T)(img)(_n2##x,y,z,c), \ -+ I[30] = (T)(img)(_n3##x,y,z,c), I[31] = (T)(img)(_n4##x,y,z,c), I[32] = (T)(img)(_p3##x,_n1##y,z,c), \ -+ I[33] = (T)(img)(_p2##x,_n1##y,z,c), I[34] = (T)(img)(_p1##x,_n1##y,z,c), I[35] = (T)(img)(x,_n1##y,z,c), \ -+ I[36] = (T)(img)(_n1##x,_n1##y,z,c), I[37] = (T)(img)(_n2##x,_n1##y,z,c), I[38] = (T)(img)(_n3##x,_n1##y,z,c), \ -+ I[39] = (T)(img)(_n4##x,_n1##y,z,c), I[40] = (T)(img)(_p3##x,_n2##y,z,c), I[41] = (T)(img)(_p2##x,_n2##y,z,c), \ -+ I[42] = (T)(img)(_p1##x,_n2##y,z,c), I[43] = (T)(img)(x,_n2##y,z,c), I[44] = (T)(img)(_n1##x,_n2##y,z,c), \ -+ I[45] = (T)(img)(_n2##x,_n2##y,z,c), I[46] = (T)(img)(_n3##x,_n2##y,z,c), I[47] = (T)(img)(_n4##x,_n2##y,z,c), \ -+ I[48] = (T)(img)(_p3##x,_n3##y,z,c), I[49] = (T)(img)(_p2##x,_n3##y,z,c), I[50] = (T)(img)(_p1##x,_n3##y,z,c), \ -+ I[51] = (T)(img)(x,_n3##y,z,c), I[52] = (T)(img)(_n1##x,_n3##y,z,c), I[53] = (T)(img)(_n2##x,_n3##y,z,c), \ -+ I[54] = (T)(img)(_n3##x,_n3##y,z,c), I[55] = (T)(img)(_n4##x,_n3##y,z,c), I[56] = (T)(img)(_p3##x,_n4##y,z,c), \ -+ I[57] = (T)(img)(_p2##x,_n4##y,z,c), I[58] = (T)(img)(_p1##x,_n4##y,z,c), I[59] = (T)(img)(x,_n4##y,z,c), \ -+ I[60] = (T)(img)(_n1##x,_n4##y,z,c), I[61] = (T)(img)(_n2##x,_n4##y,z,c), I[62] = (T)(img)(_n3##x,_n4##y,z,c), \ -+ I[63] = (T)(img)(_n4##x,_n4##y,z,c); -+ -+#define cimg_get9x9(img,x,y,z,c,I,T) \ -+ I[0] = (T)(img)(_p4##x,_p4##y,z,c), I[1] = (T)(img)(_p3##x,_p4##y,z,c), I[2] = (T)(img)(_p2##x,_p4##y,z,c), \ -+ I[3] = (T)(img)(_p1##x,_p4##y,z,c), I[4] = (T)(img)(x,_p4##y,z,c), I[5] = (T)(img)(_n1##x,_p4##y,z,c), \ -+ I[6] = (T)(img)(_n2##x,_p4##y,z,c), I[7] = (T)(img)(_n3##x,_p4##y,z,c), I[8] = (T)(img)(_n4##x,_p4##y,z,c), \ -+ I[9] = (T)(img)(_p4##x,_p3##y,z,c), I[10] = (T)(img)(_p3##x,_p3##y,z,c), I[11] = (T)(img)(_p2##x,_p3##y,z,c), \ -+ I[12] = (T)(img)(_p1##x,_p3##y,z,c), I[13] = (T)(img)(x,_p3##y,z,c), I[14] = (T)(img)(_n1##x,_p3##y,z,c), \ -+ I[15] = (T)(img)(_n2##x,_p3##y,z,c), I[16] = (T)(img)(_n3##x,_p3##y,z,c), I[17] = (T)(img)(_n4##x,_p3##y,z,c), \ -+ I[18] = (T)(img)(_p4##x,_p2##y,z,c), I[19] = (T)(img)(_p3##x,_p2##y,z,c), I[20] = (T)(img)(_p2##x,_p2##y,z,c), \ -+ I[21] = (T)(img)(_p1##x,_p2##y,z,c), I[22] = (T)(img)(x,_p2##y,z,c), I[23] = (T)(img)(_n1##x,_p2##y,z,c), \ -+ I[24] = (T)(img)(_n2##x,_p2##y,z,c), I[25] = (T)(img)(_n3##x,_p2##y,z,c), I[26] = (T)(img)(_n4##x,_p2##y,z,c), \ -+ I[27] = (T)(img)(_p4##x,_p1##y,z,c), I[28] = (T)(img)(_p3##x,_p1##y,z,c), I[29] = (T)(img)(_p2##x,_p1##y,z,c), \ -+ I[30] = (T)(img)(_p1##x,_p1##y,z,c), I[31] = (T)(img)(x,_p1##y,z,c), I[32] = (T)(img)(_n1##x,_p1##y,z,c), \ -+ I[33] = (T)(img)(_n2##x,_p1##y,z,c), I[34] = (T)(img)(_n3##x,_p1##y,z,c), I[35] = (T)(img)(_n4##x,_p1##y,z,c), \ -+ I[36] = (T)(img)(_p4##x,y,z,c), I[37] = (T)(img)(_p3##x,y,z,c), I[38] = (T)(img)(_p2##x,y,z,c), \ -+ I[39] = (T)(img)(_p1##x,y,z,c), I[40] = (T)(img)(x,y,z,c), I[41] = (T)(img)(_n1##x,y,z,c), \ -+ I[42] = (T)(img)(_n2##x,y,z,c), I[43] = (T)(img)(_n3##x,y,z,c), I[44] = (T)(img)(_n4##x,y,z,c), \ -+ I[45] = (T)(img)(_p4##x,_n1##y,z,c), I[46] = (T)(img)(_p3##x,_n1##y,z,c), I[47] = (T)(img)(_p2##x,_n1##y,z,c), \ -+ I[48] = (T)(img)(_p1##x,_n1##y,z,c), I[49] = (T)(img)(x,_n1##y,z,c), I[50] = (T)(img)(_n1##x,_n1##y,z,c), \ -+ I[51] = (T)(img)(_n2##x,_n1##y,z,c), I[52] = (T)(img)(_n3##x,_n1##y,z,c), I[53] = (T)(img)(_n4##x,_n1##y,z,c), \ -+ I[54] = (T)(img)(_p4##x,_n2##y,z,c), I[55] = (T)(img)(_p3##x,_n2##y,z,c), I[56] = (T)(img)(_p2##x,_n2##y,z,c), \ -+ I[57] = (T)(img)(_p1##x,_n2##y,z,c), I[58] = (T)(img)(x,_n2##y,z,c), I[59] = (T)(img)(_n1##x,_n2##y,z,c), \ -+ I[60] = (T)(img)(_n2##x,_n2##y,z,c), I[61] = (T)(img)(_n3##x,_n2##y,z,c), I[62] = (T)(img)(_n4##x,_n2##y,z,c), \ -+ I[63] = (T)(img)(_p4##x,_n3##y,z,c), I[64] = (T)(img)(_p3##x,_n3##y,z,c), I[65] = (T)(img)(_p2##x,_n3##y,z,c), \ -+ I[66] = (T)(img)(_p1##x,_n3##y,z,c), I[67] = (T)(img)(x,_n3##y,z,c), I[68] = (T)(img)(_n1##x,_n3##y,z,c), \ -+ I[69] = (T)(img)(_n2##x,_n3##y,z,c), I[70] = (T)(img)(_n3##x,_n3##y,z,c), I[71] = (T)(img)(_n4##x,_n3##y,z,c), \ -+ I[72] = (T)(img)(_p4##x,_n4##y,z,c), I[73] = (T)(img)(_p3##x,_n4##y,z,c), I[74] = (T)(img)(_p2##x,_n4##y,z,c), \ -+ I[75] = (T)(img)(_p1##x,_n4##y,z,c), I[76] = (T)(img)(x,_n4##y,z,c), I[77] = (T)(img)(_n1##x,_n4##y,z,c), \ -+ I[78] = (T)(img)(_n2##x,_n4##y,z,c), I[79] = (T)(img)(_n3##x,_n4##y,z,c), I[80] = (T)(img)(_n4##x,_n4##y,z,c) -+ -+#define cimg_get2x2x2(img,x,y,z,c,I,T) \ -+ I[0] = (T)(img)(x,y,z,c), I[1] = (T)(img)(_n1##x,y,z,c), I[2] = (T)(img)(x,_n1##y,z,c), \ -+ I[3] = (T)(img)(_n1##x,_n1##y,z,c), I[4] = (T)(img)(x,y,_n1##z,c), I[5] = (T)(img)(_n1##x,y,_n1##z,c), \ -+ I[6] = (T)(img)(x,_n1##y,_n1##z,c), I[7] = (T)(img)(_n1##x,_n1##y,_n1##z,c) -+ -+#define cimg_get3x3x3(img,x,y,z,c,I,T) \ -+ I[0] = (T)(img)(_p1##x,_p1##y,_p1##z,c), I[1] = (T)(img)(x,_p1##y,_p1##z,c), \ -+ I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c), I[3] = (T)(img)(_p1##x,y,_p1##z,c), I[4] = (T)(img)(x,y,_p1##z,c), \ -+ I[5] = (T)(img)(_n1##x,y,_p1##z,c), I[6] = (T)(img)(_p1##x,_n1##y,_p1##z,c), I[7] = (T)(img)(x,_n1##y,_p1##z,c), \ -+ I[8] = (T)(img)(_n1##x,_n1##y,_p1##z,c), I[9] = (T)(img)(_p1##x,_p1##y,z,c), I[10] = (T)(img)(x,_p1##y,z,c), \ -+ I[11] = (T)(img)(_n1##x,_p1##y,z,c), I[12] = (T)(img)(_p1##x,y,z,c), I[13] = (T)(img)(x,y,z,c), \ -+ I[14] = (T)(img)(_n1##x,y,z,c), I[15] = (T)(img)(_p1##x,_n1##y,z,c), I[16] = (T)(img)(x,_n1##y,z,c), \ -+ I[17] = (T)(img)(_n1##x,_n1##y,z,c), I[18] = (T)(img)(_p1##x,_p1##y,_n1##z,c), I[19] = (T)(img)(x,_p1##y,_n1##z,c), \ -+ I[20] = (T)(img)(_n1##x,_p1##y,_n1##z,c), I[21] = (T)(img)(_p1##x,y,_n1##z,c), I[22] = (T)(img)(x,y,_n1##z,c), \ -+ I[23] = (T)(img)(_n1##x,y,_n1##z,c), I[24] = (T)(img)(_p1##x,_n1##y,_n1##z,c), I[25] = (T)(img)(x,_n1##y,_n1##z,c), \ -+ I[26] = (T)(img)(_n1##x,_n1##y,_n1##z,c) -+ -+// Macros to perform various image loops. -+// -+// These macros are simpler to use than loops with C++ iterators. -+#define cimg_for(img,ptrs,T_ptrs) \ -+ for (T_ptrs *ptrs = (img)._data, *_max##ptrs = (img)._data + (img).size(); ptrs<_max##ptrs; ++ptrs) -+#define cimg_rof(img,ptrs,T_ptrs) for (T_ptrs *ptrs = (img)._data + (img).size() - 1; ptrs>=(img)._data; --ptrs) -+#define cimg_foroff(img,off) for (cimg_ulong off = 0, _max##off = (img).size(); off<_max##off; ++off) -+ -+#define cimg_for1(bound,i) for (int i = 0; i<(int)(bound); ++i) -+#define cimg_forX(img,x) cimg_for1((img)._width,x) -+#define cimg_forY(img,y) cimg_for1((img)._height,y) -+#define cimg_forZ(img,z) cimg_for1((img)._depth,z) -+#define cimg_forC(img,c) cimg_for1((img)._spectrum,c) -+#define cimg_forXY(img,x,y) cimg_forY(img,y) cimg_forX(img,x) -+#define cimg_forXZ(img,x,z) cimg_forZ(img,z) cimg_forX(img,x) -+#define cimg_forYZ(img,y,z) cimg_forZ(img,z) cimg_forY(img,y) -+#define cimg_forXC(img,x,c) cimg_forC(img,c) cimg_forX(img,x) -+#define cimg_forYC(img,y,c) cimg_forC(img,c) cimg_forY(img,y) -+#define cimg_forZC(img,z,c) cimg_forC(img,c) cimg_forZ(img,z) -+#define cimg_forXYZ(img,x,y,z) cimg_forZ(img,z) cimg_forXY(img,x,y) -+#define cimg_forXYC(img,x,y,c) cimg_forC(img,c) cimg_forXY(img,x,y) -+#define cimg_forXZC(img,x,z,c) cimg_forC(img,c) cimg_forXZ(img,x,z) -+#define cimg_forYZC(img,y,z,c) cimg_forC(img,c) cimg_forYZ(img,y,z) -+#define cimg_forXYZC(img,x,y,z,c) cimg_forC(img,c) cimg_forXYZ(img,x,y,z) -+ -+#define cimg_rof1(bound,i) for (int i = (int)(bound) - 1; i>=0; --i) -+#define cimg_rofX(img,x) cimg_rof1((img)._width,x) -+#define cimg_rofY(img,y) cimg_rof1((img)._height,y) -+#define cimg_rofZ(img,z) cimg_rof1((img)._depth,z) -+#define cimg_rofC(img,c) cimg_rof1((img)._spectrum,c) -+#define cimg_rofXY(img,x,y) cimg_rofY(img,y) cimg_rofX(img,x) -+#define cimg_rofXZ(img,x,z) cimg_rofZ(img,z) cimg_rofX(img,x) -+#define cimg_rofYZ(img,y,z) cimg_rofZ(img,z) cimg_rofY(img,y) -+#define cimg_rofXC(img,x,c) cimg_rofC(img,c) cimg_rofX(img,x) -+#define cimg_rofYC(img,y,c) cimg_rofC(img,c) cimg_rofY(img,y) -+#define cimg_rofZC(img,z,c) cimg_rofC(img,c) cimg_rofZ(img,z) -+#define cimg_rofXYZ(img,x,y,z) cimg_rofZ(img,z) cimg_rofXY(img,x,y) -+#define cimg_rofXYC(img,x,y,c) cimg_rofC(img,c) cimg_rofXY(img,x,y) -+#define cimg_rofXZC(img,x,z,c) cimg_rofC(img,c) cimg_rofXZ(img,x,z) -+#define cimg_rofYZC(img,y,z,c) cimg_rofC(img,c) cimg_rofYZ(img,y,z) -+#define cimg_rofXYZC(img,x,y,z,c) cimg_rofC(img,c) cimg_rofXYZ(img,x,y,z) -+ -+#define cimg_for_in1(bound,i0,i1,i) \ -+ for (int i = (int)(i0)<0?0:(int)(i0), _max##i = (int)(i1)<(int)(bound)?(int)(i1):(int)(bound) - 1; i<=_max##i; ++i) -+#define cimg_for_inX(img,x0,x1,x) cimg_for_in1((img)._width,x0,x1,x) -+#define cimg_for_inY(img,y0,y1,y) cimg_for_in1((img)._height,y0,y1,y) -+#define cimg_for_inZ(img,z0,z1,z) cimg_for_in1((img)._depth,z0,z1,z) -+#define cimg_for_inC(img,c0,c1,c) cimg_for_in1((img)._spectrum,c0,c1,c) -+#define cimg_for_inXY(img,x0,y0,x1,y1,x,y) cimg_for_inY(img,y0,y1,y) cimg_for_inX(img,x0,x1,x) -+#define cimg_for_inXZ(img,x0,z0,x1,z1,x,z) cimg_for_inZ(img,z0,z1,z) cimg_for_inX(img,x0,x1,x) -+#define cimg_for_inXC(img,x0,c0,x1,c1,x,c) cimg_for_inC(img,c0,c1,c) cimg_for_inX(img,x0,x1,x) -+#define cimg_for_inYZ(img,y0,z0,y1,z1,y,z) cimg_for_inZ(img,x0,z1,z) cimg_for_inY(img,y0,y1,y) -+#define cimg_for_inYC(img,y0,c0,y1,c1,y,c) cimg_for_inC(img,c0,c1,c) cimg_for_inY(img,y0,y1,y) -+#define cimg_for_inZC(img,z0,c0,z1,c1,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inZ(img,z0,z1,z) -+#define cimg_for_inXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_inZ(img,z0,z1,z) cimg_for_inXY(img,x0,y0,x1,y1,x,y) -+#define cimg_for_inXYC(img,x0,y0,c0,x1,y1,c1,x,y,c) cimg_for_inC(img,c0,c1,c) cimg_for_inXY(img,x0,y0,x1,y1,x,y) -+#define cimg_for_inXZC(img,x0,z0,c0,x1,z1,c1,x,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inXZ(img,x0,z0,x1,z1,x,z) -+#define cimg_for_inYZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inYZ(img,y0,z0,y1,z1,y,z) -+#define cimg_for_inXYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ -+ cimg_for_inC(img,c0,c1,c) cimg_for_inXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) -+#define cimg_for_insideX(img,x,n) cimg_for_inX(img,n,(img)._width - 1 - (n),x) -+#define cimg_for_insideY(img,y,n) cimg_for_inY(img,n,(img)._height - 1 - (n),y) -+#define cimg_for_insideZ(img,z,n) cimg_for_inZ(img,n,(img)._depth - 1 - (n),z) -+#define cimg_for_insideC(img,c,n) cimg_for_inC(img,n,(img)._spectrum - 1 - (n),c) -+#define cimg_for_insideXY(img,x,y,n) cimg_for_inXY(img,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),x,y) *** 60779 LINES SKIPPED ***