From eeec8d03cf0e7602abd70e1b6436548af59da88a Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Fri, 7 Feb 2020 17:40:21 -0800 Subject: [PATCH] also these --- quad/quadwriter/render.rkt | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/quad/quadwriter/render.rkt b/quad/quadwriter/render.rkt index 6f9ccc3a..364f61a5 100644 --- a/quad/quadwriter/render.rkt +++ b/quad/quadwriter/render.rkt @@ -246,8 +246,8 @@ (values line-qs fn-line-qs)) (define (make-columns line-qs fn-line-qs line-wrap-size printable-height column-gap) - (define col-quad-prototype (struct-copy quad q:column - [size (pt line-wrap-size printable-height)])) + (define col-quad-prototype (quad-copy quad q:column + [size (pt line-wrap-size printable-height)])) (time-log column-wrap (column-wrap line-qs fn-line-qs printable-height column-gap col-quad-prototype))) (define (make-pages column-qs @@ -259,13 +259,13 @@ printable-height) (define (page-quad-prototype page-count) (define left-shift (+ left-margin (if (odd? page-count) gutter-margin 0))) - (struct-copy page-quad q:page - [shift #:parent quad (pt left-shift top-margin)] - [size #:parent quad (pt line-wrap-size printable-height)])) + (quad-copy page-quad q:page + [shift (pt left-shift top-margin)] + [size (pt line-wrap-size printable-height)])) (time-log page-wrap (page-wrap column-qs printable-width page-quad-prototype))) -(define (apply-doc-repeaters secs repeaters) +(define (append-doc-repeaters secs repeaters) (for ([page (in-list (for*/list ([sec (in-list secs)] [elem (in-list (quad-elems sec))] #:when (page-quad? elem)) @@ -289,7 +289,7 @@ (define-values (doc-repeaters nonrepeating-qs) (partition (λ (q) (member (quad-ref q :page-repeat) '("all" "left" "right" "first" "rest"))) all-qs)) (for/fold ([sections-acc null] - #:result (apply-doc-repeaters (reverse sections-acc) doc-repeaters)) + #:result (append-doc-repeaters (reverse sections-acc) doc-repeaters)) ([all-section-qs (in-list (filter-split nonrepeating-qs section-break-quad?))]) (define-values (section-repeaters qs) @@ -345,8 +345,8 @@ (cond [(null? section-repeaters-for-this-page) page] [else - (struct-copy page-quad page - [elems #:parent quad (append section-repeaters-for-this-page (quad-elems page))])]))) + (quad-copy page-quad page + [elems (append section-repeaters-for-this-page (quad-elems page))])]))) (begin0 (cond @@ -357,24 +357,24 @@ ['left ;; blank page goes at beginning of current section (define page-from-current-section (car section-pages)) - (define blank-page (struct-copy page-quad page-from-current-section [elems #:parent quad null])) - (define new-section (struct-copy quad q:section [elems (cons blank-page section-pages)])) + (define blank-page (quad-copy page-quad page-from-current-section [elems null])) + (define new-section (quad-copy quad q:section [elems (cons blank-page section-pages)])) (cons new-section sections-acc)] [_ ;; must be 'right ;; blank page goes at end of previous section (if it exists) - (define new-section (struct-copy quad q:section [elems section-pages])) + (define new-section (quad-copy quad q:section [elems section-pages])) (match sections-acc [(cons previous-section other-sections) (define previous-section-pages (quad-elems previous-section)) ;; we know previous section has pages because we ignore empty sections (define page-from-previous-section (car previous-section-pages)) - (define blank-page (struct-copy page-quad page-from-previous-section [elems #:parent quad null])) + (define blank-page (quad-copy page-quad page-from-previous-section [elems null])) (define updated-previous-section (quad-update! previous-section [elems (append previous-section-pages (list blank-page))])) (list* new-section updated-previous-section other-sections)] [_ (list new-section)])])] - [else (define new-section (struct-copy quad q:section [elems section-pages]) ) + [else (define new-section (quad-copy q:section [elems section-pages]) ) (cons new-section sections-acc)]) (section-pages-used (+ (section-pages-used) (length section-pages)))))) @@ -450,7 +450,7 @@ (setup-pdf-metadata! qs (current-pdf)) ;; all the heavy lifting happens inside `make-sections` ;; which calls out to `make-pages`, `make-columns`, and so on. - (define doc (correct-line-alignment (struct-copy quad q:doc [elems (make-sections qs)]))) + (define doc (correct-line-alignment (quad-update! q:doc [elems (make-sections qs)]))) ;; call `position` and `draw` separately so we can print a timer for each (define positioned-doc (time-log position (position doc))) ;; drawing implies that a PDF is written to disk