From 02a8f5cdef48300c987a91ca914e69bcc145780c Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 5 Jun 2007 03:07:38 +0000 Subject: [PATCH] avoids attaching texpict, just requires it now -- in addition to getting of the attaching problems, also works better when the drawing callbacks have errors or other effects svn: r6478 --- collects/slideshow/tool.ss | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/collects/slideshow/tool.ss b/collects/slideshow/tool.ss index 8cd0c72b05..bb5269232f 100644 --- a/collects/slideshow/tool.ss +++ b/collects/slideshow/tool.ss @@ -889,14 +889,26 @@ pict snip : (define orig-namespace (current-namespace)) + (define (pict->image-snip p) + (let* ([pict-width (dynamic-require '(lib "mrpict.ss" "texpict") 'pict-width)] + [pict-height (dynamic-require '(lib "mrpict.ss" "texpict") 'pict-height)] + [draw-pict (dynamic-require '(lib "mrpict.ss" "texpict") 'draw-pict)] + [bm (make-object bitmap% + (inexact->exact (ceiling (pict-width p))) + (inexact->exact (ceiling (pict-height p))))] + [bdc (make-object bitmap-dc% bm)]) + (send bdc clear) + (draw-pict p bdc 0 0) + (send bdc set-bitmap #f) + (make-object image-snip% bm))) + (drscheme:language:add-snip-value ;; Convert to print? - (lambda (x) (pict? x)) + (lambda (x) ((dynamic-require '(lib "mrpict.ss" "texpict") 'pict?) x)) ;; Converter: - (lambda (pict) (new pict-value-snip% (pict pict))) + pict->image-snip ;; Namespace setup: - (lambda () - (namespace-attach-module orig-namespace '(lib "mrpict.ss" "texpict")))) + (λ () (dynamic-require '(lib "mrpict.ss" "texpict") #f))) (define lib-pict-snipclass (make-object lib-pict-snipclass%)) (send lib-pict-snipclass set-version 2)