Make graphgif a library, demo.scm is driver

This commit is contained in:
Dane Johnson 2024-10-11 16:48:42 -05:00
parent 62fa492823
commit 6b11d25df2
3 changed files with 28 additions and 23 deletions

14
demo.scm Normal file
View File

@ -0,0 +1,14 @@
(use-modules (graphgif))
(define my-graph
`(((10 . 10) (1) ,white)
((30 . 20) () ,red)))
(define more-complex-graph
`(((10 . 10) () ,white)
((40 . 10) (0) ,white)
((25 . 25) (0 1) ,white)
((10 . 40) (0 2 4) ,white)
((40 . 40) (1 2 3) ,white)))
(write-graph-to-file more-complex-graph (cadr (command-line)))

View File

@ -1,28 +1,17 @@
#!/usr/bin/guile -s
!#
(define-module (graphgif))
(use-modules (cairo))
;;;;;;;;;;;;;;;;;;;
;; Basic Drawing ;;
;;;;;;;;;;;;;;;;;;;
(define pi 3.14159)
(define tau (* 2 pi))
(define-public pi 3.14159)
(define-public tau (* 2 pi))
(define black (cairo-pattern-create-rgb 0 0 0))
(define white (cairo-pattern-create-rgb 1 1 1))
(define red (cairo-pattern-create-rgb 1 0 0))
(define my-graph
`(((10 . 10) (1) ,white)
((30 . 20) () ,red)))
(define more-complex-graph
`(((10 . 10) () ,white)
((40 . 10) (0) ,white)
((25 . 25) (0 1) ,white)
((10 . 40) (0 2 4) ,white)
((40 . 40) (1 2 3) ,white)))
(define-public black (cairo-pattern-create-rgb 0 0 0))
(define-public white (cairo-pattern-create-rgb 1 1 1))
(define-public red (cairo-pattern-create-rgb 1 0 0))
(define (edge-painter cr graph)
(lambda (node)
@ -51,7 +40,7 @@
(cairo-set-source cr black)
(cairo-stroke cr))))
(define (draw-abstract-graph graph)
(define-public (draw-abstract-graph graph)
(let* ([surface (cairo-image-surface-create 'argb32 400 400)]
[cr (cairo-create surface)])
(define paint-edges (edge-painter cr graph))
@ -65,9 +54,11 @@
(cairo-destroy cr)
surface))
(define my-surface (draw-abstract-graph more-complex-graph))
(cairo-surface-write-to-png my-surface (cadr (command-line)))
(cairo-surface-destroy my-surface)
(define-public (write-graph-to-file graph filename)
(define my-surface (draw-abstract-graph graph))
(cairo-surface-write-to-png my-surface filename)
(cairo-surface-destroy my-surface))
;; Local Variables:
;; geiser-scheme-implementation: guile

2
run.sh
View File

@ -4,6 +4,6 @@ GRAPH_FILE=/tmp/graph.png
set -e
guile graphgif.scm $GRAPH_FILE
guile -L . demo.scm $GRAPH_FILE
feh $GRAPH_FILE
rm $GRAPH_FILE