PTdecode/CImg-1.3.0/CHANGES.txt

changeset 5
1204ebf9340d
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/PTdecode/CImg-1.3.0/CHANGES.txt	Mon Aug 03 14:09:20 2009 +0100
     1.3 @@ -0,0 +1,1067 @@
     1.4 +----------------------------------------------------------------------------------------
     1.5 +
     1.6 +
     1.7 + CHANGES.txt : List the changes made between consecutive versions of The CImg Library
     1.8 +
     1.9 +
    1.10 +-----------------------------------------------------------------------------------------
    1.11 +
    1.12 +*-----------------------------
    1.13 +*-----------------------------
    1.14 +* Changes from 1.2.9 to 1.3.0
    1.15 +*-----------------------------
    1.16 +*-----------------------------
    1.17 +
    1.18 +The 1.3.0 version of the CImg Library is a major release, and will probably break the
    1.19 +compatibility with your existing code. Anyway, the overall philosophy is the same so
    1.20 +converting your code should not require lot of work fortunately.
    1.21 +
    1.22 +* New features :
    1.23 +      - Added function 'CImg<T>::[get_]distance()' that compute the Euler unsigned distance map
    1.24 +        from a shape of specified isovalue in an image, using a fast linear algorithm.
    1.25 +      - Added functions 'CImg<>::set_linear_at{X,Y,Z}()' allowing to set pixel values using
    1.26 +        float-valued coordinates, with linear interpolation.
    1.27 +      - Added z-buffering capabilities in some drawing functions, so that displaying a
    1.28 +        3D object with 'CImg<T>::draw_object3d()' now takes care of eventual crossing primitives.
    1.29 +        (added shortcut CTRL+Z to enable/disable zbuffering in 'CImg<T>::display_object3d()'.
    1.30 +      - Added functions 'CImgList<T>::is_same*()' to check dimensions of image lists.
    1.31 +      - Added plugin 'plugins/skeleton.h', as well as example of use 'examples/skeletonize.cpp' that
    1.32 +        computes the skeleton of a shape (binary image). Thanks to F-X Dupé for this nice contrib !
    1.33 +      - Added function 'CImg<T>::get_elevation3d()' that constructs a 3D object by 'elevating'
    1.34 +        an instance image.
    1.35 +      - In function 'CImg<T>::sharpen()', two sharpening methods are now implemented : shock filters
    1.36 +        and inverse diffusion.
    1.37 +      - Added function 'CImg[List]<T>::save_ffmpeg()', allowing to save an image sequence, directly
    1.38 +        as a movie file, using the FFMPEG library. Thanks to David. G. Starweather for this very nice
    1.39 +        contribution !
    1.40 +      - Added function 'CImg<T>::[get_]warp()' that can warp an image using a deformation field.
    1.41 +      - Added function 'CImg<T>::[get_]solve_tridiagonal()' that can quickly solve a tridiagonal linear
    1.42 +        system of equations (use the Thomas Algorithm).
    1.43 +      - Added function 'CImg<T>::[get_]load_dcraw_external()' that allows to read RAW digital camera files,
    1.44 +        using the open-source external tool 'dcraw'.
    1.45 +      - Added file 'examples/CMakeLists.txt' to generate makefile using the 'cmake' tool (thanks to
    1.46 +        Baptiste Mougel for this nice contribution).
    1.47 +      - Added functions 'CImg<T>::display_graph()' and 'CImg<T>::select_graph()' that can be used
    1.48 +        to display a graph plot or crop a sub-graph.
    1.49 +      - Added function 'CImg<T>::[get_]autocrop()' that can autocrop an image regarding to a background
    1.50 +        value or color.
    1.51 +      - Added new demo 'Word Puzzle' in file 'examples/CImg_demo.cpp'.
    1.52 +      - Added new plugin 'plugins/cimgIPL.h', as well as example file 'examples/use_cimgIPL.h' that shows
    1.53 +        how to convert between CImg and IplImage structures (used in OpenCV). Thanks to  Haibo Zheng for
    1.54 +        this nice contribution !
    1.55 +      - Function 'CImg<T>::load_ffmpeg()' is now able to return information on the main video stream, without
    1.56 +        having to load frames.
    1.57 +      - New function 'CImg[List]<T>::valuestring()' returns a C-string containing values of the image pixels.
    1.58 +      - Added file 'examples/gmic4gimp.cpp' which implements a G'MIC plug-in for GIMP.
    1.59 +      - Added file 'resources/cimg_buildpackage' which is a bash script that generates package files for CImg.
    1.60 +      - Added function 'cimg::prand()' which returns a random variable following a Poisson distribution.
    1.61 +
    1.62 +* Optimizations / Modifications :
    1.63 +      - The API of the library has been quite largely modified. It means that the 1.3.0 release is
    1.64 +        not meant to be fully compatible with previous versions. This is the beginning of a new
    1.65 +        important branch.
    1.66 +      - Functions 'CImg[List]<T>::load()' can now check for magick numbers for determining file format
    1.67 +        (instead of using only their filename extension).
    1.68 +      - Cleaned lot of code in 'CImg<T>::draw_*()' functions. Few of them have now different signatures,
    1.69 +        particularly 'CImg<T>::draw_text()', 'CImg<T>::draw_spline()' and 'CImg<T>::draw_image()'.
    1.70 +      - Improved warning removal when compiling on Microsoft Visual C++ compiler. It is now very rare
    1.71 +        to get warnings when compiling CImg-based files !
    1.72 +      - Plugin 'plugins/distance_saito.h' has been removed, since a new and clean implementation of
    1.73 +        the distance function is now available in the 'CImg.h' file.
    1.74 +      - Function 'CImg<T>::equalize_histogram()' has been renamed to 'CImg<T>::equalize()'.
    1.75 +      - Functions 'CImg<T>::get_gradient()', 'CImg<T>::get_structure_tensor()' and 'CImg<T>::get_hessian()'
    1.76 +        now replaces the old versions.
    1.77 +      - Provided example file 'examples/inrcast.cpp' has been renamed and recoded as 'examples/gmic.cpp'.
    1.78 +        G'MIC is now an independant project, having its own web page : http://gmic.sourceforge.net/.
    1.79 +      - Plugin 'plugins/cimgmatlab.h' has been updated.
    1.80 +      - Added pipe support (for POSIX systems) in load/save functions using external tools, so that
    1.81 +        a temporary file is not necessary to read/write.
    1.82 +      - Function 'CImg<T>::load_analyze()' can now read niftii files directly using a FILE* argument.
    1.83 +      - Improved global structure of the CImg package.
    1.84 +      - Silent output for 'CImg<T>::{load_save}_ffmpeg_external()' on Windows.
    1.85 +      - Better zoom-in procedure in 'CImg<T>::display()'.
    1.86 +      - Function 'CImg<T>::get_hessian()' now allows to specify the set of desired axes.
    1.87 +      - Macros 'cimg_*_path' do not exist anymore. Instead, the user can dynamically change these paths used
    1.88 +        by CImg, by using functions' cimg::*_path()'.
    1.89 +      - Code corrections in order to compile without warnings on g++ 4.3 version.
    1.90 +      - Added 'windows' targets in the 'examples/Makefile', so compiling examples under MinGW is straightforward.
    1.91 +      - Added soft thresholding capability to 'CImg<T>::threshold()'.
    1.92 +
    1.93 +* Bug corrections :
    1.94 +      - Corrected bug related to X11 events on some Windows Managers, thanks to Rainer Steffens
    1.95 +        for his nice patch !
    1.96 +      - Corrected normalization bug that occured when doing inverse FFT of images, using libfftw3.
    1.97 +      - Corrected endianness problem when reading 16 bits PNM files.
    1.98 +      - Corrected small bug in 'CImg<T>::display()' : drawn coordinates were wrong when
    1.99 +        user had selected a region to zoom in.
   1.100 +      - Extension 'tiff' is now recognized in 'CImg<T>::load()'.
   1.101 +      - Corrected computation of variance (=0) when image has only one element.
   1.102 +      - Corrected y-range bug in 'CImg<T>::draw_ellipse()'.
   1.103 +      - Corrected bug in 'CImg<T>::save_pandore()' when saving int images on 64bits systems.
   1.104 +      - And many small bug corrections...
   1.105 +
   1.106 +*-----------------------------
   1.107 +*-----------------------------
   1.108 +* Changes from 1.2.8 to 1.2.9
   1.109 +*-----------------------------
   1.110 +*-----------------------------
   1.111 +
   1.112 +* New features :
   1.113 +      - Added new example file 'examples/captcha.cpp', which can be used to draw captcha images. This is a very
   1.114 +        short and simple code, so it can be interesting for a first approach of CImg.
   1.115 +      - Added functions 'CImg<T>::scale_2x()' and 'CImg<T>::scale_3x()' allowing to upscale an image
   1.116 +        with a edge-directed algorithm (see 'http://scale2x.sourceforge.net/')
   1.117 +      - Added function 'CImg<T>::save_cpp()' allowing to save an image directly as a
   1.118 +        C/C++ source code.
   1.119 +      - Added function 'CImg<T>::draw_mandelbrot()' allowing to draw quadratic mandelbrot fractal set on images.
   1.120 +      - Added a new demo effect 'Fish-Eye Magnification' in file 'examples/CImg_demo.cpp'.
   1.121 +      - Added new fields in CImgDisplay for an easy test of keys pressing. Very useful for testing complicated combinations.
   1.122 +      - Added functions to read/save gzipped files.
   1.123 +      - Added compression option for .cimg files (requires the use of the 'zlib' library).
   1.124 +      - Added color conversions for CMY and CMYK color bases.
   1.125 +
   1.126 +* Optimizations / Modifications :
   1.127 +      - Big code cleaning and re-organization in file 'CImg.h', making the things more clear.
   1.128 +      - Function 'CImg<T>::load_ascii()' has been modified to allow comments before specifying image
   1.129 +        dimensions.
   1.130 +      - Functions 'CImg[List]::print()' have been slightly modified to be more precise and clear. Also used
   1.131 +        in functions 'CImg[List]::display()'.
   1.132 +      - Improved functionalities of the image processing tool 'inrcast.cpp'.
   1.133 +      - Improved 'CImg[List]<T>::display()' function allowing easy navigation and zooming in images.
   1.134 +      - Add native use of ffmpeg libraries to load video sequences (Thanks to David Starkweather for his nice contribution !)
   1.135 +      - Optimized function 'CImg<T>::permute_axes' for common used cases (planar to interleaved RGB and RGBA).
   1.136 +      - Added parameter 'step_frame' in functions that can load video sequences,
   1.137 +        i.e. CImg[List]<T>::load_yuv(), CImg[List]<T>::load_tiff(), CImg[List]<T>::load_ffmpeg(), so that frames
   1.138 +        can be skipped when loading the video files.
   1.139 +      - Removed parameter 'events_type' in CImgDisplay functions. By default, a display is always catching all user
   1.140 +        events. Having different choices made slight problems between different architectures (and was not really
   1.141 +	useful).
   1.142 +      - Removed plugin 'plugins/toolbox3d.h'. Functions of the plug-ins are now natively integrated into the CImg.h file,
   1.143 +        as well as the LibBoard library support.
   1.144 +      - Renamed functions 'CImg<>::*pix?d()' to 'CImg<>::*at?()'.
   1.145 +
   1.146 +* Bug corrections :
   1.147 +      - Small bug in functions 'CImg[List]::contains()' were corrected.
   1.148 +      - Bug correction in function 'CImg<T>::[get_]stats()' : offset of min and max values were sometimes incorrect.
   1.149 +      - Bug correction in CImgDisplay events for Windows-based OS. When mouse leaved a window, coordinates
   1.150 +        didn't reset to -1 sometimes.
   1.151 +      - Small non-computational bug correction in 'CImg<T>::symmetric_eigen()'.
   1.152 +      - Removed g++ warning that occured when using 'libpng' ('warning: argument 'xxx' might be clobbered by 'longjmp' or 'vfork').
   1.153 +      - Corrected small illumination bug with double sided 3D objects in CImg<T>::draw_object3d().
   1.154 +      - And a lot of other small improvements and bug corrections...
   1.155 +
   1.156 +*-----------------------------
   1.157 +*-----------------------------
   1.158 +* Changes from 1.2.7 to 1.2.8
   1.159 +*-----------------------------
   1.160 +*-----------------------------
   1.161 +
   1.162 +* New features :
   1.163 +      - Added native Carbon support in CImgDisplay. Allows to run CImg on MacOSX without installing X11.
   1.164 +        This is a beta support, so not activated by default. Define 'cimg_use_carbon' to enable it.
   1.165 +        Many Thanks to Adrien Reboisson, Romain Blei and Jean-Marie Favreau for this nice contribution.
   1.166 +        Any comments and contributions are welcome.
   1.167 +      - Added variant of 'CImgList<T>::remove()' that can remove several images from a CImgList<T> list
   1.168 +        at the same time.
   1.169 +      - Added new numbered macros 'cimg_plugin1...8', for easy inclusion of multiple CImg plug-ins.
   1.170 +      - Added plugin 'plugins/distance_saito.h' that implements the Saito's distance transform.
   1.171 +      - Added function 'CImg<T>::blur_patch()' that performs a patch-based Tikhonov flow on the image.
   1.172 +        Allows to denoise and regularize image quite well (is time-consuming anyway).
   1.173 +      - Functions 'CImg<T>::load_tiff()', 'CImgList<T>::load_tiff()', 'CImg<T>::save_tiff()' and
   1.174 +        'CImgList<T>::save_tiff()' has been (re)-coded. It is now possible to read/save multi-pages tif
   1.175 +        image files worriless.
   1.176 +      - Native support for 'icc' compiler (Intel C++ compiler) added in the Makefile.
   1.177 +        Just type 'make CC=icc olinux' to compile using icc (offers nice performances in code optimization).
   1.178 +      - Started support of OpenMP directives, to allow parallelization of CImg functions in order to
   1.179 +        improve performances. Not few used, by this could change in the future.
   1.180 +      - Added functions to load/save video sequences using the external tool FFMPEG (http://http://ffmpeg.mplayerhq.hu/).
   1.181 +        'inrcast' is now able to read video sequences using FFMPEG.
   1.182 +      - Added new color basis conversions : RGBtoHSI(), HSItoRGB(), HSLtoRGB() (Thanks to Cesar Martinez for his
   1.183 +        contribution).
   1.184 +      - Added example file 'examples/radon_transform.cpp', provided by David G. Starkweather (Thanks guy!).
   1.185 +
   1.186 +* Optimizations / Modifications :
   1.187 +      - The main library file 'CImg.h' is now distributed under dual license CeCILL or CeCILL-C.
   1.188 +      - Patched function 'CImg<T>::load_tiff()' for a better support of float-valued tiff images.
   1.189 +      - Renamed 'CImg<T>::inverse()' as 'CImg<T>::invert()' and 'CImg<>::pseudoinverse()' as 'CImg<T>::pseudoinvert()'.
   1.190 +      - Function 'CImg<T>::displacement_field()' has been modified to consider a multi-valued geometry
   1.191 +        for motion detection (so color images are naturally taken into account now).
   1.192 +      - Optimized functions 'CImg<T>::dilate()' and 'CImg<T>::erode()'
   1.193 +      - Slightly optimized pixel access and display rendering functions.
   1.194 +      - Used native mutex mechanism of X11 instead of the pthread library.
   1.195 +      - Removed deprecated example file 'examples/pslider.cpp'.
   1.196 +      - Renamed 'cimg::PI' to 'cimg::valuePI' to avoid compilation problems with some C++ compilers that define
   1.197 +        the PI macro.
   1.198 +      - Added specular type lightning in routines that draw 3D objects. Parameters 'specular_light' and
   1.199 +        'specular_shine' replace the old 'ambient_light' parameter.
   1.200 +
   1.201 +* Bug corrections :
   1.202 +     - Bug corrected in 'CImg<T>::draw_polygon()' : wrong scanlines were drawn with some complex polygons.
   1.203 +     - Bug corrected in 'CImg<T>::convolve()' and 'CImg<T>::correlate()'. Happened when dealing with non square
   1.204 +       masks with even dimensions.
   1.205 +     - Bug corrected in 'CImg<T>::save_png()' and 'CImg<T>::load_png()' when dealing with 16 bits
   1.206 +       images in little-endian proc.
   1.207 +     - Bug corrected in 'CImg<T>::get_coordinates()' when dealing with 2-channels images.
   1.208 +     - Bug corrected, 2-channels images were not correctly displayed (blue channel was used instead of being 0).
   1.209 +     - And a lot of other small bug corrections...
   1.210 +
   1.211 +*-----------------------------
   1.212 +*-----------------------------
   1.213 +* Changes from 1.2.6 to 1.2.7
   1.214 +*-----------------------------
   1.215 +*-----------------------------
   1.216 +
   1.217 +* New features :
   1.218 +     - Added functions 'CImg<T>::get_haar()', 'CImg<T>::haar()' allowing to compute the direct and
   1.219 +     inverse Haar multiscale transform on 2D or 3D images.
   1.220 +     - Added function 'CImg<T>::get_hessianXY()' and 'CImg<T>::get_hessianXYZ()' that compute
   1.221 +     the components of the hessian matrix of a 2D or 3D image.
   1.222 +     - Added function 'CImg<T>::variancemean()' able to compute the variance and mean value of
   1.223 +     an image at the same time.
   1.224 +     - Added new macros for 'cimg_for_out*' and 'cimg_for_in*' families, all combinations are
   1.225 +     now fully handled.
   1.226 +
   1.227 +* Optimizations / Modifications :
   1.228 +     - Modified 'CImg<T>::get_resize()'. Moving average is now defined to be interp=2. Additional
   1.229 +     parameter 'center' has been added so that centering image is possible when upsizing with interp=0.
   1.230 +
   1.231 +* Bug corrections :
   1.232 +     - Critical bug correction has been made for non-const functions taking a const T& or const t& argument.
   1.233 +     'const T&' arguments have mainly been replaced by 'const T' arguments, in order to avoid wrong references
   1.234 +     problems. Thanks to Jinwei Gu who pointed this out to me.
   1.235 +
   1.236 +*-----------------------------
   1.237 +*-----------------------------
   1.238 +* Changes from 1.2.5 to 1.2.6
   1.239 +*-----------------------------
   1.240 +*-----------------------------
   1.241 +
   1.242 +* New features :
   1.243 +     - Added functions 'CImg<T>::fillV(), CImg<T>::fillZV() and CImg<T>::fillYZV()' allowing to set image values
   1.244 +     at a specified pixel and along specified axes.
   1.245 +     - Added variant of 'CImg<T>::get_dijkstra()' allowing to use any function/class for definition of weights.
   1.246 +     - Added new interpolation technique (moving average) in 'CImg<T>::resize()' allows very precise image downsizing.
   1.247 +       (Thanks to François Lauze who provided me with some of its code).
   1.248 +     - Added lot of new and useful neighborhood loop macros.
   1.249 +       A new executable 'examples/generate_loop_macros.cpp' allows to generate
   1.250 +       2D loops for arbitrary neighborhood size. A new plugin 'plugins/loop_macros.h' has been created, containing
   1.251 +       all loops NxN (until N=32) and NxNxN (until N=8).
   1.252 +     - Added separate component and YCbCr color base processing in options of 'examples/greycstoration.cpp'
   1.253 +     - Added macros 'cimg_argument?()' allowing to retrieve command lines that are not options (not beginning with a '-').
   1.254 +     - Added shortcut 'CTRL+O' in 'CImg<T>::get_coordinates()' allowing to save visualized instance image into a .cimg file.
   1.255 +
   1.256 +* Optimizations / Modifications :
   1.257 +     - Macros with neighborhood loops have been extended and simplified. Some of the previous ones have been deleted,
   1.258 +       others have appeared. Basically, no functionnalities have been removed.
   1.259 +     - Macro 'cimg_version' is now 126 instead of 1.26, allowing easy comparison with integer values.
   1.260 +     - Changed traits name in cimg:: for more coherence.
   1.261 +     - New design of the website and new sexy flyer available (Thanks to Sebastien Hanel).
   1.262 +
   1.263 +* Bug corrections :
   1.264 +     - Corrected function 'CImg<T>::cubic_pix[1,2]d()'.
   1.265 +     - Corrected bug in 'CImg<T>::blur_median()'.
   1.266 +     - Corrected bug with temporary random filenames when using multi-threading.
   1.267 +     - Corrected small bug in 'CImg<T>::draw_point()'.
   1.268 +     - Corrected name 'CImg<T>::dijkstra()' instead of 'CImg<T>::djikstra()'.
   1.269 +     - Corrected compilation bug in some plug-ins.
   1.270 +     - And other small bug corrections...
   1.271 +
   1.272 +*-----------------------------
   1.273 +*-----------------------------
   1.274 +* Changes from 1.2.4 to 1.2.5
   1.275 +*-----------------------------
   1.276 +*-----------------------------
   1.277 +
   1.278 +* New features :
   1.279 +     - Added function 'CImg<T>::label_regions()' that can label deconnected regions.
   1.280 +     - Added overload of function 'CImg<T>::draw_point()' that is able to draw point clouds.
   1.281 +     - Added function 'CImg<T>::get_blur_bilateral()' that implements bilateral filtering.
   1.282 +     - Added functions 'CImg<T>::get_RGBtoBayer()' and 'CImg<T>::get_BayertoRGB()' that converts between
   1.283 +       RGB and Bayer-coded representation of an image.
   1.284 +     - Added functions CImg[List]<T>::min(), max(), mean(), variance(), get_stats(), and contains()
   1.285 +       to deal easily with image statistics (class CImgStats is now obsolete and has been moved to
   1.286 +       plugin 'plugins/deprecated.h').
   1.287 +     - Added versions of 'CImg[List]<T>::get_*()' as external functions,
   1.288 +       so writting 'res=cos(img)*5;' is valid.
   1.289 +     - Added postfix versions 'CImg[List]<T>::operator++(int)' and 'CImg[List]<T>::operator--(int)'.
   1.290 +     - Added function 'CImg<T>::djikstra()' that can compute a minimal path in a graph.
   1.291 +     - Added new constructor able to construct a new image from the dimensions of another one.
   1.292 +
   1.293 +* Optimizations / Modifications :
   1.294 +     - Recoded 'CImg<T>::save_magick()' to improve performances when saving images using Magick++ API.
   1.295 +     - Recoded 'CImg<T>::draw_fill()' to avoid crashes on large (volumetric) images due to stack overflow.
   1.296 +       Also added parameters to choose between 4 or 8 connexity for 2D images.
   1.297 +     - Added simple point representation in 'CImg<T>::draw_graph()'.
   1.298 +      -> Note that the gtype variable values have been redefined as well !!! <-
   1.299 +     - Added parameter 'CImg<T>::quantize()' that allows possible value renormalization.
   1.300 +     - Improved documentation.
   1.301 +     - Drawing functions accept now templated color pointer, as well as templated image containing color data.
   1.302 +     - Recoded Deriche filter. More fast and precise, some cases were buggy.
   1.303 +     - Removed class CImgStats (moved to plugin 'plugins/deprecated.h').
   1.304 +     - Removed unuseful image copies in some functions.
   1.305 +     - Cleaning the code.
   1.306 +
   1.307 +* Bug corrections :
   1.308 +     - Corrected bug in 'CImg<T>::pseudoinverse()' concerning pseudo-inversion of non-inversible matrices.
   1.309 +     - Corrected return value in 'CImg<T>::get_RGBtoHSV()'.
   1.310 +     - Corrected value range bug in 'CImg<T>::quantize()'.
   1.311 +     - And other small bug corrections...
   1.312 +
   1.313 +*-----------------------------
   1.314 +*-----------------------------
   1.315 +* Changes from 1.2.3 to 1.2.4
   1.316 +*-----------------------------
   1.317 +*-----------------------------
   1.318 +
   1.319 +* New features :
   1.320 +     - Added macro 'cimg_for_lineXY(x,y,x0,y0,x1,y1)' that loops over an image segment (x0,y0)-(x1,y1).
   1.321 +     - Added function 'CImg<T>::draw_polygon()' that draws a filled polygon of any shape in the instance image.
   1.322 +     - Added macros 'cimg_load_plugin', 'cimg_save_plugin', 'cimglist_load_plugin' and 'cimglist_save_plugin'
   1.323 +       allowing to easily add file support for your own data format.
   1.324 +     - Added plugin 'plugins/add_fileformat.h' to show how to use these new macros to register a new
   1.325 +       image format in CImg.
   1.326 +     - Added version of 'CImg[List]<T>::{load,save}_cimg()' that is able to read/write only sub-images of
   1.327 +       data stored in a (big) .cimg file.
   1.328 +     - Added an online chat on the CImg website, so that users can interact freely.
   1.329 +
   1.330 +* Optimizations / Modifications :
   1.331 +     - Added functions 'CImg[List]<T>::save_empty_cimg()' that can be used to work with very large images.
   1.332 +       You can now create first an empty (big) image, then load/save sub-images into this big .cimg file,
   1.333 +       without needing much memory.
   1.334 +     - Slightly modified the header of .cimg files, so little/big endian info is stored.
   1.335 +     - Reorganized some 'CImg[List]<T>::load_*()' functions, trying to avoid unnecessary memory usage.
   1.336 +     - Recoded versions of CImg<T>::draw_triangle() that now use the Bresenham's algorithm for interpolation
   1.337 +      (more precise, while using only integer calculus).
   1.338 +     - Added versions of 'CImg<T>::draw_triangle()' and 'CImg<T>::draw_line()' that are able to map textures
   1.339 +      while correctly handling the perspective correction, so that 3D mapped triangles look correct now.
   1.340 +
   1.341 +* Bug corrections :
   1.342 +     - Corrected a small bug in get_coordinates() : channels of hyperspectral images with (dim>3) where
   1.343 +       subsampled instead of cropped for image visualization.
   1.344 +     - And many small bug corrections...
   1.345 +
   1.346 +*-----------------------------
   1.347 +*-----------------------------
   1.348 +* Changes from 1.2.2 to 1.2.3
   1.349 +*-----------------------------
   1.350 +*-----------------------------
   1.351 +
   1.352 +* New features :
   1.353 +     - Added file 'example/tron.cpp', implementing a very simple version of the
   1.354 +     famous 'Tron' game (2 players).
   1.355 +     - Added constructor that create a CImg<T> from the content of a CImgDisplay window.
   1.356 +     - Added support of the 'Board' library in plugin 'plugins/toolbox3d.h', allowing
   1.357 +     the saving of 3D objects snapshots in SVG, EPS or FIG vector-graphics formats.
   1.358 +     - Added function 'CImgList<T>::[get]_split()' that can split all image of an
   1.359 +     an image list into a specified axis.
   1.360 +     - Added sphere primitive in 'CImg<T>::draw_object3d()'.
   1.361 +     - Added function 'CImg<T>::ellipsoid()' in 'plugins/toolbox3d.h'.
   1.362 +     - Added useful new constructors 'CImg<T>()' and 'CImgList<T>()' with variable
   1.363 +     numbers of parameters that can define images or image lists initialized with
   1.364 +     user-specified values. Example :
   1.365 +     CImg<float> img(3,2,1,1, 1,2,3, 4,5,6); defines image [ 1,2,3; 4,5,6 ].
   1.366 +     CImgList<unsigned char> list(3,1,3,1,1, 1,0,0, 0,1,0, 0,0,1); defines
   1.367 +     list of three vectors { [1;0;0], [0;1;0], [0;0;1] }.
   1.368 +     - Added poly-bezier curve drawing, with 'CImg<T>::draw_spline()' overload.
   1.369 +     - Added file 'examples/jawbreaker.cpp', implementing a very funny games featuring
   1.370 +     small colored balls.
   1.371 +     - Added demo '3D Reflection' in 'examples/CImg_test.cpp' showing some tricky uses
   1.372 +     with the 3D capabilities of CImg.
   1.373 +     - Added 'CImg<T>::draw_spline()' for drawing 2D cubic Bezier curves.
   1.374 +     - Added plugin 'plugins/jpeg_buffer.h', allowing to read/write directly image data
   1.375 +     from/to jpeg-coded memory buffers (Many thanks to Paolo Prete who made it possible !).
   1.376 +     - Added optional support of the LAPACK library for matrix computation.
   1.377 +     Define macro 'cimg_use_lapack' and link your code with LAPACK to enable it
   1.378 +     (LAPACK routines are slightly faster routines than native CImg ones).
   1.379 +     - Added function 'CImg<T>::get_constrast_LUT8()' function which returns a 256 colors
   1.380 +     palette that has nice properties of being well contrasted when color indices are
   1.381 +     close to eachothers.
   1.382 +     - Added function 'CImg<T>::get_rainbow_LUT8()' that returns a rainbow-type palette.
   1.383 +     - Added shortcuts CTRL+PAGE[UP,DOWN] in 'CImg<T>::display_object3d()' to brighten or
   1.384 +     darken the 3D object.
   1.385 +
   1.386 +* Optimizations / Modifications :
   1.387 +     - In 'CImg<T>::HSVtoRGB()' and 'CImg<T>::RGBtoHSV()', the H components is now expressed in degree.
   1.388 +     - Improved multi-key testing with CImgDisplay.
   1.389 +     - Added and modified some 'operator<<()' and 'operator>>()' in 'CImg<T>' and 'CImgList<T>'.
   1.390 +     - Renamed 'plugins/primitives3d.h' to 'plugins/toolbox3d.h', and added a new example
   1.391 +     'examples/toolbox3d.cpp' that shows how to use it.
   1.392 +     - Renamed 'plugins/alias.h' to 'plugins/deprecated.h'.
   1.393 +     - Moved function 'CImg<T>::resize_object3d()' to 'plugins/toolbox3d.h'.
   1.394 +     - Simplified 'CImgList<T>::insert()' procedures, and removed functions 'CImgList<T>::insert_shared()'.
   1.395 +     - Added functions parameters for almost all drawing functions, allowing the correct use of
   1.396 +     patterns in line drawing (beware, some functions signatures have been slightly modified).
   1.397 +     - Renamed 'CImg<T>::feature_selection()' as 'CImg<T>::get_coordinates()'
   1.398 +     (for better coherence with overall function names). Include 'plugins/deprecated.h' for backward
   1.399 +     compatibility.
   1.400 +     - Optimized function 'CImg<T>::draw_line()'.
   1.401 +     - Recoded function 'CImg<T>::draw_circle()', uses now the more precise Bresenham's circle
   1.402 +     algorithm.
   1.403 +     - Improved function 'CImg<T>::sphere()', in plugin 'toolbox3d.h', reducing drastically
   1.404 +     the number of created points in the 3D mesh.
   1.405 +
   1.406 +* Bug corrections :
   1.407 +     - Corrected some small bugs in CImg.h to allow the compilation with the Intel C++ Compiler (icc & icl).
   1.408 +     - Corrected bug in copy constructor of CImgList<> that didn't make shared copy of images.
   1.409 +     - Fixed bug in 'CImg<T>::symmetric_eigen()' : some negative eigenvalues where miscalculated when
   1.410 +     their absolute values was also an eigenvalue of the considered matrix.
   1.411 +     - And many small bug corrections...
   1.412 +
   1.413 +*-----------------------------
   1.414 +*-----------------------------
   1.415 +* Changes from 1.2.1 to 1.2.2
   1.416 +*-----------------------------
   1.417 +*-----------------------------
   1.418 +
   1.419 +* New features :
   1.420 +     - Added 'CImg<T>::distance_function()' that can compute distance function to the 0-isophote.
   1.421 +     - Added curve editor example in 'examples/curve_editor.cpp'.
   1.422 +
   1.423 +* Bug corrections :
   1.424 +     - Corrected small bug when trying to found pathname under Windows.
   1.425 +     - Corrected bug when using XSHM extension on Mac OS X.
   1.426 +     - Corrected/Improved platforms detection by testing the right predefined BSD macros + extra architectures
   1.427 +      (Thanks to Marc Espie).
   1.428 +     - And many small bug corrections...
   1.429 +
   1.430 +*-----------------------------
   1.431 +*-----------------------------
   1.432 +* Changes from 1.2.0 to 1.2.1
   1.433 +*-----------------------------
   1.434 +*-----------------------------
   1.435 +
   1.436 +* New features :
   1.437 +     - Added macro 'cimg_for_spiralXY', allowing to loop over an image using a spiral-shaped trajectory.
   1.438 +     - Added shortcut 'CTRL+O' to save object as .off file in 'CImg<T>::display_object3d()'.
   1.439 +     - Added operator bool() in CImg, CImgList, CImgStats, CImgDisplay to get
   1.440 +     more concise code when testing if an object is empty or not.
   1.441 +     - Added empty state for CImgDisplay, can be tested with 'CImgDisplay::is_empty()'.
   1.442 +     - Added '.off' file support in 'inrcast'.
   1.443 +
   1.444 +* Optimizations / Modifications :
   1.445 +     - Removed all the obsolete #define to ensure compatibility with really older versions of CImg.
   1.446 +       You can now include the file 'plugins/alias.h' to get these #define back.
   1.447 +     - Added functionalities and debugged 'CImg<T>::save_off()' and 'CImg<T>::load_off()'.
   1.448 +
   1.449 +* Bug corrections :
   1.450 +     - Corrected illumination bug in 'CImg<T>::draw_object3d()'.
   1.451 +     - Corrected bug in 'CImg<T>::crop()' family functions.
   1.452 +     - Corrected small bugs in 'CImgList<T>' (insertion functions)
   1.453 +     - Corrected 'CImg<T>::load_tiff()' function.
   1.454 +     - And many small bug corrections...
   1.455 +
   1.456 +*-----------------------------
   1.457 +*-----------------------------
   1.458 +* Changes from 1.1.9 to 1.2.0
   1.459 +*-----------------------------
   1.460 +*-----------------------------
   1.461 +
   1.462 +* New features :
   1.463 +     - Added function 'CImg<T>::draw_grid()' that draws a grid on the instance image
   1.464 +     (useful when combined with CImg<T>::draw_axis and CImg<T>::draw_graph).
   1.465 +     - Added multi-threading support in GREYCstoration plugin and command line version.
   1.466 +     - Added support for GraphicsMagick conversion tools (http://www.graphicsmagick.org).
   1.467 +     - Added plugin 'integral_line.h' that define functions to track integral lines in images.
   1.468 +     - Added CTRL+key combinations in 'CImg<T>::display_object3d' and 'CImg<T>::feature_selection()' :
   1.469 +        - CTRL+S : Save snapshot.
   1.470 +        - CTRL+D : Double window resolution.
   1.471 +        - CTRL+C : Divide window resolution.
   1.472 +        - CTRL+F : Fullscreen mode.
   1.473 +     - Added new normalization mode=3, now set by default when using CImgDisplay. Try to adapt
   1.474 +     the display normalization to the image type.
   1.475 +     - Added new example 'edge_explorer.cpp' (thanks to Orges Leka).
   1.476 +     - Added new example 'greycstoration4gimp.cpp' (which is a GREYCstoration plugin for the Gimp, thanks
   1.477 +     to Grzegorz Szwoch)
   1.478 +     - Added functions 'CImg<T>::[get]_round()' that round values of an image.
   1.479 +     - Added function 'CImg<T>::draw_line()' able to draw joined set of segments.
   1.480 +     - Added interpolation_type=-1 for 'CImg<T>::resize()' corresponding to raw memory resizing, without
   1.481 +     interpolation.
   1.482 +     - Added function 'CImg<T>::permute_axes()' that can be used to swap order of image axes
   1.483 +     (useful for converting ...RRRRRRGGGGGBBBBB... to ...RGBRGBRGBRGB....)
   1.484 +     - Added support for NIFTI files (extension '.nii') added in 'CImg<T>::load_analyze()'.
   1.485 +     - Added function 'CImg<T>::[get_]displacement_field()' that can estimate displacement field between two images.
   1.486 +     - Added default constructor for the 'CImgDisplay' class, which creates a window initially in the 'closed' state.
   1.487 +     - Added directory 'compilation/unix_debian_package' for easy construction of .deb package for CImg.
   1.488 +     - Added new search parth to find 'medcon' on Windows.
   1.489 +     - Added Debian package configuration files to generate .deb file from the CImg directory
   1.490 +     (a .deb file is now available from the CImg website).
   1.491 +
   1.492 +* Optimizations / Modifications :
   1.493 +     - Renamed all '*_convert' functions to '*_imagemagick'.
   1.494 +     - Fonction CImg<T>::draw_object3d() has been slightly optimized (light computation for
   1.495 +     outside primitives is not done anymore).
   1.496 +     - Small changes in cimg:: traits.
   1.497 +     - Removed 'precision' arguments in 'CImg<T>::draw_axis()'.
   1.498 +     - The use of non in-place arithmetical operators is now possible in plug-ins.
   1.499 +     - Optimized the search of different pathes on Windows, thanks to Martin Petricek.
   1.500 +     - Cleaned some portions of the code.
   1.501 +
   1.502 +* Bug corrections :
   1.503 +     - CImg<T>::save_off() has been debugged.
   1.504 +     - Versions of 'CImg<T>::load_tiff()' and 'CImg<T>::save_tiff()' that use libtiff has been
   1.505 +     debugged and improved.
   1.506 +     - fread() and fwrite() has been recoded to handle the Windows file size limit of 64Mb over network
   1.507 +     (this is a Windows bug !).
   1.508 +     - GREYCstoration plugin has been modified to better deal with 16 and 32bits images.
   1.509 +     - And many other small bug corrections....
   1.510 +
   1.511 +*-----------------------------
   1.512 +*-----------------------------
   1.513 +* Changes from 1.1.8 to 1.1.9
   1.514 +*-----------------------------
   1.515 +*-----------------------------
   1.516 +
   1.517 +* New features :
   1.518 +     - Added Rice noise distribution in 'CImg<T>::noise()' (thanks to H.E Assemlal).
   1.519 +     - Added functions 'CImg<T>::sharpen()' and 'CImg<T>::get_sharpen()' that can enhance contrast in images,
   1.520 +     using nonlinear 2D/3D multi-valued shock filters.
   1.521 +     - Added function 'CImgStats::is_empty()' to check is a stat object has been initialized or not.
   1.522 +     - Added function 'CImg<T>::contains()' and 'CImgList<T>::contains()' that can test if a pixel is
   1.523 +     present in an image.
   1.524 +     - Added new demo 'CImg-breakout' in 'examples/CImg_demo.cpp' (Arkanoid-style game in 64 lines of code!).
   1.525 +     - Functions 'CImgDisplay::hide_mouse()' and 'CImgDisplay::show_mouse()' have been added, allowing to
   1.526 +       hide/show the cursor when it is over a display window.
   1.527 +     - Functions 'CImg<T>::[get_]structure_tensorXY[Z]()' have been added, allowing to compute the 2D or
   1.528 +     3D structure tensor field from an image.
   1.529 +     - Function 'CImgDisplay::set_mouse()' is now working on Windows.
   1.530 +     - Added load/save functions to deal directly with std::FILE structures.
   1.531 +     - Added members 'CImgDisplay::keys[256]' and 'CImgDisplay::buttons[256]' allowing to get the latest 256 keys
   1.532 +     or mouse buttons modifications done on the display window.
   1.533 +     - Added function 'CImgDisplay::is_typed()' to test if a certain combination of key has been typed
   1.534 +     on the display window.
   1.535 +     - Added keyboard shortcut 'CTRL+S' in 'CImg<T>::display_object3d()' to be able to save snapshot of current 3d view.
   1.536 +
   1.537 +* Optimizations / Modifications :
   1.538 +     - Recoded the greycstoration plug-in as the file 'plugins/greycstoration.h'. The command line version
   1.539 +     'examples/greycstoration.cpp' has been greatly improved, including tiled-mode and less memory consumption.
   1.540 +      The use of GREYCstoration is now more easy, the code is more factorized.
   1.541 +     - File extension '.txt' is now considered as '.dlm' (ascii file).
   1.542 +
   1.543 +* Bug corrections :
   1.544 +     - Plugin 'plugins/cimgmatlab.h' has been corrected.
   1.545 +
   1.546 +*-----------------------------
   1.547 +*-----------------------------
   1.548 +* Changes from 1.1.7 to 1.1.8
   1.549 +*-----------------------------
   1.550 +*-----------------------------
   1.551 +
   1.552 +* New features :
   1.553 +    - Added conditional use of the FFTW3 library (http://www.fftw.org) allowing more flexibility and speed
   1.554 +      on DFT computation, when used.
   1.555 +    - Added new macro 'cimg_help()', displays arbitrary user-defined messages when program is invoked
   1.556 +    with the option '-h' or '--help'.
   1.557 +    - Added new macro 'cimglist_apply()' allowing to apply a single function to all members of a list :
   1.558 +    Ex: cimglist_apply(list,blur)(3.0f);
   1.559 +    - Added functions 'CImg<T>::resize_object3d()', 'CImgList<T>::resize_object3d()',
   1.560 +    'CImg<T>::get_resize_object3d()' and 'CImgList<T>::get_resize_object3d()' to ease resizing and
   1.561 +    centering 3d objects.
   1.562 +    - Added function 'CImgDisplay::set_mouse()' to set the mouse pointer coordinates (X11 only).
   1.563 +    - Added functions 'CImg<T>::atan()', 'CImg<T>::acos()', 'CImg<T>::asin()' and their get_* counterparts.
   1.564 +
   1.565 +* Optimizations / Modifications :
   1.566 +    - 'cimg_debug' has new value signification. Can now choose between displaying error message on the console
   1.567 +    or on modal windows, even when 'cimg_display_type' is not 0.
   1.568 +    - Updated CImg presentation slides in 'documentation/slides_cimg.pdf', more complete now.
   1.569 +    - Added new directories in path search for 'convert' and 'medcon' and 'temporary path'.
   1.570 +    'convert' or 'medcon' found in the current directory './' now override the default ones.
   1.571 +    - Added safer support for Windows 64bits.
   1.572 +    - Improved version of 'cimg::info()' for debugging facilities. Now displays almost every
   1.573 +    important library variables and parameters.
   1.574 +    - Static version of CImg<T>::sequence() now return a column vector instead of a line.
   1.575 +    - Slightly changed the tracking algorithm and few other things in 'examples/dtmri_view.cpp',
   1.576 +      allowing more precision in the fiber computation.
   1.577 +    - Modified the 'CImg<T>::feature_selection()' function : replaced the moving hatch by a static
   1.578 +    one, less fun but also less time consuming. One small selection bug for 3D volumes has been
   1.579 +    also corrected.
   1.580 +    - Corrected line routine for 64bits architectures.
   1.581 +    - Replaced 'CImg<T>::scroll()' by 'CImg<T>::translate()'.
   1.582 +    - Replaced all 'cimg_map' by more coherent names based on 'cimg_for_*'. Same for 'cimglist_map'.
   1.583 +      Compatibility with previous versions of CImg is ensured if 'cimg_strict' is not defined.
   1.584 +    - Recoded functions to retrieve parts of the images : get_channel(), get_slice(), ...
   1.585 +    - Improved the cimg::system() function.
   1.586 +    - Added some tests and display extra warnings when saving images with wrong formats.
   1.587 +
   1.588 +* Bug corrections :
   1.589 +    - Corrected small bug in 'CImg<>::blur_anisotropic()', 'examples/greycstoration.cpp' and 'plugins/greycstoration4integration.h'.
   1.590 +    - And lot of minor bug corrections and optimizations .....
   1.591 +
   1.592 +*-----------------------------
   1.593 +*-----------------------------
   1.594 +* Changes from 1.1.6 to 1.1.7
   1.595 +*-----------------------------
   1.596 +*-----------------------------
   1.597 +
   1.598 +* New features :
   1.599 +    - Added 'operator<<()' and 'operator>>()' for bit shift operations on all images pixels.
   1.600 +    - Added most of mathematical operators in the 'CImgList' class.
   1.601 +    - Added new demo 'Image Waves' in 'examples/CImg_demo.cpp'.
   1.602 +    - Added mouse wheel support on Windows (incomplete!)
   1.603 +
   1.604 +* Optimizations / Modifications :
   1.605 +    - Renamed class 'CImgl' into 'CImgList', also renamed macro 'cimgl_map' to 'cimglist_map'.
   1.606 +      Backward compatibility is assured in 1.1.7 version, but think about replacing the old names
   1.607 +      by the new ones for future CImg versions.
   1.608 +    - Removed 'operator<<()' which appended an image to another one
   1.609 +    - Recoded lot of non in-place mathematical operators to avoid numerical truncations.
   1.610 +    It may have a great influence on your code. For instance writting '0.5+img' will result in a CImg<double>
   1.611 +    image, even if 'img' was a CImg<float>.
   1.612 +    - Recoded most of 'CImg<T>::get_resize()' function : linear interpolation performs now really faster, and
   1.613 +    an additional parameter allows to select between different conditions for border values.
   1.614 +    - Recoded 'CImg<T>::draw_line()' so that it now uses a classical Bresenham algorithm, avoiding rounding errors.
   1.615 +    - Renamed 'CImg<T>::draw_axe' as 'CImg<T>::draw_axis'.
   1.616 +
   1.617 +* Bug corrections :
   1.618 +    - Corrected some functions that did not performed correctly on shared images.
   1.619 +    - Corrected small bug in 'plugins/primitives3d.h' in function 'CImg<T>::sphere()'.
   1.620 +    - Corrected 'CImg<T>::feature_selection()' when displaying 'CImg<bool>' images.
   1.621 +    - Corrected 'CImg<T>::load_cimg()' : is now able to load bool images.
   1.622 +    - And lot of minor bug corrections and optimizations .....
   1.623 +
   1.624 +*-----------------------------
   1.625 +*-----------------------------
   1.626 +* Changes from 1.1.5 to 1.1.6
   1.627 +*-----------------------------
   1.628 +*-----------------------------
   1.629 +
   1.630 +* New features :
   1.631 +    - Added DTMRI volumetric file viewer, in 'examples/dtmri_view.cpp'.
   1.632 +    - Added 3D sprite display support in 'CImg<T>::draw_object3d()'.
   1.633 +
   1.634 +* Optimizations / Modifications :
   1.635 +    - Rewritten a lot of constructor/assignments functions for CImg<T> and CImgl<T>.
   1.636 +     Removed shared capabilities of CImgl<T>, but improved these ones for CImg<T>.
   1.637 +
   1.638 +* Bug corrections :
   1.639 +    - And lot of minor bug corrections and optimizations .....
   1.640 +
   1.641 +*-----------------------------
   1.642 +*-----------------------------
   1.643 +* Changes from 1.1.4 to 1.1.5
   1.644 +*-----------------------------
   1.645 +*-----------------------------
   1.646 +
   1.647 +* New features :
   1.648 +    - Added plugin 'CImg/primitives3d.h', adding functions that can generate
   1.649 +      basic 3D triangulated primitives.
   1.650 +    - Added Poisson noise capability in CImg<T>::noise() (This patch has been proposed by Jerome Boulanger)
   1.651 +    - Added wheel mouse support in 'CImgDisplay', now used in 'CImg<>::feature_selection()' to go through slices of
   1.652 +      3D volumes (unfortunately for X11 systems only).
   1.653 +    - Added function 'CImgDisplay::toggle_fullscreen()' to allow easy and dynamic fullscreen switching of a display.
   1.654 +    - Added screen resolution switching capabilities when using the Xrandr extension, under X11 (#define cimg_use_xrandr).
   1.655 +    - Added support for ImageMagick++ built-in library (parts of the patch proposed by Christoph Hormann).
   1.656 +    - And lot of small functions to ease the life...
   1.657 +
   1.658 +* Optimizations / Modifications :
   1.659 +    - CeCiLL-C license now applies for the file 'CImg.h'. This license (close to the LGPL one) is more adapted
   1.660 +      for library components as CImg. The examples stay in previous CeCiLL license (close to the GPL one).
   1.661 +    - Recoded 'CImg<T>::draw_axe?()' (where ? can be 'X','Y' or 'XY') so that it can now be used to draw non-linear values along axes
   1.662 +      (for instance logarithmic-varying labels).
   1.663 +    - Attribute 'force' have been removed in 'CImgDisplay::resize()'.
   1.664 +    - Recoded most constructors and assign functions in CImg<T> and CImgl<T>.
   1.665 +    - Recoded most of the CImgDisplay class to allow more flexibility and refreshing speed.
   1.666 +    - Renamed 'CImgDisplay::title()' to 'CImgDisplay::set_title()'. 'CImgDisplay::title' is now a class variable
   1.667 +      that stores the current title of the display window.
   1.668 +    - 'CImgDisplay::closed', 'CImgDisplay::resized', 'CImgDisplay::fullscreen' and 'CImgDisplay::moved' have been
   1.669 +      renamed to 'CImgDisplay::is_closed', 'CImgDisplay::is_resized', 'CImgDisplay::is_fullscreen' and
   1.670 +      'CImgDisplay::is_moved', for more coherent variable names.
   1.671 +    - 'CImg<T>::display_object3d()' : can now specify an input pose matrix, as well as get the output pose matrix,
   1.672 +      after the user rotated the object. Also, this function has been optimized.
   1.673 +
   1.674 +* Bug corrections :
   1.675 +    - Corrected sorting bug in 'CImg<T>::symmetric_eigen()' and 'CImg<T>::SVD()'
   1.676 +    - When using shared memory images, some 'CImg<T>::get_*()' methods returned a shared memory image too.
   1.677 +    - And lot of minor bug corrections and optimizations .....
   1.678 +
   1.679 +*-----------------------------
   1.680 +*-----------------------------
   1.681 +* Changes from 1.1.3 to 1.1.4
   1.682 +*-----------------------------
   1.683 +*-----------------------------
   1.684 +
   1.685 +* New features :
   1.686 +    - Added fullscreen mode support on X11-based systems.
   1.687 +    - Added CImg<>::save_dicom(), allowing to save DICOM files, via XMedcon.
   1.688 +    - Added phong-like rendering capabilities in 'CImg<T>::draw_triangle()' and 'CImg<T>::draw_object3d()'.
   1.689 +    - Added a directory 'plugins/' that contains some useful CImg plugins, developed by third parties.
   1.690 +    - Added bicubic interpolation option in functions 'CImg<T>::get_rotate()'
   1.691 +    - Added new example 'Fireworks' in 'examples/CImg_demo.cpp'.
   1.692 +    - Added new fonts with increasing sizes that can be used in 'CImg<T>::draw_text()'.
   1.693 +      Also simplified function 'CImg<T>::get_font()', and added size parameter in 'CImg<T>::draw_text()'.
   1.694 +
   1.695 +* Optimizations / Modifications :
   1.696 +    - Optimized 'CImg<T>::get_resize()'.
   1.697 +    - Allows the use of the MIT-XSHM extension for X11-based display, allowing to speed up CImgDisplay rendering
   1.698 +    (roughly a factor of 3 when using this extension).
   1.699 +    - Optimized CImgDisplay::render() for X11-based systems. Image display is now faster (roughly a factor of 2.5).
   1.700 +    - Modified CImg<>::display_object3d() : keyboard is now not handled, added translation using 3rd mouse button.
   1.701 +      Added small axes at the bottom left to see object orientation.
   1.702 +    - Removed some unuseful 'const' keywords in some function return values, removing warnings
   1.703 +      when compiling with icc or icl.
   1.704 +    - Renamed 'CImg<T>::RGBtoYCbCr8()' to 'CImg<T>::RGBtoYCbCr()' (and derived functions).
   1.705 +    - Gathered 'CImg<T>::dirichlet_pix?d()' and 'CImg<T>::neumann_pix?d()' in a single function 'CImg<T>::pix?d()'.
   1.706 +    - Renamed 'CImg_test.cpp' to 'CImg_demo.cpp'
   1.707 +
   1.708 +* Bug corrections :
   1.709 +    - Corrected bug with X11 displays : sometimes, black images were displayed, needing an explicit refresh.
   1.710 +    - Corrected bug with X11 displays related to ClientMessage. Windows are not closed when other applications are opened.
   1.711 +    - Corrected 'CImgl<T>::remove()' : Wrong memory deallocation could happen sometimes.
   1.712 +    - And lot of minor bug corrections and optimizations .....
   1.713 +
   1.714 +*-----------------------------
   1.715 +*-----------------------------
   1.716 +* Changes from 1.1.2 to 1.1.3
   1.717 +*-----------------------------
   1.718 +*-----------------------------
   1.719 +
   1.720 +* New features :
   1.721 +    - Added a new example source file 'examples/image_surface.cpp', that renders an image as a surface in a 3D space.
   1.722 +    - Added a new example source file 'examples/mcf_levelsets3D.cpp', that performs Mean Curvature Flow of a 2D surface, using level sets.
   1.723 +    - Added a version of 'CImg<T>::draw_triangle()' that can draw Gouraud-shaded triangles (flat and textured versions).
   1.724 +    - Added 'CImg<T>::get_rotation_matrix()' that returns a 3x3 rotation matrix from a quaternion or a rotation vector.
   1.725 +    - Added 'CImg<T>::draw_object3d()' that can draw a colored/textured 3d object on images.
   1.726 +    - Added 'CImgDisplay::display_object3d()' and 'CImg<T>::display_object3d()' which run a high-level interface that
   1.727 +      can view a user-defined 3d object.
   1.728 +    - Added two 3D rendering examples in 'examples/CImg_test.cpp', that shows how to use 3D rendering capabilities of CImg in few lines.
   1.729 +    - Added 'CImg<T>::marching_cubes()' and 'CImg<T>::marching_squares' that can be used to triangularize an implicit 2D or 3D
   1.730 +      curve or surface from an image or a function.
   1.731 +    - Added 'CImg<T>::get_load_off()' and 'CImg<T>::save_off()' that manages OFF files
   1.732 +      (files describing 3D object, GeomView format, see 'http://www.geomview.org/').
   1.733 +
   1.734 +* Optimizations / Modifications :
   1.735 +    - Removed the 'multiplexed' variable in one of the CImg constructor. This feature as not generic enough to be integrated
   1.736 +      in a constructor, and is so simple to code (one line).. This has been replaced by the new 'shared' capabilities of CImg.
   1.737 +    - Added a 'shared' variable in CImg<T> and CImgl<T>. This allows to completely remove CImgSubset<T> and CImglSubset<T>, and
   1.738 +      allows more flexibility for using shared memory. A lot of functions relative to shared-memory images have been added also.
   1.739 +      Please look closely to the online reference.
   1.740 +    - Added a fast approximation method in 'examples/greycstoration.cpp' (set by default) allowing to speed up the
   1.741 +      restoration process almost by a factor x3.
   1.742 +    - Recoded 'CImg<T>::get_dilate()' and 'CImg<T>::get_erode()' : it is now possible to specify a structuring element.
   1.743 +    - Due to high difficulty in maintaing all project files in the 'compilation/' directory, I removed most of them except one
   1.744 +      template file for each different C++ IDE. Just replace the default source file 'CImg_test.cpp' in the project file by the one
   1.745 +      you want, to compile you desired example.
   1.746 +    - Renamed 'CImg<T>::get_2dprojections()' to 'CImg<T>::get_projections2d()'.
   1.747 +    - Removed 'examples/render3d.cpp'. As CImg has now built-in functions for 3D rendering, this example was obsolete.
   1.748 +      Look at the new example appearing in 'examples/CImg_test.cpp' to see how to do easy 3D rendering with CImg.
   1.749 +
   1.750 +* Bug corrections :
   1.751 +    - Corrected 'CImg<T>::cubic_pix1d()' and 'CImg<T>::cubic_pix2d()', used for cubic and bicubic interpolations.
   1.752 +    - Corrected 'cimg_map2x2()' and 'cimg_map4x4()' to avoid warning when compiling with g++.
   1.753 +    - Added a simple trick to ease the use of libjpeg and libpng on Windows (thanks to bugzhao).
   1.754 +    - Corrected 'CImg<T>::load_jpeg()' and 'CImg<T>::save_jpeg()' to handle all possible color spaces used in JPEG files.
   1.755 +    - Corrected 'CImg<T>::get_split()' to avoid bug with very large images.
   1.756 +    - Corrected 'CImg<T>::load_dicom()' and 'cimg::medcon_path()' to ease the loading of medcon files on Windows.
   1.757 +    - And lot of minor bug corrections....
   1.758 +
   1.759 +*-----------------------------
   1.760 +*-----------------------------
   1.761 +* Changes from 1.1.1 to 1.1.2
   1.762 +*-----------------------------
   1.763 +*-----------------------------
   1.764 +
   1.765 +* Bug corrections :
   1.766 +    - Bug corrected in 'CImg<T>::load_ppm()' and 'CImg<T>::save_ppm()' : 16 bits PPM images were not correctly stored.
   1.767 +    - (Stupid) bug corrected in 'CImg<T>::get_sort()' : Return value was a reference to a temporary object.
   1.768 +    - Bug corrected in 'CImg<T>::resize_halfXY()' that caused a possible segmentation fault.
   1.769 +    - Bug corrected in 'CImg<T>::move()' : Moving an hidden window (on X11) is now working.
   1.770 +    - Handling pixel access to const images : writing pixel values in const images is now forbidden.
   1.771 +    - 'CImg<T>::det()' : Determinant of general matrices can now be computed.
   1.772 +    - 'CImgDisplay' : Added some changes in Microsoft-specific function call to be able to compile with Visual Studio 2005. This compiler seems to be 'buggy', I had very strange behaviors at run-time with it (changing an 'int' to 'const int' declaration solves a 'problem' in CImg<>::draw_ellipse() that was present only with this compiler...)
   1.773 +    - 'CImg<>::load_dlm()' : small bug corrected. Can now read DLM files with no CR at the last line.
   1.774 +    - And other small corrections....
   1.775 +
   1.776 +* Optimizations / Modifications :
   1.777 +    - In 'CImg<T>::save_convert()', the temporary file is now saved in PNM format, instead of RGBA as before. This has been done
   1.778 +      because of a strange bug in ImageMagick's convert, refusing to read some RGBA files.
   1.779 +    - CImgDisplay::move() now shows automatically the display when it is in a closed state.
   1.780 +    - Moved the trait cimg_library::largest<T,t> in cimg_library::cimg::largest<T,t>.
   1.781 +    - Renamed 'CImg<T>::quicksort()' to 'CImg<T>::sort()'.
   1.782 +    - Renamed 'CImg<T>::create()' and 'CImg<T>::copy()' to 'CImg<T>::assign()'.
   1.783 +    - 'CImg<T>::inverse()' can now uses the LU matrix decomposition (or the SVD one as before).
   1.784 +    - Optimized memory handling when playing with lists of images CImgl<>.
   1.785 +    - Optimized some CImg<T> constructors.
   1.786 +
   1.787 +* New features :
   1.788 +    - Added a new demo : 'Blobs Editor' in CImg_test.cpp.
   1.789 +    - Added types 'CImg<T>::iterator', 'CImg<T>::const_iterator', 'CImgl<T>::iterator' and 'CImgl<T>::const_iterator' to allow
   1.790 +      the easy use of STL algorithms on CImg and CImgl structures.
   1.791 +    - Added several functions that acts like in STL vectors and lists in CImg<T> and CImgl<T> :
   1.792 +      CImg<T>::assign(), CImg<T>::clear(), CImg<T>::at(), CImg<T>::back(), CImg<T>::front(), CImg<T>::begin(), CImg<T>::end(),
   1.793 +      CImgl<T>::assign(), CImgl<T>::clear(), CImgl<T>::at(), CImgl<T>::back(), CImgl<T>::front(),
   1.794 +      CImgl<T>::begin(), CImgl<T>::end(), CImgl<T>::push_back(), CImgl<T>::push_front(), CImgl<T>::pop_back(), CImgl<T>::pop_front().
   1.795 +    - Added 'CImg<T>::MSE()' and 'CImg<T>::PSNR()' that compute the MSE (Mean Squared Error) and PSNR
   1.796 +      (Peak Signal to Noise Ratio) between two images.
   1.797 +    - Added 'CImg<T>::solve()' and 'CImg<T>::get_solve()', allowing to solve linear systems.
   1.798 +    - Added 'CImg<T>::pseudoinverse()' and 'CImg<T>::get_pseudoinverse()' allowing to compute the Moore-Penrose
   1.799 +      matrix inverse (useful for computing solutions to the least-square problem).
   1.800 +
   1.801 +*-----------------------------
   1.802 +*-----------------------------
   1.803 +* Changes from 1.1.0 to 1.1.1
   1.804 +*-----------------------------
   1.805 +*-----------------------------
   1.806 +
   1.807 +* Bug corrections :
   1.808 +    - in 'CImgl<T>::insert()' : Insertion at non-last position was bugged.
   1.809 +    - in 'greycstoration.cpp' : Corrected some bugs in the algorithm and improved user interface.
   1.810 +    - in 'CImg<T>::blur_anisotropic()' : Abusive vector normalization was done before. Now it is corrected.
   1.811 +    - And many other bugs...
   1.812 +
   1.813 +* Optimizations / Modifications :
   1.814 +    - Removed macros 'cimg_test*()' and modified argument checking in most of the functions, so that trying to act
   1.815 +    on an empty image does nothing instead of an error.
   1.816 +    - Renamed all static methods CImg<T>::load*() into CImg<T>::get_load*(). This has been done to be coherent with
   1.817 +    the naming convention of other CImg methods. Also, added new functions CImg<T>::load*() (non static) that corresponds
   1.818 +    to in-place image loading.
   1.819 +    - Renamed CImg RAW extension from .raw to .cimg. .raw files are not considered as real raw data without
   1.820 +    header. New functions 'CImg<T>::load_get_raw()' and 'CImg<T>::save_raw()' have been added to load and save .raw files.
   1.821 +    - In 'greycstoration.cpp' : improved algorithm and parameters. Also add improved visualization tool at the end
   1.822 +      of the image regularization.
   1.823 +    - Replaced some cimg:: static functions to inlined one, to prevent compiler bug on VS7.1, when trying
   1.824 +      to link multiple CImg-based modules.
   1.825 +    - Replaced parameter 'linear' to 'scheme' in 'CImg<T>::blur_anisotropic()', allowing the use of 2nd order
   1.826 +      Runge-Kutta integration, instead of just nearest-neighbor or linear ones.
   1.827 +
   1.828 +* New features :
   1.829 +    - Introduced a trait 'cimg::largest' that allows to find the largest data type between two types. CImg functions
   1.830 +    use it for instance to return a CImg<float>, when trying to compute the gradient of an CImg<unsigned char>.
   1.831 +    It was not the case before, needing an explicit case, as in 'CImg<float>(img).get_gradientXY()'.
   1.832 +    - Added 'CImg<T>::operator<<', 'CImgl<T>::operator<<' and 'CImgl<T>::operator>>' that allows to
   1.833 +    insert images in list or append an image to another one.
   1.834 +    - New project file for using with X-Code (on Mac OS X) has been added to the 'compilation/' directory.
   1.835 +     Thanks to Werner Jainek who made it possible.
   1.836 +
   1.837 +*-----------------------------
   1.838 +*-----------------------------
   1.839 +* Changes from 1.0.9 to 1.1.0
   1.840 +*-----------------------------
   1.841 +*-----------------------------
   1.842 +
   1.843 +* Bug corrections :
   1.844 +    - in 'CImg<T>::load_raw()' : possible buffer overflow corrected.
   1.845 +    - in 'CImg<T>::load_dlm()' : the use of std::rewind() didn't work when reading the standart input. Function has been
   1.846 +      recoded so it reads the file in one pass.
   1.847 +    - Corrected 'CImg<T>::anisotropic_blur()'.
   1.848 +    - Corrected 'CImg<T>::symeigen()' : corrected computation bugs.
   1.849 +    - Corrected 'CImg<T>::get_resize()' : linear and bicubic interpolations were not correctly handled (minor).
   1.850 +    - Corrected 'CImgDisplay' to avoid malloc/dealloc problem with newer versions of X11.
   1.851 +    - Corrected 'CImgDisplay' to handle better thread termination under X11 (Unix and MacOSX).
   1.852 +    - Corrected 'greycstoration.cpp' (small bug in inpainting and non-curvature scheme).
   1.853 +
   1.854 +* Optimizations / Modifications :
   1.855 +    - Updated documentation.
   1.856 +    - Modified Makefile for direct compilation of executables under Linux (ex : make CImg_test).
   1.857 +    - Modified Exceptions error messages for more simplicity and clarity.
   1.858 +    - Removed parameter 'alpha' in 'CImg<T>::get_gradientXY()' and 'CImg<T>::get_gradientXYZ()'.
   1.859 +    - Renamed 'CImg<T>::flip()' to 'CImg<T>::mirror()'.
   1.860 +    - Renamed 'CImg<T>::get_3dplanes()' to 'CImg<T>::get_2dprojections()'.
   1.861 +    - Renamed 'CImgROI<T>' to 'CImgSubset<T>'. Also removed functions 'CImg<T>::ref_*' and replaced it by
   1.862 +    'CImg<T>::pointset()', 'CImg<T>::lineset', 'CImg<T>::planeset' and 'CImg<T>::channelset'.
   1.863 +
   1.864 +* New features :
   1.865 +    - Added 'CImg<T>::RGBtoLUT()' and 'CImg<T>::LUTtoRGB()' that convert an RGB image to an indexed image (using a palette).
   1.866 +    - Added 8 bits display mode support in CImgDisplay.
   1.867 +    - Added 'CImg<T>::RGBtoHSV()' and 'CImg<T>::HSVtoRGB()' that handle the conversion from and to HSV color space.
   1.868 +    - Added 'CImg<T>::kth_smallest()' and 'CImg<T>::median()' that find respectively the kth smallest
   1.869 +      element and the median of values in a CImg<T> instance.
   1.870 +    - Added 'CImg<T>::blur_median()' and 'CImg<T>::get_blur_median()' that apply a median filter on an image.
   1.871 +    - Added 'CImg<T>::load_parrec()' able to read PAR-REC (Philips) image file formats.
   1.872 +    - Added 'CImgDisplay::title()' that can be used to change the display window title.
   1.873 +    - Added 'CImg<T>::RGBtoYUV()' and 'CImg<T>::YUVtoRGB()' that convert between RGB and YUV color spaces.
   1.874 +    - Added 'CImg<T>::RGBtoYCbCr8()' and 'CImg<T>::YCbCr8toRGB()' that convert between RGB and YCbCr color spaces (for unsigned char
   1.875 +    pixels).
   1.876 +    - Added 'CImg<T>::has_same*()' where * can be 'X','Y','Z','XY','XYZ','XYZV' to compare image dimensions.
   1.877 +    - Added 'CImg<T>::is_empty()' that returns 'true' is the image is empty.
   1.878 +    - Added 'CImg<T>::load_dicom()' that loads an image in Dicom file format. This function uses the tool 'medcon' that
   1.879 +    has to be installed (http://xmedcon.sourceforge.net/).
   1.880 +    - Added 'CImg<T>::load_yuv()', 'CImgl<T>::load_yuv()' and 'CImg<T>::save_yuv()', 'CImgk<T>::save_yuv()'
   1.881 +     that load and save respectively one frame or the entire movie from a .yuv file.
   1.882 +    - Added 'CImglSubset<T>' which is a class that sub-references an image list 'CImgl<T>'.
   1.883 +
   1.884 +*-----------------------------
   1.885 +*-----------------------------
   1.886 +* Changes from 1.0.8 to 1.0.9
   1.887 +*-----------------------------
   1.888 +*-----------------------------
   1.889 +
   1.890 +* Bug corrections :
   1.891 +    - Memory leak corrected in 'CImg<T>::load_bmp()'.
   1.892 +    - CImg now supports the MIPS compiler on SGI (Thanks to Matt Hanson who made it possible).
   1.893 +    - Corrected non-global X11 variables in multi-module projects using CImg.h (thanks also to Matt Hanson for
   1.894 +    his precise bug report).
   1.895 +    - In CImg<T>::load_convert() and save_convert(), random filenames are now tested before read/write.
   1.896 +    - Removed unuseful template in 1D CImg<T>::draw_gaussian() function.
   1.897 +    - Recoded CImgDisplay::render() with XPutPixel() again for maximum compability between X11-based architectures.
   1.898 +    - In CImgStats, the variance field was computed actually as the standart deviation. This is now corrected, and the variance
   1.899 +    is really the variance !
   1.900 +
   1.901 +* Optimizations / Modifications :
   1.902 +    - CImgDisplay fields mousex and mousey changed to fields mouse_x and mouse_y. This is done to be more coherent
   1.903 +    with other CImgDisplay fields. The inconvenience should be minor, just replace the fields by the right names.
   1.904 +    - CImgDisplay functions window_posx() and window_posy() changed to fields window_x and window_y.
   1.905 +    - Eigenvalue computation with CImg<T>::eigen() and symeigen() sorts the eigenvalues in inverse order from now on.
   1.906 +    The eigenvector matrix is also transposed, to be more close to the standart functions in eigenvalue computation.
   1.907 +    - Renamed macro variable 'cimg_lapack' in 'cimg_use_lapack'.
   1.908 +    - CImg<T>::save() can now handle alpha channel in PNG images (with 4-channels images).
   1.909 +    - Recoded CImg<T>::noise() to handle numerical limits in template types (esp. for unsigned char and char).
   1.910 +    - Recoded CImg<T>::pow() to be faster with usual int powers (0,1,2,3,4).
   1.911 +    - Added conversions functions for all color spaces (R,G,B), (X,Y,Z), (x,y,Y) and (L,a,b).
   1.912 +    - Added a 'pattern' parameter in 'CImg<T>::draw_ellipse()' and 'CImg<T>::draw_circle()', so that
   1.913 +    only the outline of the ellipse/circle can be drawn.
   1.914 +    - Added an ellipse-based selection in CImg<T>::feature_selection(), when parameter 'feature_type' is set to 3.
   1.915 +
   1.916 +* New features/functions :
   1.917 +    - Added an 'Image Zoomer' demo in 'CImg_test.cpp'.
   1.918 +    - Added 'CImg<T>::load_jpeg()' and 'CImg<T>::save_jpeg()' to deal natively with JPEG files, through
   1.919 +      the libjpeg library. You don't need ImageMagick's convert anymore to read and save JPEG files.
   1.920 +      Just define the macro 'cimg_use_jpeg before including 'CImg.h', and link your code with the 'jpeg' lib,
   1.921 +       and it should work fine.
   1.922 +    - Added 'CImg<T>::quicksort()' allowing to sort values inside vectors, and getting corresponding permutations.
   1.923 +    - CImgDisplay::move() is now working well on Windows and Unix.
   1.924 +    - Added 'CImg<T>::SVD()' to compute the SVD of general matrices. The inverse function as well
   1.925 +    as the eigenvalue computation (of symmetric matrices) now uses the SVD. It means that LAPACK is
   1.926 +    not necessary anymore in CImg !
   1.927 +    - Added 'CImgDisplay::screen_dimx()' and 'CImgDisplay::screen_dimy()' to get the resolution of the
   1.928 +    current (full) screen.
   1.929 +    - Added a new 10x13 font, and recoded the functions 'CImgl<T>::get_font();'
   1.930 +    - Added 'cimg::dialog()' that allows to open a simple dialog box with a maximum of 6 choices.
   1.931 +    - Added CImgROI<T>::operator=(), so that one can now affect a channel or plane to an image :
   1.932 +    img.ref_plane(2) = img_plane; Very useful !
   1.933 +    - Added CImg<T>::load_png() and save_png() to deal natively with PNG files, through
   1.934 +     the zlib and libpng libraries. You don't need ImageMagick's convert anymore
   1.935 +      to read and save PNG files. Just define the macro 'cimg_use_png' before including
   1.936 +      'CImg.h', and link your code with the 'zlib' and the 'png' lib, and it should work fine.
   1.937 +       Many thanks to Eric Fausett, for this nice piece of code.
   1.938 +    - Added CImg<T>::load_rgb(), load_rgba(), save_rgb() and save_rgba() that can load and save
   1.939 +      Raw color image data (w/ or wo/ alpha channel).
   1.940 +    - Added CImg<T>::blur_anisotropic() that allows to denoise image by anisotropic filtering.
   1.941 +      Smoothing behavior can be even user-defined.
   1.942 +       Look at  " http://www.greyc.ensicaen.fr/~dtschump/greycstoration/ "
   1.943 +      to learn more about the image regularization technique implemented by this function.
   1.944 +
   1.945 +   - ... an tons of minor corrections !
   1.946 +
   1.947 +*-----------------------------
   1.948 +*-----------------------------
   1.949 +* Changes from 1.0.7 to 1.0.8
   1.950 +*-----------------------------
   1.951 +*-----------------------------
   1.952 +
   1.953 + * Bug corrections :
   1.954 +    - Removed useless button/keyboard reinitialization in CImgDisplay events
   1.955 +    - Corrected bug in CImg<T>::load_dlm() and load_ascii() functions.
   1.956 +    - Corrected compile bug in CImg<T>::resize_halfXY() and CImg<T>::get_resize_halfXY().
   1.957 +    - Corrected and optimized CImg<T>::get_resize().
   1.958 +
   1.959 + * Optimizations / Modifications :
   1.960 +    - Recoded CImg<T>::fill() for faster value filling.
   1.961 +    - Recoded CImg<T>::draw_graph(). IMPORTANT NOTE : ymin and ymax are now directed up to down, instead
   1.962 +      of down to up, in order to be more coherent with the draw_axeXY() function. This means you will
   1.963 +      probably have to swap the values of these two parameters in the function call, to get similar results
   1.964 +      to CImg 1.0.7 !!
   1.965 +    - Recoded CImg<T>::draw_gaussian() using tensors (parameters changed).
   1.966 +    - CImg is now successfully compiled using the option '-pedantic' with g++. Makefile has been modified.
   1.967 +    - CImg compiles with the DJGPP compiler (tested without display capabilities).
   1.968 +    - Added load/save support for 16bits PNM binary images.
   1.969 +    - Added interleaved mode support and template in constructor :
   1.970 +      template<typename t> CImg(const t *const data_buffer,dx,dy,dz,dv,bool interlaced)
   1.971 +    - Recoded parts of CImg<T>::eigen().
   1.972 +    - Optimized buffer copy in XImage, for faster image display under X11 (minor improvements).
   1.973 +    - Added fields in CImgStats, allowing to get the coordinates of the min/max pixels.
   1.974 +
   1.975 + * New features/functions :
   1.976 +    - Added CImg<T>::load_bmp() and save_bmp() to deal with uncompressed BMP formats, without using ImageMagick.
   1.977 +    - Added CImg<T>::vector(), CImg<T>::matrix() and CImg<T>::tensor().
   1.978 +    - Added CImg<T>::scroll() and CImg<T>::get_scroll to be able to scroll images.
   1.979 +    - Added functions CImg<T>::get_FFT() and CImgl<T>::FFT() for Fast Fourier Transform.
   1.980 +    - Added CImgDisplay::move() to be able to move display windows at specific locations.
   1.981 +    - Added several region split in CImg<T>::get_split().
   1.982 +    - Added 'examples/mcf_levelsets.cpp' : Mean curvature flow of a 2D curve, using level sets.
   1.983 +    - Added 'examples/greycstoration.cpp' : New algorithm for image denoising, inpainting and resizing.
   1.984 +      (see http://www.greyc.ensicaen.fr/~dtschump/greycstoration)
   1.985 +    - Added 'examples/wavelet_atrous.cpp' (by R. Peteri) : Wavelet decomposition of a image.
   1.986 +    - Added a Fourier-based filtering demo in 'CImg_test.cpp', allowing interactive frequency filter creation.
   1.987 +    - Added an Image to ASCII converter, based on simple correlation measure. File : 'examples/image2ascii.cpp'.
   1.988 +
   1.989 + * Abandonned features :
   1.990 +    - Removed bump mapped version of the CImg<T>::draw_triangle() function.
   1.991 +    - Removed 'examples/inpainter.cpp' which is a little bit buggy (problem with multiscale).
   1.992 +    - Removed 'CImg<T>::new_display()' and 'CImgl<T>::new_display', which are confusing and useless. Use
   1.993 +      'new CImgDisplay(img)' and 'new CImgDisplay(list)' instead.
   1.994 +    - Removed 'CImg<T>::get_stats()' and 'CImgl<T>::get_stats', which are useless. Use 'CImgStats(img)'
   1.995 +      and 'CImgStats(list)'.
   1.996 +
   1.997 +*-----------------------------
   1.998 +*-----------------------------
   1.999 +* Changes from 1.0.6 to 1.0.7
  1.1000 +*-----------------------------
  1.1001 +*-----------------------------
  1.1002 +
  1.1003 + - New License : CImg is now distributed under the CeCiLL License, a free software GPL-like, more adapted
  1.1004 +   to French laws. Don't be disturbed by this new License, CImg is still an open source free software !
  1.1005 + - Encapsulation of all CImg classes and functions in the 'cimg_library::' namespace. It avoids eventual
  1.1006 +   class names collisions with other libraries. For compatility with your old code, you should
  1.1007 +   insert 'using namespace cimg_library;', just after the '#include "CImg.h"' line, in your source code.
  1.1008 + - Removed global typedefs for uchar,uint,ushort,ulong. If you used them before, you'll have to redefine them :
  1.1009 +   typedef unsigned char uchar;
  1.1010 +   typedef unsigned short ushort;
  1.1011 +   typedef unsigned int uint;
  1.1012 +   typedef unsigned long ulong;
  1.1013 + - Corrected window resize bug on X11 displays.
  1.1014 + - Added PANDORE-4 file format support, with functions 'CImg::load_pandore()' and 'CImg::save_pandore()' (file extension : .pan)
  1.1015 +   (PANDORE is a C++ toolkit for image processing, see http://www.greyc.ensicaen.fr/~regis/Pandore (in French))
  1.1016 + - Added macros CImg_3x3_ref(), CImg_5x5_ref(), .. allowing to use special loops cimg_map3x3,.. with references to C arrays and images.
  1.1017 + - Removed 'normalize' parameter in 'CImg::save()'. Saving normalized images can be still performed
  1.1018 +   with 'img.normalize(0,255).save("normalized_image.jpg");'. This clarifies the code and doesn't add so much work at all.
  1.1019 + - Renamed 'CImg::get_sprite()' and 'CImg::sprite()' to 'CImg::get_crop()' and 'CImg::crop()'.
  1.1020 + - Changed 'draw_triangle' function with two textures, so that it corresponds to displacement mapping
  1.1021 +   (aka 'bump mapping'), instead of two textures drawn with transparencies
  1.1022 +   (which can be still made by two successive calls to single-textured 'draw_triangle' functions,
  1.1023 +   with correct opacities).
  1.1024 + - Negative opacity parameter in drawing functions is now supported. It allows to ADD shapes colors to the current
  1.1025 +   image pixels (see the new 'ShadeBobs demo in the CImg_test.cpp file to see the concept).
  1.1026 + - Added functions 'CImg::draw_axeX', 'CImg::draw_axeY' and 'CImg::draw_axeXY', allowing to trace labelled axes on images.
  1.1027 + - Slightly changes in CImgDisplay : field 'attributes' has been removed, and replaced by more
  1.1028 +   comprehensive field names : events, normalize, fullscreen. Resizing capabilities is now removed
  1.1029 +   since all windows can be resized by default.
  1.1030 + - 'CImg<>::load_convert()' and 'CImg<>::save_convert()' do not popup a console window anymore on Windows-based OS,
  1.1031 +   when creating code with a WinMain() entry.
  1.1032 + - RGB<->BGR Color inversion problem on some old Unix displays has been corrected.
  1.1033 + - Makefile for compilation on Solaris has been updated.
  1.1034 + - Package structure has been slightly modified for more clarity. Renamed also the CVS module to 'CImg' instead of 'CImg_'
  1.1035 + - Added different compilers projects to ease the compilation of the CImg examples, including
  1.1036 +   Visual C++ 6.0, Visual.NET2003, Borland Bcc 5.6, Digital Mars Compiler, Dev-Cpp, Intel ICL.
  1.1037 + - Removed the use of TrackMouseEvent mechanism on Windows, removing compilation bugs with VC++6.0 when trying to create an MDI application.
  1.1038 + - Improved keycode detection under X11. Keycodes should now work for any X11-based system.
  1.1039 + - Support for FreeBSD added (thanks to Thierry Thomas).
  1.1040 + - Corrected bug in matrix multiplication.
  1.1041 + - Corrected bugs in CImg<T>::erode() and CImg<T>::dilate() functions (name inversion).
  1.1042 + - Corrected bug in 'CImg<T>::load_convert()' and 'CImg<T>::save_convert()' when trying to load/save images with pathnames containing spaces.
  1.1043 + - Recoded 'inrcast.cpp', and suppressed 'inrcrop.cpp' in the 'examples/' directory (functionnalities of 'inrcrop' are now included in 'inrcast').
  1.1044 + - And some corrections of minor bugs to improve library stability...
  1.1045 + - Improved error messages to ease program debug.
  1.1046 + - Documentation of the API is much more complete and detailled (still in progress...)
  1.1047 +
  1.1048 +*------------------------------
  1.1049 +*------------------------------
  1.1050 +* Changes from 1.0.5 to 1.0.6 :
  1.1051 +*------------------------------
  1.1052 +*------------------------------
  1.1053 +
  1.1054 + - Drawing functions improved and optimized : Added transparency level to all drawing functions.
  1.1055 + - Added function 'draw_arrow()'
  1.1056 + - Added missing boolean operators.
  1.1057 + - Added CImgDisplay resize event, allowing to create flexible resizing windows.
  1.1058 + - Added 'CImg::draw_gaussian()' functions allowing to draw 1d,2d or 3d gaussians on images.
  1.1059 + - Added 'Oriented convolutions' demos in CImg_test.cpp
  1.1060 + - Recoded pde_TschumperleDeriche2D and 3D.
  1.1061 + - Bugs corrected in arithmetics operators.
  1.1062 + - Optimized image display.
  1.1063 + - Recoded 'CImg::feature_selection()'.
  1.1064 + - Recoded 'CImg::get_rotate()'
  1.1065 + - Renamed 'draw_plot()' to 'draw_graph()', and added cubic drawing style.
  1.1066 + - Renamed 'wait_sync()' to 'wait()'.
  1.1067 + - Renamed 'get_correl' to 'get_correlate' (idem for 'convolve')
  1.1068 + - Removed 'get_correl3x3,5x5,...'. Optimization is now a part of the 'get_correlate' function. (idem for 'convolve').
  1.1069 + - Removed 'get_rotate90,180,270'. Optimization is now a part of the 'get_rotate' function.
  1.1070 + - Compilation supported by gcc.3.4.1 (released july 2004).