Blame


1 665c255d 2023-08-04 jrmu (define (right-split painter n)
2 665c255d 2023-08-04 jrmu (if (= n 0)
3 665c255d 2023-08-04 jrmu painter
4 665c255d 2023-08-04 jrmu (let ((smaller (right-split painter (- n 1))))
5 665c255d 2023-08-04 jrmu (beside painter (below smaller smaller)))))
6 665c255d 2023-08-04 jrmu (define (corner-split painter n)
7 665c255d 2023-08-04 jrmu (if (= n 0)
8 665c255d 2023-08-04 jrmu painter
9 665c255d 2023-08-04 jrmu (let ((up (up-split painter (- n 1)))
10 665c255d 2023-08-04 jrmu (right (right-split painter (- n 1))))
11 665c255d 2023-08-04 jrmu (let ((top-left (beside up up))
12 665c255d 2023-08-04 jrmu (bottom-right (below right right))
13 665c255d 2023-08-04 jrmu (corner (corner-split painter (- n 1))))
14 665c255d 2023-08-04 jrmu (beside (below painter top-left)
15 665c255d 2023-08-04 jrmu (below bottom-right corner))))))
16 665c255d 2023-08-04 jrmu (define (square-limit painter n)
17 665c255d 2023-08-04 jrmu (let ((quarter (corner-split painter n)))
18 665c255d 2023-08-04 jrmu (let ((half (beside (flip-horiz quarter) quarter)))
19 665c255d 2023-08-04 jrmu (below (flip-vert half) half))))
20 665c255d 2023-08-04 jrmu (define (up-split painter n)
21 665c255d 2023-08-04 jrmu (if (= n 0)
22 665c255d 2023-08-04 jrmu painter
23 665c255d 2023-08-04 jrmu (let ((up (up-split painter (- n 1))))
24 665c255d 2023-08-04 jrmu (below painter (beside up up)))))
25 665c255d 2023-08-04 jrmu (define (square-of-four tl tr bl br)
26 665c255d 2023-08-04 jrmu (lambda (painter)
27 665c255d 2023-08-04 jrmu (let ((top (beside (tl painter) (tr painter)))
28 665c255d 2023-08-04 jrmu (bottom (beside (bl painter) (br painter))))
29 665c255d 2023-08-04 jrmu (below bottom top))))
30 665c255d 2023-08-04 jrmu
31 665c255d 2023-08-04 jrmu (define (flipped-pairs painter)
32 665c255d 2023-08-04 jrmu (let ((combine4 (square-of-four identity flip-vert
33 665c255d 2023-08-04 jrmu identity flip-vert)))
34 665c255d 2023-08-04 jrmu (combine4 painter)))
35 665c255d 2023-08-04 jrmu (define (square-limit painter n)
36 665c255d 2023-08-04 jrmu (let ((combine4 (square-of-four flip-horiz identity
37 665c255d 2023-08-04 jrmu rotate180 flip-vert)))
38 665c255d 2023-08-04 jrmu (combine4 (corner-split painter n))))
39 665c255d 2023-08-04 jrmu
40 665c255d 2023-08-04 jrmu (define (split op1 op2)
41 665c255d 2023-08-04 jrmu (define (split-n painter n)
42 665c255d 2023-08-04 jrmu (if (= n 0)
43 665c255d 2023-08-04 jrmu painter
44 665c255d 2023-08-04 jrmu (let ((split-painter (split-n painter (- n 1))))
45 665c255d 2023-08-04 jrmu (op1 painter (op2 split-painter split-painter)))))
46 665c255d 2023-08-04 jrmu split-n)
47 665c255d 2023-08-04 jrmu
48 665c255d 2023-08-04 jrmu (define right-split (split beside below))
49 665c255d 2023-08-04 jrmu (define up-split (split below beside))