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

<<attachment: stack.png>>

____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to