forked from libvips/libvips
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
2209 lines (1947 loc) · 80.4 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
20/8/11 started 7.27.0
- version bump for new dev cycle
- im_subtract(), im_avg(), im_min(), im_minpos(), im_copy(), im_embed(),
im_flophor(), im_flipver(), im_insert(), im_insert_noexpand(), im_lrjoin(),
im_tbjoin(), im_extract_area(), im_extract_bands(), im_extract_areabands(),
im_replicate(), im_clip2fmt(), im_gbandjoin(), im_bandjoin(), im_invert(),
im_lintra(), im_lintra_vec(), im_black(), im_rot90, im_rot180(), im_rot270()
im_sintra(), im_costra(), im_tantra(), im_asintra(), im_acostra(),
im_atantra(), im_exptra(), im_exp10tra(), im_logtra(), im_log10tra(),
im_abs(), im_sign(), im_max(), im_maxpos(), im_deviate(), im_divide(),
im_multiply(), im_stats(), im_measure(), im_recomb(), im_floor(), im_ceil(),
im_rint(), im_equal*(), im_notequal*(), im_less*(), im_lesseq*(), im_more*(),
im_moreeq*(), im_remainder*(), im_and*(), im_or*(), im_eor*(), im_shift*(),
im_pow*(), im_exp*(), im_ifthenelse(), im_blend(), im_c2amph(), im_c2rect(),
im_bandmean(), im_c2real(), im_c2imag(), im_ri2c()
redone as classes
- added argument priorites to help control arg ordering
- generate has a 'stop' param to signal successful early termination
- added optional output args, eg. x/y for min
- CLI supports optional output args
- in im_vips2tiff, enable YCbCr compression for jpeg write
- VipsMin stops search early if it can
- C API supports optional output args
- switch back to int-valued operations
- add the operation cache
- fallback vips_init()
- vips_tracked_malloc() tracks allocation size and can report total mem usage
- cache limits, drop, init, flush plus command-line controls
- remove dmalloc support, was never used and valgrind is better
- im_csv2vips() allows quoted strings, including escaped quotes
- added vips_shutdown()
- added --vips-leak flag
- more VipsImage props
- added vips_image_write(), old one becomes vips_image_write_to_file()
- added vips_region_paint_pel()
- added VipsArea as a public struct
- added array members and arguments
- added nary
- remove VipsPool, vips_object_local_array() is much better
- cache.c now drops if you have too many open files
- CLI args to change max files
- new format for handling exif tags
- switch SMALLTILE to 128, 512 was just too big
- oop mode "rd" was not always being used for images
- added ARRAY interpretation for images
- VipsStats tracks minpos/maxpos as well
- moved mask/ to deprecated
- use atexit() to call vips_shutdown()
- set _O_TEMPORARY on delete-on-close temp images if possible
- unlink temps on rewind on *nix, less likely to leave temps on a crash
- added complex conj as a basic operation
- rect/polar/conj work o any format, not just complex
12/10/11 started 7.26.6
- NOCACHE was not being set correctly on OS X causing performance
problems with large files
- update Orientation exif tag on jpeg write
12/10/11 started 7.26.5
- jpeg read/write copies over XMP data
- handle offset correctly in separable convolutions (thanks Nicolas)
- macros for class arg boilerplate
- class arg order set by new 'priority' param
- VipsExtend, VipsDirection enums added
12/9/11 started 7.26.4
- fallback vips_init()
- im_openout() compat stub was wrong, breaking ruby-vips
- vips_class_map_concrete_all() needed a compat macro too
- vips_class_map_all() was broken
10/8/11 started 7.26.3
- don't use G_VALUE_COLLECT_INIT(), many platforms do not have a glib this
recent
- don't leave image->kill set when we detect termination
- test for a working C++ compiler, disable C++ parts of none found
10/8/11 started 7.26.2
- oops, im_benchmark.c had some stuff turned off
- configure option --without-cfitsio was broken (thanks Mike)
26/7/11 started 7.26.1
- doc fixups
- oops, ==0 missing from a strcmp() in vips7compat
- fixed a race in im_XYZ2Lab() table build
- added im_concurrency_get() to operation db
- better benchmarkn.sh runs for the correct number of CPUs automatically, runs
three times for each one, and just reports the fastest
26/7/11 started 7.26.0
- version bunp for 7.26
- various fixes to get win32 and OS X building
6/12/10 started 7.25.0
- attach the jpeg thumbnail and multiscan fields (thanks Mike)
- faster tiff read for some common cases
- faster im_tile_cache()
- if we use C++ in libvips, add -lstdc++ to vips-7.xx.pc
- im_vips2png() / im_png2vips() set / get png resolution (thanks Zhiyu Wu)
- updated README
- don't use tables for bilinear on float data for a small speedup (thanks
Nicolas Robidoux)
- no tables for uchar either, about a 15% speedup (thanks Nicolas)
- dmask write was broken
- lr/tbmerge() cast images to match, like im_insert()
- lr/tbmosaic() work for any mix of image formats / bands
- removed ancient balance stuff from im_lr/tbmosaic()
- gtk-doc for mosaicing
- add im_fits2vips() to the operation database
- im_fits2vips() is lazy and much faster
- im__file_open_write() / _read() has a flag for text_mode, get rid of all the
remaining fopen()s
- move cooc_* and glds_* to deprecated
- move im_dif_std() to almostdeprecated
- move im_simcontr() to almostdeprecated
- add im_sines() to operation db
- move im_spatres() to almostdeprecated
- done gtk-doc for other
- --vips-progress tells you about nthreads, tile size, nlines
- gtk-doc for interpolate
- move im_stretch3() to deprecated
- move im_clamp() to deprecated
- gtk-doc for video ... all operators done! amazing argh
- set MAP_NOCACHE on OS X, otherwise performance dives off a cliff with
files larger than memory
- removed man pages, we are all gtk-doc now
- im_jpeg2vips() ignores weird APP1 chunks
- im_add() for int/uint was broken
- im_ri2c() was broken
- added VIPS_FORMAT_BIGENDIAN format flag
- moved IMAGE and REGION to VipsImage and VipsRegion, classes over VipsObject
- Rect -> VipsRect
- libpng-1.5 supported
- better png read for 1-bit and palette images
- fits write
- better fits metadata support
- renamed all header fields, old names still supported, hopefully
- all of iofuncs moved to vips_ namespace
- lots of old iofuncs API moved to deprecated
- added VipsOperation, an abstract base class for all vips operations
- added VipsAdd, the first operation object
- im_tiff2vips() int/uint mixup for rows_per_strip, thanks Bubba
- removed the links feature, won't work with vips8
- got rid of the tools/ subdirs
- added im_bufjpeg2vips()
- tiff reader can do 1, 2, 4, 8 bit palette images
- tiff palette read can do mono images
- im_bufjpeg2vips() has a "header_only" parameter
- added vips_image_get_data()
- updated German translation (thanks Chris)
- fixed typo in im_conv() overflow estimation which could cause errors
- vips.c has new action syntax, knows about vips8 operations
- add now has sizealike
- vips7 binops all do sizealike too, also gbandjoin and ifthenelse
- new API is now functional
- vips.c generates GOption flags for vips8 operations
- added im_gauss_dmask_sep()
- laplacian generator lost -ve lobes for large sigma
- added im_aconv(), approximate convolution
- bumped smalltile to 512x512 for testing
- added VipsPool, got rid of floating refs again, argh
- VIPS_EXEEXT is now part of the exported API
- im_blend() also does sizealike, oops
- jpeg write was not inverting CMYK, thanks Ole
- im_falsecolour() converts to mono 8-bit for you
- im_icc_import*/export*() cast inputs for you
- im_vips2tiff() uses im__temp_name() for intermediates
- added vips_wrap7 ... wrap up vips7 operations as vips8 classes
- man pages are back for commands
30/11/10 started 7.24.0
- bump for new stable
- added im_dmask2imask(), im_imask2dmask()
- im_rotate_*mask90() can do masks of any size (thanks Adam Turcotte)
18/7/10 started 7.23.0
- im_vips2bufjpeg() writes to a linked list, so it will work for any size
image and header
- added im_vips2bufpng()
- use GetTempPath() to pick a temp dir on Windows
- added "rd" mode to im_open()
- vipsthumbnail and vips use "rd"
- im_divide spots /0
- remove liboil dependency, we will use Orc instead
- various small cleanups (thanks Tim)
- add lcms2 support
- VImage(filename) defaults to "rd" mode
- revise window_offset / window_size, again
- fix a mixup with ANY hints that caused performance problems on the main
benchmark
- rewritten im_circle as im_draw_circle, im_circle moved to almostdeprecated
- added IM_TYPE_RW args for inplace ops --- nip2 uses this to wrap inplace ops
automatically
- special-case 3x3 masks in im_conv() for a 20% speedup
- add IM_TYPE_RW flag for im__rw_image, helps nip2 auto-wrap inplace ops
- im_insertplace() casts and bandalikes
- copy iconv.m4 and friends in bootstrap, thanks Mike
- moved the stupid _copy() versions of the inplace ops to deprecated, since
nip2 can call inplace ops directly now
- added im_draw_rect(), moved im_paintrect() to deprecated
- added im_draw_image(), moved im_insertplace() to deprecated
- added im_draw_line(), now clips, moved im_fastline() to deprecated
- added im_draw_line_user(), now clips, moved im_fastlineuser() to deprecated
- added im_draw_mask(), now wrappable, moved im_plotmask() to deprecated
- added im_draw_point(), moved im_plotpoint() to deprecated
- added im_read_point(), now partial, moved im_readpoint() to deprecated
- added im_draw_smudge(), moved im_smudge() / im_smear() to deprecated
- convolution functions support complex images
- im_blend() can have any format condition image and it's converted to uchar
- security fix for vips-7.23 wrapper script (thanks Jay)
- im_affine() has a larger safety margin
- fix gtk-doc warnings
- small mask load/save improvements
- mask gtk-doc done
- add cfitsio dependancy
- add FITS reader
- land the vector branch and the orc dependancy ... we have SSE
erode/dilate/add/conv
- add IM_SWAP
- dilate/erode do (!=0) on non-uchar images
- add multipass Orc to im_conv(), 3.5x faster for 5x5 mask
- im_profile() works for any image format, any number of bands
- im_rank_image() works for mix of formats, bands
- morph gtk-doc done
- oops, missing braces in debug.h and util.h, thanks Laurence
- update C++/Python binding
- oop, bool constants are always (int) now, so (^-1) works for unsigned types,
thanks Nicolas Robidoux
- much lower memuse for im_cache() in complex pipelines
- im_scale_dmask() normalises to 20, not 100 ... we hit the fast
conv path more often
12/5/10 started 7.22.2
- the conditional image of ifthenelse can be any format, a (!=0) is added if
necessary
- oops vipsthumbnail sharpening was turning off for integer shrinks,
thanks Nicolas Robidoux
- im_vips2jpeg() could fail for very small images (thanks Tim)
- threadpool wasn't stopping on allocate errors (thanks Tim)
- vips_sink_disc() could block if allocate failed (thanks Tim)
12/5/10 started 7.22.1
- fix a problem with tiff pyramid write and >1cpu, thanks Ruven
- constant ops clip to target range
- oops, moreconst and moreeqconst were the same
- better buffer handling in sinkdisc for single-line images
- less chatty errors from "vips"
- oops, don't rename "copy_set" as "copy_", thanks Ole
12/5/10 started 7.22.0
- bump and rename
- vipsthumbnail has a manualpage and sharpens correctly
- more interpolator work
- fixes to --disable-cxx mode (thanks Mike)
- added German translation, thanks Chris Leick
- fixed typos in some messages, thanks Chris Leick
- fix gettext startup
- all "colour" in messages changed to "color", have a proper en_GB
translation file
- vipsthumbnail delete profile failed if there was a profile
- interpolate cli unref was broken
- more accurate, slightly faster bilinear and bicubic (thanks Nicolas Robidoux)
21/3/10 started 7.21.3
- added progress feedback to threadpool
- --vips-wbuffer2 switch does all wbuffer use now
- im_wbuffer2() renamed as vips_discsink(), some cleanups
- im_gammacorrect() can do 16-bit images too
- im_histplot() could fail for signed int histograms
- im_fwfft() and im_invfft() could free their output image too early
- added im_local_imask(), im_local_dmask()
- added im_mpercent_hist()
- im_maplut() casts the index image to one of the uint types
- fixed a couple of /0 problems with scale == 0 masks
- set G_LOG_DOMAIN to VIPS so we can use g_warning etc.
- added VIPS_DEBUG_MSG() macro
- --vips-wbuffer2 turns on threadpool for im_iterate as well
- im_vips2tiff() uses vips_sink() instead of threadgroup
- strip out threadgroup
- add --enable-debug=xxx flag
- im_iterate() -> vips_sink()
- better number-of-bands detection for im_magick2vips()
- added im_get_argv0()
- added PFM read / write
16/1/10 started 7.21.2
- "invalidate" is careful to keep images alive, so invalidate callbacks can do
im_close()
- flood_blob could loop if start point == ink
- added im_meta_remove()
- added remove profile option to vipsthumbnail
- added vips_bandfmt_iscomplex() and friends, im_iscomplex() and friends
deprecated
- im_bandjoin()/im_gbandjoin() work with images of varying formats
- added im_copy_native(), deprecated im_copy_from() and friends
- im_check*() name rationalisation
- finally removed old flood stuff
- im_insert*() bandalike and formatalike
- im_*join() bandalike and formatalike
- im_ri2c() bandalike
- im_vips2png() saves 16-bit PNGs, if necessary
- vipsthumbnail has selectable interpolators, optional sharpen
- moved a lot of stuff (eg. im_iscomplex()) from deprecated to
almostdeprecated to avoid breakage
- im_csv2vips(): allow lines that end with EOF rather than \n
- im_vips2tiff has a bigtiff option
- oops, im_lineset() needs to ask for WIO of mask and ink
- move cache invalidation to REGION, fixes a race
- don't im_invalidate() after paint, it can cause horrible performance
problems ... for example, im_plotmask() used as the action operator for
im_fastlineuser() is terrible
- instead, users of the inplace operations need to call im_invalidate() at the
end of a set of paint actions to trigger an update
- parent/child renamed as upstream/downstream in DAG
- set VIPS_ICC_DIR in configure
- ICC profiles are looked for in VIPS_ICC_DIR as a fallback
- im_render() mask image generation no longer triggers image calc
- threadgroups scale output buffers with number of threads for smalltile ...
improves SMP scaling for narrow images on many-way machines
- default to max number of processors (--vips-concurrency and IM_CONCURRENCY
set >0 can override) on linux and win32
- better nprocs guesser
- im_render() fixes to help the paintbox, some speedups too
- added im_wbuffer2(), a new distributed threading system, and --vips-wbuffer2
to enable it, thank you Christian
15/1/10 started 7.21.1
- added "written" callbacks, used to implement write to non-vips formats
26/11/09 started 7.21.0
- branch for new dev cycle
- argh, missing init from colour.c (thanks Peter)
- argh, im_measure() was not looping over bands correctly (thanks Peter)
- removed mmap_limit, we now always use windows ... reduces VM use hugely,
because mmap windows are freed when their regions are freed, while images
are only unmapped when they are closed
- have a min bytes for mmap windows as well, so we don't make too many tiny
windows
- im_disp2Lab() was broken
- deprecated.h is now defined in terms of current functionality, rather than
repeating stuff
- im_flood() and friends rewritten, typically 4x faster
- removed --with-cimg option, added --disable-cxx
- added im_system_image() (thanks Roland)
- added postclose callbacks
- added vipsthumbnail
- oops, generate C++/Python wrappers for deprecated operations by default
- read TIFF images strip-wise, not scanline-wise
- better TIFF YCbCr reading (thanks Ole)
- isanalyze generates fewer silly error messages
26/11/09 started 7.20.3
- updated en_GB.po translation
- file_length is gint64 to avoid win32 breakage
23/11/09 started 7.20.2
- GETTEXT_PACKAGE now includes lib version number (thanks Jay)
11/11/09 started 7.20.1
- oop, im_clip2fmt() was missing PTOP flag, should get a small speedup
- im_conv() / im_convf() didn't like all-zero masks
- small updates to im_convf() from im_conv()
- im_read_imask() produced an incorrect error message if passed a doublemask
- rename im_convf(), im_convsepf() as _f()
- vips.c drops _f suffix when overloading
- regenerate C++ binding, don't make deprecated package
9/11/09 started 7.20.0
- removed vips-7.x.spec.in, shouldn't really have this in SVN
- bumped version to 7.20
- fixes to get "make dist" working again
3/4/09 started 7.19.0
- version bump
- tiny conv speedup
- catch lcms error messages
- fix includes for gtk+-3.0
- report virtual memory too in im__print_all()
- cosmetic changes to nohalo
- im_magick2vips() needs to invert alpha
- now (more or less) passes -Wextra
- added "fail" option to im_jpeg2vips: fail with an error on any warning
(thank you Ole)
- started gtk-doc changes
- renamed im_meta_get_type() and im_header_get_type() as
im_meta_get_typeof() and im_header_get_typeof() to prevent confusion with
GObject type definers (was breaking gtkdoc object scan)
- revised more names, limited documented API
- im_buildlut() could segv for non-zero based tables (thanks Jack)
- VIPS_BUF_STATIC() does not take length arg
- check for SetImageOption() so we work with GraphicsMagick too
- "header" sets a non-zero exit code if anything failed
- add and use im_check_uncoded() and friends
- matlab load handles column-major and plane-separated images (thanks Mikhail)
- JPEG save allows "none" for profile, meaning don't attach a profile
- saner, simpler, faster typecasting for im_add(), im_subtract(),
im_multiply(), im_divide(), im_remainder()
- im_remainder() has a float result for float types
- im_measure() allows sel == NULL, meaning all patches
- added "deprecated" package
- faster, simpler, better im_max(), im_min, im_avg(), im_deviate()
- im_max() returns true modulus, not square of modulus, for complex images
- im_avg() works for complex, returning average modulus
- im_system() fix (thanks Roland)
- im_system() rewrite
- im_maxpos()/im_minpos() are partial and work for complex
- im_max()/im_min() are now convenience functions
- im_maxpos_avg() handles complex and multi-band images
- added im_point(), rewrite im_point_bilinear() in terms of this
- close callbacks now happen *after* images have closed resources (such as
open files) ... this lets them delete temps and stuff. Expect breakage :(
- added vips_interpolate_get_window_offset()
- boolean revised: smaller, more general, faster
- im_remainderconst_vec() renamed to im_remainder_vec() for consistency
- added im_shift*_vec()
- renamed im_eor_vec() as im_eorimage_vec() for consistency, also and, or
- renamed im_eorconst() as im_eorimage_const() for consistency, also and, or
- relational revised: smaller, more general, faster
- im_blend()/im_ifthenelse() allows many-band conditional, 1-band then/else
- im_blend()/im_ifthenelse() allows band and format to differ between then
and else parts
- better im_check() functions
- added im_flood_other() as start of simple segmentation operator
- added im_label_regions()
- im_printlines(), im_debugim() deprecated (use im_vips2csv() instead)
- meta, header, callback, error, region, check, generate, memory gtkdocs
- removed printlines tool, vips2csv is much better
- removed other useless tools as well: debugim, binfile
- fix up addr calcs on 64-bit machines with >2gb images and inplace ops
(thanks Christoph)
- im_generate() checks that im_demand_hint() has been called for this image
- im_jpeg2vips.c, set scale_num on shrink (thanks Guido)
- heh argh reading history always stopped after the first line (thanks Haida)
- added im_histindexed
- new im_iterate() calls start and stop functions from workers so resources
they make are owned by the worker thread ... this makes it possible to have
start functions which create mutiple regions and therefore allows
im_iterate() to scan more than one image at once
- threadgroup no longer has any default action, you must attach a work
function
- added im_copy_file()
- added im_insertset()
- im_insertplace() allows small to be outside big
- added im__colour_difference(), colour ops now work on any image format
- added im_col_display_get_table(), so display tables are now shared by name
- added im__colour_unary()
- drop "set" postfix from names, so "insert" can now take a vector of positions
- deprecate all the "_raw" variants, not really necessary now
- removed "contrib", not very useful anymore
- added im_header_as_string()
- im_malloc()/im_free() now call g_try_malloc()/g_free() ... removes confusion
over whether to use im_free() or g_free() for things like im_header_string()
- added im_history_get(), im_getexp(), im_printdesc() as wrapped functions ...
so you no longer need the "header" program
- image vectors from Python work, woo
25/3/09 started 7.18.0
- revised version numbers
- updated vipsmanual
- revised manpages
- removed name and "changed" from vipsobject since we don't use them yet
- explicitly link with stdc++ for nohalo etc. stuff
- wrap im_gauss_imask_sep in C++/Python
6/3/09 started 7.17.3
- revised nohalo
- remove fading stuff from im_render() -- cleaner and simpler
- configure spots support for "restrict"
- reset dcm:display-range on magick read to help DICOM
- saner im_buildlut() behaviour
- added im_gauss_imask_sep()
- allow open and view of truncated images (thanks Joe & Rachel)
- revising rounding on im_affine*() coordinate transforms to make them more
stable
- added Radiance write
- added im_float2rad()
- added IM_CODING_RAD, support where it makes sense (extract, flip, rotate,
etc.)
- IM_PROGRESS env var
- docs for rad2float and IM_CODING_RAD
3/3/09 started 7.17.2
- im_magick2vips.c: allow funky bit depths, like 14 (thanks Mikkel)
- isradiance was returning TRUE too often
- radiance loader now loads packed RGBE/XYZE instead of unpacking to float
- added im_rad2float()
11/10/08 started 7.17.0
- merge vips-7.16 brach back into trunk
- bumped version number to 7.17.0
- re-added type.[hc]
- added vipsinterpolate and im_affinei
- added yafrsmooth interpolation
- added yafrtest
- added yafrnohalo
- ubuntu 8.10 changes
- interpolators get an output pointer, not region
- tuning for bicubic
- revised transform / clip code, we now do corner not centre
- yafr-smooth reworked along the lines of bicubic
- cleanups after yafr hacking
- added affinei_all
- don't set im_error() on failed callback
- moved im_format_t to VipsFormat, now sits over VipsObject
- IM_FORMAT_FLAG_PARTIAL -> VIPS_FORMAT_PARTIAL
- updated docs
- interpolators use type introspection
- added vips --list classes, does formats too
- include sys/param.h to get PATH_MAX in more places
- added vips_format_get_flags()
- oop, forgot to check for cancel during tiled tiff write
- don't use mmap for tiff read: no performance advantage, chews up VM
- VIPS_INTERPOLATE_SHIFT bumped to 12, we need the extra precision for u16 gel
data
- added string->double transform for cmdline args
- merged class-params branch back into trunk
- IM_FREE() can do "const char*" variables
- im_buf_t renamed as VipsBuf
- added vips_object_to_string()
- added "nickname" and "description" properties to VipsObject
- shift/and/or/eor ops were broken for non-int types
- added nohalo interpolator
- updated format docs
- IM_INPUT_INTERPOLATE() now used by affinei and affinei_all
- added vips_object_new
- resamplers/interpolators now in a resample package
- removed yafrnohalo.c
- added matio as a dependency
- added Matlab save file read
- added Radiance file read
- better file-not-found messages
11/9/08 started 7.16.3
- oop typo in manpage for im_project()
- doc fixes
- returning non-zero from eval callbacks was not always stopping computation
11/9/08 started 7.16.2
- added --without-v4l option
- added -no-undefined to libsrcCC build, so we get a libvipsCC.dll
- removed the swig dependency: we include the generated bindings in the
distribution tarball
6/9/08 started 7.16.1
- trigger eval callbacks on tiled tiff write
- added vips as an im_format_t
- added im_format_write()/_read() convenience functions
- more cleanups for the format API, argh
- removed win32/ directory now mingw finally makes DLLs correctly
- removed the windowed spcor for now, it has some edge effects
24/8/08 branch for 7.16
- renames and version numbers
- load plgs from libdir as well as libdir/vips-x.x for compat
- complex -> complex conversion was broken
- refstring <-> gstring transforms
- better behaviour with Magick non-presence
- added --enable-links switch to configure ... we no longer make the bin/im_*
links by default
- started a 'format' section in the docs
- configure fails if no gettext found
- revised po/
- released as 7.16.0!
25/5/08 fork for loadable image format branch
- image load/save in non-vips format code moved to own dir
- simple format searching added
- some cleanups for vips load
- im_open() simplified
- add im_format_flags
- only consider formats with a save method in im_format_for_name()
- oops, format sort order was reversed
- im_filename_suffix() includes "." in suffix
- merge back into trunk for 7.15.1
- remove im_ispng(), im_png2vips_header() etc. & friends
- add "vips --list formats"
- rename VBuf as im_buf_t for consistency
- add type.[hc], start of new type system
- removed man pages for IM_MIN, MAX and RINT to avoid case confusion on
OS X / win
7/3/08 started 7.15.0
- MAGIC constants should be tagged as unsigned
- write MAGIC correctly on sparc/powerpc machines (thanks Joe)
- oop, we were still making fade threads even when not fading
- tiny cond jump fixes for valgrind in colour.c
- remove -lstdc++ from libs, except on windows
- push Magick cflags earlier in the include order to make it easier to pick
GraphicsMagick over ImageMagick (thanks Mikhail)
- fix the en_GB translation
- use meta to preserve resunit between tiff load and save
- small doc improvements
- read and write CMYKA tiff (thanks Doron)
- performance improvements for morphology ops, esp. when zooming out
- oop, im_render() was broken for mask == NULL
- better support for multiple Python installs (thanks Jay)
- better IM_SETSTR() stops some warnings
- im_histcum() works for signed histograms
- better rounding for im_conv(), im_convsep()
- tiny speedup for im_conv()
- better /0 test for remainderconst
- revise i18n configure, get rid of intltool
- command-line IMAGVEC input could segv with non-vips image output
- added .tobuffer()/.frombuffer(), .tostring()/.fromstring() to Python binding
- add PIL_mode_from_vips () and vips_from_PIL_mode () utility functions
- update docs for new Python stuff
- FIND_ macros no longer search for stuff, you have to specify prefixes if the
packages are not on the default path (or in $prefix). This avoids some
accidents on some platforms
- configure prints a summary of optional packages found at the end
- im_lhisteq() checks for window too small
- added invalidate callbacks
- now tests for MagickWand before ImageMagick (thanks Adam Turcotte)
- added "-rotate" option to vips2dj
- added man page for im_resize_linear
- better jpeg-in-tiff YCbCr read (thanks Ole)
- oops, invalidatefns were not being freed on im__close()
- VMask() can init from std::vector, so Python can init from []
- added IM_LIBDIR, im_guess_libdir()
- load plugins from libdir/vips-x.x on startup
- added meta get/set int/double/string/area/blob/GValue to C++ API
- include time_t in vips.h, thanks Nicolas Robidoux
- lock global image list (thanks lee)
25/1/08 started 7.14.0
- bump all version numbers for new stable
- better CMYK JPEG read (thanks Ole)
- add __str__ to VError in Python (thanks Ole)
- revert the dynamic wrapping for Python :-( next version!
- added VImage::convert2disc (thanks Ole)
- you can now set the jpeg quality factor for tiff pyramids (thanks Joe)
- you can now shrink jpegs during read, see "man im_jpeg2vips"
- added CMYK JPEG write
- optionally use GraphicsMagick (thanks Bob Friesenhahn)
- look for MAGICKCORE_HDRI_SUPPORT (thanks Marcel)
- set icc profiles in tiff pyramids explicitly (thanks Joe)
- add --without-cimg configure option
- add im_maxpos_subpel
- make im_abs compile without liboil
- add im_align_bands
- fix type overflow in complex division
- fix im_cross_phase and im_addgnoise (Tom)
- updated docs, C++ and python
- header no longer stops on error
- C++ dummy2.cpp helps OS X linking
12/12/07 started 7.13.3
- added "include <cstring>" to VImage.cc to help gcc 4.3
- started moving the python binding to dynamic wrapping
- added im_wrap(), im_wraptwo(), im_phasecor_fft(), im_cross_phase() (Tom)
- memleak plugged in im_save_string_setf()
- bugfix in and docs for im_gradcor() (Tom)
- use Glib macros to make im_msb work on big-endian platforms (Tom)
- use Glib macros to get rid of needless compile warnings (Tom)
- fix type overflow in im_c2ps/im_abs (Tom)
31/10/07 started 7.13.2
- build cimg on windows fixes
- various include cleanups, updated man pages
- break im_wbuffer() out to a separate API
- use im_wbuffer() to make im_vips2jpeg() compress in the background
- also im_vips2png(), im_vips2tiff(), im_vips2ppm()
- revised evaluation progress system
- new evalstart/evalend/preclose callbacks fix over/underflow reporting
- but the meaning of evalend has changed in a non-backwards-compatible way :(
use preclose instead ito get the old behaviour
- added "--vips-progress" flag to turn on a simple eval progress tracker
- make im_spcor[12] static, im_spcor is wrapper (Tom)
28/9/07 started 7.13.1
- vips2dj can print RGB images
- oop, include <stdexcept> missing
- add protos for generate/iterate function args, fix warnings
- add cimg package, we now have C++ source inside VIPS, sigh
- added OUTPUT_DOUBLEVEC and OUTPUT_INTVEC, use for im_maxpos_vec() and friends
29/8/07 started 7.13.0
- we now have a trunk and the version is 7.13.x, woo!
- move manpages into a separate man/ dir ... speeds up builds a lot on windows
- don't install malkovich
- don't fail on unknown args for python (thanks Simon)
1/8/07 started 7.12.5
- im_embed() is more general ... x and y can be negative
- predicate.c is smaller and cleaner
- libsrcCC link improvement from Pablo
- support 32/64-bit ImageMagick as well (thanks Marcel)
- better im_magick2vips() for Q8 ImageMagick
- split repository to trunk/branches ready for a stable 7.12.x branch
27/7/07 started 7.12.4
- proto.h had vars called small, breaking on win32
- more python fixing, we now have working matricies too
17/7/07 started 7.12.3
- fix to VImage.i for gcc 4.2 (thanks Damir)
- eek, off by 1 for more than 1 band hists
- needed a slightly larger worst-case buffer in im__b64_encode()
- tiny cleanup for make_hI() prevents cond jump on ui in valgrind
- --disable-threads was broken again
- remove .svn dirs from dist
- now passes distcheck again
17/7/07 started 7.12.2
- added im_bandmean()
- added support for TIFFTAG_PREDICTOR (Andrey Kiselev)
- fix TIFFOpen() mode snafu (Andrey Kiselev)
11/5/07 started 7.12.1
- memory.c abort()s with DEBUG
- oops, im_bits_of_fmt() manpage was not being installed
- im_histcum() can do all image types
- updated NEWS
- added im_csv2vips_header()
- command-line csv read was broken (thanks Tom)
- removed length limit on argument vectors (Tom)
- added IM_PREFIX, configure-time install prefix
- oop, turned off memory.c DEBUG
- fix some bogus gcc 4.1 warnings with im_open_local_array()
- better vips usage message
- oops, IM_ANY missing from im_demand_hint() manpage (thanks Shahid)
- just warn if plugins fail to load in im_init_world()
- expose Vargv and make refblock public rather than private so that
subclasses of VImage can add vips-style member operations (thanks Pablo)
- oops, im_initdesc() needed to have bbits set correctly (thanks Shahid)
- make VError derive from std::exception more officially
- woo, got exceptions working in SWIG
- soname version bumped to 12.x.x
- oops, added vector ops to Python
- check for overflow of int in return of strtol in dispatch system (Tom)
- add im_[di]mask_[xy]size to dispatch system (Tom)
- add im_gradcor(), im_grad_[xy] (Tom)
26/3/07 started 7.11.21
- ooo, added %include "std_except.i" & friends to VError.i, VImage.i
- im_init_world() is more lenient about recursive invocation
- im_gbandjoin() falls back to im_copy() for 1 input image
- race condition fixed in im_render.c (thanks Simon)
- bump for 7.12!!!
26/1/07 started 7.11.20
- another fix to im_region_image() (thanks Mikkel)
- tiny speed up to im_rect_includesrect()
- avoid recursive invocation in im_init_world() (thanks Christian)
- fix to extract_prefix (thanks Christian)
- buffer cache is now per thread
- combine buffer unref and ref in a single operation to reduce malloc/free
cycles
- new internal API for passing regions between threads means we can remove
buffer locks
- more buffer/region sanity checks, plus a memory barrier
- lock around error buffer changes
- im_vips2mask() was wrong for nx1 m-band images
- liboil back to "test"
- add buffer_cache_list to avoid GHashTable _insert()s
- oop, --vips-concurrency was broken
- renamed (in dispatch layer) im_and/or/eor_const -> im_and/or/eorimageconst
for consistency
- C++ API wraps IMAGEVEC, DOUBLEVEC, INTVEC arguments
- oop, IMAGE % vector<double> was broken
21/12/06 started 7.11.19
- added im_linreg() (Tom)
- various C++ API polishes, plus a bugfix (Dennis Lubert)
- vips.spec split to devel and python too (Dennis Lubert)
- be more explicit about sizeof(magic)
- init magic to native order by default (thanks Dennis)
- Hist becomes im_history_get()
- new history mechanism is faster, uses much less memory, and removes
duplicate lines
- added im_get_option_group()
- added official im_concurrency_set()/_get()()
- don't read bbits from vips files ... set ourselves from bandfmt
- oops add RGB16 and GREY16 to C++ header
- --list packages option to vips.c
- updated docs to 7.12
- oops, im_region_image() snafu was causing a lot of recomputation
- make im_mpercent() suck a little less
- EXIF save was a bit bOrked ... cause of mac crashes?
- im_histgr(), im_heq(), im_hist() all number bands from zero now
- fix stride in liboil calls
- set RGB16 on 16-bit RGB ICC export
29/11/06 started 7.11.18
- added im_buffer_t so regions can share calculated pixels: 2-3x speedup on
the benchmark
- im_region_local() -> im_region_buffer()
- im_sharpen() order change to help sharing
- im_invalidate() clears buffer caches
- add sentinel attributes
- add some missing im_demand_hint()s
- paint ops invalidate the output image
- fix nothread eval
- raise threads limit to 1024 (thanks Christian)
- manual redone
- vipsCC python init() hooks
- add liboil dependency
- use liboil for im_abs(), im_add(), im_divide(), im_floor(), im_multiply(),
im_subtract(), im_lintra(), im_avg(),im_deviate()
- quiet libtoolize test (thanks Tom)
- im_benchmarkn now regrows image each time
- strip meta from sample2.v ... saves a lot of mem (esp. Hist)
- added im_isscalar() (Tom)
- added IM_REGION_ADDR_TOPLEFT() (Tom)
- reduce size of im_rightshift_size.c to help compile (Tom)
- make im_stop_many(NULL) safe (Tom)
24/11/06 started 7.11.17
1;5Q
- better benchmark script makes graphing easier
- double-buffer image file writes
- reuse write threads
- clean up threadgroup / iterate / generate
- added im_benchmarkn to make it easier to make a CPU-bound op on large
machines
- im_cache() failed for cpus > 1
1/11/06 started 7.11.16
- moved im__convert_saveable() into im_copy() (thanks Christian)
- missing gobject dependency (thanks Christian)
- --enable-threads was broken (thanks Christian)
- eval without theads was broken (thanks Christian)
- LIBADD libvips.la to libvipsCC.la (thanks Simon)
- benchmark.sh is now plain sh, not bash
- set ORIENTATION_TOPLEFT in im_vips2tiff (thanks Josef)
- oops, im_vips2csv() output separator was broken
- added im_benchmark2
- move XYZ2Lab LUT build outside the eval thread
30/10/06 started 7.11.15
- print leaked windows
- oops, race condition in im_window_unref()
- integrated im_region_window() into im_region_image(), tiny speed up
6/10/06 started 7.11.14
- ifthenelse and affine dhints revised
- buildlut no longer outputs x cods
- configure asks for glib >= 2.6 (we need GOption)
- configure uses AC_TOOL_CHECK to find tool names to help cross-compiling.
- better configure test for libexif
- add </libexif/ prefix if required
- test for glibtoolize during bootstrap to help OS X
- add --version to vips main prog
- don't set Type in im_scale, want to be able to scale hists, for example
- im_vips2mask() allows multiband hists as well
- im_vips2csv() lets you specify an output separator
- vips.c cleanups in arg handling
- removed python binding to C layer, too hard to get it working right
- leak test python test program
- added throw() decls to C++ to help SWIG
- no longer derive VError from std::exception, can't get it to work with SWIG
- added mmap window manager to share windows between regions ... big reduction
in VM use for large workspaces and for SMP
- add im_spcor2 (with sliding window) (Tom)
15/9/06 started 7.11.12
- python vips wrapper hooks into init to start vips
- oop, python detect was broken again
- im_file_length() error return was wrong (thanks Christian)
- im_csv2vips() isnored last column if there was no trailing
whitespace/quoting
- test for NULL filename/mode, common if you forget to check argc
(thanks Bruno)
- im_break_token() returns NULL on trailing whitespace ... helps read_dmask
work with trailing whitespace on matrix headers
- added im_buildlut(3)
- removed extra im_free() in im_copy() fallback in im_msb()
- added GValue input/output args
- various C++ binding improvements (thanks Dennis): namespace support,
VError inherits from std::exception, small fixups
- remove im_msb() warning on fallback to copy for uchar ... not very serious,
happens a lot in nip2
- added <vips/vips> C++ include ... include in a namespace
- added im_benchmark / SMP benchmark script
- add im_maxpos_avg() and im_point_bilinear() (Tom)
- make im_region_free(NULL) safe (Tom)
- link in manpages for im_contrast_surface (Tom)
8/9/06 started 7.11.11
- add im_norm_dmask()
- removed old code for gradient and lindetect
- internal decls split from proto.h to help SWIG
- test for python and SWIG during configure
- added python dir for the binding
- python binding done!
- oops, --without-python was broken (thanks Tom)
- added python/test
- add im_lu_decomp() im_lu_solve(), rewrite NR type functions in terms of these (Tom)
23/6/06 started 7.11.10
- still more im_affine() rounding/clipping tweaks
- ignore "--" arguments to vips.c
- im_init_world() also sets g_*_prgname() and loads plugins
- add manpage for im_init_world() (oops)
- error_exit() prints prgname
- various cygwin fixes
- fix cache thread assert failure (thanks Joe)
- "header" now uses GOption, slightly different args, will loop over args
- fixed assert() overenthusiasm in im_prepare()
- im_csv2vips() now has separate whitespace / separator tables
- add im_rightshift_size() (Tom)
- add im_maxpos_vec(), im_minpos_vec() (Tom)
- add im_norm_dmask() (Tom)
- make im_free_[di]mask(NULL) safe (Tom)
23/6/06 started 7.11.9
- back on sourceforge CVS again
- require openexr 1.2.2 or greater
- range check xy on im_insert*() for sanity
- VMask::invertlut decl removed (thanks Jean)
- added \"all\" option to vips.c
17/5/06 started 7.11.8
- debrokened openexr read
- added im_tile_cache()
- added tiled read to im_exr2vips()
- im_tiff2vips() now uses im_tile_cache() rather than its own cache ...
faster in some cases, less RAM use in some cases, saves 200+ lines
- removed 'broken' read option from im_tiff2vips()
- read/write doubles with g_ascii_strtod() and friends where appropriate
- add a "thread" member to region to help sanity check region ownership
- saner threadgroup fixes a race problem on gcc 4.0.3 / amd64
- added im_vips2csv()
- im_open() now does CSV read/write too
- oops, broke vips main prog for function name in argv1 case
22/4/06 started 7.11.7
- split vips_png.c to im_vips2png.c and im_png2vips.c
- added OpenEXR dependency
- added im_exr2vips(), im_exr2vips_header()
- added im_isexr(), im_open() knows about OpenEXR
- added im_contrast_surface(), im_contrast_surface_raw() (Tom)
- added im_msb(), im_msb_band() (Tom)
- im_scale() sets Type on output
- added RGB16, GREY16 types
- im_*2vips() set these types if appropriate
- configure fixes for mac
- vips main prog uses GOption
- im_icc_* locks around calls to cmsDoTransform() to avoid corruption on SMP
machines
- add im_prepare_many() (Tom)
10/3/06 started 7.11.6
- typo in manpage and header for im_rect_dup() (Tom)
- don't abort image load if XML read fails
- added im_video_test() ... test video source
- oops, lcms .pc finder was not working
- clipping problem in im_affine() fixed (thanks Clare)
- test for attr support in libmagick
- im_text() returns an error for empty string
- im_falsecolour() scale reversed
- im_remosaic() could crash on bad mosaics
- configure changes to fix --without-magick, lcms and fftw (but sadly we now
require .pc files for these libs)
- im_vips2jpeg() automatically converts to 1 or 3 band sRGB uchar for write
- also im_vips2png()
- added im_project()
20/2/06 started 7.11.5
- added im_csv2vips()
- commas in filename options can be escaped with a '\'
- raise tile buffer limit (thanks Ruven)
- im_spcor() and im_fastcor() have prettier borders
- im_fastcor() returns sum of squares of differences, not sum of abs of
differences
18/11/05 started 7.11.4
- small win32 fixes, thanks Juan
- added im_flood_blob_copy() ... a temporary hack
- much faster im_histplot()
- read RGBA palette-ized PNG images more robustly (thanks Tom)
- turn on -ms-bitfields automatically for mingw
26/9/05 started 7.11.3
- better error recovery for im_binfile() file too large
- all raw files now use mmap windows, so (eg.) ppm and analyze reads can go
>2GB
- remove DISABLE_COMPAT ... you now have to define IM_ENABLE_DEPRECATED to get
broken #defines
- fix to build without exif, thanks Chas
- use native win32 API for seek()/truncate() to work with large files
- use attribute to check printf-style args with gcc
- fix gcc4 warnings
- removed ebuild, since it's in gentoo now
- im_magick2vips() sets meta from attributes (good for dicom)
- im_magick2vips() writes many-frame images as tall thin VIPS images
- im_histcum() was broken for vertical histograms
- im_histnorm() is neater
- simpler and faster inner loop for im_conv() and im_convf() avoids gcc4 bug
- appendc() was reading past the end of the buffer on MSB machines
13/6/05 started 7.11.2
- im_copy_set() was messed up in 7.11.1
- put into CVS, phew
- fixed a rounding bug in im_affine() ... should no longer get black edges on
image resize
- if TIFF open fails in im_open(), try going through libmagick
- merge requires all bands == 0 for transparency (used to just check 1st
band)
- 16 bit LAB TIFF read/write was wrong