[racket] off-by-1 pixel error in 2htdp/image

From: D Herring (dherring at tentpost.com)
Date: Mon Dec 17 00:09:36 EST 2012

Hi all,

First off, please forgive my coding style -- that is something to 
clean up after the functionality is working.  Also, please let me know 
if there's a better way to attach code or screenshots.

I was writing a bit of code to generate a diagram, and bumped into an 
off-by-one error.  Not sure whether its in my understanding of or use 
of the 2htdp/image library.  Testing on DrRacket 5.3.1 on 64-bit linux.


----- begin test.rkt
#lang racket

(require 2htdp/image)

(define (stack wordlist)
   (let ((boxes '())
         (maxwidth 0))
     (for ((w wordlist))
       (let* ((txt (text w 24 "black"))
              (width (image-width txt)))
         (set! boxes (cons txt boxes))
         (when (> width maxwidth)
           (set! maxwidth width))))
     (let ((box (rectangle (* maxwidth 1.2)
                           (* (image-height (text "Gg" 24 "black")) 1.2)
                           "outline" "black"))
           (img empty-image))
       (for ((b boxes))
         (set! img (above (overlay box b)
                          (if (equal? img empty-image)
                              empty-image
                              (line 0 15 "black"))
                          img)))
       img)))

(stack '("hello" "world" "1" "2" "3"))
(save-image (stack '("hello" "world" "1" "2" "3")) "stack.png")
----- end test.rkt

The code runs, but there is a one-pixel white gap between each (line 0 
15 "black") and the box below it.  Also, the anti-aliasing is 
rendering the line into the box above it.  The save-image output is 
attached (and matches a screenshot).

Now the questions.  What is the preferred image library in Racket?  Am 
I misusing 'above, or is there an off-by-1 error in its 
implementation? (e.g. in above/internal or overlay/δ in 
collects/2htdp/private/image-more.rkt)

Thanks,
Daniel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: stack.png
Type: image/png
Size: 2596 bytes
Desc: not available
URL: <http://lists.racket-lang.org/users/archive/attachments/20121217/ac2dab31/attachment.png>

Posted on the users mailing list.