From 2d7c359579f1fb0b122c6b740955c81116673ab4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20Jolliton?= Date: Sat, 25 Sep 2010 14:27:47 +0200 Subject: [PATCH] update-state: handle nested lists. --- vectors.lisp | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/vectors.lisp b/vectors.lisp index c15dcb9..2617dd2 100644 --- a/vectors.lisp +++ b/vectors.lisp @@ -18,23 +18,25 @@ (in-package #:net.tuxee.vectors) (defun update-state (state paths) - (dolist (path (if (listp paths) paths (list paths))) - (let ((iterator (path-iterator-segmented path))) - (multiple-value-bind (i1 k1 e1) (path-iterator-next iterator) - (declare (ignore i1)) - (when (and k1 (not e1)) - ;; at least 2 knots - (let ((first-knot k1)) - (loop - (multiple-value-bind (i2 k2 e2) (path-iterator-next iterator) - (declare (ignore i2)) - (line-f state - (point-x k1) (point-y k1) - (point-x k2) (point-y k2)) - (setf k1 k2) - (when e2 - (return)))) - (line-f state - (point-x k1) (point-y k1) - (point-x first-knot) (point-y first-knot))))))) + (if (listp paths) + (dolist (path paths) + (update-state state path)) + (let ((iterator (path-iterator-segmented paths))) + (multiple-value-bind (i1 k1 e1) (path-iterator-next iterator) + (declare (ignore i1)) + (when (and k1 (not e1)) + ;; at least 2 knots + (let ((first-knot k1)) + (loop + (multiple-value-bind (i2 k2 e2) (path-iterator-next iterator) + (declare (ignore i2)) + (line-f state + (point-x k1) (point-y k1) + (point-x k2) (point-y k2)) + (setf k1 k2) + (when e2 + (return)))) + (line-f state + (point-x k1) (point-y k1) + (point-x first-knot) (point-y first-knot))))))) state) -- 2.11.4.GIT