commit 4014cb57b6fcdc2bea157d063c0f5d895ec253c9
parent baded0251ac49e97859df24ddf44c301b225b9cb
Author: Matthew Flatt <mflatt@racket-lang.org>
Date: Mon, 6 Jan 2014 18:52:51 -0700
file/convertible: declare 'png@2x-bytes conversion variant
The 'png@2x-bytes variant is like 'png-bytes, but where the decoded
bytes are intended to be scaled by 1/2.
Consumers:
- DrRacket's print handler
- Scribble's HTML renderer
Producers:
- `bitmap%`s where the scaling factor is 2
- picts
Examples: Quick docs, docs for `images/icons/misc`, DrRacket interactions
for results of `images/icons/misc` functions.
original commit: eda4f357463fc8803726881f57cdd1cec6822660
Diffstat:
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/pkgs/scribble-pkgs/scribble-lib/scribble/html-render.rkt b/pkgs/scribble-pkgs/scribble-lib/scribble/html-render.rkt
@@ -105,7 +105,7 @@
(define extra-breaking? (make-parameter #f))
(define current-version (make-parameter (version)))
(define current-part-files (make-parameter #f))
-(define current-render-convertible-requests (make-parameter '(png-bytes svg-bytes)))
+(define current-render-convertible-requests (make-parameter '(png@2x-bytes png-bytes svg-bytes)))
(define (url->string* u)
(parameterize ([current-url-encode-mode 'unreserved])
@@ -1295,16 +1295,21 @@
(define/private (render-as-convertible e requests)
(for/or ([request (in-list requests)])
(cond
- [(and (equal? request 'png-bytes)
- (convert e 'png-bytes))
+ [(and (or (equal? request 'png-bytes)
+ (equal? request 'png@2x-bytes))
+ (convert e request))
=>
(lambda (bstr)
(let ([w (integer-bytes->integer (subbytes bstr 16 20) #f #t)]
- [h (integer-bytes->integer (subbytes bstr 20 24) #f #t)])
+ [h (integer-bytes->integer (subbytes bstr 20 24) #f #t)]
+ [scale (lambda (v)
+ (if (equal? request 'png@2x-bytes)
+ (/ v 2.0)
+ v))])
`((img ([src ,(install-file "pict.png" bstr)]
[alt "image"]
- [width ,(number->string w)]
- [height ,(number->string h)])))))]
+ [width ,(number->string (scale w))]
+ [height ,(number->string (scale h))])))))]
[(and (equal? request 'svg-bytes)
(convert e 'svg-bytes))
=> (lambda (bstr)