From f74c0de6adf87505e8ff076e85791e7acf6cc3b4 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 29 Oct 2010 15:11:29 -0600 Subject: [PATCH] use alignment when installing regions --- collects/racket/draw/private/dc.rkt | 6 ++++-- collects/racket/draw/private/region.rkt | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/collects/racket/draw/private/dc.rkt b/collects/racket/draw/private/dc.rkt index 6db3066948..708f20e2ac 100644 --- a/collects/racket/draw/private/dc.rkt +++ b/collects/racket/draw/private/dc.rkt @@ -453,7 +453,8 @@ (set! desc-layoutss (make-vector (vector-length font-maps) #f)) (do-reset-matrix cr) (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))))) (define smoothing 'unsmoothed) @@ -601,7 +602,8 @@ (reset-clip cr) (when clipping-region (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)))))) (define/public (get-clipping-matrix) (let* ([cm (make-cairo_matrix_t (cairo_matrix_t-xx matrix) diff --git a/collects/racket/draw/private/region.rkt b/collects/racket/draw/private/region.rkt index a9d435ede3..0e7e261527 100644 --- a/collects/racket/draw/private/region.rkt +++ b/collects/racket/draw/private/region.rkt @@ -108,7 +108,8 @@ (max r (+ l2 w2)) (max b (+ t2 h2))))))))) - (define/public (install-region cr scroll-dx scroll-dy [init (void)] [install (lambda (cr v) (cairo_clip cr))]) + (define/public (install-region cr scroll-dx scroll-dy align-x align-y + [init (void)] [install (lambda (cr v) (cairo_clip cr))]) (let ([default-fill-rule (if (ormap (lambda (pr) (eq? (cdr pr) 'odd-even)) paths) CAIRO_FILL_RULE_EVEN_ODD CAIRO_FILL_RULE_WINDING)] @@ -121,7 +122,7 @@ (cairo_set_matrix cr (make-cairo_matrix_t 1 0 0 1 scroll-dx scroll-dy))) (for/fold ([v init]) ([pr (in-list paths)]) (cairo_new_path cr) - (send (car pr) do-path cr values values) + (send (car pr) do-path cr align-x align-y) (cairo_set_fill_rule cr (case (cdr pr) [(odd-even) CAIRO_FILL_RULE_EVEN_ODD] @@ -139,7 +140,7 @@ in-cairo-context (lambda (cr) (cairo_save cr) - (install-region cr 0 0) + (install-region cr 0 0 values values) (begin0 (proc cr) (cairo_restore cr))))) @@ -181,7 +182,7 @@ ;; no transformation needed (values x y))]) (begin0 - (install-region cr #t (lambda (cr v) (and v (cairo_in_fill cr x y)))) + (install-region cr #t values values (lambda (cr v) (and v (cairo_in_fill cr x y)))) (call-as-atomic (cond [temp-cr (cairo_destroy cr)]