fixed a bug with zero-sized htdp/image images interactive with 2htdp/image primitives
This commit is contained in:
parent
1812515a57
commit
256e3fedd2
|
@ -20,6 +20,7 @@
|
||||||
lang/posn
|
lang/posn
|
||||||
scheme/gui/base
|
scheme/gui/base
|
||||||
"../../mrlib/image-core.ss"
|
"../../mrlib/image-core.ss"
|
||||||
|
(prefix-in cis: "../../mrlib/cache-image-snip.ss")
|
||||||
(for-syntax scheme/base
|
(for-syntax scheme/base
|
||||||
scheme/list))
|
scheme/list))
|
||||||
|
|
||||||
|
@ -270,9 +271,26 @@
|
||||||
[else arg]))
|
[else arg]))
|
||||||
|
|
||||||
(define (image-snip->image is)
|
(define (image-snip->image is)
|
||||||
(bitmap->image (send is get-bitmap)
|
(let ([bm (send is get-bitmap)])
|
||||||
|
(cond
|
||||||
|
[(not bm)
|
||||||
|
;; this might mean we have a cache-image-snip%
|
||||||
|
;; or it might mean we have a useless snip.
|
||||||
|
(let-values ([(w h) (if (is-a? is cis:cache-image-snip%)
|
||||||
|
(send is get-size)
|
||||||
|
(values 0 0))])
|
||||||
|
(make-image (make-polygon
|
||||||
|
(list (make-point 0 0)
|
||||||
|
(make-point w 0)
|
||||||
|
(make-point w h)
|
||||||
|
(make-point 0 h))
|
||||||
|
'solid "black")
|
||||||
|
(make-bb w h h)
|
||||||
|
#f))]
|
||||||
|
[else
|
||||||
|
(bitmap->image bm
|
||||||
(or (send is get-bitmap-mask)
|
(or (send is get-bitmap-mask)
|
||||||
(send (send is get-bitmap) get-loaded-mask))))
|
(send bm get-loaded-mask)))])))
|
||||||
|
|
||||||
(define (bitmap->image bm [mask-bm (send bm get-loaded-mask)])
|
(define (bitmap->image bm [mask-bm (send bm get-loaded-mask)])
|
||||||
(let ([w (send bm get-width)]
|
(let ([w (send bm get-width)]
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
scheme/class
|
scheme/class
|
||||||
scheme/gui/base
|
scheme/gui/base
|
||||||
schemeunit
|
schemeunit
|
||||||
|
(prefix-in 1: htdp/image)
|
||||||
(only-in lang/htdp-advanced equal~?))
|
(only-in lang/htdp-advanced equal~?))
|
||||||
|
|
||||||
(require (for-syntax scheme/base))
|
(require (for-syntax scheme/base))
|
||||||
|
@ -202,6 +203,14 @@
|
||||||
(check-close (image-height (rotate 30 (ellipse 0 100 'solid 'blue)))
|
(check-close (image-height (rotate 30 (ellipse 0 100 'solid 'blue)))
|
||||||
(ceiling (* (cos (* pi 1/6)) 100)))
|
(ceiling (* (cos (* pi 1/6)) 100)))
|
||||||
|
|
||||||
|
;; zero-sized htdp/image images should also work
|
||||||
|
(test (image-width (1:text "" 18 "blue"))
|
||||||
|
=>
|
||||||
|
0)
|
||||||
|
(test (image-height (1:rectangle 10 0 'solid "red"))
|
||||||
|
=>
|
||||||
|
0)
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;
|
;;
|
||||||
;; polygon equality
|
;; polygon equality
|
||||||
|
|
Loading…
Reference in New Issue
Block a user