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).