114/6/21 started 8.12 2- all tools support `--version` 3- add vips_svgload_string() convenience function 4- fix thumbnail with small image plus crop plus no upsize [Andrewsville] 5- rename speed / reduction-effort / etc. params as "effort" 6- add gifsave [lovell] 7- arrayjoin minimises inputs during sequential processing, saving a lot of 8 memory and file descriptors 9- add vips_image_get_format_max() 10- flatten handles out of range alpha and max_alpha correctly 11- don't use atexit for cleanup, it's too unreliable 12- tiff writer loops for the whole image rather than per page [LionelArn2] 13- fix VipsSource with named pipes [vibbix] 14- added restart_interval option to jpegsave [manthey] 15- add IIIF3 support to dzsave [martimpassos] 16- add atan2 to math2 [indus] 17- improve buffer and target save file format selection 18- added VipsForeignPpmFormat, format arg to ppm savers 19- add fail-on to give better control over loader error sensitivity 20- add hyperbolic functions sinh, cosh, tanh, asinh, acosh, atanh [hroskes] 21- add untiled jp2k load 22- "insert" will minimise in seq mode 23- better EXIF string handling [lovell] 24 2516/8/21 started 8.11.4 26- fix off-by-one error in new rank fast path 27- add "unlimited" flag to png load [joshuamsager] 28- improve filtering of .v enums [lovell] 29- better logic to prevent shrink to nothing in thumbnail [kleisauke] 30 3114/7/21 started 8.11.3 32- build threadpool later [kleisauke] 33- add jxlsave prototypes [adil-benameur] 34- limit text chunks in PNGs [randy408] 35 3615/6/20 started 8.11.2 37- better libdir guessing [remi] 38- fix tiff pyramid creation with jp2k compression (was broken by 8.11.1) 39- don't load modules if we're built without modules 40 4118/6/21 started 8.11.1 42- add more example code to C docs 43- update libtool support in configure.ac 44- more startup info if VIPS_INFO is set 45- command-line programs set glib prgname (no longer set for you by VIPS_INIT) 46- enable strip chopping for TIFF read [DavidStorm] 47- disable modules by default for static builds [kleisauke] 48- fix jpeg tiff pyramid save 49 5014/8/20 started 8.11 51- add vips_jpegload_source() and vips_svgload_source() to public C API 52- integrate doxygen in build system to generate C++ API docs 53- improve C++ API doc comments 54- add VipsInterpolate and guint64 support to C++ API 55- add VImage::new_from_memory_steal [Zeranoe] 56- vipsthumbnail supports stdin / stdout thumbnailing 57- have a lock just for pdfium [DarthSim] 58- get pdfium load building again [Projkt-James] 59- add _source load support for pdfium 60- add "seed" param to perlin, worley and gaussnoise 61- add vips_source_g_input_stream_new() to load images from a GInputStream 62- add openslideload_source(), vipsload_source(), vipssave_target() 63- add hist path to rank for large windows on uchar images 64- better 8/16-bit choice for pngsave 65- avoid NaN in mapim [afontenot] 66- hist_find outputs a double histogram for large images [erdmann] 67- fix ref leaks in mosaicing package 68- run libvips leak test in CI 69- add vips_fitsload_source(), vips_niftiload_source() 70- png and gif load note background colour as metadata [781545872] 71- add vips_image_[set|get]_array_double() 72- add GIF load with libnsgif 73- add jp2kload, jp2ksave 74- add jp2k compression to tiff load and save 75- add JPEG-XL load and save 76- add black_point_compensation flag for icc transforms 77- add "rgba" flag to vips_text() to enable full colour text rendering 78- move openslide, libheif, poppler and magick to loadable modules [kleisauke] 79- better detection of invalid ICC profiles, better fallback paths 80- add "premultiply" flag to tiffsave 81- new threading model has a singe threadpool shared by all pipelines [kleisauke] 82 8330/4/21 start 8.10.7 84- better vips7 PNG load compatibility [SkyDiverCool] 85- fix load of large PPM images from a pipe [ewelot] 86 8722/12/20 start 8.10.6 88- don't seek on bad file descriptors [kleisauke] 89- check for null memory sources [kleisauke] 90- improve ppmload, fixing a couple of small bugs 91- improve EOF detection in jpegload [bozaro] 92- improve error detection in spngload [randy408] 93- fix includes of glib headers in C++ [lovell] 94- fix build with more modern librsvg [lovell] 95- fix a possible segv with very wide images [f1ac] 96- fix issue thumbnailing RGBA images in linear mode [jjonesrs] 97- improve vipsthumbnail profile handling 98- fix tiff deflate predictor setting [Adios] 99- fix vector path for composite on i386 [kleisauke] 100 10118/12/20 started 8.10.5 102- fix potential /0 in animated webp load [lovell] 103 10414/12/20 started 8.10.4 105- fix spng detection 106 10718/10/20 started 8.10.3 108- relax heic is_a rules [hisham] 109- fix vips7 webp load [barryspearce] 110- fix out of bounds exif read in heifload 111- fix out of bounds read in tiffload 112- fix tiffsave region shrink mode [imgifty] 113- add missing flushes on write to target [harukizaemon] 114- hide info messages you could get with some older glibs [kleisauke] 115- fix --no-strip on dzsave with icc-profiles [altert] 116- better GraphicsMagick image write [bfriesen] 117- add missing read loops to spng, heif, giflib and ppm load [kleisauke] 118- block zero width or height images from imagemagick load [Koen1999] 119- check for overflow in gifload height [lovell] 120- fix msb_first default in ppm load and save [ewelot] 121- force binary mode on win for connection read / write [Alreiber] 122- better testing for output to target [barryspearce] 123- ppmload_source was missing is_a [ewelot] 124- improve webpload rounding and blending behaviour [lovell] 125- fix range clip in int32 -> unsigned casts [ewelot] 126- fix precision error in clip of float -> int casts [ewelot] 127- fix load of HEIC images with 0 length metadata [ddennedy-gpsw] 128- revise rounding in reduce [kleisauke] 129 1306/9/20 started 8.10.2 131- update magicksave/load profile handling [kelilevi] 132- better demand hint rules [kaas3000] 133- fix tiff thumbnail from buffer and source [vansante] 134- in jpegsave, don't set JFIF resolution if we set EXIF resolution 135- bump minimum libheif version to 1.3 [lovell] 136- dzsave in iiif mode could set info.json dimensions off by one [Linden6] 137- pdfload allows dpi and scale to both be set [le0daniel] 138- allow gaussblur sigma zero, meaning no blur 139- better heif signature detection [lovell] 140- fix vips_fractsurf() typo [kleisauke] 141- better heif EOF detection [lovell] 142- fix gir build with g-o-i 1.66+ [László] 143- improve seek behaviour on pipes 144- add "speed" param to heifsave [lovell] 145- fix regression in C path for dilate / erode [kleisauke] 146- fix build with libheif save but no load [estepnv] 147 1489/8/20 started 8.10.1 149- fix markdown -> xml conversion in doc generation 150- remove typedef redefinitions to please old gccs 151- fix regression in tiff pyramid thumbnailing [tand826] 152- stop 0-length buffer being passed to imagemagick [lovell] 153- convert no-profile CMYK to RGB on save [augustocdias] 154- ensure SVG loader skips input with chars outside x09-x7F range [lovell] 155- better mask sizing in gaussmat [johntrunc] 156- fix tiffsave "squash" handling [barryspearce] 157- fix jpegload autorotate [chregu] 158- only start the background render thread on first use 159 16024/1/20 started 8.10.0 161- more conformat IIIF output from dzsave [regisrob] 162- add @id to dzsave to set IIIF id property [regisrob] 163- add max and min to region shrink [rgluskin] 164- allow \ as an escape character in vips_break_token() [akemrir] 165- tiffsave has a "depth" param to set max pyr depth 166- libtiff LOGLUV images load and save as libvips XYZ 167- add gifload_source, csvload_source, csvsave_target, matrixload_source, 168 matrixsave_source, pdfload_source, heifload_source, heifsave_target, 169 ppmload_source, ppmsave_target 170- revise vipsthumbnail flags 171- add VIPS_LEAK env var 172- add vips_pipe_read_limit_set(), --vips-pipe-read-limit, 173 VIPS_PIPE_READ_LIMIT 174- revise gifload to fix BACKGROUND and PREVIOUS dispose [alon-ne] 175- add subsample_mode, deprecate no_subsample in jpegsave [Elad-Laufer] 176- add vips_isdirf() 177- add PAGENUMBER support to tiff write [jclavoie-jive] 178- add "all" mode to smartcrop 179- flood fill could stop half-way for some very complex shapes 180- better handling of unaligned reads in multipage tiffs [petoor] 181- mark old --delete option to vipsthumbnail as deprecated [UweOhse] 182- png save with a bad ICC profile just gives a warning 183- add "premultipled" option to vips_affine(), clarified vips_resize() 184 behaviour with alpha channels 185- improve bioformats support with read and write of tiff subifd pyramids 186- thumbnail exploits subifd pyramids 187- handle all EXIF orientation cases, deprecate 188 vips_autorot_get_angle() [Elad-Laufer] 189- load PNGs with libspng, if possible 190- deprecate heifload autorotate -- it's now always on 191- revised resize improves accuracy [kleisauke] 192- add --vips-config flag to show configuration info 193- add "bitdepth" param to tiff save, deprecate "squash" [MathemanFlo] 194- tiff load and save now supports 2 and 4 bit data [MathemanFlo] 195- pngsave @bitdepth parameter lets you write 1, 2 and 4 bit PNGs 196- ppmsave also uses "bitdepth" now, for consistency 197- reduce operation cache max to 100 198- rework the final bits of vips7 for vips8 [kleisauke] 199- --disable-deprecated now works [kleisauke] 200- vipsheader allows "stdin" as a filename 201- gifload allows gifs with images outside the canvas 202- wasm compatibility patches [kleisauke] 203- webpsave has a @profile param 204 20524/4/20 started 8.9.3 206- better iiif tile naming [IllyaMoskvin] 207 20831/1/19 started 8.9.2 209- fix a deadlock with --vips-leak [DarthSim] 210- better gifload behaviour for DISPOSAL_UNSPECIFIED [DarthSim] 211- ban ppm max_value < 0 212- add fuzz corpus to dist 213- detect read errors correctly in source_sniff 214- fix regression in autorot [malomalo] 215- thumbnail on HEIC images could select the thumbnail incorrectly under some 216 size modes [ZorinArsenij] 217 21820/6/19 started 8.9.1 219- don't use the new source loaders for new_from_file or new_from_buffer, it 220 will break the loader priority system 221- fix thumbnail autorot [janko] 222- fix a warning with magicksave with no delay array [chregu] 223- fix a race in tiled tiff load [kleisauke] 224- better imagemagick init [LebronCurry] 225- lock for metadata changes [jcupitt] 226 22720/6/19 started 8.9.0 228- add vips_image_get/set_array_int() 229- disable webp alpha output if all frame fill the canvas and are solid 230- support arrays of delays for animated images [deftomat] 231- add "unlimited" flag to svgload 232- disable webp alpha output if all frames fill the canvas and are solid 233- add "compression" option to heifsave [lovell] 234- support webp and zstd compression in tiff 235- loaders use "minimise" to close input files earlier 236- integrate support for oss-fuzz [omira-sch] 237- add vips_switch() / vips_case() ... fast many-way ifthenelse 238- better const handling for arithmetic operators fixes comparisons against out 239 of range values 240- sharpen restores input colourspace 241- handle alpha in heifload / heifsave [meyermarcel] 242- add @interpretation and @format to rawload 243- nifti load/save uses double for all floating point metadata 244- add vips_error_buffer_copy() 245- add VipsSource and VipsTarget: a universal IO class for loaders and savers 246- jpeg, png, tiff (though not tiffsave), rad, svg, ppm and webp use the 247 new IO class 248- rewritten ppm load/save is faster and uses less memory 249- add @no_strip option to dzsave [kalozka1] 250- add iiif layout to dzsave 251- fix use of resolution-unit metadata on tiff save [kayarre] 252- support TIFF CIELAB images with alpha [angelmixu] 253- support TIFF with premultiplied alpha in any band 254- block metadata changes on shared images [pvdz] 255- RGB and sRGB are synonmous 256 25717/9/19 started 8.8.4 258- improve compatibility with older imagemagick versions 259- remove realpath, since it can fail on systems with grsec 260 26131/8/19 started 8.8.3 262- revert sharpen restoring the input colourspace 263- xres/yres tiffsave params were in pixels/cm [f--f] 264 2659/7/19 started 8.8.2 266- better early shutdown in readers 267- don't attempt to save large XMP to jpeg [tnextday] 268- always fetch HEIC metadata from the main image [zhoux2016] 269- fix loop in malformed ppm [Kyle-Kyle] 270- better support for PNGs with long comment names 271- fix build with GM 272- add locks for pdfium load 273- fix build with MSVC 274- fix a problem with shinkv tail processing [angelmixu] 275- fix a read one byte beyond buffer bug in jpegload 276- make GIF parsing less strict 277- better feof() handling in GIF load 278- clip coding and interpretation on vips image read 279- check image bounds for GIF load 280- prevent over-pre-shrink in thumbnail [kleisauke] 281- fix sharpen with sigma 0.5 [2h4dl] 282- sharpen restores input colourspace 283- verify bands/format for coded images 284- improve data_length handling for jpeg metadata 285 28624/5/19 started 8.8.1 287- improve realpath() use on older libc 288- better magickload error messages 289- more consistent behaviour for page-height metadata 290- fix for composite with many small images and some combinations of blend modes 291- fix memleak in tiff pyr save to memory [scossu] 292- istiff attempts to read the first directory rather than just testing the 293 magic number [przemyslawpluta] 294- much faster ismagick() [jcupitt] 295- better behaviour for vips_region_fetch() if request lies partly ouside image 296- remove 256 band limit in arithmetic.c [erdmann] 297- disable Orc if building with CET [lovell] 298- fix vipsthumbnail with pyr tiff [kleisauke] 299- text autofit could occasionally terminate early [levmorozov] 300- fewer warnings on tiffload [chregu] 301- vips_resize() breaks aspect ratio and limits shrink to prevent <1px 302 dimensions [lovell] 303 30421/9/18 started 8.8.0 305- much faster smartcrop [lovell] 306- add low/high to smartcrop [jcupitt] 307- add XMP support to png read/write [jcupitt] 308- deprecate thumbnail auto_rotate, add no_rotate [jcupitt] 309- implement thumbnail shrink-on-load for openslide images [jcupitt] 310- add animated webp support [jcupitt] 311- revise vips_cast() to improve behaviour with uint images [erdmann] 312- add bandand()/or()/eor() to cplusplus binding [clcaalu] 313- implement shrink-on-load for tiff pyramids [jcupitt] 314- added vips_image_set_blob_copy() [jcupitt] 315- don't stop composite on first non-transparent image [felixbuenemann, GDmac] 316- add vips_rect_overlapsrect() 317- composite is much faster at positioning subimages 318- stop tiff pyr layers if width or height drop to 1 [gvincke] 319- dzsave has a new skip_blanks option 320- add vips_CMYK2XYZ() and vips_XYZ2CMYK(), plus associated routes 321- include cmyk and srgb fallback profiles 322- add vips_profile_load() and use it everywhere 323- fix race in temp filename creation [lhecker] 324- add @reduction_effort param to webpsave [lovell] 325- add @option_string param to thumbnail_buffer [kleisauke] 326- add XMP, IPCT, ICC, EXIF etc. support to magickload/magicksave 327- much lower memuse for gifload 328- tilecache speedups 329- add vips_heifload(), vips_heifsave() 330- add heif thumbnail support to vips_thumbnail() 331- free threadpool earlier, reducing mem growth for some long-running 332 processes [jtorresfabra] 333- add vips_region_fetch() / _width() / _height() for language bindings 334- vips_text() supports justification 335- move vips_image_set_kill() and iskilled() to the public API 336- dzsave to szi sets suffix correctly [martinweihrauch] 337- dzsave szi writes "scan-properties.xml" 338- add vips_image_(get|set)_image() 339- add openslideload option to attach all associated images as metadata 340- dzsave to szi will write all associated images 341- remove old c++ and python interfaces 342- vipsthumbnail can thumbnail animated and multipage images 343- deprecate webpload @shrink, use @scale instead 344 34531/3/19 started 8.7.5 346- better buffer sizing in tiff reader [omira-sch] 347 3484/1/19 started 8.7.4 349- magickload with magick6 API did not chain exceptions correctly causing a 350 memory leak under some conditions [kleisauke] 351- zero memory on allocate to prevent write of uninitialized memory under some 352 error conditions [Balint Varga-Perke] 353 35421/11/18 started 8.7.3 355- fix infinite loop for autofit with non-scaleable font 356- mapim was not offsetting by window offset [erdmann] 357- better rounding for scale [kleisauke] 358- fix a memleak in magick6load [kleisauke] 359 36021/11/18 started 8.7.2 361- more info output for temp files to help diagnose problems 362- vips_text() could set the wrong DPI 363- vips_text() leaked in autofit mode 364 36523/9/18 started 8.7.1 366- update function list in docs [janko-m] 367- test for g_str_to_ascii() [jcupitt] 368- fix temp file open on Windows and fallback on linux [lovell] 369 37023/12/17 started 8.7.0 371- add magicksave, save image with libMagick [dlemstra] 372- remove jpeg thumbnail from EXIF if "jpeg-thumbnail-data" has been removed by 373 user 374- hough_line scales width to 0 - 180, not 0 - 360 375- hough_line is 4x faster 376- hough_circle is 2x faster 377- add vips_sobel() and vips_canny() edge detectors 378- add vips_rotate() ... a convenience method for vips_similarity() 379- svgload was missing is_a [lovell] 380- better header sniffing for small files 381- drop incompatible ICC profiles before save 382- better hasalpha rules 383- create funcs always make MULTIBAND (ie. no alpha) 384- use O_TMPFILE, if available [Alexander--] 385- set "interlaced=1" for interlaced JPG and PNG images 386- add PDFium PDF loader 387- jpegload adds a jpeg-chroma-subsample field with eg. 4:4:4 for no 388 chrominance subsampling. 389- tiffload, pdfload, magickload set VIPS_META_N_PAGES "n-pages" metadata item 390- add fontfile option to vips_text() [fangqiao] 391- add vips_transpose3d() -- swap major dimensions in a volumetric image 392- remove vips7 stuff from default API ... you must now #include it explicitly 393- added vips_argument_get_id() to fix derived classes on win32 [angelmixu] 394- fix compile with MSVC 2017 [angelmixu] 395- pdfload has a option for background 396- vips7 C++ interface defaults off 397- make members, getters and operators "const" in cpp API 398- composite has params for x/y position of sub-images [medakk] 399- add Mitchell kernel 400- pyramid builders have a choice of 2x2 shrinkers [harukizaemon] 401- add `palette` option to pngsave [felixbuenemann] 402- add basic nifti load/save support 403- support writing string-valued fields via libexif 404- paste in the test suite from pyvips 405- get EXIF tag names from tag plus ifd [@Nan619] 406- escape ASCII control characters in XML 407- magickload now sniffs some file types itself 408- update radiance load from upstream 409- add region_shrink to tiffsave 410- mapim could fail for float index images with coordinates out of int range 411- scale openexr alpha to 0 - 255 412- close input earlier, when we can [kleisauke] 413- add vips_object_get_args() for language bindings [kleisauke] 414 41512/3/18 started 8.6.4 416- better fitting of fonts with overhanging edges [Adrià] 417- revise C++ example [fangqiao] 418- strict round down on jpeg shrink on load [davidwood] 419- configure test for g++ 7.2 and composite.cpp 420- don't Ping in magickload, too unreliable 421- ensure WebP can add metadata when compiled with libwebpmux [lovell] 422- improve accuracy of vector path convolution [felixbuenemann] 423 42412/2/18 started 8.6.3 425- use pkg-config to find libjpeg, if we can 426- better clean of output image in vips_image_write() fixes a crash 427 writing twice to memory 428- better rounding behaviour in convolution means we hit the vector path more 429 often 430- fix a crash if a delayed load failed [gsharpsh00ter] 431- icc_import attaches the fallback profile if it used it 432 4335/1/18 started 8.6.2 434- vips_sink_screen() keeps a ref to the input image ... stops a rare race 435- fix a minor accidental ABI break in 8.6.0 -> 8.6.1 [remicollet] 436- fix read of plane-separate TIFFs with large strips [remicollet] 437- fix a C++ warning in composite.cpp [lovell] 438- remove number of images limit in composite 439- composite allows 1 mode ... reused for all joins 440- fix race in vips_sink() for seq read 441 44210/12/17 started 8.6.1 443- fix mmap window new/free cycling 444- fix some compiler warnings 445- remove the 64-image limit on bandary operations 446- better version date [bmwiedemann] 447- bump wrapper script version [bgilbert] 448- fix a memleak on error during jpeg buffer write [lovell] 449- fix misspelling of IPTC as IPCT [lovell] 450- seq could be set on small images opened in random-access mode [aferrero2707] 451- fix small memleak in dzsave [lovell] 452- small speedup for rgb->g [lovell] 453 45415/4/17 started 8.6.0 455- supports fits images with leading non-image HDUs, thanks benepo 456- add vips_image_new_from_image() and vips_image_new_from_image1() ... make a 457 constant image 458- add new_from_image() to Python as well 459- slight change to cpp new_from_image() to match py/C behaviour 460- vips_conv(), vips_compass(), vips_convsep() default to FLOAT precision 461- add FORCE resize mode to break aspect ratio 462- add vips_thumbnail_image() 463- better prefix guessing on Windows, thanks tumagonx 464- savers support a "page_height" option for multipage save 465- rename 'disc' as 'memory' and default off 466- add vips_find_trim(), search for non-background areas 467- remove lcms1 support, it had bitrotted 468- `join` tagged as seq 469- support tiffsave_buffer for pyramids, thanks bubba 470- thumbnail and vipsthumbnail have an option for rendering intent, thanks 471 kleisauke 472- set file create time on Windows, thanks dlong500 473- remove python tests ... moved to pyvips test suite 474- vips7 and vips8 python bindings default to off ... use the new pyvips 475 binding instead 476- better svgload: larger output, handle missing width/height, thanks lovell 477- add vips_gravity() ... embed, but with direction rather than position 478- vips_text() can autofit text to a box, thanks gargsms 479- add vips_composite() / vips_composite2(): merge a set of images with 480 a set of blend modes 481- better gobject-introspection annotations, thanks astavale 482- vips_image_write() severs all links between images, when it can ... thanks 483 Warren and Nakilon 484- vector path for convolution is more accurate and can handle larger masks 485- linear and cubic kernels for reduce are higher quality 486- added vips_value_set_blob_free() 487- "--size Nx" to vipsthumbnail was broken, thanks jrochkind 488- fix build with gcc 7 489- add vips_fill_nearest() ... fill pixels with nearest colour 490- add VIPS_COMBINE_MIN, a new combining mode for vips_compass() 491- vips_hist_find_indexed() now has a @combine parameter 492- vips_affine() and vips_similarity() have a "background" parameter 493- fix nasty jaggies on the edges of affine output, thanks chregu 494- add gif-delay, gif-comment and gif-loop metadata 495- add dispose handling to gifload 496- dzsave outputs extra right and bottom overlap-only tiles, for closer spec 497 adherence 498- deprecate the "centre" option for vips_resize(): it's now always on 499- setting the EXIF data block automatically sets other image tags 500- add "extend" option to affine; resize uses it to stop black edges 501 50229/8/17 started 8.5.9 503- make --fail stop jpeg read on any libjpeg warning, thanks @mceachen 504- don't build enumtypes so often, removing perl as a compile dependency 505- fix a crash with heavy use of draw operations from language bindings, 506 thanks @Nakilon 507 5082/8/17 started 8.5.8 509- fix transparency detection in merge, thanks Haida 510- define env var VIPS_WARNING to hide warning messages 511- shut down dzsave output earlier to help mark-sweep bindings 512- fix webp thumbnail upscale, thanks Kleis 513 5149/6/17 started 8.5.7 515- better smartcrop 516- transform cmyk->rgb automatically on write if there's an embedded profile 517 and the saver does not support cmyk 518- fix DPI mixup in svgload ... we were writing images about 20% too large, 519 thanks Fosk 520 52119/5/17 started 8.5.6 522- tiff read with start page > 0 could break edge tiles or strips 523- raise b64 limit to allow for huge profiles (thanks jaume) 524- fix error return in blob save (thanks jaume) 525- tag vipsprofile as py2 (thanks ioquatix) 526- don't cache thumbnail (thanks tomasc) 527 52823/4/17 started 8.5.5 529- doc polishing 530- more improvements for truncated PNG files, thanks juyunsang 531- improve corrupted jpg handling, thanks juyunsang 532- fix small test suite issues on os x 533 53423/4/17 started 8.5.4 535- don't depend on image width when setting n_lines, thanks kleisauke 536 5377/4/17 started 8.5.3 538- more link fixing in docs 539- revise cache sizing again to help out of order errors under heavy load, thanks 540 kleisauke 541 54225/3/17 started 8.5.2 543- better behaviour for truncated PNG files, thanks Yury 544- missing proto for vips_tiffsave_buffer(), thanks greut 545- move some docs from the wiki and blog into core libvips docs 546- add support for markdown in docs 547 54825/3/17 started 8.5.1 549- init more classes earlier, thanks David 550 55113/10/16 started 8.5.0 552- rewritten buffer system is safer and frees memory earlier 553- added tiff save to buffer 554- added dzsave save to buffer (zip only) 555- revise header get/set functions 556- better vipsheader behaviour with complex field types 557- added vips_image_hasalpha() 558- added vips_thumbnail() / vips_thumbnail_buffer() 559- webpload/webpsave read and write icc, xmp, exif metadata 560- better >4gb detect for zip dzsave output [Felix Bünemann] 561- all loaders have a @fail option, meaning fail on first warning, though it 562 only does anything for jpg and csv 563- add vips_image_get_fields() to help bindings 564- add tiff multi-page read/write 565- add VIPS_META_PAGE_HEIGHT metadata 566- IM6/IM7 magickload supports page/n/page-height, all_frames deprecated 567- gifload supports n/page-height 568- added #defines for VIPS_SONAME, VIPS_LIBRARY_CURRENT, VIPS_LIBRARY_REVISION, 569 VIPS_LIBRARY_AGE 570- better support for bscale / bzero in fits images 571- deprecate vips_warn() / vips_info(); use g_warning() / g_info() instead 572- vipsthumbnail supports much fancier geometry strings, thanks tomasc 573- vips_thumbnail() has new @size option 574- fix --vips-cache-max etc. 575- add compute reordering, plus some new API to support it: 576 vips_reorder_margin_hint() and vips_reorder_prepare_many(), thanks 577 aferrero2707 578- kick load operations from cache on read error, thanks gaillard 579- fix return from C++ assignment operator overloads (+=, -= etc) 580- add @max_slope to vips_hist_local() to implement CLAHE, thanks hunter-87 581- vips_gaussnoise() pixels are reproducible on recalc, thanks MvGulik 582- max/min sort values by y and x coordinate 583- tiff read uses libtiff scanline API if rows-per-strip is large 584- vips_region_shrink() knows about alpha, helps dzsave and tiffsave 585- use expat, not libxml, for XML load ... removes a required dependency, since 586 we get expat as part of glib 587- new sequential mode infrastructure is faster and more flexible 588- add vips_smartcrop(), based on sharp's smartcropper 589- vipsthumbnail has a --smartcrop option 590- added vips_rot90() etc. convenience functions 591- fix vips_resize() bug when hscale and vscale were very different 592 5938/12/16 started 8.4.5 594- allow libgsf-1.14.26 to help centos, thanks tdiprima 595 59611/11/16 started 8.4.4 597- fix crash in vips.exe arg parsing on Windows, thanks Yury 598 59918/10/16 started 8.4.3 600- fix error detection in gif_close, thanks aaron42net 601- fix tiny threading memleak 602- improve compatibility with very old glib, see #548 603 60427/9/16 started 8.4.2 605- small doc improvements 606- fix error message for metadata fetch type mismatch 607- resolve a race condition in thread shutdown, thanks Lovell 608 6091/5/16 started 8.4 610- many more wepsave options [Felix Bünemann] 611- added quant_table option to wepsave [Felix Bünemann] 612- added @n option to pdfload, thanks andris 613- dzsave won't write empty tiles in google mode, thanks bverem, perog, 614 felixbuenemann 615- allow nested [] in CLI args 616- restore BandFmt on unpremultiply in vipsthumbnail 617- better python detection and build [Felix Bünemann] 618- max-alpha defaults to 65535 for RGB16/GREY16 619- added radsave_buffer [Henri Chain] 620- support tiff orientation tag 621- autorotate option for tiff load 622- tiffsave converts for jpg if jpg compression is turned on 623- tiffsave supports --strip 624- conversions to GREY16 could lock 625- free pixel buffers on image close as well as thread exit ... stops main 626 thread buffers clogging up the system 627- dzsave can write compressed zips [Felix Bünemann] 628- vips_image_write() only refs the input when it has to ... makes it easier to 629 combine many images in bounded memory 630- VImage::write() implementation was missing 631- VImage::write() return value changed from void to VImage to help chaining 632- added C++ arithmetic assignment overloads, += etc. 633- VImage::ifthenelse() with double args was missing =0 on options 634- better accuracy for reducev with smarter multiplication 635- better quality for vips_resize() with linear/cubic kernels 636- pyvips8 can create new metadata 637- better upsizing with vips_resize() 638- add imagemagick v7 support, thanks sachinwalia2k8 639- added vips_worley(), vips_perlin() noise generators 640- added vips_convf(), vips_convi(), vips_convasep(), vips_conva() ... 641 im_conv*() functions rewritten as classes 642- vips_convsep() calls vips_convasep() for the approximate case 643- new fixed-point vector path for convi is up to about 2x faster 644- gif loader can make 1, 2, 3, or 4 bands depending on file contents 645- support --strip for pngsave 646- add svgz support [Felix Bünemann] 647- rename boostrap.sh -> autogen.sh to help snapcraft 648- support unicode filenames on Windows 649- added VIPS_ROUND as well as VIPS_RINT 650- resize/reduce*/shrink*/affine now round output size to nearest rather than 651 rounding down, thanks ioquatix 652- better support for tile overlaps in google maps mode in dzsave 653- dzsave puts vips-properties.xml in the main dir for gm and zoomify layouts 654- resize and reduce have @centre option for centre convention downsampling 655- vipsthumbnail uses centre convention to better match imagemagick 656_ add vips_foreign_get_suffixes() 657 65819/8/16 started 8.3.4 659- better transparency handling in gifload, thanks diegocsandrim 660 66130/7/16 started 8.3.3 662- fix performance regression in 8.3.2, thanks Lovell 663- yet more robust vips file reading 664 66518/5/16 started 8.3.2 666- more robust vips image reading 667- more robust tiff read [Matt Richards] 668 66915/4/16 started 8.3.1 670- rename vips wrapper script, it was still vips-8.2, thanks Benjamin 671- export C++ operator overloads for MSVC linking [Lovell] 672- fix magickload @page with GraphicsMagick 673- add giflib5 support 674- allow resize >1 on one axis, <1 on the other 675- vips_resize has an optional @kernel argument 676- fix giflib4 detection [felixbuenemann] 677 67829/1/16 started 8.3 679- add vips_reduce*() ... a fast path for affine downsize 680- vips_resize() uses vips_reduce() with lanczos3 681- bicubic is better on 32-bit int images 682- add pdfload, svgload, gifload for PDF, SVG and GIF rendering 683- vipsthumbnail knows about pdfload and svgload 684- added @page param to magickload 685- matload is more specific (thanks bithive) 686- lower mem use for progressive jpg decode 687- sharpen has a new @sigma param, @radius is deprecated 688- sharpen allows a much greater range of parameters 689- sharpen defaults now suitable for screen output 690- better handling of deprecated args in python 691- much better handling of arrayimage command-line args 692- faster hist_find (Lovell Fuller) 693- webpload has a @shrink parameter for shrink-on-load 694- vipsthumbnail knows about webp shrink-on-load 695- better behaviour for vips_cast() shift of non-int types (thanks apacheark) 696- python .bandrank() now works like .bandjoin() 697- vipsthumbnail --interpolator and --sharpen switches are deprecated 698- switches to disable PPM, Rad and Analyze support 699- added VIPS_COUNT_PIXELS(), overcomputation tracking 700- @out_format in vips_system() can contain [options] 701- webpsave_buffer no longer ignores @lossless, thanks aaron42net 702- float tiff tagged as scRGB to match photoshop convention, thanks Murat 703- better jpeg autorot, thanks otto 704 70524/3/16 started 8.2.4 706- fix nohalo and vsqbs interpolators, thanks Rafael 707 70827/1/16 started 8.2.3 709- fix a crash with SPARC byte-order labq vips images 710- fix parsing of filenames containing brackets, thanks shilpi230 711- fix hist_entropy (lovell) 712- small fixes to radiance load 713 71412/1/16 started 8.2.2 715- changes to ease compiling C++ binding with MSVC [Lovell Fuller] 716- reorder file tests to put slow loaders last 717- ifthenelse needs less C stack during eval 718- better rounding in bilinear interpolator 719- fix to "make check" in non-C locales [felixbuenemann] 720- use compiler builtins isnan, isinf, fabs, fmin, fmax, ceil, floor when 721 possible [Lovell Fuller] 722- tune vips_shrinkh(), 30% faster [Lovell Fuller] 723- remove SEQ hint from vips_subsample(), fixes cli performance [erdmann] 724- fix double free on attach ICC profile from file in tiff write [erdmann] 725- use g_assert_not_reached() 726- better vips-from-C docs 727- remove Duff from im_conv() / im_conv_f() for a 25% speedup [Lovell Fuller] 728 7291/1/16 started 8.2.1 730- add a compat stub [Benjamin Gilbert] 731- python bandjoin is now just an instance function 732- small doc improvements 733- small vips7 C++ improvement 734- remove exception specifications from vips8 C++ interface [Lovell Fuller] 735- VImage::get_typeof() now returns GType 736 7377/10/15 started 8.2.0 738- added im_bufmagick2vips(), a vips7 wrapper for magick load from buffer 739- fetch unset property now returns default value rather than warning 740- many more const declarations to help gobject-introspection 741- rewritten vips_shrink() is 2x faster, much lower memuse, now handles complex 742- only allow [] for filename options 743- add memory.h to Python API .. makes tracked highwater visible 744- added bandjoin_const to add constant bands to an image 745- better alpha handling for tiff write, thanks sadaqatullahn 746- better cache sizing for vips_resize() 747- sizealike / formatalike / bandsalike elide completely if they can for 748 a x2 saving in C stack use in many cases 749- added vips_mapim() ... resample with an index image, plus test 750- try to improve vips_resize() quality a little more 751- vips_resize() can do non-square resizes 752- dzsave removes tile metadata by default, thanks Benjamin 753- jpeg strip option removes a little more, thanks Benjamin 754- added vips_image_new_from_memory_copy() 755- improve vips_sink_screen() stability under heavy load 756- added vips_arrayjoin() 757- Python x.bandjoin(y) is now x.ibandjoin(y), sorry 758- faster and lower-mem TIFF read 759- faster bilinear interpolator 760- TIFF loads and saves IMAGEDESCRIPTION 761- add --properties flag to tiffsave 762- dzsave defaults changed: now writes 256x256 jpegs for non-edge tiles, thanks 763 Daniel 764 7657/5/15 started 8.1.1 766- oop, vips-8.0 wrapper script should be vips-8.1, thanks Danilo 767- fix vips7 pathname parsing on windows, thanks Lovell 768 7697/5/15 starteld 8.1.0 770- add vips_premultiply(), vips_unpremultiply() 771- change the alpha range rules for vips_flatten() to match vips_premultiply() 772- vipsthumbnail uses vips_resize() rather than its own code 773- vipsthumbnail uses vips_premultiply() for better alpha quality 774- added bandand() bandor() bandeor() convenience funcs to Python 775- oops, base64 encode could pad by up to two zero bytes 776- added VipsRefString as a thing that gi bindings can unpack 777- support "with Vips.Image as i:" in Python 778- try to support DOS CSV and PPM files on linux 779- add vips_byteswap(), remove byteswap option from vips_copy() 780- add vips_bandfold()/vips_bandunfold() 781- dzsave supports zip output > 4gb, thanks benjamin 782- add support for HSV colourspace [Jonas Øgaard] 783- skip oversized markers in jpeg write 784- jpeg exif tags saved as name rather than title 785- can now set any jpeg exif tag, not just modify existing tags 786- add vips_hist_entropy() 787- vips_log(), vips_log10() are zero-avoiding 788- better overlap handling for dzsave, thanks robclouth 789- add @spacing option to vips_text() 790- tiff loads and saves IPCT and Photoshop data 791 7927/5/15 started 8.0.3 793- dzsave and tif pyr write could fail for some image dimensions, thanks Jonas 794 7954/5/15 started 8.0.2 796- fix a refcount error in C++ wrapper, thanks huskier 797- better C++ api test 798- test suite improvements 799- remove a couple of stray header decls, thanks benjamin 800 80125/4/15 started 8.0.1 802- fix some compiler warnings 803- work around a glib bug that can cause segv under load 804- add some notes on threading to the docs 805- better leak reporting 806 80711/2/15 started 8.0 808- remove old doc stuff, lots of doc improvements 809- add fliphor(), flipver(), rot90(), rot180(), rot270(), median(), dilate(), 810 erode() convenience methods to Python and C++ 811- python: use [] to index and slice image bands, use () to get a point 812- c++: use [] to band index, () returns a vector<double> 813- add shift option to cast 814- sRGB2scRGB and scRGB2sRGB scale 16-bit alpha to and from 8-bit 815- add magickload_buffer() [mcuelenaere] 816- add vips_foreign_is_a_buffer() [mcuelenaere] 817- added test_foreign.py, plus more test images 818- added vips_region_shrink(), fast x2 shrinker 819- rewritten tiff writer is about 3 - 4x faster at making pyramids 820- jpg, magick, png, tiff readers now use only 1 fd per input image 821- added vips_info_set(), vips_progress_set(), vips_profile_set() ... bindings 822 can now support all the vips command-line options if they wish 823- better conversion to greyscale, thanks bkw 824- add vips_image_copy_memory(), improves stability with heavy threading 825- jpegsave supports new mozjpeg features [lovell] 826- add vips_vipsload(), vips_vipssave() ... why not 827 82826/3/15 started 7.42.4 829- im_maxpos_avg() avoids NaN 830- small tiffsave doc improvements 831- better thresholding for tiffsave "squash" mode 832- add @miniswhite mode to tiffsave 833 8346/2/15 started 7.42.3 835- bump version for back-compat ABI change 836- added vips_image_memory(), an alias for vips_image_new_memory() 837- improvements to configure for python 838- remove --disable-cxx configure flag 839- python imageize preserves interpretation 840- fix dzsave as a target format 841 84230/12/14 started 7.42.2 843- C++ required output params were broken, thanks Lovell 844- remove VImage::scale() to get scale from header, it clashed with the 845 VipsScale operator, thanks Lovell 846- allow c++ set enum from string 847- display param default and range in usage 848- better docs 849- more tests 850- renamed VIPS_FOREIGN_DZ_DEPTH_1 as VIPS_FOREIGN_DZ_DEPTH_ONE etc. to help 851 bindings 852- vipsthumbnail will return an error code if one or more conversions failed 853- disable chroma subsample in jpeg-tiff if Q >= 90 854- try to handle tiffs with old-style 8-bit colormaps 855- rename vipsthumbnail -o as -f, -o stays as a hidden flag 856- fix some small leaks 857- faster openslide load, thanks Benjamin 858- add VInterpolate class to cplusplus binding, thanks Lovell 859- add lower-level operation cache access 860- turn on leak testing in test suite 861- don't use isnormal() to test for crazy FP numbers, thanks Murat 862- much faster RGB16 -> sRGB path 863 86424/12/14 started 7.42.1 865- add gobject-2.0 to Requires: in vips and vips-cpp .pc files 866- bump soname 867- fix VipsBlob read 868- remove "future" dependency, thanks bgilbert 869 8704/11/14 started 7.42.0 871- better default resolution for png load 872- better pbm (one bit) load, better pfm (float) load/save 873- added pbm (one bit) save 874- changed vips_gaussblur() parameters, sorry 875- add .szi as a dzsave zip synonym 876- support tiff XMP metadata 877- support @density arg to magickload [Lovell] 878- support python3.4 and python2.7 in new python binding 879- vips_gaussmat() and vips_logmat() are now int by default, to match 880 vips_conv(), and use @precision, not @integer 881- added --disable-pyvips8 switch to turn off new py binding 882- "vips thing" exit status can now be used to test for optional components 883 88425/7/14 started 7.41.0 885- start working on --disable-deprecated 886- fix pngload with libpng >1.6.1 887- add vips_resize() 888- return of vips_init(), but just for bindings 889- revised type.c to make it more binding-friendly 890- add @background arg to save: the colour to flatten against 891- add VIPS_ARGUMENT_MODIFY flag ... used for draw_circle etc, meaning an op 892 which modifies its argument 893- rename VIPS_OPERATION_RELATIONAL_NOTEQUAL as VIPS_OPERATION_RELATIONAL_NOTEQ 894 for consistency 895- python vips8 binding 896- python vips8 test suite: test_arithmetic.py, test_colour.py, 897 test_conversion.py 898- move zoomify ImageProperties file, now a better match to the offical tool 899- rename VIPS_ANGLE_180 as VIPS_ANGLE_D180 etc. to help python 900- remove cimg support, we have a gmic plugin now instead 901- add support for vips8 plugins 902- added "autorotate" option to jpeg load 903- added autorot operator 904- added @filter option to pngsave (Lovell) 905- C++ vips8 binding 906 90727/10/14 started 7.40.12 908- better tiff detection (Lovell) 909- fix memleak in sharpen (Lovell) 910- fix profile handling in XYZ2scRGB, thanks Lovell 911 9128/10/14 started 7.40.11 913- rework extra band handling for colour functions 914- set interpretation of matlut output more carefully 915 9168/9/14 started 7.40.10 917- icc_import and icc_transform checks the input profile for compatibility 918 with the image, thanks James 919- try to make vips_thread_shutdown() optional 920 9218/9/14 started 7.40.9 922- support jfif resunit "none" 923- support GRAY as an input and output ICC space 924- fix a read loop with setjmp() in png read, if the png file is broken 925- fix vipsthumbnail with both input cmyk and output rgb profiles specified 926- vipsthumbnail retries with specified input profile if embedded profile is 927 broken 928- add @profile option to pngsave, matching tiff and jpeg 929- fix a race in the operation cache [Lovell] 930 9318/9/14 started 7.40.8 932- fix configure on rhel6 [Lovell] 933- mono <-> rgb converters were not handling extra bands, thanks James 934- support jpeg resunit "none" 935 93621/8/14 started 7.40.7 937- width and height were swapped in matlab load 938- set interpretation more carefully on matlab load 939- fix memleak in tilecache [Lovell] 940- fix memleak in VipsArray [Lovell] 941- fix memleak in webp load from buffer [Lovell] 942- fix memleak in png save to buffer [Lovell] 943- make out of order read in png and jpg a fatal error 944- add thread_shutdown() to C++ (and thereby to python) 945 94612/8/14 started 7.40.6 947- more doc fixes 948- fix similarity rotate+scale, thanks Topochicho 949- fix 16-bit PNG save, thanks John 950- fix dzsave date on Windows, thanks John 951- fix vipsthumbnail on many-core systems, thanks James 952 95325/7/14 started 7.40.5 954- fix a race in im_maxpos_avg() 955- limit n_thr on tiny images 956- don't exit() on memleak detected, just warn 957- add "autocrop" option to openslide load 958- argh fix affine, again, there were sometimes black bars with nohalo and the 959 vips8 interface 960- pngsave in interlaced mode makes a copy of the image, so it's always seq 961- vipsthumbnail shrinks to 1/2 window_size 962- vipsthumbnail has an anti-alias filter between shrink and affine 963- vipsthumbnail defaults to bicubic 964- better rounding behaviour for fixed-point bicubic reduces noise 965- fix pngload with libpng >=1.6.11 966- fix colour for openslide read associated 967 9684/7/14 started 7.40.4 969- fix vips_rawsave_fd(), thanks aferrero2707 970- fix im_point() 971- vips_scale() now does round to nearest to avoid rounding errors 972- improve im_openout() compat macro 973- more vips7 compatibility fixes, thanks steve 974- more robust vips_system() 975- add webp support to vips7 976 97730/6/14 started 7.40.3 978- fix interlaced thumbnails in vipsthumbnail, thanks lovell 979- fix use of "header" in benchmark/, thanks David 980- fits save now caches the image before write, so it's top-to-bottom 981- add --properties argument to dzsave, thanks bgilbert, jhenriksen 982 98325/6/14 started 7.40.2 984- dzsave write to zip stops at 4gb, thanks bgilbert 985- improve short option name handling, thanks bgilbert 986- added --enable-docs configure option to help freebsd 987- removed a bash-ism from configure to help freebsd 988- don't assume GType fits in an int to help freebsd 989 99024/6/14 started 7.40.1 991- revise man.1 pages 992- fix vips_guess_prefix() 993 99423/6/14 started 7.40.0 995- version bump 996- renamed "header" as "vipsheader" and "edvips" as "vipsedit" 997 99821/1/14 started 7.39.0 999- auto-decode for (almost) all operations, see vips_image_decode() 1000- background render thread cleans up and quits neatly 1001- colourspace has a source_space option 1002- operations can be tagged as "deprecated" 1003- redo im_draw_circle(), im_draw_flood(), im_draw_line(), im_draw_mask(), 1004 im_draw_image(), im_draw_rect(), im_draw_point(), im_read_point(), 1005 im_draw_smudge(), im_label_regions() as classes 1006- better rounding in vips_flatten() 1007- VipsStatistic operations are sequential 1008- vipsthumbnail has --rotate auto-rotate option 1009- removed embedded thumbnail reader from vipsthumbnail: embedded thumbnails 1010 are too unlike the main image 1011- fix to vipsthumbnail --crop, thanks Alessandro 1012- add vips_sum() 1013- add vips_hough base class and vips_hough_line() 1014- add "mode" param to vips_draw_image() 1015- add vips_hough_circle() 1016- reduce default cache size to 1,000 operations 1017- added "postbuild" signal 1018- vips_system() now supports many input images and you can change image 1019 argument order 1020- support 16-bit palette TIFFs, plus palette TIFFs can have an alpha 1021- libgsf-1 is now an optional dependency 1022- dzsave can directly write a ZIP file 1023- add ".vips" as an alternative suffix for vips files 1024- added vips_tiffload_buffer() 1025- added vips_image_new_from_buffer(), vips_image_write_to_buffer() 1026- added vips_object_set_from_string() 1027- added @container option to dzsave 1028- support 1/2/4 bit palette tiff images with alpha 1029- vips_system() now uses g_spawn_command_line_sync() 1030- added im_tile_cache_random() to help nip2 1031- added hough_circle() to vips7 C++ API 1032- added Travis CI config, thanks Lovell 1033- im_*merge(), im_*mosaic(), im_match*(), im_global_balance*(), im_remosaic(), 1034 im_*mosaic1(), im_*merge1() redone as classes 1035- better filename tracking for globalbalance 1036- revised vips8 image load/save API, now simpler and more logical 1037- operations emit "invalidate" if any of their input images invalidate 1038- operation cache drops ops on invalidate 1039- skipahead is back, thanks to a new threadpool tweak 1040 10416/3/14 started 7.38.6 1042- grey ramp minimum was wrong 1043- vipsthumbnail --crop could fail for very non-square images, thanks 1044 Alessandro 1045- fix a crash in vips_rawsave(), thanks Andrea 1046- updated German translation, thanks Chris 1047- fix coordinate error in affine, thanks ferryfax 1048 104924/2/14 started 7.38.5 1050- jpeg load from buffer could write to input, thanks Lovell 1051- fix webpload from buffer, thanks Lovell 1052- vips_sequential() could fail under heavy load 1053- remove support for seq mode read for operations like extract 1054 105513/2/14 started 7.38.4 1056- --sharpen=none option to vipsthumbnail was broken, thanks ferryfax 1057- more locking on property create and lookup to help very-threaded systems, 1058 thanks Nick 1059 106022/1/14 started 7.38.3 1061- undeprecate VIPS_MASK_IDEAL_HIGHPASS and friends, ruby-vips was using them, 1062 thanks ahacking 1063 106422/1/14 started 7.38.2 1065- auto RAD decode for affine 1066- falsecolour was not working for some image types 1067- foreign memory buffer images did not have the right dhint, broke 1068 command-line falsecolour on sequential images 1069- support many Radiance readers active at once 1070- add secret "rgbjpeg" flag to vips_tiffsave() to help IIP 1071 107219/1/14 started 7.38.1 1073- bump soname, thanks benjamin 1074- better conversion to and from scrgb/xyz for rad (hdr) 1075- fix --interpolate flag to vipsthumbnail, thanks Lovell 1076 107718/1/14 started 7.38.0 1078- version bump 1079 108019/10/13 started 7.37.0 1081- redone im_rotate_*mask45(), im_gauss_*mask*(), im_log_*mask(), im_dilate(), 1082 im_erode(), im_rank_image(), im_compass(), im_linedet(), im_gradient(), 1083 im_convsep(), im_convsep_f(), im_fastcor(), im_spcor(), im_sharpen() 1084 as classes 1085- im_gradcor() deprecated 1086- vips_init() now does some ABI compat checking, though this change requires 1087 an ABI break 1088- add "interlace" option to vips_jpegsave() 1089- remove vips_image_copy_fields() and vips_demand_hint() and add 1090 vips_image_pipeline() to do both jobs 1091- vipsthumbnail allows non-square bounding boxes, thanks seth 1092- add vips_matrixprint() 1093- add @point subsample mode to vips_subsample() 1094- im_contrast_surface() deprecated: it was slower than calling conv a few 1095 times 1096- radiance load supports sequential read 1097- rewritten radiance decode is much faster 1098- add vips_crop(), a synonym for vips_extract_area() 1099- rename vips_gammacorrect() as vips_gamma(), now takes 1 / exp 1100- vips_gamma() works for any format 1101- add --linear mode to vipsthumbnail 1102- support XYZ as a PCS for vips_icc_import() and vips_icc_export() 1103- add --strip option to jpegsave 1104- added vips_gaussblur() convenience function 1105- added --vips-profile, records and dumps thread timing and memory use info 1106- added vipsprofile, visualises --vips-profile output 1107- auto-vectorization-friendly inner loops 1108- added vips::init() and vips::shutdown() to C++ API 1109- reuse pixel buffers on sharing to reduce mem cycling 1110- conv is SMALLTILE, huge mem use saving on wide images 1111- vipsthumbnail has a --crop option 1112- remove video4linux1 code, it was useless on all modern linuxes 1113- redone freq filter builders as classes 1114- redone im_fwfft(), im_invfft(), im_freqflt(), im_disp_ps(), im_fractsurf(), 1115 im_phasecor() as classes 1116- vips_colourspace() allows B_W, GREY16, RGB16 as source / target 1117- added vips_thread_shutdown(), thanks Lovell 1118- vips_linear() has a uchar output mode 1119- redone im_cntlines(), im_rank() as classes 1120- move im_zerox() to deprecated, it wasm't very useful 1121 11229/1/14 started 7.36.6 1123- fix some clang compiler warnings 1124 112520/11/13 started 7.36.5 1126- better cache sizing in unbuffered sequential mode 1127- allow larger tile_size in dzsave 1128- remove use of PATH_MAX to help gnu hurd 1129- fix vips_hist_match() 1130 113115/11/13 started 7.36.4 1132- improve compat with im_init_world() 1133 113418/10/13 started 7.36.3 1135- fix compiler warnings in ubuntu 13.10 1136- reverse similarity rotation direction to match the convention used 1137 elsewhere in vips 1138- fix blocked caching of sequential load operations 1139- fix cache flags 1140- fix --delete option to vipsthumbnail 1141 114210/10/13 started 7.36.2 1143- better jpeg startup 1144- rename jpeg bool type to reduce confusion between libraries 1145 11463/10/13 started 7.36.1 1147- fix to help OS X build 1148 11493/10/13 started 7.36.0 1150- version bump 1151 11521/7/13 started 7.35.0 1153- added vips_matrixload() and vips_matrixsave(), load and save vips mat format 1154- rename image arrays as image matrices ... INTERPRETATION_ARRAY -> 1155 INTERPRETATION_MATRIX etc. 1156- rewrite im_buildlut(), im_identity*(), im_maplut(), im_falsecolour(), 1157 im_gammacorrect(), im_histgr(), im_histcum(), im_histnorm(), im_heq(), 1158 im_histnD(), im_histindexed(), im_histspec(), im_invertlut(), im_lhisteq(), 1159 im_stdif(), im_project(), im_profile(), im_tone_build*(), im_mpercent*(), 1160 im_ismonotonic() as classes 1161- vips_hist_local(), vips_stdif() do any number of bands 1162- thin vips8 wrapper for im_histplot() 1163- added vips_error_freeze() / vips_error_thaw() 1164- used freeze() / thaw() to stop file format sniffers logging spurious errors 1165- vipsthumbnail uses embedded jpg thumbnails if it can 1166- rename vips_diag() as vips_info(), add --vips-info flag 1167- deprecate im_hsp() 1168- added vips_webpload(), vips_webpload_buffer(), vips_webpsave(), 1169 vips_webpsave_buffer(), vips_webpsave_mime() 1170- tiff reader allows separate planes for strip read 1171- tiff reader and writer allow many more formats, eg. 32-bit int, complex, etc. 1172- tiff reader and writer allow any number of bands 1173- added vips_image_new_matrixv() 1174- dzsave basename param now called filename, so you can use .dz as a 1175 destination (basename is still there but deprecated) 1176- new _UNBUFFERED sequential mode saves memory in some important cases 1177- vips_conv() is a simple wrapper over the old convolution functions 1178- new optimize_coding param for jpeg write produces optimal Huffman tables, 1179 thanks Lovell 1180- im_tone_map() and im_tone_analyse() deprecated 1181- new --band arg to vips_maplut() replaces im_tone_map() functionality 1182- added vips_similarity(), simple wrapper for vips_affine() that lets you 1183 give a scale and rotate 1184 11853/7/13 started 7.34.2 1186- lower priority for Matlab load to reduce segvs from Mat_Open(), thanks 1187 Michael 1188- null-terminate libexif strings, thanks Mike 1189- openslide always outputs solid pixels 1190 119128/6/13 started 7.34.1 1192- fix morphological operators on non-uchar images 1193- remove any ICC profile when we use vips to go to srgb 1194 11957/6/13 started 7.34.0 1196- version bump 1197- oops, VImage.PIL_mode_from_vips() failed for CMYK, thanks Alessandro 1198- fix no-pango build 1199- add im_vips2dz(): run the deepzoom writer from vips7 1200- vips_magickload() has an option to read all images in a sequence 1201- redo im_make_xy(), im_*eye(), im_zone*(), im_sines() as classes 1202- added vips_pngload_buffer() 1203- faster --centre option to dzsave, thanks Kacey 1204 120512/3/13 started 7.33.0 1206- vipsthumbnail lets you specify the sharpening mask 1207- turn off caching for im_copy()/vips_copy(), we use copy to stop sharing, and 1208 it's cheap so caching doesn't help anyway 1209- auto rshift down to 8 bits on save, if necessary 1210- im_gaussnoise(), im_copy_file(), im_grid(), im_scale(), im_scaleps(), 1211 im_wrap(), im_rotquad(), im_zoom(), im_subsample(), im_msb(), im_text(), 1212 im_system(), im_system_image() 1213 redone as classes 1214- add --angle option to dzsave 1215- another vips_shrink() fix argh 1216 121714/5/13 started 7.32.4 1218- icc import and export could segv on very wide images 1219- fix centos 5 build, thanks re-boot 1220 122116/4/13 started 7.32.3 1222- rename GETTEXT_PACKAGE as vips7.32 to help Debian (thanks Jay) 1223- added "persistent" option to tilecache 1224 122512/3/13 started 7.32.2 1226- removed some left-over debugging code from configure.ac 1227- better handling of args without values, thanks Ruven 1228- better error messages from vips.c 1229- fix demand hints so "vips shrink" works again, thanks Jan 1230- im_jpeg2vips.c builds without jpeglib.h, thanks Alessandro 1231 12326/2/13 started 7.32.1 1233- fix --without-lcms, thanks speckins 1234- updates to licence, thanks Benjamin 1235- remove "fred" from dist 1236- better bootstrap on OS X 1237 123822/1/13 started 7.32.0 1239- tilecache in threaded mode could deadlock if the downstream pixel source 1240 raised an error (thanks Todd) 1241- fix another dzsave corner-case (thanks Martin) 1242- neater output for "header" 1243- added VIPS_META_LOADER: record the loader name 1244= header displays this loader hint 1245- vipsthumbnail is better at cache sizing 1246 124731/8/12 started 7.31.0 1248- redone im_Lab2XYZ(), im_XYZ2Lab(), im_Lab2LCh(), im_LCh2Lab(), im_UCS2LCh, 1249 im_LCh2UCS(), im_XYZ2Yxy(), im_Yxy2XYZ(), im_float2rad(), im_rad2float(), 1250 im_Lab2LabQ(), im_LabQ2Lab(), im_Lab2LabS(), im_LabS2Lab(), im_LabQ2LabS(), 1251 im_LabS2LabQ(), im_LabQ2disp(), im_XYZ2disp(), im_disp2XYZ(), 1252 im_icc_import*(), im_icc_export*(), im_icc_transform*(), im_dE_fromLab(), 1253 im_dECMC_fromLab(), im_dE00_from_Lab(), im_icc_ac2rc() as classes 1254- added vips_colourspace(), vips_colourspace_issupported(), replaces all 1255 derived conversions 1256- faster and more accurate sRGB <-> XYZ conversion 1257- support 16-bit sRGB import and export 1258- rename UCS colourspace as CMC 1259- dzsave can write zoomify and google maps layout as well 1260- tilecache supports threaded access, so openslide read now threads 1261- openslide2vips gets underlying tile size from openslide 1262- embed has 'background' option 1263- dzsave --layout google has a @background option 1264- dzsave has a --depth option 1265- update for new glib threading API 1266- remove no threads option, glib no longer support it 1267- better --help output for vips driver prog 1268- vipsthumbnail -o allows absolute file names 1269- much better exif handling for jpg images (thanks Gary) 1270- preserve jpeg app13 (photoshop ipct) 1271- vips_max() / _min() track the top n maxima / minima 1272- deprecate im_maxpos_avg(): too specialised to be worth maintaining 1273- deprecate im_linreg(): easily done by combining other operators 1274- deprecate im_point(): easily done by combining other operators 1275- add binary complex operations, with cross_phase as the only one so far 1276- added vips_bandbool(), with vips_bandand(), _bandor(), _bandeor() as 1277 convenience functions 1278- added scRGB colourspace, linear light float space with sRGB primaries 1279- all interpolators use corner convention ... we had round-to-nearest in 1280 several of them before, causing a range of annoying problems 1281- redone im_affine*() as a class 1282- added input space displacement to affine 1283- VipsArea is threadsafe 1284- dzsave has a --centre option 1285 128631/12/12 started 7.30.8 1287- png icc profile write was broken 1288 128931/12/12 started 7.30.7 1290- better option parsing for "vips", thanks Haida 1291- small fixes to help OS X 1292- backported threaded tile cache from next version, im_tile_cache() now 1293 uses it to prevent a deadlock, see comment there 1294 129514/11/12 started 7.30.6 1296- capture tiff warnings earlier 1297 129814/11/12 started 7.30.5 1299- fix libtool version mess up (thanks Benjamin) 1300 13012/10/12 started 7.30.4 1302- remove options from format string in .dzi (thanks Martin) 1303- vipsCC.pc required the wrong version of vips (thanks Alessandro) 1304- larger max tile size for dzsave 1305- linecache is 50% larger to leave some slop room 1306 130713/9/12 started 7.30.3 1308- linecache sized itself too large 1309- fix a compile failure if libtiff was not found (thanks Martin) 1310- dzsave did not work for images with an odd number of scanlines 1311 (thanks Martin) 1312 13134/9/12 started 7.30.2 1314- sequential stops all threads on error 1315- sequential delays ahead threads rather than blocking them completely 1316 13176/8/12 started 7.30.1 1318- fixes to dzsave: shrink down to a 1x1 pixel tile, round image size up on 1319 shrink, write a .dzi file with the pyramid params, default tile size and 1320 overlap now matches the openslide writer 1321- wrap VipsInterpolate for C++ 1322- so affinei and affinei_all appear in Python 1323- be more cautious enabling YCbCr mode in tiff write 1324- add "DEPRECATED" flag to arguments 1325- jpeg load/save note and use the preferred resolution unit 1326- better error msgs for enum args 1327- fix compiler warnings in production build (thanks Dmitry) 1328- fix spurious warnings about exif updates 1329- VipsSequential has an integrated cache and stalls out of order threads 1330- add a line cache ... sizes up dynamically with request size 1331- tilecache / linecache use a hash table not a linear list 1332 133320/7/12 started 7.30.0 1334- support "rs" mode in vips7 1335- add --vips-version cmdline arg 1336- fix --without-tiff / exr / jpeg / png / magick 1337- add --vips-fatal flag 1338 133919/3/12 started 7.29.0 1340- sanity-check PNG read geometry 1341- nearest-neighbor interpolation rounds coordinates to nearest instead of 1342 rounding down (thanks Nicolas) 1343- add dzsave, save in deep zoom format 1344- rework im_shrink() as a class 1345- remove im_rightshift_size(), just a convenience function now 1346- vipsthumbnail no longer removes profiles by default 1347- much more gentle sharpening in thumbnails 1348- added "minimise" signal, used by tilecache to drop 1349- add :seq support to im_tiff2vips(), im_jpeg2vips() ... helps ruby-vips 1350- better thread safety for vips8 operation dispatch 1351- better thread safety for upstream / downstream image linking 1352- added "rs" open mode, removed "rd" 1353- added vips_operation_get_flags() ... system for attaching sets of flags to 1354 operations 1355- added VIPS_OPERATION_SEQUENTIAL flag 1356- vips8 command-line interface uses this to turn sequential mode on 1357 automatically when possible 1358- better handling of input files in vips7 command-line interface 1359- sequential can skip ahead, so extract / insert are now seq 1360 136116/7/12 started 7.28.10 1362- wopconst was broken 1363- vips_sign() was broken 1364- png save compression range was wrong 1365- more/moreeq was wrong 1366- vips7 ppm save with options was broken 1367- don't cache write operations 1368 136918/6/12 started 7.28.9 1370- slightly more memory debugging output 1371- remove references to the static bicubic interpolator from the docs 1372- fix temp file handling on Windows --- was breaking for non-vips files 1373 over 100mb 1374- better support for using images from multiple threads 1375 137618/6/12 started 7.28.8 1377- fixes for centos5 portability 1378 137918/6/12 started 7.28.7 1380- add vips_flatten() -- flatten RGBA to RGB 1381- better alpha handling in PNG load 1382- don't save RGBA PNG as CMYK JPG (thanks Tobsn) 1383- fix a crash with malformed jpg files (thanks Grigoriy) 1384- vipsthumbnail enables sequential mode more and caches lines better 1385 138619/4/12 started 7.28.6 1387- better resolution unit handling in deprecated im_vips2tiff() 1388- use TIFF_CFLAGS output from pkg-config (thanks Jay) 1389- much faster vips_argument_map() 1390- make jpeg pyramids work with tiff4 1391- tiff loader always offers THINSTRIP (thanks Diuming) 1392- add "nocache" operation flag, set for sequential load (thanks Diuming) 1393- fix a crash in the tiff reader for huge values of RowsPerStrip (thanks 1394 Nicolas) 1395- remove use of G_DEFINE_BOXED_TYPE() to help compat (thanks Jake) 1396 139719/4/12 started 7.28.5 1398- ifthenelse blend mode was broken 1399- small blend speedup 1400- default to libtiff-4 1401 140217/4/12 started 7.28.4 1403- up max buffer size for vipsbuf 1404 14056/4/12 started 7.28.3 1406- vips_divide() failed for int arguments 1407- fix warning for unused vips7 gvalue argument 1408- fix openslide read: always return png-style rgba, im_argb2rgba() becomes a 1409 NOP 1410- cast to unsigned int now removes <0 values 1411- vips7 interface to openslide now supports :,level,associated options (thanks 1412 Benjamin) 1413- make vips8 cache smaller 1414- more accurate progress reporting 1415 141613/3/12 started 7.28.2 1417- xres/yres tiffsave args were broken 1418 141913/3/12 started 7.28.1 1420- add ICC profile read/write for png files 1421 142230/1/12 started 7.28.0 1423- version bump 1424- added vips_foreign_find_save_options()/vips_foreign_find_load_options() 1425- delayed write to foreign via a "w" image was not working 1426- support operations with many returns in Python 1427- sequential read mode 1428- better im_shrink() 1429- added vips_sequential() 1430- new vips_sink_memory() keeps read ordering 1431- tiff, jpeg, png readers support sequential read 1432- max/min avoid NaN 1433- oop, histnorm was broken by the new vipsstats 1434- never use IM ping to get a header, fixes BMP load 1435- set @filename for non-vips formats in vips7 compat layer 1436- make Xres/Yres double 1437- completely disable debug by default in production builds 1438 143920/8/11 started 7.27.0 1440- version bump for new dev cycle 1441- im_subtract(), im_avg(), im_min(), im_minpos(), im_copy(), im_embed(), 1442 im_flophor(), im_flipver(), im_insert(), im_insert_noexpand(), im_lrjoin(), 1443 im_tbjoin(), im_extract_area(), im_extract_bands(), im_extract_areabands(), 1444 im_replicate(), im_clip2fmt(), im_gbandjoin(), im_bandjoin(), im_invert(), 1445 im_lintra(), im_lintra_vec(), im_black(), im_rot90, im_rot180(), im_rot270() 1446 im_sintra(), im_costra(), im_tantra(), im_asintra(), im_acostra(), 1447 im_atantra(), im_exptra(), im_exp10tra(), im_logtra(), im_log10tra(), 1448 im_abs(), im_sign(), im_max(), im_maxpos(), im_deviate(), im_divide(), 1449 im_multiply(), im_stats(), im_measure(), im_recomb(), im_floor(), im_ceil(), 1450 im_rint(), im_equal*(), im_notequal*(), im_less*(), im_lesseq*(), im_more*(), 1451 im_moreeq*(), im_remainder*(), im_and*(), im_or*(), im_eor*(), im_shift*(), 1452 im_pow*(), im_exp*(), im_ifthenelse(), im_blend(), im_c2amph(), im_c2rect(), 1453 im_bandmean(), im_c2real(), im_c2imag(), im_ri2c(), im_jpeg*2vips(), 1454 im_vips2jpeg*(), im_tiff2vips(), im_vips2tiff(), im_exr2vips(), 1455 im_fits2vips(), im_vips2fits(), im_analyze2vips(), im_raw2vips(), 1456 im_vips2raw(), im_magick2vips(), im_png2vips(), im_png2*(), im_ppm2vips(), 1457 im_vips2ppm(), im_mat2vips(), im_rad2vips(), im_vips2rad() 1458 redone as classes 1459- added argument priorites to help control arg ordering 1460- generate has a 'stop' param to signal successful early termination 1461- added optional output args, eg. x/y for min 1462- CLI supports optional output args 1463- in im_vips2tiff, enable YCbCr compression for jpeg write 1464- VipsMin stops search early if it can 1465- C API supports optional output args 1466- switch back to int-valued operations 1467- add the operation cache, various --vips-cache-* flags 1468- fallback vips_init() 1469- vips_tracked_malloc() tracks allocation size and can report total mem usage 1470- cache limits, drop, init, flush plus command-line controls 1471- remove dmalloc support, was never used and valgrind is better 1472- im_csv2vips() allows quoted strings, including escaped quotes 1473- added vips_shutdown() 1474- added --vips-leak flag 1475- more VipsImage props 1476- added vips_image_write(), old one becomes vips_image_write_to_file() 1477- added vips_region_paint_pel() 1478- added VipsArea as a public struct 1479- added array members and arguments 1480- added nary 1481- remove VipsPool, vips_object_local_array() is much better 1482- cache.c now drops if you have too many open files 1483- CLI args to change max files 1484- new format for handling exif tags 1485- switch SMALLTILE to 128, 512 was just too big 1486- oop mode "rd" was not always being used for images 1487- added ARRAY interpretation for images 1488- VipsStats tracks minpos/maxpos as well 1489- moved mask/ to deprecated 1490- use atexit() to call vips_shutdown() 1491- set _O_TEMPORARY on delete-on-close temp images if possible 1492- unlink temps on rewind on *nix, less likely to leave temps on a crash 1493- added complex conj as a basic operation 1494- rect/polar/conj work on any format, not just complex 1495- new VipsFile system for load/save in image formats 1496- options now introspectable, try "vips jpegsave" 1497- copy swap uses glib byteswap macros, about 2x faster 1498- edvips can change vips header byte ordering 1499- "header" is terse by default 1500- "header" outputs filenames if working on many files 1501- added openslide support (Benjamin Gilbert) 1502- allow new-style load/save options in filenames to 1503 vips_image_new_from_file() etc. 1504- VipsFormat is deprecated 1505- remove outchecks from documented API 1506- support gobject-introspection 1507- new Python binding based on gobject-introspection 1508- only spot options at the end of arg strings 1509- add vips_cache() as a vips8 operator 1510- remove the old fft fallback 1511- remove fftw2 support 1512- much faster im_draw_smudge() 1513 151414/1/12 started 7.26.8 1515- interpolate CLI args were broken (thanks speckins) 1516 15175/12/11 started 7.26.7 1518- lazy read from tiled tiff from layers other than 0 was broken 1519- optional args to vips_call*() do not work, disabled (fixed correctly in 1520 master) 1521- address calculations in files over 4gb were broken on 32-bit platforms 1522 (broken since March 2011, oops) 1523 152412/10/11 started 7.26.6 1525- NOCACHE was not being set correctly on OS X causing performance 1526 problems with large files 1527- update Orientation exif tag on jpeg write 1528 152912/10/11 started 7.26.5 1530- jpeg read/write copies over XMP data 1531- handle offset correctly in separable convolutions (thanks Nicolas) 1532- macros for class arg boilerplate 1533- class arg order set by new 'priority' param 1534- VipsExtend, VipsDirection enums added 1535 153612/9/11 started 7.26.4 1537- fallback vips_init() 1538- im_openout() compat stub was wrong, breaking ruby-vips 1539- vips_class_map_concrete_all() needed a compat macro too 1540- vips_class_map_all() was broken 1541 154210/8/11 started 7.26.3 1543- don't use G_VALUE_COLLECT_INIT(), many platforms do not have a glib this 1544 recent 1545- don't leave image->kill set when we detect termination 1546- test for a working C++ compiler, disable C++ parts of none found 1547 154810/8/11 started 7.26.2 1549- oops, im_benchmark.c had some stuff turned off 1550- configure option --without-cfitsio was broken (thanks Mike) 1551 155226/7/11 started 7.26.1 1553- doc fixups 1554- oops, ==0 missing from a strcmp() in vips7compat 1555- fixed a race in im_XYZ2Lab() table build 1556- added im_concurrency_get() to operation db 1557- better benchmarkn.sh runs for the correct number of CPUs automatically, runs 1558 three times for each one, and just reports the fastest 1559 156026/7/11 started 7.26.0 1561- version bunp for 7.26 1562- various fixes to get win32 and OS X building 1563 15646/12/10 started 7.25.0 1565- attach the jpeg thumbnail and multiscan fields (thanks Mike) 1566- faster tiff read for some common cases 1567- faster im_tile_cache() 1568- if we use C++ in libvips, add -lstdc++ to vips-7.xx.pc 1569- im_vips2png() / im_png2vips() set / get png resolution (thanks Zhiyu Wu) 1570- updated README 1571- don't use tables for bilinear on float data for a small speedup (thanks 1572 Nicolas Robidoux) 1573- no tables for uchar either, about a 15% speedup (thanks Nicolas) 1574- dmask write was broken 1575- lr/tbmerge() cast images to match, like im_insert() 1576- lr/tbmosaic() work for any mix of image formats / bands 1577- removed ancient balance stuff from im_lr/tbmosaic() 1578- gtk-doc for mosaicing 1579- add im_fits2vips() to the operation database 1580- im_fits2vips() is lazy and much faster 1581- im__file_open_write() / _read() has a flag for text_mode, get rid of all the 1582 remaining fopen()s 1583- move cooc_* and glds_* to deprecated 1584- move im_dif_std() to almostdeprecated 1585- move im_simcontr() to almostdeprecated 1586- add im_sines() to operation db 1587- move im_spatres() to almostdeprecated 1588- done gtk-doc for other 1589- --vips-progress tells you about nthreads, tile size, nlines 1590- gtk-doc for interpolate 1591- move im_stretch3() to deprecated 1592- move im_clamp() to deprecated 1593- gtk-doc for video ... all operators done! amazing argh 1594- set MAP_NOCACHE on OS X, otherwise performance dives off a cliff with 1595 files larger than memory 1596- removed man pages, we are all gtk-doc now 1597- im_jpeg2vips() ignores weird APP1 chunks 1598- im_add() for int/uint was broken 1599- im_ri2c() was broken 1600- added VIPS_FORMAT_BIGENDIAN format flag 1601- moved IMAGE and REGION to VipsImage and VipsRegion, classes over VipsObject 1602- Rect -> VipsRect 1603- libpng-1.5 supported 1604- better png read for 1-bit and palette images 1605- fits write 1606- better fits metadata support 1607- renamed all header fields, old names still supported, hopefully 1608- all of iofuncs moved to vips_ namespace 1609- lots of old iofuncs API moved to deprecated 1610- added VipsOperation, an abstract base class for all vips operations 1611- added VipsAdd, the first operation object 1612- im_tiff2vips() int/uint mixup for rows_per_strip, thanks Bubba 1613- removed the links feature, won't work with vips8 1614- got rid of the tools/ subdirs 1615- added im_bufjpeg2vips() 1616- tiff reader can do 1, 2, 4, 8 bit palette images 1617- tiff palette read can do mono images 1618- im_bufjpeg2vips() has a "header_only" parameter 1619- added vips_image_get_data() 1620- updated German translation (thanks Chris) 1621- fixed typo in im_conv() overflow estimation which could cause errors 1622- vips.c has new action syntax, knows about vips8 operations 1623- add now has sizealike 1624- vips7 binops all do sizealike too, also gbandjoin and ifthenelse 1625- new API is now functional 1626- vips.c generates GOption flags for vips8 operations 1627- added im_gauss_dmask_sep() 1628- laplacian generator lost -ve lobes for large sigma 1629- added im_aconv(), approximate convolution 1630- bumped smalltile to 512x512 for testing 1631- added VipsPool, got rid of floating refs again, argh 1632- VIPS_EXEEXT is now part of the exported API 1633- im_blend() also does sizealike, oops 1634- jpeg write was not inverting CMYK, thanks Ole 1635- im_falsecolour() converts to mono 8-bit for you 1636- im_icc_import*/export*() cast inputs for you 1637- im_vips2tiff() uses im__temp_name() for intermediates 1638- added vips_wrap7 ... wrap up vips7 operations as vips8 classes 1639- man pages are back for commands 1640 164130/11/10 started 7.24.0 1642- bump for new stable 1643- added im_dmask2imask(), im_imask2dmask() 1644- im_rotate_*mask90() can do masks of any size (thanks Adam Turcotte) 1645 164618/7/10 started 7.23.0 1647- im_vips2bufjpeg() writes to a linked list, so it will work for any size 1648 image and header 1649- added im_vips2bufpng() 1650- use GetTempPath() to pick a temp dir on Windows 1651- added "rd" mode to im_open() 1652- vipsthumbnail and vips use "rd" 1653- im_divide spots /0 1654- remove liboil dependency, we will use Orc instead 1655- various small cleanups (thanks Tim) 1656- add lcms2 support 1657- VImage(filename) defaults to "rd" mode 1658- revise window_offset / window_size, again 1659- fix a mixup with ANY hints that caused performance problems on the main 1660 benchmark 1661- rewritten im_circle as im_draw_circle, im_circle moved to almostdeprecated 1662- added IM_TYPE_RW args for inplace ops --- nip2 uses this to wrap inplace ops 1663 automatically 1664- special-case 3x3 masks in im_conv() for a 20% speedup 1665- add IM_TYPE_RW flag for im__rw_image, helps nip2 auto-wrap inplace ops 1666- im_insertplace() casts and bandalikes 1667- copy iconv.m4 and friends in bootstrap, thanks Mike 1668- moved the stupid _copy() versions of the inplace ops to deprecated, since 1669 nip2 can call inplace ops directly now 1670- added im_draw_rect(), moved im_paintrect() to deprecated 1671- added im_draw_image(), moved im_insertplace() to deprecated 1672- added im_draw_line(), now clips, moved im_fastline() to deprecated 1673- added im_draw_line_user(), now clips, moved im_fastlineuser() to deprecated 1674- added im_draw_mask(), now wrappable, moved im_plotmask() to deprecated 1675- added im_draw_point(), moved im_plotpoint() to deprecated 1676- added im_read_point(), now partial, moved im_readpoint() to deprecated 1677- added im_draw_smudge(), moved im_smudge() / im_smear() to deprecated 1678- convolution functions support complex images 1679- im_blend() can have any format condition image and it's converted to uchar 1680- security fix for vips-7.23 wrapper script (thanks Jay) 1681- im_affine() has a larger safety margin 1682- fix gtk-doc warnings 1683- small mask load/save improvements 1684- mask gtk-doc done 1685- add cfitsio dependency 1686- add FITS reader 1687- land the vector branch and the orc dependency ... we have SSE 1688 erode/dilate/add/conv 1689- add IM_SWAP 1690- dilate/erode do (!=0) on non-uchar images 1691- add multipass Orc to im_conv(), 3.5x faster for 5x5 mask 1692- im_profile() works for any image format, any number of bands 1693- im_rank_image() works for mix of formats, bands 1694- morph gtk-doc done 1695- oops, missing braces in debug.h and util.h, thanks Laurence 1696- update C++/Python binding 1697- oop, bool constants are always (int) now, so (^-1) works for unsigned types, 1698 thanks Nicolas Robidoux 1699- much lower memuse for im_cache() in complex pipelines 1700- im_scale_dmask() normalises to 20, not 100 ... we hit the fast 1701 conv path more often 1702 170312/5/10 started 7.22.2 1704- the conditional image of ifthenelse can be any format, a (!=0) is added if 1705 necessary 1706- oops vipsthumbnail sharpening was turning off for integer shrinks, 1707 thanks Nicolas Robidoux 1708- im_vips2jpeg() could fail for very small images (thanks Tim) 1709- threadpool wasn't stopping on allocate errors (thanks Tim) 1710- vips_sink_disc() could block if allocate failed (thanks Tim) 1711 171212/5/10 started 7.22.1 1713- fix a problem with tiff pyramid write and >1cpu, thanks Ruven 1714- constant ops clip to target range 1715- oops, moreconst and moreeqconst were the same 1716- better buffer handling in sinkdisc for single-line images 1717- less chatty errors from "vips" 1718- oops, don't rename "copy_set" as "copy_", thanks Ole 1719 172012/5/10 started 7.22.0 1721- bump and rename 1722- vipsthumbnail has a manualpage and sharpens correctly 1723- more interpolator work 1724- fixes to --disable-cxx mode (thanks Mike) 1725- added German translation, thanks Chris Leick 1726- fixed typos in some messages, thanks Chris Leick 1727- fix gettext startup 1728- all "colour" in messages changed to "color", have a proper en_GB 1729 translation file 1730- vipsthumbnail delete profile failed if there was a profile 1731- interpolate cli unref was broken 1732- more accurate, slightly faster bilinear and bicubic (thanks Nicolas Robidoux) 1733 173421/3/10 started 7.21.3 1735- added progress feedback to threadpool 1736- --vips-wbuffer2 switch does all wbuffer use now 1737- im_wbuffer2() renamed as vips_discsink(), some cleanups 1738- im_gammacorrect() can do 16-bit images too 1739- im_histplot() could fail for signed int histograms 1740- im_fwfft() and im_invfft() could free their output image too early 1741- added im_local_imask(), im_local_dmask() 1742- added im_mpercent_hist() 1743- im_maplut() casts the index image to one of the uint types 1744- fixed a couple of /0 problems with scale == 0 masks 1745- set G_LOG_DOMAIN to VIPS so we can use g_warning etc. 1746- added VIPS_DEBUG_MSG() macro 1747- --vips-wbuffer2 turns on threadpool for im_iterate as well 1748- im_vips2tiff() uses vips_sink() instead of threadgroup 1749- strip out threadgroup 1750- add --enable-debug=xxx flag 1751- im_iterate() -> vips_sink() 1752- better number-of-bands detection for im_magick2vips() 1753- added im_get_argv0() 1754- added PFM read / write 1755 175616/1/10 started 7.21.2 1757- "invalidate" is careful to keep images alive, so invalidate callbacks can do 1758 im_close() 1759- flood_blob could loop if start point == ink 1760- added im_meta_remove() 1761- added remove profile option to vipsthumbnail 1762- added vips_bandfmt_iscomplex() and friends, im_iscomplex() and friends 1763 deprecated 1764- im_bandjoin()/im_gbandjoin() work with images of varying formats 1765- added im_copy_native(), deprecated im_copy_from() and friends 1766- im_check*() name rationalisation 1767- finally removed old flood stuff 1768- im_insert*() bandalike and formatalike 1769- im_*join() bandalike and formatalike 1770- im_ri2c() bandalike 1771- im_vips2png() saves 16-bit PNGs, if necessary 1772- vipsthumbnail has selectable interpolators, optional sharpen 1773- moved a lot of stuff (eg. im_iscomplex()) from deprecated to 1774 almostdeprecated to avoid breakage 1775- im_csv2vips(): allow lines that end with EOF rather than \n 1776- im_vips2tiff has a bigtiff option 1777- oops, im_lineset() needs to ask for WIO of mask and ink 1778- move cache invalidation to REGION, fixes a race 1779- don't im_invalidate() after paint, it can cause horrible performance 1780 problems ... for example, im_plotmask() used as the action operator for 1781 im_fastlineuser() is terrible 1782- instead, users of the inplace operations need to call im_invalidate() at the 1783 end of a set of paint actions to trigger an update 1784- parent/child renamed as upstream/downstream in DAG 1785- set VIPS_ICC_DIR in configure 1786- ICC profiles are looked for in VIPS_ICC_DIR as a fallback 1787- im_render() mask image generation no longer triggers image calc 1788- threadgroups scale output buffers with number of threads for smalltile ... 1789 improves SMP scaling for narrow images on many-way machines 1790- default to max number of processors (--vips-concurrency and IM_CONCURRENCY 1791 set >0 can override) on linux and win32 1792- better nprocs guesser 1793- im_render() fixes to help the paintbox, some speedups too 1794- added im_wbuffer2(), a new distributed threading system, and --vips-wbuffer2 1795 to enable it, thank you Christian 1796 179715/1/10 started 7.21.1 1798- added "written" callbacks, used to implement write to non-vips formats 1799 180026/11/09 started 7.21.0 1801- branch for new dev cycle 1802- argh, missing init from colour.c (thanks Peter) 1803- argh, im_measure() was not looping over bands correctly (thanks Peter) 1804- removed mmap_limit, we now always use windows ... reduces VM use hugely, 1805 because mmap windows are freed when their regions are freed, while images 1806 are only unmapped when they are closed 1807- have a min bytes for mmap windows as well, so we don't make too many tiny 1808 windows 1809- im_disp2Lab() was broken 1810- deprecated.h is now defined in terms of current functionality, rather than 1811 repeating stuff 1812- im_flood() and friends rewritten, typically 4x faster 1813- removed --with-cimg option, added --disable-cxx 1814- added im_system_image() (thanks Roland) 1815- added postclose callbacks 1816- added vipsthumbnail 1817- oops, generate C++/Python wrappers for deprecated operations by default 1818- read TIFF images strip-wise, not scanline-wise 1819- better TIFF YCbCr reading (thanks Ole) 1820- isanalyze generates fewer silly error messages 1821 182226/11/09 started 7.20.3 1823- updated en_GB.po translation 1824- file_length is gint64 to avoid win32 breakage 1825 182623/11/09 started 7.20.2 1827- GETTEXT_PACKAGE now includes lib version number (thanks Jay) 1828 182911/11/09 started 7.20.1 1830- oop, im_clip2fmt() was missing PTOP flag, should get a small speedup 1831- im_conv() / im_convf() didn't like all-zero masks 1832- small updates to im_convf() from im_conv() 1833- im_read_imask() produced an incorrect error message if passed a doublemask 1834- rename im_convf(), im_convsepf() as _f() 1835- vips.c drops _f suffix when overloading 1836- regenerate C++ binding, don't make deprecated package 1837 18389/11/09 started 7.20.0 1839- removed vips-7.x.spec.in, shouldn't really have this in SVN 1840- bumped version to 7.20 1841- fixes to get "make dist" working again 1842 18433/4/09 started 7.19.0 1844- version bump 1845- tiny conv speedup 1846- catch lcms error messages 1847- fix includes for gtk+-3.0 1848- report virtual memory too in im__print_all() 1849- cosmetic changes to nohalo 1850- im_magick2vips() needs to invert alpha 1851- now (more or less) passes -Wextra 1852- added "fail" option to im_jpeg2vips: fail with an error on any warning 1853 (thank you Ole) 1854- started gtk-doc changes 1855- renamed im_meta_get_type() and im_header_get_type() as 1856 im_meta_get_typeof() and im_header_get_typeof() to prevent confusion with 1857 GObject type definers (was breaking gtkdoc object scan) 1858- revised more names, limited documented API 1859- im_buildlut() could segv for non-zero based tables (thanks Jack) 1860- VIPS_BUF_STATIC() does not take length arg 1861- check for SetImageOption() so we work with GraphicsMagick too 1862- "header" sets a non-zero exit code if anything failed 1863- add and use im_check_uncoded() and friends 1864- matlab load handles column-major and plane-separated images (thanks Mikhail) 1865- JPEG save allows "none" for profile, meaning don't attach a profile 1866- saner, simpler, faster typecasting for im_add(), im_subtract(), 1867 im_multiply(), im_divide(), im_remainder() 1868- im_remainder() has a float result for float types 1869- im_measure() allows sel == NULL, meaning all patches 1870- added "deprecated" package 1871- faster, simpler, better im_max(), im_min, im_avg(), im_deviate() 1872- im_max() returns true modulus, not square of modulus, for complex images 1873- im_avg() works for complex, returning average modulus 1874- im_system() fix (thanks Roland) 1875- im_system() rewrite 1876- im_maxpos()/im_minpos() are partial and work for complex 1877- im_max()/im_min() are now convenience functions 1878- im_maxpos_avg() handles complex and multi-band images 1879- added im_point(), rewrite im_point_bilinear() in terms of this 1880- close callbacks now happen *after* images have closed resources (such as 1881 open files) ... this lets them delete temps and stuff. Expect breakage :( 1882- added vips_interpolate_get_window_offset() 1883- boolean revised: smaller, more general, faster 1884- im_remainderconst_vec() renamed to im_remainder_vec() for consistency 1885- added im_shift*_vec() 1886- renamed im_eor_vec() as im_eorimage_vec() for consistency, also and, or 1887- renamed im_eorconst() as im_eorimage_const() for consistency, also and, or 1888- relational revised: smaller, more general, faster 1889- im_blend()/im_ifthenelse() allows many-band conditional, 1-band then/else 1890- im_blend()/im_ifthenelse() allows band and format to differ between then 1891 and else parts 1892- better im_check() functions 1893- added im_flood_other() as start of simple segmentation operator 1894- added im_label_regions() 1895- im_printlines(), im_debugim() deprecated (use im_vips2csv() instead) 1896- meta, header, callback, error, region, check, generate, memory gtkdocs 1897- removed printlines tool, vips2csv is much better 1898- removed other useless tools as well: debugim, binfile 1899- fix up addr calcs on 64-bit machines with >2gb images and inplace ops 1900 (thanks Christoph) 1901- im_generate() checks that im_demand_hint() has been called for this image 1902- im_jpeg2vips.c, set scale_num on shrink (thanks Guido) 1903- heh argh reading history always stopped after the first line (thanks Haida) 1904- added im_histindexed 1905- new im_iterate() calls start and stop functions from workers so resources 1906 they make are owned by the worker thread ... this makes it possible to have 1907 start functions which create mutiple regions and therefore allows 1908 im_iterate() to scan more than one image at once 1909- threadgroup no longer has any default action, you must attach a work 1910 function 1911- added im_copy_file() 1912- added im_insertset() 1913- im_insertplace() allows small to be outside big 1914- added im__colour_difference(), colour ops now work on any image format 1915- added im_col_display_get_table(), so display tables are now shared by name 1916- added im__colour_unary() 1917- drop "set" postfix from names, so "insert" can now take a vector of positions 1918- deprecate all the "_raw" variants, not really necessary now 1919- removed "contrib", not very useful anymore 1920- added im_header_as_string() 1921- im_malloc()/im_free() now call g_try_malloc()/g_free() ... removes confusion 1922 over whether to use im_free() or g_free() for things like im_header_string() 1923- added im_history_get(), im_getexp(), im_printdesc() as wrapped functions ... 1924 so you no longer need the "header" program 1925- image vectors from Python work, woo 1926 192725/3/09 started 7.18.0 1928- revised version numbers 1929- updated vipsmanual 1930- revised manpages 1931- removed name and "changed" from vipsobject since we don't use them yet 1932- explicitly link with stdc++ for nohalo etc. stuff 1933- wrap im_gauss_imask_sep in C++/Python 1934 19356/3/09 started 7.17.3 1936- revised nohalo 1937- remove fading stuff from im_render() -- cleaner and simpler 1938- configure spots support for "restrict" 1939- reset dcm:display-range on magick read to help DICOM 1940- saner im_buildlut() behaviour 1941- added im_gauss_imask_sep() 1942- allow open and view of truncated images (thanks Joe & Rachel) 1943- revising rounding on im_affine*() coordinate transforms to make them more 1944 stable 1945- added Radiance write 1946- added im_float2rad() 1947- added IM_CODING_RAD, support where it makes sense (extract, flip, rotate, 1948 etc.) 1949- IM_PROGRESS env var 1950- docs for rad2float and IM_CODING_RAD 1951 19523/3/09 started 7.17.2 1953- im_magick2vips.c: allow funky bit depths, like 14 (thanks Mikkel) 1954- isradiance was returning TRUE too often 1955- radiance loader now loads packed RGBE/XYZE instead of unpacking to float 1956- added im_rad2float() 1957 195811/10/08 started 7.17.0 1959- merge vips-7.16 brach back into trunk 1960- bumped version number to 7.17.0 1961- re-added type.[hc] 1962- added vipsinterpolate and im_affinei 1963- added yafrsmooth interpolation 1964- added yafrtest 1965- added yafrnohalo 1966- ubuntu 8.10 changes 1967- interpolators get an output pointer, not region 1968- tuning for bicubic 1969- revised transform / clip code, we now do corner not centre 1970- yafr-smooth reworked along the lines of bicubic 1971- cleanups after yafr hacking 1972- added affinei_all 1973- don't set im_error() on failed callback 1974- moved im_format_t to VipsFormat, now sits over VipsObject 1975- IM_FORMAT_FLAG_PARTIAL -> VIPS_FORMAT_PARTIAL 1976- updated docs 1977- interpolators use type introspection 1978- added vips --list classes, does formats too 1979- include sys/param.h to get PATH_MAX in more places 1980- added vips_format_get_flags() 1981- oop, forgot to check for cancel during tiled tiff write 1982- don't use mmap for tiff read: no performance advantage, chews up VM 1983- VIPS_INTERPOLATE_SHIFT bumped to 12, we need the extra precision for u16 gel 1984 data 1985- added string->double transform for cmdline args 1986- merged class-params branch back into trunk 1987- IM_FREE() can do "const char*" variables 1988- im_buf_t renamed as VipsBuf 1989- added vips_object_to_string() 1990- added "nickname" and "description" properties to VipsObject 1991- shift/and/or/eor ops were broken for non-int types 1992- added nohalo interpolator 1993- updated format docs 1994- IM_INPUT_INTERPOLATE() now used by affinei and affinei_all 1995- added vips_object_new 1996- resamplers/interpolators now in a resample package 1997- removed yafrnohalo.c 1998- added matio as a dependency 1999- added Matlab save file read 2000- added Radiance file read 2001- better file-not-found messages 2002 200311/9/08 started 7.16.3 2004- oop typo in manpage for im_project() 2005- doc fixes 2006- returning non-zero from eval callbacks was not always stopping computation 2007 200811/9/08 started 7.16.2 2009- added --without-v4l option 2010- added -no-undefined to libsrcCC build, so we get a libvipsCC.dll 2011- removed the swig dependency: we include the generated bindings in the 2012 distribution tarball 2013 20146/9/08 started 7.16.1 2015- trigger eval callbacks on tiled tiff write 2016- added vips as an im_format_t 2017- added im_format_write()/_read() convenience functions 2018- more cleanups for the format API, argh 2019- removed win32/ directory now mingw finally makes DLLs correctly 2020- removed the windowed spcor for now, it has some edge effects 2021 202224/8/08 branch for 7.16 2023- renames and version numbers 2024- load plgs from libdir as well as libdir/vips-x.x for compat 2025- complex -> complex conversion was broken 2026- refstring <-> gstring transforms 2027- better behaviour with Magick non-presence 2028- added --enable-links switch to configure ... we no longer make the bin/im_* 2029 links by default 2030- started a 'format' section in the docs 2031- configure fails if no gettext found 2032- revised po/ 2033- released as 7.16.0! 2034 203525/5/08 fork for loadable image format branch 2036- image load/save in non-vips format code moved to own dir 2037- simple format searching added 2038- some cleanups for vips load 2039- im_open() simplified 2040- add im_format_flags 2041- only consider formats with a save method in im_format_for_name() 2042- oops, format sort order was reversed 2043- im_filename_suffix() includes "." in suffix 2044- merge back into trunk for 7.15.1 2045- remove im_ispng(), im_png2vips_header() etc. & friends 2046- add "vips --list formats" 2047- rename VBuf as im_buf_t for consistency 2048- add type.[hc], start of new type system 2049- removed man pages for IM_MIN, MAX and RINT to avoid case confusion on 2050 OS X / win 2051 20527/3/08 started 7.15.0 2053- MAGIC constants should be tagged as unsigned 2054- write MAGIC correctly on sparc/powerpc machines (thanks Joe) 2055- oop, we were still making fade threads even when not fading 2056- tiny cond jump fixes for valgrind in colour.c 2057- remove -lstdc++ from libs, except on windows 2058- push Magick cflags earlier in the include order to make it easier to pick 2059 GraphicsMagick over ImageMagick (thanks Mikhail) 2060- fix the en_GB translation 2061- use meta to preserve resunit between tiff load and save 2062- small doc improvements 2063- read and write CMYKA tiff (thanks Doron) 2064- performance improvements for morphology ops, esp. when zooming out 2065- oop, im_render() was broken for mask == NULL 2066- better support for multiple Python installs (thanks Jay) 2067- better IM_SETSTR() stops some warnings 2068- im_histcum() works for signed histograms 2069- better rounding for im_conv(), im_convsep() 2070- tiny speedup for im_conv() 2071- better /0 test for remainderconst 2072- revise i18n configure, get rid of intltool 2073- command-line IMAGVEC input could segv with non-vips image output 2074- added .tobuffer()/.frombuffer(), .tostring()/.fromstring() to Python binding 2075- add PIL_mode_from_vips () and vips_from_PIL_mode () utility functions 2076- update docs for new Python stuff 2077- FIND_ macros no longer search for stuff, you have to specify prefixes if the 2078 packages are not on the default path (or in $prefix). This avoids some 2079 accidents on some platforms 2080- configure prints a summary of optional packages found at the end 2081- im_lhisteq() checks for window too small 2082- added invalidate callbacks 2083- now tests for MagickWand before ImageMagick (thanks Adam Turcotte) 2084- added "-rotate" option to vips2dj 2085- added man page for im_resize_linear 2086- better jpeg-in-tiff YCbCr read (thanks Ole) 2087- oops, invalidatefns were not being freed on im__close() 2088- VMask() can init from std::vector, so Python can init from [] 2089- added IM_LIBDIR, im_guess_libdir() 2090- load plugins from libdir/vips-x.x on startup 2091- added meta get/set int/double/string/area/blob/GValue to C++ API 2092- include time_t in vips.h, thanks Nicolas Robidoux 2093- lock global image list (thanks lee) 2094 209525/1/08 started 7.14.0 2096- bump all version numbers for new stable 2097- better CMYK JPEG read (thanks Ole) 2098- add __str__ to VError in Python (thanks Ole) 2099- revert the dynamic wrapping for Python :-( next version! 2100- added VImage::convert2disc (thanks Ole) 2101- you can now set the jpeg quality factor for tiff pyramids (thanks Joe) 2102- you can now shrink jpegs during read, see "man im_jpeg2vips" 2103- added CMYK JPEG write 2104- optionally use GraphicsMagick (thanks Bob Friesenhahn) 2105- look for MAGICKCORE_HDRI_SUPPORT (thanks Marcel) 2106- set icc profiles in tiff pyramids explicitly (thanks Joe) 2107- add --without-cimg configure option 2108- add im_maxpos_subpel 2109- make im_abs compile without liboil 2110- add im_align_bands 2111- fix type overflow in complex division 2112- fix im_cross_phase and im_addgnoise (Tom) 2113- updated docs, C++ and python 2114- header no longer stops on error 2115- C++ dummy2.cpp helps OS X linking 2116 211712/12/07 started 7.13.3 2118- added "include <cstring>" to VImage.cc to help gcc 4.3 2119- started moving the python binding to dynamic wrapping 2120- added im_wrap(), im_wraptwo(), im_phasecor_fft(), im_cross_phase() (Tom) 2121- memleak plugged in im_save_string_setf() 2122- bugfix in and docs for im_gradcor() (Tom) 2123- use Glib macros to make im_msb work on big-endian platforms (Tom) 2124- use Glib macros to get rid of needless compile warnings (Tom) 2125- fix type overflow in im_c2ps/im_abs (Tom) 2126 212731/10/07 started 7.13.2 2128- build cimg on windows fixes 2129- various include cleanups, updated man pages 2130- break im_wbuffer() out to a separate API 2131- use im_wbuffer() to make im_vips2jpeg() compress in the background 2132- also im_vips2png(), im_vips2tiff(), im_vips2ppm() 2133- revised evaluation progress system 2134- new evalstart/evalend/preclose callbacks fix over/underflow reporting 2135- but the meaning of evalend has changed in a non-backwards-compatible way :( 2136 use preclose instead ito get the old behaviour 2137- added "--vips-progress" flag to turn on a simple eval progress tracker 2138- make im_spcor[12] static, im_spcor is wrapper (Tom) 2139 214028/9/07 started 7.13.1 2141- vips2dj can print RGB images 2142- oop, include <stdexcept> missing 2143- add protos for generate/iterate function args, fix warnings 2144- add cimg package, we now have C++ source inside VIPS, sigh 2145- added OUTPUT_DOUBLEVEC and OUTPUT_INTVEC, use for im_maxpos_vec() and friends 2146 214729/8/07 started 7.13.0 2148- we now have a trunk and the version is 7.13.x, woo! 2149- move manpages into a separate man/ dir ... speeds up builds a lot on windows 2150- don't install malkovich 2151- don't fail on unknown args for python (thanks Simon) 2152 21531/8/07 started 7.12.5 2154- im_embed() is more general ... x and y can be negative 2155- predicate.c is smaller and cleaner 2156- libsrcCC link improvement from Pablo 2157- support 32/64-bit ImageMagick as well (thanks Marcel) 2158- better im_magick2vips() for Q8 ImageMagick 2159- split repository to trunk/branches ready for a stable 7.12.x branch 2160 216127/7/07 started 7.12.4 2162- proto.h had vars called small, breaking on win32 2163- more python fixing, we now have working matricies too 2164 216517/7/07 started 7.12.3 2166- fix to VImage.i for gcc 4.2 (thanks Damir) 2167- eek, off by 1 for more than 1 band hists 2168- needed a slightly larger worst-case buffer in im__b64_encode() 2169- tiny cleanup for make_hI() prevents cond jump on ui in valgrind 2170- --disable-threads was broken again 2171- remove .svn dirs from dist 2172- now passes distcheck again 2173 217417/7/07 started 7.12.2 2175- added im_bandmean() 2176- added support for TIFFTAG_PREDICTOR (Andrey Kiselev) 2177- fix TIFFOpen() mode snafu (Andrey Kiselev) 2178 217911/5/07 started 7.12.1 2180- memory.c abort()s with DEBUG 2181- oops, im_bits_of_fmt() manpage was not being installed 2182- im_histcum() can do all image types 2183- updated NEWS 2184- added im_csv2vips_header() 2185- command-line csv read was broken (thanks Tom) 2186- removed length limit on argument vectors (Tom) 2187- added IM_PREFIX, configure-time install prefix 2188- oop, turned off memory.c DEBUG 2189- fix some bogus gcc 4.1 warnings with im_open_local_array() 2190- better vips usage message 2191- oops, IM_ANY missing from im_demand_hint() manpage (thanks Shahid) 2192- just warn if plugins fail to load in im_init_world() 2193- expose Vargv and make refblock public rather than private so that 2194 subclasses of VImage can add vips-style member operations (thanks Pablo) 2195- oops, im_initdesc() needed to have bbits set correctly (thanks Shahid) 2196- make VError derive from std::exception more officially 2197- woo, got exceptions working in SWIG 2198- soname version bumped to 12.x.x 2199- oops, added vector ops to Python 2200- check for overflow of int in return of strtol in dispatch system (Tom) 2201- add im_[di]mask_[xy]size to dispatch system (Tom) 2202- add im_gradcor(), im_grad_[xy] (Tom) 2203 220426/3/07 started 7.11.21 2205- ooo, added %include "std_except.i" & friends to VError.i, VImage.i 2206- im_init_world() is more lenient about recursive invocation 2207- im_gbandjoin() falls back to im_copy() for 1 input image 2208- race condition fixed in im_render.c (thanks Simon) 2209- bump for 7.12!!! 2210 221126/1/07 started 7.11.20 2212- another fix to im_region_image() (thanks Mikkel) 2213- tiny speed up to im_rect_includesrect() 2214- avoid recursive invocation in im_init_world() (thanks Christian) 2215- fix to extract_prefix (thanks Christian) 2216- buffer cache is now per thread 2217- combine buffer unref and ref in a single operation to reduce malloc/free 2218 cycles 2219- new internal API for passing regions between threads means we can remove 2220 buffer locks 2221- more buffer/region sanity checks, plus a memory barrier 2222- lock around error buffer changes 2223- im_vips2mask() was wrong for nx1 m-band images 2224- liboil back to "test" 2225- add buffer_cache_list to avoid GHashTable _insert()s 2226- oop, --vips-concurrency was broken 2227- renamed (in dispatch layer) im_and/or/eor_const -> im_and/or/eorimageconst 2228 for consistency 2229- C++ API wraps IMAGEVEC, DOUBLEVEC, INTVEC arguments 2230- oop, IMAGE % vector<double> was broken 2231 223221/12/06 started 7.11.19 2233- added im_linreg() (Tom) 2234- various C++ API polishes, plus a bugfix (Dennis Lubert) 2235- vips.spec split to devel and python too (Dennis Lubert) 2236- be more explicit about sizeof(magic) 2237- init magic to native order by default (thanks Dennis) 2238- Hist becomes im_history_get() 2239- new history mechanism is faster, uses much less memory, and removes 2240 duplicate lines 2241- added im_get_option_group() 2242- added official im_concurrency_set()/_get()() 2243- don't read bbits from vips files ... set ourselves from bandfmt 2244- oops add RGB16 and GREY16 to C++ header 2245- --list packages option to vips.c 2246- updated docs to 7.12 2247- oops, im_region_image() snafu was causing a lot of recomputation 2248- make im_mpercent() suck a little less 2249- EXIF save was a bit bOrked ... cause of mac crashes? 2250- im_histgr(), im_heq(), im_hist() all number bands from zero now 2251- fix stride in liboil calls 2252- set RGB16 on 16-bit RGB ICC export 2253 225429/11/06 started 7.11.18 2255- added im_buffer_t so regions can share calculated pixels: 2-3x speedup on 2256 the benchmark 2257- im_region_local() -> im_region_buffer() 2258- im_sharpen() order change to help sharing 2259- im_invalidate() clears buffer caches 2260- add sentinel attributes 2261- add some missing im_demand_hint()s 2262- paint ops invalidate the output image 2263- fix nothread eval 2264- raise threads limit to 1024 (thanks Christian) 2265- manual redone 2266- vipsCC python init() hooks 2267- add liboil dependency 2268- use liboil for im_abs(), im_add(), im_divide(), im_floor(), im_multiply(), 2269 im_subtract(), im_lintra(), im_avg(),im_deviate() 2270- quiet libtoolize test (thanks Tom) 2271- im_benchmarkn now regrows image each time 2272- strip meta from sample2.v ... saves a lot of mem (esp. Hist) 2273- added im_isscalar() (Tom) 2274- added IM_REGION_ADDR_TOPLEFT() (Tom) 2275- reduce size of im_rightshift_size.c to help compile (Tom) 2276- make im_stop_many(NULL) safe (Tom) 2277 227824/11/06 started 7.11.17 22791;5Q 2280- better benchmark script makes graphing easier 2281- double-buffer image file writes 2282- reuse write threads 2283- clean up threadgroup / iterate / generate 2284- added im_benchmarkn to make it easier to make a CPU-bound op on large 2285 machines 2286- im_cache() failed for cpus > 1 2287 22881/11/06 started 7.11.16 2289- moved im__convert_saveable() into im_copy() (thanks Christian) 2290- missing gobject dependency (thanks Christian) 2291- --enable-threads was broken (thanks Christian) 2292- eval without theads was broken (thanks Christian) 2293- LIBADD libvips.la to libvipsCC.la (thanks Simon) 2294- benchmark.sh is now plain sh, not bash 2295- set ORIENTATION_TOPLEFT in im_vips2tiff (thanks Josef) 2296- oops, im_vips2csv() output separator was broken 2297- added im_benchmark2 2298- move XYZ2Lab LUT build outside the eval thread 2299 230030/10/06 started 7.11.15 2301- print leaked windows 2302- oops, race condition in im_window_unref() 2303- integrated im_region_window() into im_region_image(), tiny speed up 2304 23056/10/06 started 7.11.14 2306- ifthenelse and affine dhints revised 2307- buildlut no longer outputs x cods 2308- configure asks for glib >= 2.6 (we need GOption) 2309- configure uses AC_TOOL_CHECK to find tool names to help cross-compiling. 2310- better configure test for libexif 2311- add </libexif/ prefix if required 2312- test for glibtoolize during bootstrap to help OS X 2313- add --version to vips main prog 2314- don't set Type in im_scale, want to be able to scale hists, for example 2315- im_vips2mask() allows multiband hists as well 2316- im_vips2csv() lets you specify an output separator 2317- vips.c cleanups in arg handling 2318- removed python binding to C layer, too hard to get it working right 2319- leak test python test program 2320- added throw() decls to C++ to help SWIG 2321- no longer derive VError from std::exception, can't get it to work with SWIG 2322- added mmap window manager to share windows between regions ... big reduction 2323 in VM use for large workspaces and for SMP 2324- add im_spcor2 (with sliding window) (Tom) 2325 232615/9/06 started 7.11.12 2327- python vips wrapper hooks into init to start vips 2328- oop, python detect was broken again 2329- im_file_length() error return was wrong (thanks Christian) 2330- im_csv2vips() isnored last column if there was no trailing 2331 whitespace/quoting 2332- test for NULL filename/mode, common if you forget to check argc 2333 (thanks Bruno) 2334- im_break_token() returns NULL on trailing whitespace ... helps read_dmask 2335 work with trailing whitespace on matrix headers 2336- added im_buildlut(3) 2337- removed extra im_free() in im_copy() fallback in im_msb() 2338- added GValue input/output args 2339- various C++ binding improvements (thanks Dennis): namespace support, 2340 VError inherits from std::exception, small fixups 2341- remove im_msb() warning on fallback to copy for uchar ... not very serious, 2342 happens a lot in nip2 2343- added <vips/vips> C++ include ... include in a namespace 2344- added im_benchmark / SMP benchmark script 2345- add im_maxpos_avg() and im_point_bilinear() (Tom) 2346- make im_region_free(NULL) safe (Tom) 2347- link in manpages for im_contrast_surface (Tom) 2348 23498/9/06 started 7.11.11 2350- add im_norm_dmask() 2351- removed old code for gradient and lindetect 2352- internal decls split from proto.h to help SWIG 2353- test for python and SWIG during configure 2354- added python dir for the binding 2355- python binding done! 2356- oops, --without-python was broken (thanks Tom) 2357- added python/test 2358- add im_lu_decomp() im_lu_solve(), rewrite NR type functions in terms of these (Tom) 2359 236023/6/06 started 7.11.10 2361- still more im_affine() rounding/clipping tweaks 2362- ignore "--" arguments to vips.c 2363- im_init_world() also sets g_*_prgname() and loads plugins 2364- add manpage for im_init_world() (oops) 2365- error_exit() prints prgname 2366- various cygwin fixes 2367- fix cache thread assert failure (thanks Joe) 2368- "header" now uses GOption, slightly different args, will loop over args 2369- fixed assert() overenthusiasm in im_prepare() 2370- im_csv2vips() now has separate whitespace / separator tables 2371- add im_rightshift_size() (Tom) 2372- add im_maxpos_vec(), im_minpos_vec() (Tom) 2373- add im_norm_dmask() (Tom) 2374- make im_free_[di]mask(NULL) safe (Tom) 2375 237623/6/06 started 7.11.9 2377- back on sourceforge CVS again 2378- require openexr 1.2.2 or greater 2379- range check xy on im_insert*() for sanity 2380- VMask::invertlut decl removed (thanks Jean) 2381- added \"all\" option to vips.c 2382 238317/5/06 started 7.11.8 2384- debrokened openexr read 2385- added im_tile_cache() 2386- added tiled read to im_exr2vips() 2387- im_tiff2vips() now uses im_tile_cache() rather than its own cache ... 2388 faster in some cases, less RAM use in some cases, saves 200+ lines 2389- removed 'broken' read option from im_tiff2vips() 2390- read/write doubles with g_ascii_strtod() and friends where appropriate 2391- add a "thread" member to region to help sanity check region ownership 2392- saner threadgroup fixes a race problem on gcc 4.0.3 / amd64 2393- added im_vips2csv() 2394- im_open() now does CSV read/write too 2395- oops, broke vips main prog for function name in argv1 case 2396 239722/4/06 started 7.11.7 2398- split vips_png.c to im_vips2png.c and im_png2vips.c 2399- added OpenEXR dependency 2400- added im_exr2vips(), im_exr2vips_header() 2401- added im_isexr(), im_open() knows about OpenEXR 2402- added im_contrast_surface(), im_contrast_surface_raw() (Tom) 2403- added im_msb(), im_msb_band() (Tom) 2404- im_scale() sets Type on output 2405- added RGB16, GREY16 types 2406- im_*2vips() set these types if appropriate 2407- configure fixes for mac 2408- vips main prog uses GOption 2409- im_icc_* locks around calls to cmsDoTransform() to avoid corruption on SMP 2410 machines 2411- add im_prepare_many() (Tom) 2412 241310/3/06 started 7.11.6 2414- typo in manpage and header for im_rect_dup() (Tom) 2415- don't abort image load if XML read fails 2416- added im_video_test() ... test video source 2417- oops, lcms .pc finder was not working 2418- clipping problem in im_affine() fixed (thanks Clare) 2419- test for attr support in libmagick 2420- im_text() returns an error for empty string 2421- im_falsecolour() scale reversed 2422- im_remosaic() could crash on bad mosaics 2423- configure changes to fix --without-magick, lcms and fftw (but sadly we now 2424 require .pc files for these libs) 2425- im_vips2jpeg() automatically converts to 1 or 3 band sRGB uchar for write 2426- also im_vips2png() 2427- added im_project() 2428 242920/2/06 started 7.11.5 2430- added im_csv2vips() 2431- commas in filename options can be escaped with a '\' 2432- raise tile buffer limit (thanks Ruven) 2433- im_spcor() and im_fastcor() have prettier borders 2434- im_fastcor() returns sum of squares of differences, not sum of abs of 2435 differences 2436 243718/11/05 started 7.11.4 2438- small win32 fixes, thanks Juan 2439- added im_flood_blob_copy() ... a temporary hack 2440- much faster im_histplot() 2441- read RGBA palette-ized PNG images more robustly (thanks Tom) 2442- turn on -ms-bitfields automatically for mingw 2443 244426/9/05 started 7.11.3 2445- better error recovery for im_binfile() file too large 2446- all raw files now use mmap windows, so (eg.) ppm and analyze reads can go 2447 >2GB 2448- remove DISABLE_COMPAT ... you now have to define IM_ENABLE_DEPRECATED to get 2449 broken #defines 2450- fix to build without exif, thanks Chas 2451- use native win32 API for seek()/truncate() to work with large files 2452- use attribute to check printf-style args with gcc 2453- fix gcc4 warnings 2454- removed ebuild, since it's in gentoo now 2455- im_magick2vips() sets meta from attributes (good for dicom) 2456- im_magick2vips() writes many-frame images as tall thin VIPS images 2457- im_histcum() was broken for vertical histograms 2458- im_histnorm() is neater 2459- simpler and faster inner loop for im_conv() and im_convf() avoids gcc4 bug 2460- appendc() was reading past the end of the buffer on MSB machines 2461 246213/6/05 started 7.11.2 2463- im_copy_set() was messed up in 7.11.1 2464- put into CVS, phew 2465- fixed a rounding bug in im_affine() ... should no longer get black edges on 2466 image resize 2467- if TIFF open fails in im_open(), try going through libmagick 2468- merge requires all bands == 0 for transparency (used to just check 1st 2469 band) 2470- 16 bit LAB TIFF read/write was wrong 2471- new GType for refstring makes it visible from im_header_map() 2472- jpeg loader attaches exif data (and human-readable meta fields) 2473- jpeg saver writes any exif data 2474- meta not wiped by im_*incheck() in a "w" image 2475- meta keeps traverse order 2476- now require glib >= 2.4 2477- require libxml-2.0 for meta save and new history mechanism 2478- no more .desc files, history saved in XML after pixel data 2479- i/s/d meta fields saved there too 2480- added base64 encode/decode 2481- added blob header write 2482- added a save string type: types which define transforms to and from the 2483 save format get serialized 2484- GValue meta API now exposed, since we can serialise anything 2485- jpeg loader loads ICC profiles 2486- jpeg saver saves ICC profiles from the VIPS header 2487- src/header.c knows about meta system 2488- added im_analyze2vips(), im_grid(), im_raw2vips() 2489- extract/grid/replicate/zoom were not setting TRANSFORM flag 2490- better falsecolour LUT 2491- less stupid + more portable read/write of VIPS header 2492- better im_updatehist() 2493- jpeg load sets vips xres/yres from exif, if possible 2494- jpeg save sets exif xres/yres from vips, if possible 2495- icc_export and icc_transform attach profiles and intents to output images 2496- added im_icc_import_embedded() to import with an embedded profile 2497- split vips_jpeg.c into two, it was getting too big 2498- added im_cp_descv(), im_cp_desc_array(), funcs use them 2499- removed im_append_Hist() from API 2500- fixed meta copy bug 2501- better history copy, removed nonsense about 1st line of Hist being special 2502- tiff read/write now reads/writes ICC profile from meta 2503- edvips rewritten to remove stupidness, and can now set xml 2504- header can now print xml extension block 2505- IM_ prefix for colour temp names 2506 25071/6/05 started 7.11 2508- added im_copy_morph() 2509- im_region_region() allows Bands and BandFmt to differ, provided 2510 sizeof( pel ) is the same ... makes im_copy_morph() work 2511- added im_meta*() functions (MW) 2512- im_header_*() rewritten for meta 2513- added im_header_exists(), im_header_map() 2514- use pkg-config to find libpng and ImageMagick 2515- added im_lineset() 2516- added im_extract_areabands() (JF) 2517- added im_copy_from() (JF) 2518 251915/4/05 started 7.10.12 2520- im_ifthenelse just evals left/right for region all zero/all one 2521- also im_blend 2522- swap g_setenv() back to plain setenv() so we work with glib 2.2 2523 25249/4/05 JC started 7.10.11 2525- docs no longer have broken links 2526- fixed memleak in im_text() 2527 25288/4/05 2529- one bit tiff read was sometimes reading a byte too far in each scanline 2530 253114/1/05 started 7.10.9 2532- im_filename_split() will now usually work for filenames containing ':' 2533 characters 2534- added im_render_fade() for fancier nip2 image repaint 2535- added "ccittfax4" as a TIFF compression option 2536- fix all 64-bit compiler warnings 2537- "," allowed as column separator in mask read 2538- better at spotting singular matricies 2539- small im_render() tidies 2540- glib dependency reduced to just 2.0, but untested ... helps people building 2541 on older systems who aren't interested in nip2 2542- removing leading spaces from IMAGEVEC arguments 2543- load non-interlaced PNGs more efficiently 2544- 1 point mosaic functions work on more image types 2545- better memory allocation debugging info 2546- local memory on regions can shrink as well as grow 2547- shut down threadgroups on render if no dirty tiles 2548- limit number of simultaneous renders 2549- higher mmap window threshold 2550- allow max == -1 for unlimited render cache 2551- 'priority' marks non-suspendable renders 2552- im_embed() mode == 4 paints white pels 2553- im_tiff2vips() was broken with --disable-threads 2554- oops, im_errormsg() compat macros were GCC only 2555- larger default tile size and strip height 2556- tiff write sets PHOTOMETRIC_CIELAB for vips TYPE_LAB images ... so we can 2557 write float LAB as well as float RGB (thanks Ruven) 2558- also 16 bit LAB TIFF write 2559- im_render() rewritten 2560 256120/11/04 started 7.10.8 2562- im_sharpen() is ~15% faster 2563- more quoting for MAGICK finder 2564- im_XYZ2Lab() uses a LUT rather than cbrt(), 5x faster 2565- --disable-threads removes gthread dependency completely (thanks Simon) 2566- intercept TIFF warnings as well as errors ... stops occasional libMagick 2567 exceptions 2568- add im_init_world() to im_init() as well to help backwards compat (thanks 2569 Simon) 2570- im_icc_present() function description was broken, thanks Jay 2571- oops, libtool library versioning was wrong, thanks Jay 2572- can now make TIFF pyramids of any non-complex image type (was uchar and LAB 2573 only), thanks Ruven 2574- 1st order mosaic code now works for LABQ too 2575- build system changes to make "make distcheck" work 2576- RPM .spec files fixed up and updated by configure (thanks Simon) 2577- tiny cleanups for vdump 2578- use g_setenv()/g_getenv() 2579- tiny improvements to IM_FREE*() 2580- tiny VImage debug print fixes (thanks Jay) 2581- swap off_t for gint64 to fix LARGEFILE support on win32 2582- computation feedback now uses gint64 for number of pels, so we give feedback 2583 correctly on images with >2**31 pels 2584- other small fixes for >2**31 pels in an image 2585 258610/11/04 started 7.10.7 2587- im_histnD() was not checking BandFmt (thanks Kirk) 2588- improvements to threading system speed up non-vips output in some cases 2589- use cbrt(x) where we can ... 10x faster than pow(x,1.0/3) on win32 2590- typeo in im_text() when built without PANGOFT2 (thanks Stefan) 2591 25921/11/04 styarted 7.10.6 2593- tiny doc fixes 2594- scripts now only depend on 'vips' program 2595- im_open( "r" ) is now lazier ... for non-VIPS formats, we delay read until 2596 the first ->generate() 2597- so im_open_header() now deprecated since im_open("r") is identical 2598- now looks for fftw3 as well as fftw2 ... slightly faster ffts 2599 260019/10/04 started 7.10.5 2601- fix to light_correct (thanks Jay) 2602- edvips knows about xoffset/yoffset 2603- better vips enum<->char conversions 2604 26054/10/04 started 7.10.4 2606- man page fixes (thanks Jay) 2607- removed last csh scripts (thanks Jay) 2608- scripts default VIPSHOME to $prefix (thanks Jay) 2609- doc build system tidies 2610- im_rank() edge padding was wrong 2611- im_vips2tiff() can now embed ICC profiles 2612 261322/9/04 started 7.10.3 2614- mildly better im_vips2tiff() 2615- *, -, +, /, % between two images now work for mixed number of bands 2616- im_free() was missing a man page 2617- revised documentation 2618 26191/9/04 started 7.10.2 2620- C++ .pc files were still set for 7.9, grr 2621- im_insertplace() didn't check compatibility of images (thanks Matt) 2622 262327/7/04 started 7.10.1 2624- set default stack size explicitly to help platforms with a very low default 2625- 16 bit RGB tiff read was broken (bug introduced in 7.9.5, thanks Haida) 2626- !pangoft2 was broken, thanks Kenneth 2627- win32 build fixes 2628 262912/7/04 renamed as 7.10.0 2630- added NOCACHE function flag ... stops nip memoising video & paint ops 2631- added im_extract_bands() ... takes out many bands from an image 2632- im_vips2tiff() scanline write speed up for area pipelines 2633 263410/6/04 started 7.9.6 2635- tiny polishing of im_ppm2vips() 2636- im_blend() can now work on labq 2637- boolean ops all work on float/complex images (by casting to int) 2638- im_maplut() was broken for 1 band image + many band lut + >8 bit output 2639- im_lintra_vec() now handles 1 band image and many band vector to make many 2640 band image 2641- oops, im_lintra_vec() was missing a man page 2642- im_measure() can work on labq 2643- im_lhisteq() uses new embed mode, _raw() version is one pixel smaller, sets 2644 Xoffset/Yoffset for new origin scheme 2645- generalised im_tone_build() to any image type to make im_tone_build_range() 2646 264720/5/04 started 7.9.5 2648- tiff output res can be a single number too 2649- added im_text() to make a bitmap from a string with pango 2650- im_tiff2vips() does 16 bit RGBA 2651- im_binfile() was broken since 7.9.2 due to im_mapfile() change 2652- im_ppm2vips() now works for 16 bit images 2653- added im_copy_swap() ... copies, reversing byte order 2654- im_resize_linear() was broken for some images, thanks Javi 2655 26568/3/04 started 7.9.4 2657- oops, config.h include missing in a few places 2658- im_vips2tiff() can now write 1 bit images 2659- im__find_lr/tboverlap() now exported to nip 2660- better edge tile handling for tiff read/write (thanks Ruven) 2661- added extend-pixels-from-edge mode to im_embed() 2662- im_conv*(), im_rank(), im_stdif(), im_dilate(), im_erode() all use it to 2663 expand their input, so their output now has guess borders, not black borders 2664- im_fastcor() now does an im_embed( 1 ) on the output ... the zero borders 2665 were very annoying before, since you would usually be searching for the 2666 minimum point 2667- no change to im_spcor(), since you will usually be searching for the maximum 2668- better im_render() cache behaviour under heavy loads 2669- im_affine() revised 2670 * clip, resample and transform is now pixel-perfect for all 2671 inputs (I hope) 2672 * uses the new embed to make sure there are no black borders 2673 from edge interpolation 2674 * about 20 - 30% faster 2675- policy change: Xoffset and Yoffset are now set by all operations to record 2676 the position of the input origin in the output 2677- im_replicate() is much faster for some cases 2678- added tile and mirror flags to im_embed() 2679- added im_cache() convenience function 2680- better ETA for image calculation 2681- im_tiff2vips() now has a "broken" option so it can read tiled tiffs made 2682 with earlier versions of vips 2683- on convert float to int format, now does floor() not rint() ... more 2684 'mathematical' 2685- added im_rint() 2686- im_sharpen() now uses a gaussian mask 2687- im_convsep() more resistant to int overflow problems 2688- added im_make_xy(), avoids rounding problems with the old float-based thing 2689- im_profile() now makes vertical images for a vertical profile 2690- added im_vips2tiff() option to set the resolution in inches not cm (thanks 2691 Andrey) 2692- im_binfile() is now exported 2693 26946/2/04 started 7.9.3 2695- added an im_init_world() to im_open(), to help old progs 2696- renamed VSemaphore as im_semaphore_t 2697- started using libtool library versioning 2698- now uses g_module_*() in place of dlopen() 2699- now uses pkg-config instead of vips-config (thanks Simon) 2700- fixes to vips.h for _ADDR() with DEBUG on (thanks Konrad) 2701 270210/12/03 started 7.9.2 2703- patches for freebsd, thanks Lev Serebryakov 2704- vips2dj knows about my colour laser printer 2705- added i18n support, glib/gmodule/gthread dependency 2706- im_error*() API revised to be more i18n friendly 2707- List type removed, now uses g_slist 2708- VBuf added, some more utility funcs pushed down from nip 2709- im_thread stuff removed, now uses g_thread 2710- im_lock stuff removed, now uses g_mutex 2711- im_semaphore_t renamed to VSemaphore, not sure this is a good idea 2712- build with --disable-threads to turn off threaded render 2713- #include <vips/vips.h> now pulls in most of the public API, you shouldn't 2714 need other vips includes very often 2715- im_close() is better at cleaning up if there's an error 2716- inverse FFTs could fail for wider-than-high images with fftw 2717- better im_icc_transform error messages 2718- bug fix in im_render with large caches 2719- im_binfile() now has an offset parameter 2720- im_mapfile()/im_unmapfile() now work on IMAGE and record the length of the 2721 file they mapped ... this lets VIPS successfully unmap a file if it changes 2722 size while it's open 2723 272420/10/03 started 7.9.1 2725- threadgroups now have their own kill flag 2726- im_plotmask() now does anti-aliasing 2727- im_iterate() fix for operations on mmap window images (thanks Clare) 2728- im_writeline() stops on kill 2729- fix for im_fwfft() segv for wider-than-high real images (thanks Andrey) 2730- fix for im_fwfft() to work for non-square real images (thanks Andrey) 2731- can now read and write 32-bit IEEE float TIFF (Andrey Kiselev) 2732- clean-ups for colour.c (Andrey Kiselev) 2733- no longer lets you make an image with width|height|bands == 0 (thanks Joe) 2734- im_vips2tiff(), im_vips2*jpeg*(), im_vips2png(), im_vips2ppm() could 2735 sometimes fail for mmap window input images (thanks David) 2736- added IM_RECT_HCENTRE(), IM_RECT_VCENTRE() macros 2737 273820/8/03 JC 2739- started 7.9.0 2740- added im_rank_image() ... im_maxvalue() a special case of this 2741- im_subtract() goes up to int earlier for better value preserving, thanks 2742 Haida 2743- im_rank() much faster for large windows, correct result on all platforms 2744 (dratted memcpy() was causing problems before) 2745- fixed problem with libMagick config if installed somewhere strange 2746- fixed problem with include order in library compile 2747- added --without-magick configure option 2748- added im_render(), threaded background image paint 2749- added im_replicate(), replicate an image horizontally and vertically 2750 275131/5/03 JC 2752- started 7.8.11 2753- fixed a problem with relational operators and some combinations of input 2754 types (bug introduced in 7.8.9), thanks Haida 2755- vips-7.8 script overrides VIPSHOME environment variable 2756- better im_guess_prefix 2757- stupid light_correct script no longer uses /pics/tmp 2758- added batch_crop script 2759 276022/5/03 2761- started 7.8.10 2762- the JPEG writer can embed ICC profiles in output images ... although I've 2763 yet to see it make any difference :-( test this carefully at some point 2764- fixed a possible coredumper in jpeg write 2765- jpeg read now spots truncated files 2766- im_invertlut() now makes an image, not a mask ... sorry :-( 2767- im_histnD() makes an n-dimensional histogram from an n-band image 2768- im_col_pythagoras() patch 2769- IM_NUMBER() now returns int not size_t 2770- new win32 build system from Juan and friends, based on tmake 2771- sample project files for MSVC added, thanks Juan 2772- win32/ subdir now has the win32 build systems 2773- spec/ subdir now has the spec files for building RPMs 2774- dist now includes formatted documentation 2775- license change: VIPS is now LGPL, nip stays GPL ... this means proprietary 2776 programs can link against the vips library 2777- had a report of a working VIPS build on a 64 bit system (!) 2778- im_log_dmask() now includes all of the negative lobe, thanks matt 2779- vips-7.8 start script now auto-relocates 2780- im_spcor_raw(), im_fastcor_raw() now exported 2781 278229/4/03 2783- started 7.8.9 2784- changes to build to help MSVC 2785- oops, makedef.pl missed out function names with an initial cap, and 2786 error_exit() 2787- im_min() and im_max() gave random wrong results for >1 thread on >1 CPU 2788 machines (bug introduced in 7.7.20), thanks Joe 2789- vips.c no longer generates C++ wrappers for functions with no image argument 2790 (thanks Haida) 2791- im_invertlut() now wrapped by hand in VMask.cc 2792- C++ docs updated 2793- added im_open_header(), returns an IMAGE with just width/height/etc and no 2794 data 2795- ... so now "header" will print useful stuff even on truncated files 2796- tiff writer knows about alpha (thanks Jenny) 2797 27987/2/03 2799- started 7.8.8 2800- build failed with lcms turned off 2801- im_spcor() could segv for 16bit images (thanks Joe) 2802- im_tiff2vips() read resolution expressed as pixels/cm incorrectly 2803- im_vips2tiff() tries not to write mad resolutions 2804- header and im_open file type tests reordered for slight speedup 2805- im_copy_set() had a broken dispatch function for xres/yres 2806- im_fwfft() exploits libfftw real -> complex transform if possible for a 2x 2807 speed-up (thanks Matt) 2808- im_invfftr() added for complex -> real inverse transform for 2x speed-up 2809 (thanks Matt) 2810- im_freqflt() now uses im_invfftr() for real result and speedup 2811- im_flipver() could segv on some inputs, thanks Clare 2812- relational operators now work on complex 2813- relational rewritten ... now fractionally slower, but 1/3 the size 2814- vips2dj -1:1 produced incorrect height 2815- better overlap-too-small detection in mosaicing code 2816- im_system() can have NULL output 2817- global balance ignores overlaps with only transparent pixels 2818 28193/1/03 2820- started 7.8.7 2821- worked in patch from Hans Breuer (thanks!) 2822 - png read/write with im_png2vips(), im_png2vips_header(), 2823 im_vips2png(), im_ispng() 2824 - im_errorstring() and im_col_displays() are now functions not externs 2825 (helps DLLs) 2826 - many include fixes to help native win32 build 2827- added libMagick support, 78 file formats now loadable with 2828 im_magick2vips(), im_magick2vips_header() and im_ismagick(), w00t 2829- now installs vips.m4 to $prefix/share/aclocal 2830- added im_icc_export_depth() ... export to device space with a specified bit 2831 depth (8 or 16) 2832- vips.def now rebuilt with custom rule in libsrc/Makefile.am 2833- removed externs im_Type, im_BandFmt, im_Coding, im_Compression to simplify 2834 DLL build 2835- im_mmap() -> im__mmap(), since it's supposed to be an internal function 2836- new vips-7.8.x/proj directory holds unsupported sample makefiles and 2837 config.h for building with the MSC toolchain 2838- new scripts batch_image_convert and batch_rubber_sheet (thanks Joe) 2839- added the RPM .spec files to the main distribution 2840- InitializeMagic() now passed "" rather than NULL to avoid assert() problems 2841 on some libMagic versions 2842 28432/12/02 2844- started 7.8.6 2845- now reads 8-bit RGBA tiff 2846- C++ build guide fixes (thanks fsicre) 2847- im_Type2char array text slightly messed up 2848- global_balance is safer for complex mixed mosaics 2849- removed im_lintra() fallback to im_copy() for scale == 1, offset == 0 ... 2850 too confusing 2851- im_tiff2vips() now reads 16-bit LAB 2852- added im_Lab2LabS() and im_LabS2Lab() 2853 28545/11/02 2855- started 7.8.5 2856- fix for mmap window of local region ... caused im_iterate() to break 2857 sometimes for large images, in turn occasionally breaking 2858 im_max()/im_min()/etc. (thanks Joe) 2859- tiny speed up for im_rot90()/270() 2860- on install on win32, add .exe suffix for links 2861- vips.c knows to remove .exe suffix for linked commands 2862- added im_errormsg_system() ... decode win32 error codes too 2863- pagesize calcs for roving mmap windows were messed up on win32 (thanks Kirk) 2864- some TODO cleanups 2865- global balance broke horribly if you had filenames with spaces in (thanks 2866 Clare) 2867 286831/10/02 2869- started 7.8.4 2870- im_unmapfile() includes mixed up on mac os x 2871- libtool patched for mac os x 2872- vips.c sets numeric locale to "C" 2873 287427/10/02 2875- started 7.8.3 2876- configure fixes help mac os x 2877- im_guess_prefix() adds ".exe" suffix on w32 if not there 2878- changed im_measure() error messages to number bands from 1 2879- added func descriptor for im_read_dmask() to help nip, updated C++ API, docs 2880 288121/10/02 JC 2882- started 7.8.2 2883- tries rand() if random() is not available 2884- tries mktemp() if mkstemp() is not available 2885- turns off realpath() if not available 2886- added IM_DIR_SEP/IM_DIR_SEP_STR directory separator character/string 2887- added IM_PATH_SEP/IM_PATH_SEP_STR path separator character/string 2888- added im_path_is_absolute() 2889- vips.c knows to link to vips.exe on win32 2890- spot mingw* and set BINARY_OPEN 2891- open images in binary too (since we now read() the header) 2892 289310/10/02 JC 2894- im_lintra() and im_lintra_vec() were broken for complex images :-( thanks 2895 matt 2896- renamed im_and() as im_andimage(), im_eor() as im_eorimage() and im_or() as 2897 im_orimage() ... avoids breakage in the C++ layer 2898- added im_dE00_fromLab() 2899- limited release as vips-7.8.0 2900 29012/10/02 2902- renamed as vips-7.8, woohoo 2903- revised documentation 2904 290519/9/02 JC 2906- started sorting out VIPS #defines ... there are now a sensible set of new 2907 names (eg. NOCODING becomes IM_CODING_NONE, LAB becomes IM_TYPE_LAB) 2908- define IM_NO_VIPS7_COMPAT to turn off the old names 2909- added im_mmap()/im_munmap() layer for windows portability 2910- removed the contents of history.h .. obsolete 2911- added IM_IMAGE_ADDR() macro 2912 291310/9/02 JC 2914- handle errors from TIFF lib correctly 2915- configure fixes for cygwin 2916- CMYK TIFF write fixed 2917- configure fixes for mingw 2918 29195/9/02 JC 2920- im_cp_desc() now copies Xoffset/Yoffset 2921 292221/8/02 JC 2923- started 7.7.24 2924- reads CMYK TIFF 2925- reads dpi from TIFFs 2926- better float Xres/Yres 2927 292814/8/02 JC 2929- new header fields Xoffset and Yoffset ... used by functions to hint 2930 the position of the origin in output images 2931- support added to c++ api and to header 2932- im__lrmerge(), im__tbmerge(), im__affine(), im_insert(), 2933 set Xoffset/Yoffset 2934- now uses <lcms.h>, not <lcms/lcms.h> for better suse w0rkage 2935- better configure for fftw (uses libdfftw name if libfftw not found) 2936 29378/8/02 JC 2938- large file support with mmap() windows ... had to change 2939 im_prepare_inplace() to im_prepare_to() 2940 2941 benchmark: 2942 2943 - system 2944 2945 hardware: 2 x 2.5GHz P4, 1GB RAM, 15k SCSI, ReiserFS 2946 os: suse 8 (kernel 2.4.18) 2947 compiler: gcc 2.95.3, -O2, threads turned on 2948 images: fred.v, fred2.v; both 4k by 4k LABPACK (64MB) 2949 images: jim.v, jim2.v; both 15k by 15k LABPACK (900MB) 2950 time: smallest real of 5 runs, system idle 2951 vips: 7.7.23, debug on in im_openin.c, window limit set with an 2952 environment variable 2953 2954 - benchmarks 2955 2956 cpu-bound: im_sharpen fred.v fred3.v 11 1.5 20 50 1 2 2957 io-bound: im_insert fred.v fred2.v fred3.v 4000 0 2958 worst-case: im_rot90 fred.v fred3.v 2959 2960 - results 2961 2962 desktop: 2963 2964 no mmap windows mmap windows 2965 2966 cpu-bound real 0m3.712s real 0m3.970s 2967 user 0m6.010s user 0m6.390s 2968 sys 0m0.900s sys 0m1.110s 2969 2970 io-bound real 0m1.813s real 0m1.865s 2971 user 0m0.900s user 0m0.990s 2972 sys 0m1.720s sys 0m1.520s 2973 2974 worst-case real 0m1.344s real 0m3.039s 2975 user 0m1.270s user 0m2.230s 2976 sys 0m0.850s sys 0m3.050s 2977 2978 not quite sure why sharpen is a little slower (4%?) ... IO speed is about 2979 the same though ... worst-case is having to constantly move windows about 2980 (500,000 page faults, vs 10,000 for no windows) 2981 2982 again, with an image larger than RAM 2983 2984 no mmap windows mmap windows 2985 2986 io-bound real 2m52.759s real 2m11.172s 2987 user 0m14.940s user 0m14.890s 2988 sys 0m29.940s sys 0m26.560s 2989 2990 worst-case real 3m35.391s real 3m50.760s 2991 user 0m19.850s user 0m26.600s 2992 sys 0m12.650s sys 0m43.130s 2993 2994 mmap windows actually slightly faster in this case ... plus they stress the 2995 OS less 2996 299731/7/02 JC 2998- added -lm for better lcms detect 2999- README notes for fftw on suse8 3000- im_profile() sets HISTOGRAM for output image 3001- im_copy()/im_copy_set() function descriptor no longer sets PTOP ... helps 3002 avoid LUT problems 3003- im_subsample()/im_zoom() fall back to im_copy() for shrink/grow == 1 3004- im_lintra() falls back to im_copy() for scale == 1, offset == 0 3005- no longer use Type == LUT ... all just Type == HISTOGRAM now 3006- im_blend() was messed up for > 1 band images :( 3007 300816/7/02 JC 3009- started 7.7.23 3010- im_XYZ2sRGB() wasn't setting Type = sRGB 3011- im_icc_import() was broken for rgb 3012- im_header_string() had wrong return type in function database 3013 301413/7/02 JC 3015- added im_flood_blob() 3016- added im_open_local_array() ... C API convenience function 3017- oop, im_flood() was missing a man page 3018- Type == FOURIER added to help visualisation 3019- released as 7.7.22 3020 302130/6/02 JC 3022- JPEG, TIFF and PPM import all now set sRGB Type for RGB import 3023- im_header_int(), im_header_double() and im_header_string() added to aid 3024 UIs 3025- now uses gettimeofday(), not time() 3026- for consistency with other trig functions, im_c2amph() now returns degrees 3027 not radians (ouch) 3028- added im_c2rect() ... turn (amp, phase) to rectangular 3029- added im_sign() ... unit vector in direction of value 3030- better im_scaleps() ... old code was terrible 3031- rewritten im_rotquad() ... now partial 3032- im_icc_export()/_import() now do ABSOLUTE correctly 3033- added im_icc_ac2rc() ... converts absolute to relative colorimetry 3034 303525/6/02 JC 3036- added im_copy_set(3) ... like im_copy(), but set informational header fields 3037 303820/6/02 JC 3039- added im_ceil(), im_floor() 3040- im_Lab2LabQ was not clipping a/b range correctly 3041- im_icc_export(), own ABSOLUTE mode 3042- released as 7.7.21 3043 304428/5/02 JC 3045- im_remainderconst_vec broken for float/double 3046- added Yxy colourspace 3047 304816/05/02 JC 3049- auug, libtool was all messed up ... redone all the autotools stuff 3050- uses libtool convenience libraries to build vips in sections 3051- uses config subdir for temp files and .m4 things 3052- patched stupid suse config.guess 3053- vips2dj patched for better raw cmyk 3054- released as 7.7.20 3055 305612/5/02 JC 3057- im_vips2jpeg*() and im_vips2ppm() now both partial 3058- started updating the C++ guide 3059- had to change the location of the C++ headers :-( all C++ progs should now 3060 have: 3061 3062 #include <vips/vipscpp.h> 3063 3064 this is so things can work on systems which do not have case sensitive 3065 file systems 3066 3067- changes for Mac OS X 3068 * im_system() TRUE/FALSE removed 3069 * searches /*/[lib|include] to get fink libs for tiff and jpeg 3070 307130/4/02 JC 3072- several functions were missing IM_FN_PIO in their descriptor ... this was 3073 harmless for nip/ip/C, but broke the ref counting in the C++ layer 3074- im_system() now defaults "/tmp" for temp files 3075- STRING input and output args were broken for C++ :-( 3076- threads exit more quickly on error 3077- im_min()/im_max() now partial (at last) 3078- im_remainderconst()/im_remainderconst_vec() added 3079- --with-dmalloc configure switch 3080- vips2dj does CMYK and mono too 3081- im_vips2tiff() allows any number of bands (but not the right way to 3082 write CMYK, see TODO) 3083 308426/4/02 JC 3085- old ICC profile reader removed 3086- little cms wrapped ... configure spots it, im_icc_transform() uses it to map 3087 between two images 3088- also im_icc_import() and im_icc_export() so you can see PCS images 3089- im_icc_present() to test for existence of lib 3090- README fixes 3091 30924/4/02 JC 3093- TODO changes 3094- oops, DEBUG left on in im_invertlut() 3095 30962/4/02 JC 3097- im_fwfft.c/im_invfft.c now use libfftw if available ... about 5x speed up 3098 and double precision 3099- added FIND_FFTW autoconf macro 3100- include/vips/proto.h changes 3101 310226/3/02 JC 3103- started 7.7.19 3104 310525/3/02 JC 3106- im_log_dmask() was broken (thanks matt) 3107- casts between VDMask and VIMask were broken (thanks matt) 3108- various error msgs improvements and tiny man page fixes 3109 311013/3/02 JC 3111- tb/lr merge first/last cache moved to per-call state for better sharing 3112- im_remosaic() bails out faster on error and makes better error messages 3113 311413/3/02 ruven 3115- im_vips2tiff() pyramids stop at tilesize, not 64x64 3116 311725/02/02 JC 3118- im_remosaic() is smarter, and works better with im_global_balance() 3119- im_affine() 2x faster 3120 312114/2/02 JC 3122- started 7.7.18 3123- vips.m4 and libsrc/Makefile.am fixes for IRIX 3124 312511/02/02 JC 3126- vips/thread.h and vips/threadgroup.h were missing extern "C" for C++ 3127- VImage::write() now tracks dependencies, so you can write() to a partial 3128 safely ... although it's not a very useful thing to do (thanks Mike) 3129- new VImage::print() function for debugging 3130- added im_print() 3131 313222/01/02 JC 3133- started 7.7.17 3134 313515/01/02 JC 3136- im_rect_unionrect() and im_rect_intersectrect() safer for repeated args 3137- im_video_v4l() no longer perrror()s on ioctl fail for less spam 3138 313903/01/02 JC 3140- started 7.7.16 3141- im_version_string() really does return the date as well now 3142 314312/12/01 JC 3144- im_guess_prefix() extra smartness for relative path names 3145- VImage() no longer uses tmpnam() (thanks Paul) 3146 314711/12/01 JC 3148- renamed im_fexists() as im_existsf() 3149 31507/12/01 JC 3151- ppm man pages added (doh) 3152 315328/11/01 JC 3154- warnings on g++ 2.96 fixed 3155 315622/11/01 JC 3157- started 7.7.15 3158- im_video_v4l() failed to compile on non-linux platforms 3159 31607/11/01 JC 3161- im_remosaic() added 3162- im_*merge() are more intelligent about transparency in bizarre overlaps 3163- grr! putenv() semantics change on more recent clibs ... should be safer 3164 now 3165 316619/10/01 JC 3167- VDisplay( "display name" ) segved on unknown display :-( thanks mike 3168 316926/9/01 JC 3170- contrib tools get data files from share/vips/xxx area now 3171- im_vipshome() renamed as im_guess_prefix(), reworked for new package layout 3172- doc/ build sorted out 3173- ... but of course, docs still need updating for 7.8 3174 317520/9/01 JC 3176- fix to im_vipshome() 3177- ip2 renamed as nip 3178- split to library only ... separate ip and nip packages 3179- new VIPS_VERSION_* macros set from configure.in in vips/version.h.in 3180- vips.m4 VIPS finder 3181- reworked README, doc/README and TODO 3182- now installs to /usr/local/ by default 3183- fmask4th.c was including varargs.h ... d'oh 3184- include area reorganised: everything inside <vips/..> now ... hopefully the 3185 only user-visible change is that all plain C progs need to change: 3186 3187 #include <vips.h> 3188 3189 to: 3190 3191 #include <vips/vips.h> 3192 3193 the C++ API should be unaltered 3194 319521/8/01 ruven 3196- im_setupout() was missing some #includes 3197 319820/8/01 JC 3199- started 7.7.14 3200 320115/8/01 JC 3202- added libxml dependency for ip2 3203 320427/7/01 JC 3205- im_conv(), im_convf(), im_convsep(), im_convsepf() now reject masks with 3206 scale == 0 3207 320826/7/01 JC 3209- started 7.7.12 3210 321125/7/01 JC 3212- started 7.7.11 3213- oop, im_histeq() and im_tonemap() also missed 3214- better error messages from im_run_command() 3215 321623/7/01 JC 3217- started 7.7.10 3218- im_sharpen() failed due to change in im_band_extract() offset 3219 322020/7/01 JC 3221- started 7.7.9 3222 32234/7/01 JC 3224- im_open(,"w") open() delayed until im_setupout(), very slightly safer 3225- updated im_open() man page 3226- im_tiff2vips() now embeds index in filename ... and it's page number (from 3227 0), not subsample factor 3228- finally bit the bullet ... im_extract()/im_extract_band() now number from 3229 zero (sorry!) 3230- and im_lrmosaic()/im_tbmosaic() bandno param too 3231 323229/6/01 JC 3233- im_region_free() now frees immediately 3234 323527/6/01 JC 3236- im_vips2tiff() man page updated for deflate, 2 years late 3237 323822/6/01 JC 3239- oops, limit wrong on im_rank() 3240 324121/6/01 JC 3242- better post_install for --prefix outside VIPS's tree 3243- -ltiff needs -lm in acinclude.m4 ... fixes configure on redhat 7.x 3244 324513/6/01 JC 3246- started 7.7.8 3247 32486/6/01 JC 3249- im_invertlut() added 3250 325131/5/01 JC 3252- im_colour_temperature, im_XYZ2Lab_temp, im_Lab2XYZ_temp added 3253- ... colour temp stuff needs sorting out properly 3254 325525/5/01 JC 3256- added vips-config script, cf. gtk-config 3257- --without-threads option added 3258- did a bit of work on the C++ API docs 3259 326024/5/01 JC 3261- added im_tiff2vips_header(), im_jpeg2vips_header() and im_ppm2vips_header() 3262- header uses these to print fields quickly 3263- switched to config.h 3264- configure.in rewritten ... much nicer, fewer options, more automatic 3265 326617/5/01 JC 3267- im_matinv() didn't free stuff correctly on singular matrix 3268 326916/5/01 JC 3270- vips2dj now knows about 5000ps printers 3271- allow RW mode for non-native VIPS image files, for 8 bit images 3272 32732/5/01 JC 3274- started 7.7.7 3275 32761/5/01 JC 3277- im_addgnoise() did not work for >1 band images 3278 327923/4/01 JC 3280- configure options to remove support for JPEG and TIFF ... helpful for a no- 3281 dependencies build 3282 328320/4/01 JC 3284- im_(v)snprintf() added 3285- all sprintf()s removed 3286 328715/4/01 JC 3288- im_affine() had a rounding problem 3289 329011/4/01 JC 3291- tiny mosaicing bug fixed in im__lrcalcon 3292- started 7.7.6 3293 329421/3/01 JC 3295- new iblend code in im_tbmerge() was typo-d 3296- mosaic1 was broken by affine too 3297 329820/3/01 JC 3299- im_image() failed for FMTUCHAR 3300 330112/3/01 JC 3302- started 7.7.5 3303- im_sharpen() uses seperable convolution for big speed up 3304- new "Print" menu 3305 330611/3/01 JC 3307- REALVEC renamed as DOUBLEVEC 3308- added IMAGEVEC 3309- added IM_INPUT_IMAGEVEC 3310- gbandjoin now has function description 3311- new function im_maxvalue() 3312- im_compass()/im_lindetect() reimplemented with im_conv()/im_maxvalue(), 3313 about 15% faster, works for any type, partial 3314- im_gradient() reimplemented with im_conv()/im_abs()/im_add(), about 30% 3315 slower, works for any type, partial 3316 331710/3/01 JC 3318- new function, im_clip2fmt() converts between any image formats ... 3319 slightly faster than the old im_clip() 3320- legacy im_clip2us() etc. functions now just call this 3321 33229/3/01 JC 3323- im_conv() rewritten, simpler, about 10% faster 3324- im_convsep() rewritten, now does any non-complex type, partial, 20% faster 3325- new functions: im_convf(), im_convsepf() for DOUBLEMASK 3326- raw versions of each 3327- legacy convolvers (eg. im_convbi()) removed 3328 33298/3/01 JC 3330- new function im_blend() 3331- new function im_lab_morph() 3332- speed up to im_ifthenelse() 3333- speed up to im_*merge() (uses integer arithmetic for integer blends) 3334 33354/3/01 JC 3336- tiny speed ups to im_histgr() 3337- speed ups to im_maplut() 3338 33393/3/01 JC 3340- new functions: im_histnorm(), im_histcum() 3341- im_histeq() more general 3342- im_vipshome() --- better behaviour for relative paths 3343 33442/3/01 JC 3345- new video package 3346- im_video_v4l1() (video for linux) added 3347- configure.in switches to turn v4l1 on and off 3348 33491/3/01 JC 3350- new im_histspec() implementation ... more general, bugs removed 3351 335214/2/01 JC 3353- better vips2dj usage message 3354 335513/2/01 JC 3356- im_image_sanity() added, called in various places in iofuncs 3357 33589/2/01 JC 3359- added 'check' and 'name' class member stuff to ip from ip_gtk2 3360- new "Plot" menu 3361- new "Overlay" menu 3362- more stuff in _stdenv/_list ... curried forms of head/tail etc. 3363 33647/2/01 JC 3365- started 7.7.4 3366- vips2dj and vdump now use im_vipshome() 3367 33685/2/01 JC 3369- new im_vipshome() function 3370- min()/max() macros renamed as MIN()/MAX() 3371- new im_load_plugins() function 3372- vips.exe and ip now load $VIPSHOME/lib plugins at startup 3373 33742/2/01 JC 3375- mosaicing functions now have an extra max blend width parameter 3376 337730/1/01 JC 3378- fixed tbmerge no overlap detect 3379 338013/12/00 JC 3381- started 7.7.3 3382 338330/12/00 JC 3384- vips.h fixes for cygwin/wingdi conflict 3385 338627/11/00 JC 3387- added im_vips2ppm(), im_open() imports and exports it 3388- fixed nasty implicit output conversion problem for PIO dispatch() calls 3389 339021/11/00 JC 3391- added im_ppm2vips() 3392 339316/11/00 JC 3394- configure.in fixes ... jpeg found correctly now 3395- searches for libz as well 3396 339716/11/00 JC 3398- started 7.7.2 3399 34005/11/00 JC 3401- speed up to lab2labq 3402 340319/10/00 JC 3404- started 7.7.1 3405 340613/1/00 JC 3407- oops, im_open() was missing an 'else' in jpeg/tiff load 3408 34095/8/00 JC 3410- im_vips2tiff() now has mode string embedded in output filename 3411- im_vips2jpeg() now has qfac in output filename 3412- im_open() understands this 3413 341411/7/00 JC 3415- new im_image() function ... wraps a VIPS image around a memory buffer 3416- C++ layer changes: 3417 * now use #include <vips/Vips.h> 3418 * error renamed as VError 3419 * new VMask() constructors 3420 * new VImage() constructor 3421 * new VImage::data() access member 3422 * more operator equivalences: <, >, <=, >=, ==, !=, &, |, ^, % 3423 342417/6/00 JC 3425- more consts added to vips protos 3426 342710/5/00 JC 3428- minor configure.in changes to help solaris 3429- removed _TIFFmalloc() and _TIFFfree() calls 3430 34319/3/00 JC 3432- fixed rounding problem in generate grid 3433 34348/3/00 JC 3435- fixup to im_system() temp dir 3436 34377/3/00 JC 3438- added im_system() 3439- small tidies 3440 34411/3/00 JC 3442- better plugin test in configure.in 3443 344426/2/00 JC 3445- fixes to Makefile.am in ip/src* and configure.in, to help ip find the right 3446 gtk includes on systems with more than one gtk-xxx installed 3447 344821/2/00 JC 3449- now builds ip and ip_gtk2 3450 345116/2/00 JC 3452- configure.in fixes for xil and some TIFF/JPEG strangeness 3453 345415/2/00 JC 3455- im_global_balancef() was broken! d'oh 3456- note in README about enabling video cards 3457 345810/2/00 JC 3459- configure now searches for xil ... FIND_XIL macro 3460- im_zoom() spots integer overflow 3461- better shape set on region drag end in ip 3462- better zoom-too-far handling in ip 3463 346413/1/00 JC 3465- fixes to configure etc. to help cygwin 3466- jpeg is now searched for too ... FIND_JPEG macro 3467 346810/1/00 JC 3469- global_balance() now uses new affine() atuff 3470 347127/12/99 JC 3472- mosaic1 stuff now uses new affine() funcs 3473 347421/12/99 JC 3475- added Joe's docs 3476- im_LabS2LabQ() rounding on a/b slightly broken for a/b == 0 3477 347820/12/99 JC 3479- new function: im_affine() 3480- similarity*() now in terms of affine() 3481- tests for error return in reduce.c from maplut 3482- small clean-ups 3483 348415/12/99 3485- im_version() added, new iofuncs package for it 3486- ip did not call zero-input-arg vips functions 3487- vips.c did not like zero-input-arg functions 3488 34896/12/99 JC 3490- Sobel filter was a bit broken 3491 34923/12/99 JC 3493- menu reorganisation 3494- generate gauss mask dialog 3495 34962/12/99 JC 3497- reworked text file IO, better error messages 3498 34991/12/99 JC 3500- reworked .iprc filename stuff, cleaner 3501 350230/11/99 JC 3503- better menu set switcher in calc preferences 3504- ip now thinks it's 7.7 3505- did a spellcheck on the ip guide 3506 350729/11/99 JC 3508- 7.7 started! 3509- srgb D65->D50 converter 3510- Negate added to arith 3511- find similar pixel value dialog 3512- find similar colour dialog 3513- paste into background dialog 3514 351519/11/99 JC 3516- adjust labq was mising 3517- shrink image defaulted to /2 not /1 3518- sharpdropshadow broken 3519- Rotate.* broken 3520- vips-7.6.3 release 3521 352218/11/99 JC 3523- ip didn't report space free on >2GB filesystems correctly 3524- ip did not link statically against libXpm on solaris7 3525 352617/11/99 JC 3527- im_histplot() failed for all 0's histogram 3528- new profile_image dialog 3529- man pages for im_sRGB2XYZ/im_XYZ2sRGB were broken 3530- new colourize image dialog 3531- new shrink image image dialog 3532- new expand image image dialog 3533- better doc Makefiles 3534 353516/11/99 JC 3536- more menu reorganising 3537- new image_to_mask/mask_to_image buttons 3538- new match_two_images dialog 3539- new measure_colour_chart dialog 3540 354115/11/99 JC 3542- new custom LABQ sharpen in Image menu 3543- configure support for SGI video (thanks Ruven) 3544- menu fiddling in ip 3545- new "resize canvas" menu item 3546- im_insert_noexpand() added, no docs tho' 3547 354811/11/99 JC 3549- new ip menu item: Image=>Adjust white/black/saturation of LabQ 3550- fixed bug in decompose complex number 3551- browse-icons now ignores errors 3552- better error msg for "12 12" etc cases 3553 355410/11/99 JC 3555- open hi-res gives proper error msg if no file found 3556- made file-select boxes a bit more compact and clearer 3557- updated configure.in for vips-examples-7.6 3558 35599/11/99 JC 3560- new column start point moved 3561- vdump now defaults to subsample 1, portrait 3562- navigation boxes were broken 3563- no longer shrink-to-fit if loading as high res 3564- better positioning of zoom windows 3565- removed some old cruft 3566 35678/11/99 JC 3568- ooops, im_remainder() got lost somehow 3569- refguide converted to latex and updated 3570- cppguide updated 3571 35725/11/99 JC 3573- libguide converted to latex and updated 3574 35754/11/99 JC 3576- ip guide now latex2htmls cleanly ... still needs updating tho' 3577- cpp/app guide latex2html redone 3578 35792/11/99 JC 3580- configure no longer adds -32 to IRIX builds for you 3581- some more stuff in README 3582- simple DEBUGM malloc tracking, made libsrc/iofuncs/memory.c 3583- changed im_malloc() to return void * 3584- removed duplicate im_malloc() proto from util.h 3585- changed all malloc/free to go through im_malloc()/im_free() 3586 358723/10/99 JC 3588- double-click on error image now pops a load browser and an error dialog 3589- add-new-column no longer scrolls to right edge of workspace 3590- better scroll-to-bottom on item add 3591- load ws twice does not cause 'already open' errors 3592- memorise directory button in fsb 3593 359418/10/99 JC 3595- new FIND_TIFF/FIND_MOTIF macros for acinclude.m4 3596- new ./configure switches, see ./configure --help 3597- enabled static libs 3598 35998/10/99 3600- broke action_proc_bop() into smaller functions, stops bad code gen on 3601 gcc2.95.1 (and others, prolly) 3602- restored old Makefiles in doc/src/ipguide 3603- vips7.6 script renamed as vips-7.6 3604 36055/10/99 3606- replace image was broken 3607- some menu reorganisation 3608- 'reload all menus' button 3609 36104/10/99 3611- computed regions in ip were broken 3612- updated system.iprc defaults 3613- new menu item: adjust white/black points 3614 36152/10/99 3616- browse icons was broken 3617- greyscale 16-bit tiled tiff was broken 3618- extra mutex locks for TIFF*() in im_tiff2vips() 3619 36201/10/99 3621- some automake probs fixed 3622- squished two ip bugs 3623 362430/9/99 3625- fixed problem with pthreads, now works on suse6.2 as well 3626- new API stuff for threaded evaluation with im_threadgroup_t 3627- new public interface provide platform independent threads/locks/semaphores 3628- no error box if you zoom out too far now 3629 363026/9/99 3631- lr/tb merge blend was not quite right ... should be smoother now 3632- histplot broken for float images 3633 363424/9/99 3635- better mono->labq converter 3636- more portable ispoweroftwo detect for freq filter stuff 3637 363823/9/99 3639- better graphics expose handling 3640 364117/9/99 3642- >/< stuff in ip was a bit mixed up 3643- ink preview fixed for mono images 3644- help popup fixed 3645 364615/9/99 3647- linedetect and sobel filters for ip, thnx Kirk 3648 364914/9/99 3650- Find_histogram was broken 3651- im_profile() man pages was broken 3652- ooops, ip had old set of macros 3653 365410/9/99 3655- im_and/im_or/im_eor now work for any integer type 3656 3657Summer hols: (2nd half August '99) 3658- initial heap block larger to avoid start gcs 3659- def slicer fixed 3660- larger max heap 3661- toolkits with initial '_' hidden by default 3662- custom recomb 3663- dialog.def removed 3664- ... other menu fixes 3665- generate grid menu 3666- im_remainder() added 3667- new cursor change code, hglass rotates during comp! 3668- dialog.c handles cursor changes better 3669- rubber band in paintbox displays 3670- mag widget stays on right! 3671- undo/redo single pixel paint ops 3672- heap size control from prefs 3673- cancel for reductions as well as for image calc 3674- browse stuff reworked, no more .icon.v files 3675- save stops you overwriting open .v files 3676- better animate_countdown() handling 3677- better resize behaviour for bars added to images 3678- better code generation, bug fixed in state tracking 3679- auto recover from crash 3680