;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2015 Andy Wingo ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix 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. ;;; ;;; GNU Guix 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 GNU Guix. If not, see . (define-module (gnu build svg) #:use-module (rsvg) #:use-module (cairo) #:use-module (srfi srfi-11) #:export (svg->png)) (define* (downscaled-surface surface #:key source-width source-height width height) "Return a new rendering context where SURFACE is scaled to WIDTH x HEIGHT." (let ((cr (cairo-create (cairo-image-surface-create 'argb32 width height)))) (cairo-scale cr (/ width source-width) (/ height source-height)) (cairo-set-source-surface cr surface 0 0) (cairo-pattern-set-filter (cairo-get-source cr) 'best) (cairo-rectangle cr 0 0 source-width source-height) (cairo-fill cr) cr)) (define* (svg->png in-svg out-png #:key width height) "Render the file at IN-SVG as a PNG file in OUT-PNG. When WIDTH and HEIGHT are provided, use them as the dimensions of OUT-PNG; otherwise preserve the dimensions of IN-SVG." (define svg (rsvg-handle-new-from-file in-svg)) (let-values (((origin-width origin-height em ex) (rsvg-handle-get-dimensions svg))) (let* ((surf (cairo-image-surface-create 'argb32 origin-width origin-height)) (cr (cairo-create surf))) (rsvg-handle-render-cairo svg cr) (cairo-surface-flush surf) (let ((cr (if (and width height (not (= width origin-width)) (not (= height origin-height))) (downscaled-surface surf #:source-width origin-width #:source-height origin-height #:width width #:height height) cr))) (cairo-surface-write-to-png (cairo-get-target cr) out-png))))) ;;; svg.scm ends here kages/graphviz.scm?id=e8a3f50fb0edfe61abe180544dbc4789884337d5'>gnu: xdot: Update to 1.4....* gnu/packages/graphviz.scm (xdot): Update to 1.4. [native-inputs]: Add python-packaging. Change-Id: Ifc06ab8fddfd23d0273d134efec610750bf2a462 Artyom V. Poptsov 2024-05-16gnu: xdot: Bugfix: Add the directory containing "dot" to the PATH...."xdot" would always fail to run when graphviz "dot" binary is not available directly in the user system. This patch fixes it by adding graphviz binaries from the inputs to the PATH environment variable in "xdot" wrapping script. Reported by Ada Stevenson <adanskana@gmail.com> in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70910 * gnu/packages/graphviz.scm (xdot) [arguments]: Add the "bin" directory from the graphviz input to the xdot wrapping. Change-Id: Iba4bbc37daf07407ad4c18b822956fbb730c0033 Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com> Artyom V. Poptsov 2024-05-01gnu: xdot: Update to 1.3....* gnu/packages/graphviz.scm (xdot): Update to 1.3. [source]: Download the sources from GitHub as the PyPI tarbal is missing some test files. [arguments]: Use Gexps. Add "start-xserver" and "set-test-environment" to setup test environment properly. Simplify "wrap" phase. Replace "check" phase to run "test.py". [native-inputs]: Add "gobject-introspection" and "xorg-server-for-tests". [inputs]: Add "bash-minimal", "mesa", "mesa-opencl", "python-numpy" and "vulkan-loader". Change-Id: I7a68e9f5c1b66a6539b83623a457e16edacff012 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Artyom V. Poptsov 2024-01-07gnu: python-uqbar: Update to 0.5.9....* gnu/packages/graphviz.scm (python-uqbar): Update to 0.5.9. [source]: Add patch for Python 3.10 compatibility. [arguments]: Remove outdated patch phase. Change-Id: I81d83efd69bd07fe12790981c48a6e82297908f0 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Troy Figiel