[plt-scheme] Is this the correct behaviour for add-line?

From: Robby Findler (robby at cs.uchicago.edu)
Date: Wed Dec 6 18:15:24 EST 2006

I don't see a simpler way than a binary search using the
get-text-extent method on a dc.

Robby

At Thu, 07 Dec 2006 00:53:39 +0200, Chris Stephenson wrote:
> It broke in front of 200 students today :-)
> 
> Any idea when it can be fixed? Can I help?
> 
> Chris
> 
> Matthias Felleisen wrote:
> >
> > On Dec 6, 2006, at 3:38 PM, Chris Stephenson wrote:
> >
> >> DrScheme Help says that the world.ss add-line function (unlike the
> >> image.ss add-line)  only draws the part of the line that lies within the
> >> boundaries of the scene.
> >>
> >> So I thought trying to draw a very long line should not cause a problem
> >> - it should simply be truncated.
> >>
> >> My experiments seem to show that this results in a "cannot make n x n
> >> image" error, where n is the large co-ordinate of the line.
> >
> > Correct. I draw the line in the image and then shrink the image. I
> > should do better -- Matthias
> >
> >
> >
> >> My test code is attached.
> >>
> >> Here is the output:
> >> Welcome to DrScheme, version 360.
> >> Language: Pretty Big (includes MrEd and Advanced Student).
> >> Teachpack: /usr/lib/plt/collects/teachpack/htdp/world.ss.
> >> #t
> >> . cannot make 10001 x 10001 image
> >>>
> >>
> >>
> >>
> >>
> >> ;; data definition world
> >> ;; canvas - what we are drawing on
> >> ;; objects - a list of the images we are drawing
> >> (define-struct world (canvas objects))
> >>
> >>
> >> ;; data definition canvas
> >> ;; scene: Scene
> >> ;; width: number
> >> ;; height: number
> >> (define-struct canvas (scene width height))
> >>
> >> ;; draw
> >> ;; World -> Scene
> >> ;; place the images in the scene.
> >> ;; template
> >> ;; (lambda (w)
> >> ;;    (.... (world-canvas w)... (world-object w)...)
> >> (define draw
> >>   (lambda (w)
> >>     (add-line (canvas-scene (world-canvas w)) 0 0 10000 10000 'black)))
> >>
> >> (big-bang 1000 680  0.1 (make-world (make-canvas (empty-scene 1000
> >> 680) 1000 680)
> >>                                     null))
> >> (on-redraw draw)
> >> _________________________________________________
> >>   For list-related administrative tasks:
> >>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> >
> _________________________________________________
>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme


Posted on the users mailing list.