diff options
author | David Thompson <dthompson2@worcester.edu> | 2020-11-19 08:20:56 -0500 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2020-11-19 08:20:56 -0500 |
commit | 4eb0c696bc575210448f79eab92f4eb6965e75f9 (patch) | |
tree | 24fc79ae12823693ed7f061f57824124114e19b1 | |
parent | 3d0016c9b83ff71deaf34c7f8a497758a8a310d2 (diff) |
math: grid: Add grid-cell-fold and grid-item-fold procedures.
-rw-r--r-- | chickadee/math/grid.scm | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/chickadee/math/grid.scm b/chickadee/math/grid.scm index 830f7d6..7b2b6d6 100644 --- a/chickadee/math/grid.scm +++ b/chickadee/math/grid.scm @@ -45,7 +45,9 @@ grid-item-count grid-rect-ref for-each-cell - for-each-item)) + grid-cell-fold + for-each-item + grid-item-fold)) ;;; @@ -192,10 +194,22 @@ cell if RECT is #f." row)) (grid-rows grid)))) +(define (grid-cell-fold proc init grid) + (hash-fold (lambda (y row memo) + (hash-fold (lambda (x cell memo) + (proc cell x y memo)) + memo + row)) + init + (grid-rows grid))) + (define (for-each-item proc grid) "Call PROC for each item in GRID." (hash-for-each proc (grid-rects grid))) +(define (grid-item-fold proc init grid) + (hash-fold proc init (grid-rects grid))) + (define (grid-add grid item x y width height) "Add ITEM to GRID represented by axis-aligned bounding box defined by X, Y, WIDTH, HEIGHT." |