Commit Graph

60 Commits

Author SHA1 Message Date
Kleis Auke Wolthuizen 20a4d6029d
Allow libjxl 0.6 (#3223)
This partially reverts commit 0029b3c4.
2022-12-08 13:22:36 +00:00
Kleis Auke Wolthuizen 4611651d90
nsgifload: avoid minimise after mapping (#3189)
* nsgifload: avoid minimise after mapping

Not reliable on Windows.

* nsgifload: prefer use of `VIPS_FREEF` macro

* Improve `test_descriptors.c`

* Only build `test_descriptors` when targeting Linux
2022-11-27 15:43:35 +00:00
John Cupitt ab2e0bf38c Merge branch '8.13' 2022-10-11 08:49:03 +01:00
John Cupitt 7547476f44 version bump 2022-10-11 08:45:16 +01:00
John Cupitt bc0c910091 note dangerous bit of meson.build 2022-09-11 13:41:36 +01:00
John Cupitt 81dc91927d fix ci build
adding the examples/ if/endif broke the sed that's used to remove extra
subdirs in ci
2022-09-11 11:36:33 +01:00
John Cupitt d836166087 add some more examples 2022-09-09 10:14:59 +01:00
John Cupitt 873c90710a add examples/ dir
plus one example
2022-09-08 16:25:33 +01:00
John Cupitt 2912787f9d version bump for 8.13.2 2022-09-05 10:01:37 +01:00
Daniel Löbl 0b70145d99
cgifsave: add support for interlaced GIF write (#2984)
* cgifsave: add support for interlaced GIF write

note: cgif >= v0.3.0 is required

* switch to warning instead of error

* add test

* fix test
2022-08-15 12:14:02 +01:00
John Cupitt 0029b3c416 require libjxl 0.7+ 2022-08-14 17:32:40 +01:00
John Cupitt 332d3a9093 Merge branch '8.13' 2022-08-14 17:28:26 +01:00
Kleis Auke Wolthuizen f36196db1b
jxlsave: avoid using deprecated functions (#2989)
* jxlsave: avoid using deprecated functions

The upcoming libjxl 0.7 has deprecated a number of functions.

* Prefer to use `ifdef` instead
2022-08-14 15:54:21 +01:00
Kleis Auke Wolthuizen a6fa62605c
Cherry-pick a couple of Meson improvements to 8.13 (#2968)
* add a summary table at the end of configure

Copied from the old autotools summary. Sample clipped from "meson setup":

```
Program python3 found: YES (/usr/bin/python3)
Configuring variables.sh using configuration
Message:

*Build options
  enable debug ......................: true
  enable deprecated .................: true
  enable modules ....................: true
  enable gtk-doc ....................: true
  enable doxygen ....................: false
  enable introspection ..............: true
  enable RAD load/save ..............: true
  enable Analyze7 load/save .........: true
  enable PPM load/save ..............: true
  enable GIF load ...................: true

*Optional external packages
  use fftw for FFTs .................: true
  accelerate loops with ORC .........: true
  ICC profile support with lcms .....: true
  zlib ..............................: true
  text rendering with pangocairo ....: true
  font file support with fontcongfig : true
  EXIF metadata support with libexif : true

*External image format libraries
  JPEG load/save with libjpeg .......: true
  JXL load/save with libjxl .........: false
  JPEG2000 load/save with openjpeg ..: true
  PNG load/save with libspng ........: false
  PNG load/save with libpng .........: true
  selected quantisation package .....: imagequant
  TIFF load/save with libtiff .......: true
  image pyramid save with libgsf ....: true
  HEIC/AVIF load/save with libheif ..: true
  WebP load/save with libwebp .......: true
  PDF load with PDFium ..............: false
  PDF load with poppler-glib ........: true
  SVG load with librsvg .............: true
  EXR load/save with openexr ........: true
  OpenSlide load ....................: true
  Matlab load with libmatio .........: true
  NIfTI load/save with niftiio ......: true
  FITS load/save with cfitsio .......: true
  GIF save with cgif ................: true
  selected Magick package ...........: MagickCore
  Magick load/save ..................: true

Build targets in project: 53
...
```

* Meson: improve summary table (#2943)

* Meson: improve summary table

* Fix typo

* Remove redundant whitespace

* Fix libpng fall-back when build with `-Dspng=disabled` (#2955)

* Meson: simplify dynamic module handling (#2956)

* Deduplicate `--vips-config` with the build summary (#2957)

* Deduplicate `--vips-config` with the build summary

* Ensure output is identical

Helps parses.

* Fix summary when build with `-Dnifti=disabled` (#2963)

* Update ChangeLog

Co-authored-by: John Cupitt <jcupitt@gmail.com>
2022-07-31 10:09:00 +01:00
Kleis Auke Wolthuizen df80ded468
Fix summary when build with `-Dnifti=disabled` (#2963) 2022-07-30 19:23:51 +01:00
Kleis Auke Wolthuizen 3f95543c2c
Allow to modify/create EXIF GPS* tags (#2966)
* Allow to modify/create EXIF GPS* tags

Make `tag_is_ascii` aware of the EXIF GPS* ASCII tags that are
available since libexif 0.6.23.

See: https://github.com/lovell/sharp/issues/2767

* Add tests
2022-07-30 19:21:54 +01:00
John Cupitt 8c71424e9a version bump
and changelog update
2022-07-30 12:37:30 +01:00
Kleis Auke Wolthuizen cf97ea3ea1
Deduplicate `--vips-config` with the build summary (#2957)
* Deduplicate `--vips-config` with the build summary

* Ensure output is identical

Helps parses.
2022-07-29 11:09:51 +01:00
Kleis Auke Wolthuizen a24b556b26
Meson: simplify dynamic module handling (#2956) 2022-07-28 15:10:13 +01:00
Kleis Auke Wolthuizen 45bcd74a7a
Fix libpng fall-back when build with `-Dspng=disabled` (#2955) 2022-07-28 14:37:12 +01:00
John Cupitt d3021c2775 Merge branch '8.13' 2022-07-27 09:09:12 +01:00
Kleis Auke Wolthuizen a68eb00fbe
Meson: bump version to 8.13.1 (#2948)
Also, increment revision in the Autotools build.
2022-07-27 09:08:07 +01:00
John Cupitt 87fbafaebe Merge branch '8.13' 2022-07-26 12:21:45 +01:00
Kleis Auke Wolthuizen 8b4ef8bdfc
Fix detection of `ImportImagePixels` and `ImagesToBlob` for IM7 (#2944)
ImageMagick 7.x uses the `<MagickCore/MagickCore.h>` include
directive instead of `<magick/api.h>`.
2022-07-24 18:04:46 +01:00
Kleis Auke Wolthuizen 7010903538
Meson: improve summary table (#2943)
* Meson: improve summary table

* Fix typo

* Remove redundant whitespace
2022-07-24 11:06:40 +01:00
John Cupitt c439d5e5d9 add a summary table at the end of configure
Copied from the old autotools summary. Sample clipped from "meson setup":

```
Program python3 found: YES (/usr/bin/python3)
Configuring variables.sh using configuration
Message:

*Build options
  enable debug ......................: true
  enable deprecated .................: true
  enable modules ....................: true
  enable gtk-doc ....................: true
  enable doxygen ....................: false
  enable introspection ..............: true
  enable RAD load/save ..............: true
  enable Analyze7 load/save .........: true
  enable PPM load/save ..............: true
  enable GIF load ...................: true

*Optional external packages
  use fftw for FFTs .................: true
  accelerate loops with ORC .........: true
  ICC profile support with lcms .....: true
  zlib ..............................: true
  text rendering with pangocairo ....: true
  font file support with fontcongfig : true
  EXIF metadata support with libexif : true

*External image format libraries
  JPEG load/save with libjpeg .......: true
  JXL load/save with libjxl .........: false
  JPEG2000 load/save with openjpeg ..: true
  PNG load/save with libspng ........: false
  PNG load/save with libpng .........: true
  selected quantisation package .....: imagequant
  TIFF load/save with libtiff .......: true
  image pyramid save with libgsf ....: true
  HEIC/AVIF load/save with libheif ..: true
  WebP load/save with libwebp .......: true
  PDF load with PDFium ..............: false
  PDF load with poppler-glib ........: true
  SVG load with librsvg .............: true
  EXR load/save with openexr ........: true
  OpenSlide load ....................: true
  Matlab load with libmatio .........: true
  NIfTI load/save with niftiio ......: true
  FITS load/save with cfitsio .......: true
  GIF save with cgif ................: true
  selected Magick package ...........: MagickCore
  Magick load/save ..................: true

Build targets in project: 53
...
```
2022-07-23 12:51:09 +01:00
Kleis Auke Wolthuizen fa6c034b32
Link the main library with `-Wl,-z,nodelete` to prevent unloading (#2934)
See: https://github.com/libvips/php-vips-ext/pull/44
2022-07-20 10:20:09 +01:00
Kleis Auke Wolthuizen a69e61a6d0
Meson: remove redundant `--no-undefined` link argument (#2918)
This is already controlled by the `b_lundef` built-in option, which defaults to `true`.
2022-07-12 12:34:22 +01:00
Kleis Auke Wolthuizen 3bd0701604
Meson: improve dependency handling for nifticlib (#2882)
This allows users to build against nifticlib 2.0.0 with e.g.:
`-Dnifti-prefix-dir=/usr`
2022-06-20 15:47:57 +01:00
John Cupitt dfeb270fe0 don't enable fatal-warnings in debug builds
too annoying to have it on all the time
2022-06-19 13:00:04 +01:00
Kleis Auke Wolthuizen 7553f60aed
Minor cleanups (#2857)
- Remove `HAVE_LCMS` definition in favor of `HAVE_LCMS2`.
- Remove `HAVE_WINDOWS_H` definition in favor of `G_OS_WIN32`.
- Remove stray `vips_text_get_type` in `conversion.c`.
- Remove duplicated `unistd.h` include.
- Remove redundant `strcasecmp` definition, we use `g_ascii_strcasecmp` everywhere.
- Remove unnecessary header checks in `configure.ac` and `meson.build`.
- Ensure `unistd.h` include is guarded with `HAVE_UNISTD_H`.
- Fail early when `-Dfontconfig=enabled` and `pangoft2` is not found.
2022-06-12 12:22:36 +01:00
John Cupitt b74504b985 Merge branch 'master' of github.com:libvips/libvips 2022-06-12 11:08:47 +01:00
John Cupitt 687209e1cb add some notes on getting nifti working 2022-06-12 10:41:02 +01:00
Kleis Auke Wolthuizen 296c263099
Meson: maintain autotools compatibility on macOS (#2856)
By setting the correct compatibility/current version.
2022-06-11 22:54:43 +01:00
Kleis Auke Wolthuizen 45a99238e2
text: use MT-safe `pango_cairo_font_map_get_default` (#2848)
* text: use MT-safe `pango_cairo_font_map_get_default`

* Increase minimum Pango version to v1.32.6 (released Jan 2013)
2022-06-08 16:06:45 +01:00
Kleis Auke Wolthuizen 5106e9b49e
text: ensure fontconfig cache of Pango is invalidated (#2847)
See: https://gitlab.gnome.org/GNOME/pango/-/issues/551
2022-06-08 15:20:19 +01:00
Kleis Auke Wolthuizen 85c24481be
svgload: recognize dimensions for SVGs without width/height (#2817)
Rather than defaulting to 1928x1080. Also, prefer to use the
`LIBRSVG_CHECK_VERSION` macro instead of our configure checks.
2022-05-23 10:39:53 +01:00
John Cupitt 5f82491d74 small configure improvements
- disable deprecated warnings for /deprecated
- detect librsvg rsvg_handle_get_intrinsic_size_in_pixels()
- tiny comment typo in meson.build
2022-05-16 14:45:53 +01:00
Kleis Auke Wolthuizen 9cbc361269
Allow to modify/create EXIF OffsetTime* tags (#2796)
Available since libexif 0.6.23.
2022-05-10 13:26:09 +01:00
Kleis Auke Wolthuizen d91cfa4e53
Allow to modify/create EXIF 2.3 ASCII tags (#2795)
* Allow to modify/create EXIF 2.3 ASCII tags

Make `tag_is_ascii` aware of the EXIF 2.3 ASCII tags that are
available since libexif 0.6.22.

See: https://github.com/kleisauke/net-vips/issues/167

* Fix CI
2022-05-10 08:13:22 +01:00
John Cupitt 20fd8ac0fc support rsvg_handle_get_intrinsic_size_in_pixels
librsvg 2.52+ has this new bit of API for finding the SVG dimensions
2022-04-28 13:01:17 +01:00
John Cupitt 94d8a7d993 tried (and failed) to build against ubuntu nifti
the ubuntu cmake dev files for nifti seem to be broken, and I can't get meson
to add the dependency manually
2022-04-18 15:13:55 +01:00
Kleis Auke Wolthuizen 07edfe37b1
Improve symbol visibility (#2688)
* Improve symbol visibility

* Decorate required internal symbols with VIPS_API

* Remove a couple of stray header decls

* Incorporate review comment

- Ensure symbol visibility is also set on static libraries.
- Prefer to use `cc.has_function_attribute('visibility:hidden')`.

* Don't export internal deprecated symbols

* Move deprecated symbols to vips7compat.h

* `IM_FORMAT_H` -> `VIPS_FORMAT_H`

* Move `vips_window_ref` compat stub to `vips7compat.c`

* Disable deprecation warnings internally

* `vips_image_get_kill` -> `vips_image_iskilled`

* Ensure API compatibility

* Add missing include directives

* Move `vips__init` decl to vips7compat

* Move `vips__get_sizeof_vipsobject` to vips7compat

* Fix introspection build

* Fix 2 introspection warnings

* Ensure compatibility with vipsdisp

/usr/bin/ld: tilesource.o: in function `tile_source_new_from_source':
vipsdisp/tilesource.c:1627: undefined reference to `vips__region_no_ownership'
2022-04-16 10:58:55 +01:00
Essem d4eb2e82d2
cgifsave: Make loop counts more accurate (#2709)
* cgifsave: Added "noloop" option

* cgifsave: Change loop count logic

* make sure nsgifload returns the correct loop count

* Revert "make sure nsgifload returns the correct loop count"

This reverts commit 77550f097940944492d4178a783fc4e73c7a769f.

* Add fallback
2022-03-10 12:30:57 +00:00
Daniel Löbl b0f993eec8
cgifsave: avoid size issue (#2628)
* cgifsave: avoid size issue

avoid size issue by restoring the original transparency setting after quantization/dithering

* switch to per-frame alpha channel

* add option for lossy transparency

* switch lossy transparency off by default

* switch to g_malloc instead of g_malloc0

no need to 0 initialize at this point

* adapt to libvips coding conventions

* cgifsave: avoid size issue

avoid size issue by restoring the original transparency setting after quantization/dithering

* switch to per-frame alpha channel

* add option for lossy transparency

* switch lossy transparency off by default

* switch to g_malloc instead of g_malloc0

no need to 0 initialize at this point

* adapt to libvips coding conventions

* switch to official Homebrew sources for installing cgif

* bump required cgif version to v0.2.0
2022-02-28 16:19:13 +00:00
Kleis Auke Wolthuizen 0337c09700
Cleanup gettext handling (#2695)
Use GLib's i18n support instead of copying and pasting that
logic into its own header. This deprecates the vips/intl.h
header in favour of glib/gi18n.h.
2022-02-27 15:27:28 +00:00
Kleis Auke Wolthuizen dcfac75f06
Meson: ensure NIfTI can be found (#2689)
* Meson: ensure NIfTI can be found

* Incorporate review comment
2022-02-27 13:40:11 +00:00
Kleis Auke Wolthuizen 802dabc6aa
Meson: ensure `-Dpng=disabled` does not disable WebP load/save (#2686) 2022-02-25 19:04:07 +00:00
Kleis Auke Wolthuizen a67d637a3a
Meson: fix building with `-Dspng=enabled` (#2685)
And prefer to search for `spng.pc` first, since that one is
generated by Meson.
2022-02-25 15:41:21 +00:00
John Cupitt 4196a0e73a
set some -Ds depending on the release type (#2682)
* set some -Ds depending on the release type

libvips uses g_assert() quite a bit to check things like pointer bounds,
and this can have a large performance impact.

This PR turns off g_assert() (plus some other things) in release mode,
and enables leak checking (and some other things) in debug mode.

I'm not sure if this is the best way to implement this kind of thing.
Does meson have a more offical path for this?

* incorporate comments

* link asserts and cast checks to optimization level
2022-02-25 12:52:18 +00:00