diff m4/acinclude.m4 @ 31212:55415fa6a20f

svgconvert: Use Lossless encoding of images when available (bug #52193) * acinclude.m4: Check that QPainter::LosslessImageRendering flag is available. * octave-svgconvert.cc (draw): Use new flag if available. * print.m (doc): Update word of caution about svgconvert and images.
author Pantxo Diribarne <pantxo.diribarne@gmail.com>
date Mon, 29 Aug 2022 16:36:34 +0200
parents b8d37c022e40
children 1c4e017664fd
line wrap: on
line diff
--- a/m4/acinclude.m4	Mon Aug 29 13:58:00 2022 +0200
+++ b/m4/acinclude.m4	Mon Aug 29 16:36:34 2022 +0200
@@ -804,6 +804,35 @@
   fi
 ])
 dnl
+dnl Check whether the Qt method QPainter::setRenderHint accepts the
+dnl QPainter::LosslessImageRendering flag.  This flag was introduced in Qt 5.13.
+dnl
+AC_DEFUN([OCTAVE_CHECK_FUNC_QPAINTER_SETRENDERHINT_LOSSLESS], [
+  AC_CACHE_CHECK([for QPainter::LosslessImageRendering flag],
+    [octave_cv_func_qpainter_setrenderhint_lossless],
+    [AC_LANG_PUSH(C++)
+    ac_octave_save_CPPFLAGS="$CPPFLAGS"
+    ac_octave_save_CXXFLAGS="$CXXFLAGS"
+    CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS"
+    CXXFLAGS="$CXXPICFLAG $CXXFLAGS"
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+        #include <QPainter>
+        ]], [[
+        QPainter painter;
+        painter.setRenderHint (QPainter::LosslessImageRendering);
+        ]])],
+      octave_cv_func_qpainter_setrenderhint_lossless=yes,
+      octave_cv_func_qpainter_setrenderhint_lossless=no)
+    CPPFLAGS="$ac_octave_save_CPPFLAGS"
+    CXXFLAGS="$ac_octave_save_CXXFLAGS"
+    AC_LANG_POP(C++)
+  ])
+  if test $octave_cv_func_qpainter_setrenderhint_lossless = yes; then
+    AC_DEFINE(HAVE_QPAINTER_RENDERHINT_LOSSLESS, 1,
+      [Define to 1 if you have the `QPainter::LosslessImageRendering' flag.])
+  fi
+])
+dnl
 dnl Check whether HDF5 library has version 1.6 API functions.
 dnl
 AC_DEFUN([OCTAVE_CHECK_HDF5_HAS_VER_16_API], [
@@ -2279,6 +2308,7 @@
     OCTAVE_CHECK_FUNC_QHELPENGINE_DOCUMENTSFORIDENTIFIER
     OCTAVE_CHECK_FUNC_QWHEELEVENT_ANGLEDELTA
     OCTAVE_CHECK_FUNC_QWHEELEVENT_POSITION
+    OCTAVE_CHECK_FUNC_QPAINTER_SETRENDERHINT_LOSSLESS
 
     OCTAVE_CHECK_QOVERLOAD_TEMPLATE
     OCTAVE_CHECK_QREGION_ITERATORS