racket/draw: fix in-region?' method of
region%'
Merge to v5.3.4
This commit is contained in:
parent
1ef1d256f7
commit
917ec51eee
|
@ -125,6 +125,7 @@
|
||||||
(cairo_identity_matrix cr)
|
(cairo_identity_matrix cr)
|
||||||
(init-matrix cr)
|
(init-matrix cr)
|
||||||
(cairo_transform cr (make-cairo_matrix_t 1 0 0 1 scroll-dx scroll-dy)))
|
(cairo_transform cr (make-cairo_matrix_t 1 0 0 1 scroll-dx scroll-dy)))
|
||||||
|
(begin0
|
||||||
(if (null? paths)
|
(if (null? paths)
|
||||||
(begin
|
(begin
|
||||||
(cairo_new_path cr)
|
(cairo_new_path cr)
|
||||||
|
@ -138,7 +139,7 @@
|
||||||
[(winding) CAIRO_FILL_RULE_WINDING]
|
[(winding) CAIRO_FILL_RULE_WINDING]
|
||||||
[else default-fill-rule]))
|
[else default-fill-rule]))
|
||||||
(install cr v)))
|
(install cr v)))
|
||||||
(when old-matrix (cairo_set_matrix cr old-matrix))))
|
(when old-matrix (cairo_set_matrix cr old-matrix)))))
|
||||||
|
|
||||||
(def/public (is-empty?)
|
(def/public (is-empty?)
|
||||||
(really-is-empty?))
|
(really-is-empty?))
|
||||||
|
@ -203,7 +204,9 @@
|
||||||
(vector-ref m 5))))
|
(vector-ref m 5))))
|
||||||
;; no transformation needed
|
;; no transformation needed
|
||||||
(values x y))])
|
(values x y))])
|
||||||
(install-region cr #t values values (lambda (cr v) (and v (cairo_in_fill cr x y))))))))
|
(install-region cr 0 0 values values
|
||||||
|
#t
|
||||||
|
(lambda (cr v) (and v (cairo_in_fill cr x y))))))))
|
||||||
|
|
||||||
(define/public (set-arc x y width height start-radians end-radians)
|
(define/public (set-arc x y width height start-radians end-radians)
|
||||||
(modifying 'set-arc)
|
(modifying 'set-arc)
|
||||||
|
|
|
@ -664,6 +664,47 @@
|
||||||
(test #f 'no-alpha (send bm2 has-alpha-channel?))
|
(test #f 'no-alpha (send bm2 has-alpha-channel?))
|
||||||
(test #f 'no-alpha (send bm3 has-alpha-channel?)))
|
(test #f 'no-alpha (send bm3 has-alpha-channel?)))
|
||||||
|
|
||||||
|
;; ----------------------------------------
|
||||||
|
;; Check `in-region?'
|
||||||
|
|
||||||
|
(let ()
|
||||||
|
(define r (new region%))
|
||||||
|
(send r set-rectangle 0 0 100 100)
|
||||||
|
(test #t 'yes/r (send r in-region? 10 10))
|
||||||
|
(test #f 'no/r (send r in-region? 110 110))
|
||||||
|
(test #f 'no/r (send r in-region? 10 110))
|
||||||
|
|
||||||
|
(define r2 (new region%))
|
||||||
|
(send r2 set-rectangle 120 120 10 10)
|
||||||
|
(send r2 union r)
|
||||||
|
|
||||||
|
(test #t 'yes/r (send r in-region? 10 10))
|
||||||
|
(test #t 'yes/r2 (send r2 in-region? 10 10))
|
||||||
|
(test #f 'no/r (send r in-region? 125 125))
|
||||||
|
(test #t 'yes/r2 (send r2 in-region? 125 125))
|
||||||
|
(test #f 'no/r2 (send r2 in-region? 110 110)))
|
||||||
|
|
||||||
|
(let ()
|
||||||
|
(define bm (make-bitmap 50 50))
|
||||||
|
(define dc (send bm make-dc))
|
||||||
|
(send dc translate 10 10)
|
||||||
|
(define r (make-object region% dc))
|
||||||
|
(send r set-rectangle 0 0 100 100)
|
||||||
|
(test #t 'yes (send r in-region? 5 5))
|
||||||
|
(test #f 'no (send r in-region? 110 110)))
|
||||||
|
|
||||||
|
(let ()
|
||||||
|
(define bm (make-bitmap 50 50))
|
||||||
|
(define dc (send bm make-dc))
|
||||||
|
(send dc translate 10 10)
|
||||||
|
;; dc's translation at creation of region sticks:
|
||||||
|
(define r (make-object region% dc))
|
||||||
|
(send r set-rectangle 0 0 100 100)
|
||||||
|
(send dc translate -10 -10)
|
||||||
|
(test #f 'no (send r in-region? 5 5))
|
||||||
|
(test #t 'yes (send r in-region? 105 105)))
|
||||||
|
|
||||||
|
|
||||||
;; ----------------------------------------
|
;; ----------------------------------------
|
||||||
|
|
||||||
(report-errs)
|
(report-errs)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user