Thanks. We will need to figure out how to accommodate keywords in a teachpack.
In the meantime, write frame like this:
(define (frame-2 img
#:frame-color (frame-color 'black)
#:background-color (background-color 'transparent)
#:frame-offset (frame-offset 0)
#:frame-x-offset (frame-x-offset frame-offset)
#:frame-y-offset (frame-y-offset frame-offset))
(define width (+ (image-width img) frame-x-offset))
(define height (+ (image-height img) frame-y-offset))
(overlay (rectangle width height 'outline frame-color)
(center-crop width height img)
(rectangle width height 'solid background-color)))
Prefer define over let. -- Matthias
On Jun 21, 2014, at 2:42 PM, Kevin Forchione wrote:
> Hi guys,
> I’ve been working with 2htdp/image and been struck by its monitor-oriented
> coordinate system and its image-centric perspective, both of which have
> proven a rich bed for new tools. I’ve found these two functions have been
> useful to me and might be useful for others. I’ve particularly found them
> useful as my racket sessions use the “white on black” color schemes, and with
> my eyesight a pixel’s contrast makes a difference.
>
> The center-crop function facilitates the image-cntric perspective of the
> library by centering the cropping rectangle on the image center. The frame
> function replaces the library’s existing function with one that does the same
> thing, but also provides parameters for setting the pixel frame coloring,
> background coloring within the frame, and x/y offsets that work with
> center-crop to expand or shrink the framing of the image.
>
> ;; center-crop: width height image -> image?
> ;; crops image in a rectangle of width x height whose center is image center.
> (define (center-crop width height img)
> (crop (- (quotient (image-width img) 2) (quotient width 2))
> (- (quotient (image-height img) 2) (quotient height 2))
> width
> height
> img))
>
> ;; frame: image frame-option ... -> image?
> ;; Returns an image just like image, except with a frame-color'd, single
> pixel frame
> ;; around the bounding box of the image. The background-color indicates the
> color
> ;; inside the frame over which the image is laid. If an offset is provided it
> ;; indicates a center-crop in that dimension. A positive value extends the
> crop
> ;; beyond the image bounding box, a negative value center-crops the image
> within
> ;; the bounding box.
> (define (frame img
> #:frame-color (frame-color 'black)
> #:background-color (background-color 'transparent)
> #:frame-offset (frame-offset 0)
> #:frame-x-offset (frame-x-offset frame-offset)
> #:frame-y-offset (frame-y-offset frame-offset))
> (let ([width (+ (image-width img) frame-x-offset)]
> [height (+ (image-height img) frame-y-offset)])
> (overlay (rectangle width height 'outline frame-color)
> (center-crop width height img)
> (rectangle width height 'solid background-color))))
>
> -Kevin
> _________________________
> Racket Developers list:
> http://lists.racket-lang.org/dev
_________________________
Racket Developers list:
http://lists.racket-lang.org/dev