Skip to content

Commit 9df19f3

Browse files
authored
Refine hash table's type. (#93)
1 parent 20f4a99 commit 9df19f3

File tree

4 files changed

+208
-208
lines changed

4 files changed

+208
-208
lines changed

plot-lib/plot/private/common/plot-device.rkt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -636,8 +636,8 @@
636636
;; get max widths and heights per row/column
637637
(define-values (max-label-widths max-label-heights)
638638
(let-values ([(width height)
639-
(for/fold ([width : (HashTable Integer Exact-Rational) #hash()]
640-
[height : (HashTable Integer Exact-Rational) #hash()])
639+
(for/fold ([width : (Immutable-HashTable Integer Exact-Rational) #hash()]
640+
[height : (Immutable-HashTable Integer Exact-Rational) #hash()])
641641
([label (in-list labels)]
642642
[k (in-naturals)])
643643
(define-values (i j)
@@ -666,7 +666,7 @@
666666
;; different gaps
667667
(define-values (horiz-gap min-label-height baseline _1)
668668
(get-text-extent " "))
669-
669+
670670
(define top-gap baseline)
671671
(define bottom-gap (* 1/2 baseline))
672672
(define in-label-gap (* 3 horiz-gap))
@@ -724,7 +724,7 @@
724724
(define draw-x-mins (for/list : (Listof Real)
725725
([x (in-list label-x-mins)]
726726
[w (in-list max-label-widths)]) (+ x w in-label-gap)))
727-
727+
728728
(values legend-rect max-label-heights
729729
draw-x-size label-x-mins draw-x-mins
730730
draw-y-size label-y-mins
@@ -801,7 +801,7 @@
801801
(define max-label-height (list-ref max-label-heights i))
802802
(define label-y-min (+ legend-entry-y-min
803803
(* 1/2 (- max-label-height label-height))))
804-
804+
805805
(if (pict? label)
806806
(draw-pict label (vector label-x-min label-y-min) 'top-left 0)
807807
(draw-text label (vector label-x-min label-y-min) 'top-left 0 0 #t))

plot-lib/plot/private/plot3d/bsp-trees.rkt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,26 @@
77

88
(provide (all-defined-out))
99

10-
(: build-bsp-trees (-> (HashTable Integer (Listof BSP-Shape))
11-
(HashTable Integer BSP-Tree)))
10+
(: build-bsp-trees (-> (Immutable-HashTable Integer (Listof BSP-Shape))
11+
(Immutable-HashTable Integer BSP-Tree)))
1212
(define (build-bsp-trees structural-shapes)
13-
(for/hasheq : (HashTable Integer BSP-Tree) ([(layer ss) (in-hash structural-shapes)])
13+
(for/hasheq : (Immutable-HashTable Integer BSP-Tree) ([(layer ss) (in-hash structural-shapes)])
1414
(values layer (build-bsp-tree ss))))
1515

16-
(: walk-bsp-trees (-> (HashTable Integer BSP-Tree)
16+
(: walk-bsp-trees (-> (Immutable-HashTable Integer BSP-Tree)
1717
FlVector
18-
(HashTable Integer (Listof BSP-Shape))
19-
(HashTable Integer (Listof BSP-Shape))))
18+
(Immutable-HashTable Integer (Listof BSP-Shape))
19+
(Immutable-HashTable Integer (Listof BSP-Shape))))
2020
(define (walk-bsp-trees bsp-trees view-dir detail-shapes)
2121
(define vx (flvector-ref view-dir 0))
2222
(define vy (flvector-ref view-dir 1))
2323
(define vz (flvector-ref view-dir 2))
24-
24+
2525
(define layers (sort (append (hash-keys bsp-trees) (hash-keys detail-shapes)) >))
26-
(for/hasheq : (HashTable Integer (Listof BSP-Shape)) ([layer (in-list layers)])
26+
(for/hasheq : (Immutable-HashTable Integer (Listof BSP-Shape)) ([layer (in-list layers)])
2727
(define bsp (hash-ref bsp-trees layer (λ () (bsp-leaf empty))))
2828
(define ss (hash-ref detail-shapes layer (λ () empty)))
29-
29+
3030
(: in-order-ss (Listof BSP-Shape))
3131
(define in-order-ss
3232
(let loop ([bsp (bsp-tree-insert bsp ss)])
@@ -40,5 +40,5 @@
4040
(if (cos-angle . > . -1e-16)
4141
(append (loop neg) (loop pos))
4242
(append (loop pos) (loop neg)))])))
43-
43+
4444
(values layer in-order-ss)))

plot-lib/plot/private/plot3d/bsp.rkt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@
143143
[(n . = . 2) (list (line data (first vs) (second vs)))]
144144
[else (list (lines data vs))]))
145145
vss)))
146-
146+
147147
(define-values (vss1 vss2) (split-lines3d vs plane))
148148
(values (vertices->lines vss2) (vertices->lines vss1))]))
149149

@@ -254,7 +254,7 @@
254254
(define n (length ivls))
255255
(define-values (ivls1 ivls2) (split-at ivls (quotient n 2)))
256256
(interval-list-union (loop ivls1) (loop ivls2))])))
257-
257+
258258
(cond [(empty? ivls) #f]
259259
[(empty? (rest ivls)) #f]
260260
[else
@@ -408,7 +408,7 @@
408408
(match s
409409
[(points _ vs)
410410
(if (empty? vs) empty (list s))]
411-
[(line _ v1 v2)
411+
[(line _ v1 v2)
412412
(if (equal? v1 v2) empty (list s))]
413413
[(poly data vs ls norm)
414414
(let-values ([(vs ls) (canonical-polygon3d vs ls)])
@@ -513,17 +513,17 @@
513513
[else
514514
(define axes (vertices->axes (bsp-polys->vertices ps)))
515515
(define center (list->flvector (map axis-mid axes)))
516-
516+
517517
;; Planes defined by neighboring polygon vertices
518518
(define polygon-planes (delay (sort-planes (append* (map bsp-poly-planes ps)) center)))
519-
519+
520520
(: try-bsp-split/polygon-planes (-> Boolean (U #f BSP-Tree)))
521521
;; Tries splitting using polygon-planes
522522
(define (try-bsp-split/polygon-planes disjoint?)
523523
(define planes (force polygon-planes))
524524
(cond [(and disjoint? ((length planes) . > . 10)) #f]
525525
[else (try-bsp-split/planes ss planes disjoint?)]))
526-
526+
527527
(let* ([bsp #f]
528528
[bsp (if bsp bsp (try-bsp-split/axial-planes ss axes))]
529529
[bsp (if bsp bsp (try-bsp-split/bounding-planes ss ps center))]
@@ -543,17 +543,17 @@
543543
[else
544544
(define axes (vertices->axes (bsp-lines->vertices ls)))
545545
(define center (list->flvector (map axis-mid axes)))
546-
546+
547547
;; Planes defined by line segments and basis vectors (i.e. one basis in normal is zero)
548548
(define line-planes (delay (sort-planes (append* (map bsp-line-planes ls)) center)))
549-
549+
550550
(: try-bsp-split/line-planes (-> Boolean (U #f BSP-Tree)))
551551
;; Tries splitting using line-planes
552552
(define (try-bsp-split/line-planes disjoint?)
553553
(define planes (force line-planes))
554554
(cond [(and disjoint? ((length planes) . > . 10)) #f]
555555
[else (try-bsp-split/planes ss planes disjoint?)]))
556-
556+
557557
(let* ([bsp #f]
558558
[bsp (if bsp bsp (try-bsp-split/axial-planes ss axes))]
559559
[bsp (if bsp bsp (try-bsp-split/line-planes #t))]
@@ -573,15 +573,15 @@
573573
(define axes (vertices->axes (append (append* (map lines-vertices ls))
574574
(append* (map points-vertices ps)))))
575575
(define center (list->flvector (map axis-mid axes)))
576-
576+
577577
(: try-nondisjoint-split (-> (U #f BSP-Tree)))
578578
(define (try-nondisjoint-split)
579579
(match-define (axis i size _mn _mx mid) (argmax axis-size axes))
580580
(cond [(size . < . 0.01) #f]
581581
[else
582582
(define plane (axial-plane i mid))
583583
(try-bsp-split ss plane #f (λ () #f))]))
584-
584+
585585
(let* ([bsp #f]
586586
[bsp (if bsp bsp (try-bsp-split/axial-planes ss axes))]
587587
[bsp (if bsp bsp (try-nondisjoint-split))])

0 commit comments

Comments
 (0)