From 6e8ec30852e24f1dc03ee0d0f4c84309d86193e0 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Thu, 3 Jun 2021 13:41:44 +0100 Subject: [PATCH] add text and c++ sections --- text.png | Bin 0 -> 7590 bytes whats-new.md | 97 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 62 insertions(+), 35 deletions(-) create mode 100644 text.png diff --git a/text.png b/text.png new file mode 100644 index 0000000000000000000000000000000000000000..9df3238c6f1ca93d9ed03241164e52b55f5f4ac1 GIT binary patch literal 7590 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" --dpi 300 --rgba +``` + +Makes this: + +![coloured text](text.png) + +You can then use `composite` to render these text RGBA images on to another +image. # JPEG2000 support @@ -93,41 +110,51 @@ $ vips copy k2.jpg x.tif[compression=jp2k,Q=90,tile] $ vips copy k2.jpg x.tif[compression=jp2k,lossless] ``` -# More loaders and savers moved to the new source / target framework - -- add `vips_jpegload_source()` and `vips_svgload_source()` to public C API -- add `vips_source_g_input_stream_new()` to load images from a GInputStream -- add `openslideload_source()`, `vipsload_source()`, `vipssave_target()` -- vipsthumbnail supports stdin / stdout thumbnailing -- add `vips_fitsload_source()`, `vips_niftiload_source()` -- add source load support for pdfium - # C++ API improments -- integrate doxygen in build system to generate C++ API docs -- improve C++ API doc comments -- add VipsInterpolate and guint64 support to C++ API -- add `VImage::new_from_memory_steal` [Zeranoe] +We've spent some time improving the C++ API. -# New and improved image processing operations +We now use [doxygen](https://www.doxygen.nl) to generate C++ API docs +automatically, and we've written a set of API comments. Hopefully the [new +documentation](link-to-cpp-docs) should be a big improvement. -- add "seed" param to perlin, worley and gaussnoise -- add hist path to rank for large windows on uchar images -- `hist_find` outputs a double histogram for large images [erdmann] -- add `black_point_compensation` flag for icc transforms -- better detection of invalid ICC profiles, better fallback paths +There are a couple of functional improvements too. There's support for +`VipsInterpolate`, `guint64` and a new constructor, +`VImage::new_from_memory_steal`, which can save a copy operation. -# Other +# Minor improvements -- better 8/16-bit choice for pngsave -- png and gif load note background colour as metadata [781545872] -- add GIF load with libnsgif -- add "premultiply" flag to tiffsave -- have a lock just for pdfium [DarthSim] -- avoid NaN in mapim [afontenot] -- fix ref leaks in mosaicing package -- run libvips leak test in CI -- get pdfium load building again [Projkt-James] +- The `perlin`, `worley` and `gaussnoise` operators have a new `seed` + parameter to set the seed for their random number generator. + +- The `rank` operator has a new path for large windows on 8-bit images. It can + be up to 20 times faster in some cases. + +- Image histograms on large images now use `double` values. Previously, + we were limited to images with under 2^32 pixels. + +- There's a new `black_point_compensation` for colour operations involving + ICC profiles, and detection of bad profiles and fallback to default + profiles is much better. + +- The loaders and savers for PDFium, OpenSlide, vips, NIfTI, and FITS have + been moved to the new libvips IO framework. + +- `vipsthumbnail` can now load and save to and from stdin and stdout. + +- PNG save selects between 8- and 16-bit output more intelligently, and + supports background colour as metadata. + +- We've switched GIF load to the excellent libnsgif library, and libvips + embeds the library code. + +- `tiffsave` can write premultipled alpha. + +- PDFium support has been revised. It should now build very simply, and ought + to be much faster in threaded applications. + +- We've fixed a range of reference leaks in the mosaicing package, and we + now run the leak checker as part of CI. As usual, the [ChangeLog](https://github.com/libvips/libvips/blob/master/ChangeLog)