fix clipping for PostScript/PDF drawing
This commit is contained in:
parent
b112fd76df
commit
ac083b9148
|
@ -493,7 +493,8 @@
|
||||||
(do-reset-matrix cr)
|
(do-reset-matrix cr)
|
||||||
(when clipping-region
|
(when clipping-region
|
||||||
(send clipping-region install-region cr scroll-dx scroll-dy
|
(send clipping-region install-region cr scroll-dx scroll-dy
|
||||||
(lambda (x) (align-x x)) (lambda (y) (align-y y)))))
|
(lambda (x) (align-x x)) (lambda (y) (align-y y))
|
||||||
|
#:init-matrix (lambda (cr) (init-cr-matrix cr)))))
|
||||||
|
|
||||||
(define smoothing 'unsmoothed)
|
(define smoothing 'unsmoothed)
|
||||||
|
|
||||||
|
@ -649,7 +650,8 @@
|
||||||
(when clipping-region
|
(when clipping-region
|
||||||
(send clipping-region lock-region 1)
|
(send clipping-region lock-region 1)
|
||||||
(send clipping-region install-region cr scroll-dx scroll-dy
|
(send clipping-region install-region cr scroll-dx scroll-dy
|
||||||
(lambda (x) (align-x x)) (lambda (y) (align-y y))))))
|
(lambda (x) (align-x x)) (lambda (y) (align-y y))
|
||||||
|
#:init-matrix (lambda (cr) (init-cr-matrix cr))))))
|
||||||
|
|
||||||
(define/public (get-clipping-matrix)
|
(define/public (get-clipping-matrix)
|
||||||
(let* ([cm (make-cairo_matrix_t (cairo_matrix_t-xx matrix)
|
(let* ([cm (make-cairo_matrix_t (cairo_matrix_t-xx matrix)
|
||||||
|
|
|
@ -109,7 +109,8 @@
|
||||||
(max b (+ t2 h2)))))))))
|
(max b (+ t2 h2)))))))))
|
||||||
|
|
||||||
(define/public (install-region cr scroll-dx scroll-dy align-x align-y
|
(define/public (install-region cr scroll-dx scroll-dy align-x align-y
|
||||||
[init (void)] [install (lambda (cr v) (cairo_clip cr))])
|
[init (void)] [install (lambda (cr v) (cairo_clip cr))]
|
||||||
|
#:init-matrix [init-matrix (lambda (cr) (void))])
|
||||||
(let ([default-fill-rule (if (ormap (lambda (pr) (eq? (cdr pr) 'odd-even)) paths)
|
(let ([default-fill-rule (if (ormap (lambda (pr) (eq? (cdr pr) 'odd-even)) paths)
|
||||||
CAIRO_FILL_RULE_EVEN_ODD
|
CAIRO_FILL_RULE_EVEN_ODD
|
||||||
CAIRO_FILL_RULE_WINDING)]
|
CAIRO_FILL_RULE_WINDING)]
|
||||||
|
@ -119,7 +120,9 @@
|
||||||
m))])
|
m))])
|
||||||
(when old-matrix
|
(when old-matrix
|
||||||
;; each path is already transformed
|
;; each path is already transformed
|
||||||
(cairo_set_matrix cr (make-cairo_matrix_t 1 0 0 1 scroll-dx scroll-dy)))
|
(cairo_identity_matrix cr)
|
||||||
|
(init-matrix cr)
|
||||||
|
(cairo_transform cr (make-cairo_matrix_t 1 0 0 1 scroll-dx scroll-dy)))
|
||||||
(for/fold ([v init]) ([pr (in-list paths)])
|
(for/fold ([v init]) ([pr (in-list paths)])
|
||||||
(cairo_new_path cr)
|
(cairo_new_path cr)
|
||||||
(send (car pr) do-path cr values values)
|
(send (car pr) do-path cr values values)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user