|
37 | 37 | [p:pict-width pict-width]
|
38 | 38 | [p:pict-height pict-height]
|
39 | 39 | [p:pict-descent pict-descent]
|
40 |
| - [p:pict? pict?] |
41 | 40 | [p:draw-pict draw-pict]
|
42 | 41 | [p:text-style/c text-style/c]
|
43 | 42 | [p:dc-for-text-size dc-for-text-size]))
|
44 | 43 |
|
| 44 | +(provide pict?) |
| 45 | +(define (pict? p) |
| 46 | + (choose |
| 47 | + (p:pict? p) |
| 48 | + (r:is_pict p))) |
| 49 | + |
45 | 50 | (define (to-rhm-pict p)
|
46 | 51 | (choose p (r:from_handle p)))
|
47 | 52 |
|
|
70 | 75 | #:border-color [border-color #f]
|
71 | 76 | #:border-width [border-width #f])
|
72 | 77 | (to-rhm-pict
|
73 |
| - (filled-rectangle w h |
74 |
| - #:draw-border? draw-border? #:color color |
75 |
| - #:border-color border-color #:border-width border-width))) |
| 78 | + (p:filled-rectangle w h |
| 79 | + #:draw-border? draw-border? #:color color |
| 80 | + #:border-color border-color #:border-width border-width))) |
76 | 81 |
|
77 | 82 | (define-rhombus
|
78 | 83 | (lib "pict/main.rhm")
|
79 | 84 | beside
|
80 | 85 | stack
|
81 |
| - overlay |
82 |
| - line) |
| 86 | + overlay) |
83 | 87 |
|
84 | 88 | (define-rhombus
|
85 | 89 | rhombus/dot
|
|
101 | 105 |
|
102 | 106 | (provide horizontal-line)
|
103 | 107 | (define (horizontal-line w)
|
104 |
| - (choose |
105 |
| - (p:frame (p:blank w 0)) |
106 |
| - (r:line #:dx w))) |
| 108 | + (to-rhm-pict |
| 109 | + (p:frame (p:blank w 0)))) |
107 | 110 |
|
108 | 111 | (define-syntax-rule
|
109 | 112 | (define-simple name p:name r:name args ...)
|
|
143 | 146 | [(_ name racket-name rhombus-name rhombus-kwd rhombus-kwd-value)
|
144 | 147 | #'(begin
|
145 | 148 | (provide name)
|
146 |
| - (define (name arg1 . args) |
| 149 | + (define (name . in-args) |
147 | 150 | (choose
|
148 |
| - (apply racket-name arg1 args) |
149 |
| - (keyword-apply rhombus-name |
150 |
| - (if (keyword<? 'rhombus-kwd '#:sep) |
151 |
| - (list 'rhombus-kwd '#:sep) |
152 |
| - (list '#:sep 'rhombus-kwd)) |
153 |
| - (if (keyword<? 'rhombus-kwd '#:sep) |
154 |
| - (list rhombus-kwd-value (if (number? arg1) arg1 0)) |
155 |
| - (list (if (number? arg1) arg1 0) rhombus-kwd-value)) |
156 |
| - (if (number? arg1) |
157 |
| - args |
158 |
| - (cons arg1 args))))))])) |
| 151 | + (apply racket-name in-args) |
| 152 | + (call-rhombus-append rhombus-name 'rhombus-kwd rhombus-kwd-value in-args))))])) |
| 153 | + |
| 154 | +(define (call-rhombus-append rhombus-fn rhombus-kwd rhombus-kwd-value in-args) |
| 155 | + (define-values (sep args) |
| 156 | + (cond |
| 157 | + [(and (pair? in-args) (number? (car in-args))) |
| 158 | + (values (car in-args) (cdr in-args))] |
| 159 | + [else |
| 160 | + (values 0 in-args)])) |
| 161 | + (keyword-apply rhombus-fn |
| 162 | + (if (keyword<? rhombus-kwd '#:sep) |
| 163 | + (list rhombus-kwd '#:sep) |
| 164 | + (list '#:sep rhombus-kwd)) |
| 165 | + (if (keyword<? rhombus-kwd '#:sep) |
| 166 | + (list rhombus-kwd-value sep) |
| 167 | + (list sep rhombus-kwd-value)) |
| 168 | + args)) |
159 | 169 |
|
160 | 170 | (define-append ht-append
|
161 | 171 | p:ht-append
|
|
212 | 222 |
|
213 | 223 | (define-namespace-anchor ns-anchor)
|
214 | 224 | (define ns (namespace-anchor->namespace ns-anchor))
|
215 |
| -(define-values (r:find r:from_handle) |
| 225 | +(define-values (r:find r:from_handle r:is_pict) |
216 | 226 | (cond
|
217 | 227 | [(rhombus-present?)
|
218 | 228 | (parameterize ([current-namespace ns])
|
219 | 229 | (namespace-require '(all-except rhombus #%top))
|
220 | 230 | (namespace-require 'rhombus/parse)
|
221 | 231 | (namespace-require 'redex/private/rhombus-bridge)
|
222 | 232 | (values (eval 'find)
|
223 |
| - (eval 'from_handle)))] |
| 233 | + (eval 'from_handle) |
| 234 | + (eval 'is_pict)))] |
224 | 235 | [else
|
225 | 236 | (values "dummy value that's not rhombus's find"
|
226 |
| - "dummy value that's not rhombus's find_handle")])) |
| 237 | + "dummy value that's not rhombus's find_handle" |
| 238 | + "dummy value that's not rhombus's is_a Pict")])) |
227 | 239 | (define-syntax (define-finder stx)
|
228 | 240 | (syntax-parse stx
|
229 | 241 | [(_ name racket-name horiz vert)
|
230 | 242 | #`(begin
|
231 | 243 | (provide name)
|
232 | 244 | (define (name pict subpict)
|
233 | 245 | (unless (pict? subpict)
|
234 |
| - (error 'name "the version in pict-interface.rkt supports only picts, not pict paths")) |
| 246 | + (error 'name "the version in pict-interface.rkt supports only picts, not pict paths\n ~s" subpict)) |
235 | 247 | (choose
|
236 | 248 | (racket-name pict subpict)
|
237 | 249 | (r:find pict subpict horiz vert)))
|
|
0 commit comments