Hello Daniel, Note that I initially asked(proposed) Dale to write a test and prepare the patch, as he fixed/wrote these new procedures, but he appears to have been 'trapped' by other tasks -
Please find attached 3 patches, the third being the most important and related to the addition of the context->cairo-pointer and cairo-pointer->context interfaces. Let me know (on irc is fine) once you have double checked and pushed, thanks. Then, I wish we could release, because this patch [the third one] is essential to be able to use guile-cairo in G-Golf, and I'd rather have asap all distros that package guile-cairo updating ... wdyt? Let me know if you need help. Thanks, David
From 3647aff86cde1fb6137a27b4212b2aaaa5f94af1 Mon Sep 17 00:00:00 2001 From: David Pirotte <da...@altosw.be> Date: Fri, 10 Mar 2023 23:19:51 -0300 Subject: [PATCH 1/3] Updating m4/guile.m4 * m4/guile.m4: Updated to the latest version available in Guile, which fixes a few minor/micro checks related bug(s). --- m4/guile.m4 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/m4/guile.m4 b/m4/guile.m4 index 57a0868..48642f0 100644 --- a/m4/guile.m4 +++ b/m4/guile.m4 @@ -17,7 +17,7 @@ ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ## 02110-1301 USA -# serial 10 +# serial 11 ## Index ## ----- @@ -60,7 +60,10 @@ # @code{AC_SUBST}. # AC_DEFUN([GUILE_PKG], - [PKG_PROG_PKG_CONFIG + [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + if test "x$PKG_CONFIG" = x; then + AC_MSG_ERROR([pkg-config is missing, please install it]) + fi _guile_versions_to_search="m4_default([$1], [3.0 2.2 2.0])" if test -n "$GUILE_EFFECTIVE_VERSION"; then _guile_tmp="" -- 2.39.2
From d77ef72b737d216593bb6260e8b4740b506da0ac Mon Sep 17 00:00:00 2001 From: David Pirotte <da...@altosw.be> Date: Fri, 10 Mar 2023 23:20:37 -0300 Subject: [PATCH 2/3] Some more files we don't want to track * .gitignore: Some more files we don't want to track. --- .gitignore | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.gitignore b/.gitignore index 128a5a8..2d6984c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,12 @@ Makefile.in /config.log /config.status /configure +/configure~ +m4/libtool.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/ltversion.m4 +m4/lt~obsolete.m4 /build-aux/config.sub /build-aux/config.guess /build-aux/depcomp @@ -30,3 +36,4 @@ Makefile.in /libtool /stamp-h1 /config.h.in~ +tests/unit-tests/*.scm~ \ No newline at end of file -- 2.39.2
From bc42b58608698321969a51640dec45762de269ad Mon Sep 17 00:00:00 2001 From: David Pirotte <da...@altosw.be> Date: Fri, 10 Mar 2023 23:33:35 -0300 Subject: [PATCH 3/3] New context->cairo-pointer cairo-pointer->context interfaces Note: cairo-pointer->context was first written by Daniel Llorens, then fixed by Dale Smith who also wrote context->cairo-pointer. I merely prepared and sent the patch, I wrote the test. Special thanks to both, as cairo-pointer->context is added on my demand, to make guile-cairo usable with G-Golf. * guile-cairo/guile-cairo.c (context->cairo-pointer, cairo-pointer->context): New procedures. * tests/unit-tests/context-pointer.scm: New file, testing the new procedures. * tests/unit-tests/Makefile.am: Updated for the above. --- guile-cairo/guile-cairo.c | 20 +++++++++++++++++-- tests/unit-tests/Makefile.am | 6 ++++-- tests/unit-tests/context-pointer.scm | 29 ++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 tests/unit-tests/context-pointer.scm diff --git a/guile-cairo/guile-cairo.c b/guile-cairo/guile-cairo.c index b298fc8..8d8c0b7 100644 --- a/guile-cairo/guile-cairo.c +++ b/guile-cairo/guile-cairo.c @@ -1,6 +1,10 @@ /* guile-cairo * Copyright (C) 2007, 2011, 2012, 2014, 2018, 2020 Andy Wingo <wingo at pobox dot com> - * + * Copyright (C) 2023 Daniel Llorens <daniel.llor...@bluewin.ch> + * Copyright (C) 2023 Dale Smith <dalepsm...@gmail.com> + + David Pirotte <da...@altosw.be> + * guile-cairo.c: Cairo for Guile * * This library is free software; you can redistribute it and/or modify @@ -3522,7 +3526,19 @@ cairo_svg_version_to_string (cairo_svg_version_t version); #endif /* CAIRO_HAS_SVG_SURFACE */ - +SCM_DEFINE_PUBLIC (scm_context2cairo_pointer, "context->cairo-pointer", 1, 0, 0, + (SCM scr), + "") +{ + return scm_from_pointer (scm_to_cairo (scr), NULL); +} + +SCM_DEFINE_PUBLIC (scm_cairo_pointer2context, "cairo-pointer->context", 1, 0, 0, + (SCM scr), + "") +{ + return scm_from_cairo ((cairo_t *) scm_to_pointer (scr)); +} void scm_init_cairo (void) diff --git a/tests/unit-tests/Makefile.am b/tests/unit-tests/Makefile.am index c13443d..9bf2316 100644 --- a/tests/unit-tests/Makefile.am +++ b/tests/unit-tests/Makefile.am @@ -1,5 +1,6 @@ # guile-cairo # Copyright (C) 2007,2011 Andy Wingo <wi...@pobox.com> +# Copyright (C) 2023 David Pirotte <da...@altosw.be> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as @@ -16,8 +17,9 @@ # <http://www.gnu.org/licenses/>. TESTS= \ - api-stability.scm \ - version.scm + api-stability.scm \ + version.scm \ + context-pointer.scm TESTS_ENVIRONMENT=\ API_FILE=$(srcdir)/cairo.api $(top_builddir)/env guile -s diff --git a/tests/unit-tests/context-pointer.scm b/tests/unit-tests/context-pointer.scm new file mode 100644 index 0000000..c746e58 --- /dev/null +++ b/tests/unit-tests/context-pointer.scm @@ -0,0 +1,29 @@ +;; guile-cairo unit test +;; Copyright (C) 2023 David Pirotte <da...@altosw.be> + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3 of the License, or (at +;; your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, see <http://www.gnu.org/licenses/>. + +(use-modules (unit-test) + (oop goops) + (cairo)) + +(define-class <test-context-pointer> (<test-case>)) + +(define-method (test-context-pointer (self <test-context-pointer>)) + (let* ((cs (cairo-image-surface-create 'argb32 140 100)) + (cr (cairo-create cs))) + (assert (context->cairo-pointer cr)) + (assert (cairo-pointer->context (context->cairo-pointer cr))))) + +(exit-with-summary (run-all-defined-test-cases)) -- 2.39.2
pgpeWawjaMOPt.pgp
Description: OpenPGP digital signature