[racket] Using big-bang with picts

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Mon Feb 17 14:38:48 EST 2014

This does look like a bug in 2htdp/universe, tho.

Looking at the universe code, it is not dealing with the case that it gets
a bitmap% object. 2htdp/image's image? predicate accepts those. Probably a
diff something along these lines is the right fix (warning, untested!)

☕  git diff .
diff --git a/pkgs/htdp-pkgs/htdp-lib/2htdp/private/world.rkt
b/pkgs/htdp-pkgs/htdp-lib/2htdp/private/world.rkt
index 103ca45..98d46ff 100644
--- a/pkgs/htdp-pkgs/htdp-lib/2htdp/private/world.rkt
+++ b/pkgs/htdp-pkgs/htdp-lib/2htdp/private/world.rkt
@@ -232,7 +232,10 @@
       ;; Image -> Void
       ;; show the image in the visible world
       (define/public (show pict0)
-        (define pict (add-game-pad pict0))
+        (define pict1 (if (is-a? pict0 bitmap%)
+                          (make-object bitmap-snip% pict0)
+                          pict0))
+        (define pict (add-game-pad pict1))
         (send visible begin-edit-sequence)
         (send visible lock #f)
         (let ([s (send visible find-first-snip)]



On Mon, Feb 17, 2014 at 12:40 PM, Jens Axel Søgaard
<jensaxel at soegaard.net>wrote:

> Hi All,
>
> Is there a way to use big-bang with picts?
> In other words, how can I convert a pict into something that big-bang
> will display?
>
> The attempt below fails with this error:
>
>     collects/racket/private/class-internal.rkt:4387:0: send: no such method
>     method name: copy
>     class name: bitmap%
>
> #lang racket
> (require pict (only-in 2htdp/universe big-bang on-tick to-draw))
>
> (define (world->image w)
>   (pict->bitmap (circle w)))
>
> (big-bang 100
>           [on-tick add1]
>           [to-draw world->image])
>
>
> --
> Jens Axel Søgaard
>
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20140217/c889be1e/attachment.html>

Posted on the users mailing list.