1(module slide racket/base 2 (require racket/unit 3 racket/contract 4 racket/class 5 racket/gui/base 6 texpict/mrpict 7 texpict/utils 8 "sig.rkt" 9 "core.rkt" 10 "private/utils.rkt" 11 "private/aspect.rkt" 12 "param.rkt") 13 14 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 15 ;; Link Config and Viewer with Core ;; 16 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 17 18 ;; The actual config and viewer units are determined by a parameter 19 ;; in "param.rkt". This somewhat strange technqiue allows the units 20 ;; to be changed as this module is loaded in a new namespace; see 21 ;; "slides-to-picts.rkt". Such namespace games are not necessary if 22 ;; talks are written as units and linked to the core.rkt unit. 23 24 (define-values/invoke-unit ((current-slideshow-linker) core@) 25 (import) 26 (export core^ 27 (prefix config: config^) 28 (prefix viewer: viewer^))) 29 30 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 31 ;; Contracts ;; 32 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 33 34 ;; Let the contract check always pass for now. We do more specific checking. 35 (define (slide-sequence? l) #t) 36 37 (define slide-contract 38 (() () #:rest slide-sequence? . ->* . any)) 39 (define slide/title-contract 40 ((string?) () #:rest slide-sequence? . ->* . any)) 41 (define slide/inset-contract 42 ((sinset?) () #:rest slide-sequence? . ->* . any)) 43 (define slide/title/inset-contract 44 ((string? sinset?) () #:rest slide-sequence? . ->* . any)) 45 46 (define (side-inset? n) (and (number? n) 47 (exact? n) 48 (integer? n) 49 (n . >= . 0))) 50 51 (define elem/c (flat-rec-contract elem/c (or/c string? pict? (listof elem/c)))) 52 (define item-contract (() (#:bullet pict? 53 #:aspect aspect? 54 #:width real? 55 #:gap-size real? 56 #:align (or/c 'left 'center 'right) 57 #:fill? any/c 58 #:decode? any/c) 59 #:rest elem/c 60 . ->* . pict?)) 61 62 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 63 ;; Exports ;; 64 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 65 66 ;; Mostly we re-export core^, but we also add contracts. 67 68 ;; Create macros for `get-margin', etc. 69 (define-accessor margin get-margin) 70 (define-accessor title-h get-title-h) 71 (define-accessor client-w get-client-w) 72 (define-accessor client-h get-client-h) 73 (define-accessor full-page get-full-page) 74 (define-accessor titleless-page get-titleless-page) 75 76 (provide/contract [slide slide-contract] 77 [slide/title slide/title-contract] 78 [slide/title/tall slide/title-contract] 79 [slide/center slide-contract] 80 [slide/title/center slide/title-contract] 81 [slide/inset slide/inset-contract] 82 [slide/title/inset slide/title/inset-contract] 83 [slide/title/tall/inset slide/title/inset-contract] 84 [slide/center/inset slide/inset-contract] 85 [slide/title/center/inset slide/title/inset-contract] 86 [slide/name slide/title-contract] 87 [slide/name/tall slide/title-contract] 88 [slide/name/center slide/title-contract] 89 [slide/name/inset slide/title/inset-contract] 90 [slide/name/tall/inset slide/title/inset-contract] 91 [slide/name/center/inset slide/title/inset-contract] 92 [comment (() () #:rest (listof (or/c string? pict?)) . ->* . any)] 93 [para/kw (() (#:aspect aspect? 94 #:width real? 95 #:align (or/c 'left 'center 'right) 96 #:fill? any/c 97 #:decode? any/c) 98 #:rest elem/c 99 . ->* . pict?)] 100 [item/kw item-contract] 101 [subitem/kw item-contract] 102 [t (string? . -> . pict?)] 103 [bt (string? . -> . pict?)] 104 [it (string? . -> . pict?)] 105 [bit (string? . -> . pict?)] 106 [tt (string? . -> . pict?)] 107 [titlet (string? . -> . pict?)] 108 [rt (string? . -> . pict?)] 109 [tt* (() () #:rest (listof string?) . ->* . pict?)]) 110 (provide slide/kw 111 most-recent-slide retract-most-recent-slide re-slide slide->pict start-at-recent-slide 112 scroll-transition pause-transition 113 make-outline 114 item item* page-item page-item* 115 item/bullet item*/bullet page-item/bullet page-item*/bullet 116 subitem subitem* page-subitem page-subitem* 117 itemize itemize* page-itemize page-itemize* 118 para para* page-para page-para* 119 para/c para/r para*/c para*/r page-para/c page-para/r page-para*/c page-para*/r 120 font-size gap-size current-gap-size current-font-size current-line-sep line-sep title-size 121 commentary-on-slide-font-size 122 main-font current-main-font with-font current-title-color 123 red green blue purple orange size-in-pixels 124 bullet o-bullet 125 margin get-margin set-margin! 126 client-w client-h get-client-w get-client-h 127 full-page titleless-page get-full-page get-titleless-page get-current-para-width 128 printing? condense? 129 skip-slides 130 set-use-background-frame! 131 enable-click-advance! 132 title-h get-title-h set-title-h! current-slide-assembler 133 current-page-number-font current-page-number-color current-page-number-adjust 134 current-titlet current-para-widths 135 set-page-numbers-visible! done-making-slides 136 set-spotlight-style! 137 set-allow-new-slides-after-close! 138 pict->pre-render-pict 139 slide/timeout 140 slide/title/timeout 141 slide/center/timeout 142 slide/title/center/timeout 143 (rename-out [sinset? slide-inset?])) 144 (provide/contract [clickback 145 ((pict? (-> any)) 146 (any/c) 147 . ->* . 148 pict?)] 149 [interactive 150 (pict? 151 ((is-a?/c frame%) . -> . (-> any)) 152 . -> . 153 pict?)] 154 [make-slide-inset 155 (side-inset? side-inset? side-inset? side-inset? 156 . -> . 157 sinset?)] 158 [apply-slide-inset 159 (sinset? pict? . -> . pict?)]) 160 ;; Things not at all in the core unit: 161 (provide (all-from-out texpict/mrpict) 162 (all-from-out texpict/utils))) 163